PASSIONLab / CombBLAS

The Combinatorial BLAS (CombBLAS) is an extensible distributed-memory parallel graph library offering a small but powerful set of linear algebra primitives specifically targeting graph analytics.
Other
59 stars 20 forks source link

SpParMat3D Fails to Recognize Headers from parfriends.h #8

Closed vbharadwaj-bk closed 3 years ago

vbharadwaj-bk commented 3 years ago

I have a patch for this, but there is probably a better workaround. Compiling SpParMat3D.cpp gets the following error:

/global/homes/v/vbharadw/diBELLA.2D/CombBLAS/install/include/CombBLAS/SpParMat3D.cpp:739:44: error: 'LocalHybridSpGEMM' was not declared in this scope SpTuples<IT,NT> * C_cont = LocalHybridSpGEMM<SR, NT> ^~~~~~~~~~~~~~~~~ /global/homes/v/vbharadw/diBELLA.2D/CombBLAS/install/include/CombBLAS/SpParMat3D.cpp:739:64: error: expected primary-expression before ',' token SpTuples<IT,NT> * C_cont = LocalHybridSpGEMM<SR, NT> ^ /global/homes/v/vbharadw/diBELLA.2D/CombBLAS/install/include/CombBLAS/SpParMat3D.cpp:763:42: error: 'MultiwayMerge' was not declared in this scope SpTuples<IT,NT> * C_tuples = MultiwayMerge<SR>(tomerge, C_m, C_n, true); ^~~~~~~~~~~~~ /global/homes/v/vbharadw/diBELLA.2D/CombBLAS/install/include/CombBLAS/SpParMat3D.cpp:763:58: error: expected primary-expression before '>' token SpTuples<IT,NT> * C_tuples = MultiwayMerge<SR>(tomerge, C_m, C_n, true); ^ /global/homes/v/vbharadw/diBELLA.2D/CombBLAS/install/include/CombBLAS/SpParMat3D.cpp:983:64: error: expected primary-expression before ',' token SpTuples<IT, NT> * merged_tuples = MultiwayMerge<SR, IT, NT>(recvChunks, recvChunks[0]->getnrow(), recvChunks[0]->getncol(), false); // Do not delete

The LocalHybridSpGEMM and MultiwayMerge header files should be included by parfriends.h (which is included by SpParMat3D.cpp), but for some reason it cannot find those headers. I fixed it by directly including the header files mtSpGEMM.h and MultiwayMerge.h in SpParMat3D.cpp, but this required also adding header guards within those respective files to avoid redefinition with parfriends.h. There is probably a better way to fix this, but just documenting this issue for now.