Skip to content

Commit c8e9174

Browse files
committed
Merge branch 'develop'
2 parents 9c4cea8 + 77e056e commit c8e9174

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

python.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static PyObject *py_minhash_cuda_retrieve_vars(PyObject *self, PyObject *args) {
152152
return NULL;
153153
}
154154
auto params = mhcuda_get_parameters(gen);
155-
npy_intp dims[] = {params.dim, params.samples, 0};
155+
npy_intp dims[] = {params.samples, params.dim, 0};
156156
auto rs_obj = reinterpret_cast<PyArrayObject *>(PyArray_EMPTY(
157157
2, dims, NPY_FLOAT32, false));
158158
auto ln_cs_obj = reinterpret_cast<PyArrayObject *>(PyArray_EMPTY(

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def is_pure(self):
4646
setup(
4747
name="libMHCUDA",
4848
description="Accelerated Weighted MinHash-ing on GPU",
49-
version="1.1.4",
49+
version="1.1.5",
5050
license="MIT",
5151
author="Vadim Markovtsev",
5252
author_email="[email protected]",

test.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ def test_random_vars(self):
7373
gen = libMHCUDA.minhash_cuda_init(1000, 128, devices=1, verbosity=2)
7474
rs, ln_cs, betas = libMHCUDA.minhash_cuda_retrieve_vars(gen)
7575
libMHCUDA.minhash_cuda_fini(gen)
76+
self.assertEqual(rs.shape, (128, 1000))
77+
self.assertEqual(ln_cs.shape, (128, 1000))
78+
self.assertEqual(betas.shape, (128, 1000))
7679
cs = numpy.exp(ln_cs)
7780
a, loc, scale = gamma.fit(rs)
7881
self.assertTrue(1.97 < a < 2.03)
@@ -120,6 +123,34 @@ def test_slice(self):
120123
libMHCUDA.minhash_cuda_fini(gen)
121124
self.assertTrue((hashes[3200:4800] == hashes2).all())
122125

126+
def test_backwards(self):
127+
v1 = [1, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 6, 7, 8, 0, 0, 0, 0, 0, 0, 9, 10, 4]
128+
v2 = [2, 0, 0, 0, 4, 3, 8, 0, 0, 0, 0, 4, 7, 10, 0, 0, 0, 0, 0, 0, 9, 0, 0]
129+
gen = libMHCUDA.minhash_cuda_init(len(v1), 128, devices=1, verbosity=2)
130+
rs, ln_cs, betas = libMHCUDA.minhash_cuda_retrieve_vars(gen)
131+
bgen = WeightedMinHashGenerator.__new__(WeightedMinHashGenerator)
132+
bgen.dim = len(v1)
133+
bgen.rs = rs
134+
bgen.ln_cs = ln_cs
135+
bgen.betas = betas
136+
bgen.sample_size = 128
137+
bgen.seed = None
138+
m = csr_matrix(numpy.array([v1, v2], dtype=numpy.float32))
139+
hashes = libMHCUDA.minhash_cuda_calc(gen, m)
140+
libMHCUDA.minhash_cuda_fini(gen)
141+
self.assertEqual(hashes.shape, (2, 128, 2))
142+
true_hashes = numpy.array([bgen.minhash(v1).hashvalues,
143+
bgen.minhash(v2).hashvalues], dtype=numpy.uint32)
144+
self.assertEqual(true_hashes.shape, (2, 128, 2))
145+
try:
146+
self.assertTrue((hashes == true_hashes).all())
147+
except AssertionError as e:
148+
print("---- TRUE ----")
149+
print(true_hashes)
150+
print("---- FALSE ----")
151+
print(hashes)
152+
raise e from None
153+
123154

124155
if __name__ == "__main__":
125156
unittest.main()

0 commit comments

Comments
 (0)