Skip to content

Commit 2b2a830

Browse files
committed
Update README
1 parent 97d0c5e commit 2b2a830

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

README.md

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,29 @@
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

3739
The 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
4144
pkg> add CompressedSparseBlocks
@@ -61,6 +64,18 @@ blocks](http://dx.doi.org/10.1145/1583991.1584053),” in Proceedings of
6164
the 21st Annual Symposium on Parallelism in Algorithms and
6265
Architectures, 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

Comments
 (0)