55| [ ![ ] [ docs-stable-img ]] [ docs-stable-url ] [ ![ ] [ docs-latest-img ]] [ docs-latest-url ] | [ ![ CI] [ github-action-img ]] [ github-action-url ] [ ![ ] [ codecov-img ]] [ codecov-url ] |
66
77
8- We provide a ` Julia ` interface, i.e., a wrapper to
9- ` CompressedSparseBlocks (CSB) ` , which is a high-performance library
10- for fast matrix-vector (` gAxpy ` ) and transpose matrix-vector
11- (` gAtxpy ` ) products with large, sparse matrices, on shared-memory
12- computers. This wrappers supports up to 32 right-hand side vectors. The
13- CSB data storage format was introduced by A. Buluç, J. Fineman,
14- M. Frigo, J. Gilbert, and C. Leiserson [ 1] . The library is written in
15- ` C/C++ ` and is available
16- [ here] ( https://people.eecs.berkeley.edu/~aydin/csb/csb.html ) . This
17- wrapper extends the use of ` CSB ` to the ` Julia ` user communities and
18- applications.
19-
20- The CSB storage format offers similar performance in shared-memory
21- parallel systems for $\mathbf{A} \mathbf{x}$ and
22- $\mathbf{A}^{\rm T} \mathbf{x}$. The block data format enables increased
23- performance by increasing locality on the memory accesses of the
24- left-hand side and the right-hand side vectors. Threads are
25- dynamically scheduled to improve load balancing via the work-stealing
26- paradigm of the ` Cilk ` runtime environment. On large, sparse matrices,
27- the ` CSB ` format outperforms both the ` Julia ` built-in sparse
28- matrix-vector routines and the ` MKLSparse ` package.
8+ We provide a ` Julia ` interface (a wrapper) to the `Compressed Sparse
9+ Blocks (CSB)` library. The library is written in ` C/C++`, available at
10+ < https://people.eecs.berkeley.edu/~aydin/csb/html/index.html > . The
11+ library supports fast computation of large sparse matrix-vector
12+ products, ` Ax ` and ` A^{\rm T}x ` operations specifically, with sparse
13+ matrix $A$ in the format of compressed sparse blocks (CSB), on
14+ shared-memory computer systems. The CSB format was introduced by A.
15+ Buluç, J. Fineman, M. Frigo, J. Gilbert, and C. Leiserson [ 1] .
16+
17+ The CSB format and library have the following advantages: (1) The
18+ matrix-vector operations in CSB format often outpace the conventional
19+ general-purposes sparse formats, namely, CSC and CSR \[ 2\] . (2) The
20+ multiplication with the transposed matrix $A^{\rm T}$ do not suffer from
21+ longer latency than that with $A$. The symmetric performance eliminates
22+ the need for an additional copy in a different layout for $A^{\rm T}$
23+ (as with CSR or CSC) for reducing the speed gap at the cost of double
24+ memory consumption. (3) The library is integrated with ` Cilk ` \[ 3\] . The
25+ latter offers optimal run-time scheduling (in theory and in practice) on
26+ parallel computers with shared memory.
27+
28+ This Julia interface is intended to extend and ease the use of ` CSB ` to
29+ broader applications. This interface supports up to $32$ multiple
30+ vectors to be applied with the same matrix $A$.
2931
3032<figure >
3133<img src =" https://github.com/fcdimitr/CompressedSparseBlocks.jl/blob/main/benchmarks/benchmark-results.png " alt =" Benchmarks " style =" width :100% " >
@@ -35,7 +37,8 @@ matrix-vector routines and the `MKLSparse` package.
3537## Installation
3638
3739The package can be added using the Julia package manager. From the
38- Julia REPL, type ] to enter the Pkg REPL mode and run
40+ Julia REPL, type ] to enter the Pkg REPL mode and execute the
41+ following command
3942
4043``` julia
4144pkg> add CompressedSparseBlocks
@@ -61,6 +64,18 @@ blocks](http://dx.doi.org/10.1145/1583991.1584053),” in Proceedings of
6164the 21st Annual Symposium on Parallelism in Algorithms and
6265Architectures, 2009, pp. 233–244. doi: 10.1145/1583991.1584053.
6366
67+ [ 2] S. C. Eisenstat, M. C. Gursky, M. H. Schultz, A. H. Sherman,
68+ “[ Yale Sparse Matrix
69+ Package] ( https://apps.dtic.mil/dtic/tr/fulltext/u2/a047724.pdf ) ,”
70+ technical report, 1977.
71+
72+ [ 3] M. Frigo, C. E. Leiserson, and K. H. Randall, “[ The implementation
73+ of the Cilk-5 multithreaded
74+ language] ( https://doi.org/10.1145/277652.277725 ) ,” ACM SIGPLAN
75+ Notices, vol. 33, no. 5, pp. 212–223, 1998, doi:
76+ 10.1145/277652.277725.
77+
78+
6479
6580## Contributors on the Julia wrapper
6681
0 commit comments