def _compute_similarities(self, rmat, items, users): mkl = matrix.mkl_ops() mkl = None if mkl is None: return self._scipy_similarities(rmat, items, users) else: return self._mkl_similarities(mkl, rmat)
def test_mkl_available(): if 'CONDA_PREFIX' in os.environ: ops = lm.mkl_ops() assert ops is not None assert ops.clib is not None else: skip('only require MKL availability in Conda')
def test_mkl_available(): if 'CONDA_PREFIX' in os.environ: try: import mkl except ImportError: skip('in MKL-free Conda environment') ops = lm.mkl_ops() assert ops is not None assert ops.clib is not None else: skip('only require MKL availability in Conda')
import pandas as pd import numpy as np import scipy.sparse as sps import scipy.sparse.linalg as spla from numba import jit, njit, prange from numba.typed import List from lenskit import util, matrix, DataWarning from lenskit.sharing import in_share_context from lenskit.util.parallel import is_mp_worker from lenskit.util.accum import kvp_minheap_insert, kvp_minheap_sort from . import Predictor _logger = logging.getLogger(__name__) _mkl_ops = matrix.mkl_ops() _empty_csr = matrix._impl_mod()._empty_csr _subset_rows = matrix._impl_mod()._subset_rows if _mkl_ops is not None: # we have to import LK CFFI utils into this module for lkv in dir(_mkl_ops): if lkv.startswith('_lk_mkl'): globals()[lkv] = getattr(_mkl_ops, lkv) def _make_blocks(n, size): "Create blocks for the range 0..n." return [(s, min(s + size, n)) for s in range(0, n, size)]
def _compute_similarities(self, rmat): mkl = matrix.mkl_ops() if mkl is None: return self._scipy_similarities(rmat) else: return self._mkl_similarities(mkl, rmat)
def mkl_ops(): ops = lm.mkl_ops() if ops is None: skip('MKL not available') return ops
import os import numpy as np import scipy.sparse as sps import cffi from pytest import mark, approx, skip import lenskit.matrix as lm import lenskit.util.test as lktu mkl_ops = lm.mkl_ops() def test_mkl_available(): if 'CONDA_PREFIX' in os.environ: assert mkl_ops is not None assert mkl_ops.clib is not None else: skip('only require MKL availability in Conda') @mark.skipif(mkl_ops is None, reason='MKL not available') def test_mkl_mult_vec(): for i in range(50): m = np.random.randint(5, 100) n = np.random.randint(5, 100) M = np.random.randn(m, n) M[M <= 0] = 0 s = sps.csr_matrix(M) assert s.nnz == np.sum(M > 0)