Currently, there is only one Version of this kernel that was used for the comparison of different compilers and architectures. It is implemented with the CSR and the Ellpack data structure fpr sparse matrices. The kernel is not optimized for any hardware to enable a fair comparison between different architectures and compilers.
This kernel requires a C++ compiler with OpenMP capability. To build this kernel use:
make
To run the executable you can use the predefined targets of the make file
make run-small # to run with a small matrix
make run-large # to run with a large matrix
make run-verylarge # to run with a very large matrix exeeding most common matrices
make run-noL3 # to run with a matrix just above 100MB size in memory, exeeding most L3 caches of CPUs (smaller than verylarge)
Also you may run the executable directly with
./spmxv.exe -t <number of threads> -f <input matrix>
For more options run ```shell ./spmxv.exe –help
The following experiments have been registered: