55[ ![ JB Research] ( https://jb.gg/badges/research-flat-square.svg )] ( https://research.jetbrains.org/ )
66[ ![ Ubuntu] ( https://github.com/JetBrains-Research/cuBool/workflows/Ubuntu/badge.svg?branch=master )] ( https://github.com/JetBrains-Research/cuBool/actions )
77[ ![ License] ( https://img.shields.io/badge/license-MIT-orange )] ( https://github.com/JetBrains-Research/cuBool/blob/master/LICENSE )
8+ [ ![ Package] ( https://img.shields.io/badge/pypi%20package-alpha-%233776ab )] ( https://test.pypi.org/project/pycubool/ )
89
910** cuBool** is a linear Boolean algebra library primitives and operations for
1011work with sparse matrices written on the NVIDIA CUDA platform. The primary
@@ -28,26 +29,28 @@ prototyping algorithms on a local computer for later running on a powerful serve
2829
2930- [X] Library C interface
3031- [X] Library setup
31- - [X] CSR matrix
32- - [X] CSR multiplication
33- - [X] CSR element-wise addition
34- - [X] CSR kronecker
35- - [X] CSR transpose
36- - [X] CSR submatrix
37- - [X] CSR matrix reduce
38- - [X] CSR slicing
32+ - [X] Sparse matrix
33+ - [X] Sparse matrix multiplication
34+ - [X] Sparse matrix element-wise addition
35+ - [X] Sparse matrix kronecker
36+ - [X] Sparse matrix transpose
37+ - [X] Sparse matrix submatrix
38+ - [X] Sparse matrix reduce
39+ - [X] Sparse matrix slicing
40+ - [X] Matrix cached filling
3941- [X] Sequential fallback backend for CPU
40- - [ ] IO matrix loading from mtx file
41- - [ ] IO matrix saving into mtx file
42+ - [X] Device capabilities query
43+ - [X] IO matrix loading from mtx file
44+ - [X] IO matrix saving into mtx file
4245- [ ] IO matrix saving into gviz format
43- - [ ] IO user-defined file logging
46+ - [X ] IO user-defined file logging
4447- [X] Wrapper for Python API
45- - [ ] Wrapper syntax sugar
46- - [ ] Tests for Python wrapper
48+ - [X] Wrapper syntax sugar
49+ - [X] Tests for Python wrapper
50+ - [X] Pip package
4751- [ ] Code examples
4852- [ ] User guide
4953- [X] Unit Tests collection
50- - [X] Dummy library implementation for testing
5154- [ ] Publish built artifacts and shared libs
5255- [ ] Publish stable source code archives
5356
@@ -65,7 +68,7 @@ prototyping algorithms on a local computer for later running on a powerful serve
6568
6669### Cuda & Compiler Setup
6770
68- > Skip thia section if you want to build library with only sequential backend
71+ > Skip this section if you want to build library with only sequential backend
6972> without cuda backend support.
7073
7174Before the CUDA setup process, validate your system NVIDIA driver with ` nvidia-smi `
@@ -159,12 +162,22 @@ By default, the following cmake options will be automatically enabled:
159162
160163# ## Python Wrapper
161164
162- After the build process, the shared library object ` libcubool.so` is placed
163- inside the build directory. Export into the environment or add into bash
164- profile the variable ` CUBOOL_PATH=/path/to/the/libcubool.so` with appropriate
165- path to your setup. Then you will be able to use ` pycubool` python wrapper,
166- which uses this variable in order to located library object.
165+ ** Export** env variable ` PYTHONPATH=" /build_dir_path/python/:$PYTHONPATH " ` if
166+ you want to use ` pycubool` without installation into default python packages dir.
167+ This variable will help python find package if you import it as ` import pycubool` in your python scripts.
167168
169+ ** To run regression tests** within your build directory, open folder ` /build_dir_path/python` and
170+ run the following command:
171+
172+ ` ` ` shell script
173+ $ export PYTHONPATH=" ` pwd` :$PYTHONPATH "
174+ $ cd tests
175+ $ python3 -m unittest discover -v
176+ ` ` `
177+
178+ ** Note:** after the build process, the shared library object ` libcubool.so` will be placed
179+ inside the build directory in the folder with python wrapper ` python/pycubool/` .
180+ So, the wrapper will be able to automatically locate required lib file.
168181
169182# # Usage
170183
@@ -205,7 +218,7 @@ wrapper can be used to compute the same transitive closure problem for the
205218directed graph within python environment:
206219
207220` ` ` python
208- from python import pycubool
221+ import pycubool
209222
210223def transitive_closure(a: pycubool.Matrix):
211224 " " "
@@ -216,8 +229,8 @@ def transitive_closure(a: pycubool.Matrix):
216229 :return: The transitive closure adjacency matrix
217230 " " "
218231
219- t = a.dup () # Duplicate matrix where to store result
220- total = 0 # Current number of values
232+ t = a.dup () # Duplicate matrix where to store result
233+ total = 0 # Current number of values
221234
222235 while total ! = t.nvals:
223236 total = t.nvals
@@ -263,12 +276,12 @@ cuBool
263276# # License
264277
265278This project is licensed under MIT License. License text can be found in the
266- [license file](https://github.com/JetBrains-Research/cuBool/blob/master/LICENSE).
279+ [license file](https://github.com/JetBrains-Research/cuBool/blob/master/LICENSE.md ).
267280
268281# # Acknowledgments
269282
270283This is a research project of the Programming Languages and Tools Laboratory
271- at JetBrains Research company . Laboratory website [link](https://research.jetbrains.org/groups/plt_lab/).
284+ at JetBrains- Research. Laboratory website [link](https://research.jetbrains.org/groups/plt_lab/).
272285
273286# # Also
274287
0 commit comments