SPMV Supported formats?


I'm currently doing research in exploring how performance differs between different sparsity formats. I'm using the ARM PL sparse API to perform benchmarks on SPMV (Spare matrix/dense vector) with different formats. I notice that there are supported formats COO, CSR, CSC, and BSR. Ideally, I would like to benchmark all formats, but I've been running into trouble getting some of these formats to work. It's hard for me to debug since the library's source code is closed.

Note that I am not calling the armpl_spmv_optimize API function. Because if I understand correctly, this will automatically optimize the matrix to an optimal format, based on the sparse matrix structure or previous runs. Since the focus of my research is study of different formats, I don't call this to not skew any results with my observations on different formats. 

Unfortunately, when benchmarking, I get segmentation faults during armpl_spmv_exec_s for CSC and BSR formats. COO and CSR format work flawlessly for me, but when I convert the same code to support CSC or BSR format, it fails to run armpl_spmv_exec_s. It's hard for me to debug or know what's really going on inside, and wanted to ask if any developer has insight on this error? Could it be that BSR or CSC are not fully supported for SPMV?

I benchmarked a subset of matrices from the SuiteSparse Matrix Collection in single precision. I make sure that the matrices fit on to memory. The subset I benchmarked works successfully on CSR and COO formats, but fails when I change to CSC or BSR. I will note however, the same matrices and formats (CSR, CSC, COO, BSR) all work on NVIDIA's cuSPARSE. The platform I am benchmarking on is NVIDIA Jetson AGX Xavier that has 8 core ARMv8 CPU.