-
Notifications
You must be signed in to change notification settings - Fork 20
GraphBLAS
Instructions for using SuiteSparse:GraphBLAS.
SuiteSparse:GraphBLAS has a number of compiler flags and macros for development builds. When benchmarking, make sure you turn off these modes (which is their default setting).
The GBCOMPACT
flag allows quick compilation as it avoids compiling the ~1500 pre-defined semirings.
cd build && cmake -DGBCOMPACT=1 .. && make -j$(nproc)
Debug mode can be activated in Source/GB.h
by uncommenting the #define GB_DEBUG
line.
This mode adds assertions to test invariants which (unsurprisingly) make the code much slower.
Burble modes provides a detailed output of the operation performed (e.g. which matrix multiplication algorithm is used).
-
Compile-time:
-
In v3.x, edit the
CMakeLists.txt
file, comment theset ( GB_BURBLE false )
line and uncomment theset ( GB_BURBLE true )
line. -
Set the
GB_BURBLE
configuration to1
:cd build && cmake -DGB_BURBLE=1 .. && make -j$(nproc)
-
-
Runtime: the "burble mode" has to be activated from code:
-
In C, use:
GxB_set(GxB_BURBLE, true);
-
In C++, use:
GxB_Global_Option_set(GxB_BURBLE, true);
-
-
Problem:
make[3]: *** No rule to make target '/usr/lib/gcc/x86_64-linux-gnu/8/libgomp.so', needed by 'libgraphblas.so.3.0.1'. Stop.
-
Solution: clean the directory and start over with
cmake . && make
.
-
Download the Intel System Studio and get a license.
-
Configure the
silent.cfg
file to point to your license and run:sudo ./install.sh -s silent.cfg.
-
Specify the location of the compiler components:
. /opt/intel/system_studio_2019/bin/compilervars.sh -arch intel64
-
On my configuration, the
compilervars_arch.sh
script wasn't readable by the user, so I fixed that using:$ chmod 755 /opt/intel/system_studio_2019/compilers_and_libraries_2019/linux/pkg_bin/compilervars_arch.sh
-
Build GraphBLAS with the following command:
$ make CC=icc JOBS=$(nproc)
-
Install GraphBLAS and run the
ldconfig
tool:$ sudo make install $ sudo ldconfig
-
Problem: Compiling GraphBLAS gives the following error:
-- The C compiler identification is Intel 19.0.5.20190815 -- The CXX compiler identification is GNU 7.4.0 ... [ 99%] Linking C executable pthread_demo ld: warning: libimf.so, needed by libgraphblasdemo.so, not found (try using -rpath or -rpath-link) ld: warning: libsvml.so, needed by libgraphblasdemo.so, not found (try using -rpath or -rpath-link) ld: warning: libirng.so, needed by libgraphblasdemo.so, not found (try using -rpath or -rpath-link) ld: warning: libintlc.so.5, needed by libgraphblasdemo.so, not found (try using -rpath or -rpath-link) ld: pthread_demo: hidden symbol `__intel_cpu_features_init_x' in /opt/intel/system_studio_2019/compilers_and_libraries_2019.5.281/linux/compiler/lib/intel64_lin/libirc.a(cpu_feature_disp.o) is referenced by DSO ld: final link failed: Bad value CMakeFiles/pthread_demo.dir/build.make:89: recipe for target 'pthread_demo' failed
-
Solution: Just follow the steps above.
C:
char *date, *compile_date, *compile_time ;
int version [3] ;
GxB_Global_Option_get (GxB_LIBRARY_VERSION, version) ;
GxB_Global_Option_get (GxB_LIBRARY_DATE, &date) ;
GxB_Global_Option_get (GxB_LIBRARY_COMPILE_DATE, &compile_date) ;
GxB_Global_Option_get (GxB_LIBRARY_COMPILE_TIME, &compile_time) ;
fprintf (stderr, "Library version %d.%d.%d\n", version [0], version [1], version [2]) ;
fprintf (stderr, "Library date: %s\n", date) ;
fprintf (stderr, "Compiled at %s on %s\n", compile_time, compile_date) ;
(source)
Bash:
grep -C 5 "define GxB_IMPLEMENTATION_DATE" $(find /usr -name GraphBLAS.h 2>/dev/null) /dev/null