# beidoublas **Repository Path**: ssslab/beidoublas ## Basic Information - **Project Name**: beidoublas - **Description**: No description available - **Primary Language**: C - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-10-17 - **Last Updated**: 2022-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BeidouBLAS **BeidouBLAS** is an open source software package for sparse basic linear algebra subprgrams that uses a tile structure to optimize sparse matrix calculations. It contains three sparse matrix operations: sparse matrix-vector multiplication (SpMV), sparse matrix triangular solution (SpTRSV), and sparse matrix-matrix multiplication (SpGEMM). ------------------- ## Introduction BeidouBLAS can calculate three sparse matrix operations: sparse matrix-vector multiplication (SpMV), sparse matrix triangular solution (SpTRSV), and sparse matrix-matrix multiplication (SpGEMM). In order to improve performance from the perspective of the local sparse structure of the matrix, BeidouBLAS created a new tiled data structure which stored a sparse matrix as a number of tiles of the same size and provided the best format and algorithm for each tile. At the same time, It can directly call optimized SpMV, SPTRSV, and SpGEMM operations applied in a high-level application without format conversion. BeidouBLAS provides a version of omp on a high parallelism currently. ## Structure ``` beidoublas/README instructions on installation beidoublas/src C source code, to be compiled into libbeidoublas.so beidoublas/test testing code beidoublas/lib contains library archive libbeidoublas.so beidoublas/Makefile top-level Makefile that does installation and testing ``` ## Installation To use this library, you need to modify the Makefile with correct g++ installation path and use make for automatic installation. > **make** ## Execution of BeidouBLAS ### SpMV Sample SpMV program executes Ax=y, where A is a sparse matrix, x and y are dense vectors. The command 'make spmv' generates an executable file 'spmv' for double precision. > **make spmv** run SpMV code on matrix data with auto-tuning in double precision > **./spmv test.mtx** ### SpTRSV Sample SpTRSV program executes L(U)x=y, where L (U) is a lower (or upper) triangular matrix. The command 'make sptrsv' generates an executable file 'sptrsv' for double precision. > **make sptrsv** run SpTRSV code on matrix data with auto-tuning in double precision > **./sptrsv L/U test.mtx** ### SpGEMM Sample SpGEMM program executes C=A * B, where A, B and C are sparse matrices. The command 'make spgemm' generates an executable files 'spgemm' for double precision. The matrix data (in matrix market format) is indicated in first argument. > **make spgemm** run SpGEMM code on matrix data with auto-tuning in double precision > **./spgemm test1.mtx test2.mtx** ## Release version Oct 19,2021 Version Beta