The goal of this project is to prototype a persistent memory allocator for GBTL container.
Metall is a memory allocator for persistent memory. More Info at : https://github.com/LLNL/metall
GraphBlas Template Library is a modern idiomatic C++ reference implementation of the GraphBLAS C API Specification and has examples of commonly used graph algorithms implemented with the GraphBLAS primitive operations. More Info at: https://github.com/cmu-sei/gbtl
This repository uses the GBTL master branch and has 4 major changes.
- Removed all tags in frontend matrix class "matrix_generator" BackendType and uses BackendType = grb::backend::LilSparseMatrix;
- Added multilevel containers with metall scoped allocator to "LilSparseMatrix" ElementType, RowType, outer_vector_type m_data with boost::container::vector instead of std::vector
- Added " template<typename ScalarT, typename allocator_t = std::allocator, typename... TagsT>" to the frontend Matrix constructors and the backend LilSparseMatrix constructors.
- Hardcoded template parameters at sparse_helpers.hpp dot(); reduction(); apply_with_mask(); with boost::container::vector<std::tuplegrb::IndexType,D1, allocator_t > instead of std::vector<std::tuplegrb::IndexType,D1 >
cd Metallizing_GBTL spack load metall spack load [email protected]
g++-9 -std=gnu++1z # Requires gcc9
-I./gbtl/src/graphblas/detail # Include header files from gbtl detail dir
-I./gbtl/src # Include header files from gbtl src dir
-I./gbtl/src/graphblas/platforms/sequential # Include header files from gbtl sequential-platform dir
-I./metall/include/ # Include header files from metall include dir
-I/path/to/boost/include # Include header files from boost include dir [mostly optional]
-L/usr/lib/gcc/lib64 # Link with the gcc library directory [mostly optional]
./gbtl/src/demo/triangle_count_demo.cpp # My cpp program
-o # Specify my build output file
gbtl_tc.exe # My executable file
-lstdc++fs # Required by metall to use the Filesystem library
g++-9 -std=gnu++1z -I./gbtl/src/graphblas/detail -I./gbtl/src -I./gbtl/src/graphblas/platforms/sequential -I./metall/include/ ./gbtl/src/demo/triangle_count_demo.cpp -o gbtl_tc.exe -lstdc++fs
./gbtl_tc.exe ./gbtl/src/demo/triangle_count_data_ca-HepTh.tsv
g++-9 -std=gnu++1z
-I./gbtl/src/graphblas/detail
-I./gbtl/src
-I./gbtl/src/graphblas/platforms/sequential
gbtl/src/demo/triangle_count_demo.cpp
-o
gbtl_tc
./gbtl_tc ./gbtl/src/demo/triangle_count_data_ca-HepTh.tsv
g++ -std=c++17
-I/path/to/boost/include
-L/usr/lib/gcc/lib64
-I./metall/include/
./metall/example/adjacency_list_graph.cpp
-o
adjacency_list_graph.exe
-lstdc++fs
g++ -std=c++17 -I./metall/include/ ./metall/example/adjacency_list_graph.cpp -o djacency_list_graph.exe -lstdc++fs
./adjacency_list_graph.exe