-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME
64 lines (48 loc) · 2.58 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
========================================================================
APPLICATION : CSB Overview
========================================================================
Author: Aydin Buluc, LBNL, [email protected]
Date: 2/28/2014
- The official release with better instructions for compilation/running is here: https://people.eecs.berkeley.edu/~aydin/csb/html/index.html
- This github is to allow new development (i.e. OpenMP and OpenCilk porting, bringing the SpMM case vectorization to AVX2-AVX512)
Classes
-------
CSC:
- Class that implements the standard "compressed sparse column" format.
- Used for baseline comparisons.
BiCSB:
- Production (final) class that implements "compressed sparse blocks"
- Nonzeros within a block are stored in "bit-interleaved" order
- Described in http://dx.doi.org/10.1145/1583991.1584053
BmCSB:
- Class that implements bitmasked register blocks on top of CSB
- Change the register block dimension inside utility.h (RBDIM), options are 2,4,8 (default is 8)
- Decribed in http://doi.ieeecomputersociety.org/10.1109/IPDPS.2011.73
CSBSYM:
- Class that implements the symmetric algorithm
- Decribed in http://doi.ieeecomputersociety.org/10.1109/IPDPS.2011.73
SYM/CSBSYM [do not use]:
- Experimental class that implements a variant of "compressed sparse blocks"
- Nonzeros within a block are stored in row-major order
- Various optimizations are tried in this class, such as SSE, prefetching, etc.
Files
-----
csb_spmv(t)_test.cpp :
- Driver programs for both sequential and parallel Ax and A'x runs
- Usage "./executable matrixfile nosym/sym ascii/binary" or "./executable" in which case read the ascii file matrix.txt if exists (only nosym works for now - special support for symmetric matrices will be available soon)
- Executables are parspmv, parspmvt, seqspmv, seqspmvt where names are self
explanatory.
- For parallel execution, you can specify the number of workers by setting
the environmental variable CILK_NWORKERS.
spmm_test.cpp:
- Driver program for the multiple vector cases of Ax and A'x (i.e. SpMM for AX and A'X)
bwtest-mimd.cpp :
- Usage "./bwtest-mimd -n file_1 file_2 ... file_n"
- Bandwidth test program that reads does SpMV's in n different matrices simultaneously
- pthreads implementation
oskispmv(t).cpp :
- Usage "./oskispmv(t) matrixfile"
- Compares the performance of our serial implementations with plain OSKI to reveal any anomalies
utility.h :
- Includes constants, preprocessors directives and utility functions
/////////////////////////////////////////////////////////////////////////////