Exemple #1
0
 def test_denseToSparse(self, dtype):
     if not cusparse.check_availability('denseToSparse'):
         pytest.skip('denseToSparse is not available')
     x = cupy.random.uniform(0, 1, self.shape).astype(dtype)
     x[x < self.density] = 0
     y = cusparse.denseToSparse(x, format=self.format)
     assert y.format == self.format
     testing.assert_array_equal(x, y.todense())
Exemple #2
0
def dense2csr(a):
    if a.dtype.char in 'fdFD':
        if cusparse.check_availability('denseToSparse'):
            return cusparse.denseToSparse(a, format='csr')
        else:
            return cusparse.dense2csr(a)
    m, n = a.shape
    a = cupy.ascontiguousarray(a)
    indptr = cupy.zeros(m + 1, dtype=numpy.int32)
    info = cupy.zeros(m * n + 1, dtype=numpy.int32)
    cupy_dense2csr_step1()(m, n, a, indptr, info)
    indptr = cupy.cumsum(indptr, dtype=numpy.int32)
    info = cupy.cumsum(info, dtype=numpy.int32)
    nnz = int(indptr[-1])
    indices = cupy.empty(nnz, dtype=numpy.int32)
    data = cupy.empty(nnz, dtype=a.dtype)
    cupy_dense2csr_step2()(m, n, a, info, indices, data)
    return csr_matrix((data, indices, indptr), shape=(m, n))
Exemple #3
0
 def _convert_dense(self, x):
     if cusparse.check_availability('denseToSparse'):
         m = cusparse.denseToSparse(x, format='csc')
     else:
         m = cusparse.dense2csc(x)
     return m.data, m.indices, m.indptr