Skip to content

Commit 048070a

Browse files
DrTimothyAldenDavissergiud
authored andcommitted
version 5.12.0
1 parent 16021c5 commit 048070a

File tree

111 files changed

+36987
-4493
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+36987
-4493
lines changed

CITATION.bib

Lines changed: 490 additions & 0 deletions
Large diffs are not rendered by default.

ChangeLog

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
Apr 10, 2022, SuiteSparse 5.12.0
2+
3+
* GraphBLAS v7.0.3: see GraphBLAS/Doc/ChangeLog for details.
4+
* performance: GrB_mxm, GrB_assign, and transpose
5+
* bug fix: vector iterator for bitmap
6+
* revised ACM TOMS submission: Doc/toms_parallel_grb2.pdf
7+
* spec bug: GrB_Matrix_diag was implemented incorrectly,
8+
thus requiring a version v7.x
9+
110
Mar 14, 2022, SuiteSparse 5.11.0
211

312
* GraphBLAS v6.2.5: see GraphBLAS/Doc/ChangeLog for changes.

GraphBLAS/CITATION.bib

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
@article{GraphBLAS7,
3+
author = {Davis, Timothy A.},
4+
title = {Algorithm 10xx: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra},
5+
year = {2022},
6+
abstract= {SuiteSparse:GraphBLAS is a full parallel implementation of the GraphBLAS
7+
standard, which defines a set of sparse matrix operations on an extended
8+
algebra of semirings using an almost unlimited variety of operators and types.
9+
When applied to sparse adjacency matrices, these algebraic operations are
10+
equivalent to computations on graphs. A description of the parallel
11+
implementation of SuiteSparse:GraphBLAS is given, including its novel parallel
12+
algorithms for sparse matrix multiply, addition, element-wise multiply,
13+
submatrix extraction and assignment, and the GraphBLAS mask/accumulator
14+
operation. Its performance is illustrated by solving the graph problems in the
15+
GAP Benchmark and by comparing it with other sparse matrix libraries.},
16+
journal = {ACM Trans. Math. Softw.},
17+
month = {(under revision)},
18+
note={See GraphBLAS/Doc/toms_parallel_grb2.pdf},
19+
keywords = {GraphBLAS, Graph algorithms, sparse matrices}
20+
}
21+
22+
@article{10.1145/3322125,
23+
author = {Davis, Timothy A.},
24+
title = {Algorithm 1000: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra},
25+
year = {2019},
26+
issue_date = {December 2019},
27+
publisher = {Association for Computing Machinery},
28+
address = {New York, NY, USA},
29+
volume = {45},
30+
number = {4},
31+
issn = {0098-3500},
32+
url = {https://doi.org/10.1145/3322125},
33+
doi = {10.1145/3322125},
34+
abstract = {SuiteSparse:GraphBLAS is a full implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of semirings using an almost unlimited variety of operators and types. When applied to sparse adjacency matrices, these algebraic operations are equivalent to computations on graphs. GraphBLAS provides a powerful and expressive framework for creating graph algorithms based on the elegant mathematics of sparse matrix operations on a semiring. An overview of the GraphBLAS specification is given, followed by a description of the key features and performance of its implementation in the SuiteSparse:GraphBLAS package.},
35+
journal = {ACM Trans. Math. Softw.},
36+
month = {dec},
37+
articleno = {44},
38+
numpages = {25},
39+
keywords = {GraphBLAS, Graph algorithms, sparse matrices}
40+
}
41+

GraphBLAS/CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ endif ( )
2626
set ( CMAKE_MACOSX_RPATH TRUE )
2727

2828
# version of SuiteSparse:GraphBLAS
29-
set ( GraphBLAS_DATE "Mar 14, 2022" )
30-
set ( GraphBLAS_VERSION_MAJOR 6 )
31-
set ( GraphBLAS_VERSION_MINOR 2 )
32-
set ( GraphBLAS_VERSION_SUB 5 )
29+
set ( GraphBLAS_DATE "Apr 8, 2022" )
30+
set ( GraphBLAS_VERSION_MAJOR 7 )
31+
set ( GraphBLAS_VERSION_MINOR 0 )
32+
set ( GraphBLAS_VERSION_SUB 3 )
3333

3434
message ( STATUS "Building SuiteSparse:GraphBLAS version: v" ${GraphBLAS_VERSION_MAJOR}.${GraphBLAS_VERSION_MINOR}.${GraphBLAS_VERSION_SUB} " date: " ${GraphBLAS_DATE} )
3535

@@ -511,6 +511,7 @@ if ( DEMO )
511511
add_executable ( wildtype_demo "Demo/Program/wildtype_demo.c" )
512512
add_executable ( reduce_demo "Demo/Program/reduce_demo.c" )
513513
add_executable ( import_demo "Demo/Program/import_demo.c" )
514+
add_executable ( wathen_demo "Demo/Program/wathen_demo.c" )
514515

515516
# Libraries required for Demo programs
516517
target_link_libraries ( openmp_demo PUBLIC graphblas graphblasdemo ${GB_CUDA} ${GB_RMM} )
@@ -520,6 +521,7 @@ if ( DEMO )
520521
target_link_libraries ( wildtype_demo PUBLIC graphblas ${GB_CUDA} ${GB_RMM} )
521522
target_link_libraries ( reduce_demo PUBLIC graphblas ${GB_CUDA} ${GB_RMM} )
522523
target_link_libraries ( import_demo PUBLIC graphblas graphblasdemo ${GB_CUDA} ${GB_RMM} )
524+
target_link_libraries ( wathen_demo PUBLIC graphblas graphblasdemo ${GB_CUDA} ${GB_RMM} )
523525

524526
else ( )
525527

GraphBLAS/CUDA/CMakeLists.txt

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.20.1)
77

88
project(GRAPHBLAS_CUDA VERSION 0.1 LANGUAGES CXX CUDA)
99

10-
set(CMAKE_CUDA_FLAGS "-cudart static -lineinfo -G")
10+
set(CMAKE_CUDA_FLAGS "-cudart=static -lineinfo -G")
1111
set(CMAKE_CXX_STANDARD 17)
1212
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++17 -fPIC ")
1313
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGBNCPUFEAT")
@@ -16,7 +16,7 @@ set(CMAKE_C_STANDARD 11)
1616

1717
message(STATUS "${CMAKE_CXX_FLAGS}")
1818

19-
file(GLOB GRAPHBLAS_CUDA_SOURCES "*.cu" "*.c")
19+
file(GLOB GRAPHBLAS_CUDA_SOURCES "*.cu" "*.c" "*.cpp")
2020

2121
add_library(graphblascuda SHARED
2222
${GRAPHBLAS_CUDA_SOURCES}
@@ -34,12 +34,18 @@ set(GRAPHBLAS_CUDA_INCLUDES
3434

3535
message(STATUS "${GRAPHBLAS_CUDA_INCLUDES}")
3636

37-
target_include_directories(graphblascuda PUBLIC ${CUDA_INCLUDE_DIRECTORIES} ${GRAPHBLAS_CUDA_INCLUDES})
37+
target_include_directories(graphblascuda PUBLIC ${CUDAToolkit_INCLUDE_DIRS} ${GRAPHBLAS_CUDA_INCLUDES})
3838
set_target_properties(graphblascuda PROPERTIES POSITION_INDEPENDENT_CODE ON)
3939
set_target_properties(graphblascuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
4040
set_target_properties(graphblascuda PROPERTIES CUDA_ARCHITECTURES "75")
4141

42-
target_link_libraries(graphblascuda nvrtc cuda)
42+
target_link_libraries(graphblascuda CUDA::nvrtc CUDA::cudart_static)
43+
44+
install ( TARGETS graphblascuda
45+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
46+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
47+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
48+
4349

4450
# 1. Execute enumify/stringify/jitify logic to compile ptx kernels and compile/link w/ relevant *.cu files.
4551

@@ -77,8 +83,8 @@ foreach(var ${CUDA_TEST_SUITES})
7783
# easily ignore them from the build
7884
add_custom_command(
7985
OUTPUT
80-
${CMAKE_CURRENT_BINARY_DIR}/${var}_${semiring}_${kernel}_test_instances.hpp
81-
${CMAKE_CURRENT_BINARY_DIR}/${var}_${semiring}_${kernel}_cuda_tests.cu
86+
${CMAKE_CURRENT_BINARY_DIR}/${var}_${semiring}_test_instances.hpp
87+
${CMAKE_CURRENT_BINARY_DIR}/${var}_${semiring}_cuda_tests.cpp
8288
DEPENDS
8389
jitFactory.hpp
8490
COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/test/testGen_cmake.py "\"${CMAKE_CURRENT_SOURCE_DIR}\"" "\"${var}\"" "\"${CUDA_TEST_MONOIDS}\""
@@ -87,7 +93,7 @@ foreach(var ${CUDA_TEST_SUITES})
8793
)
8894

8995
# Construct final list of files to compile (in parallel)
90-
list(APPEND CUDA_TEST_CPP_FILES ${CMAKE_CURRENT_BINARY_DIR}/${var}_${semiring}_${kernel}_cuda_tests.cu)
96+
list(APPEND CUDA_TEST_CPP_FILES ${CMAKE_CURRENT_BINARY_DIR}/${var}_${semiring}_cuda_tests.cpp)
9197
endforeach()
9298
endforeach()
9399
endforeach()
@@ -100,7 +106,13 @@ FetchContent_Declare(
100106
)
101107
# For Windows: Prevent overriding the parent project's compiler/linker settings
102108
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
103-
FetchContent_MakeAvailable(googletest)
109+
FetchContent_GetProperties(googletest)
110+
if(NOT googletest_POPULATED)
111+
FetchContent_Populate(googletest)
112+
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
113+
endif()
114+
115+
#FetchContent_MakeAvailable(googletest EC)
104116

105117

106118
#file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/external_includes)
@@ -131,14 +143,18 @@ add_dependencies(graphblascuda_test gtest_main)
131143
add_dependencies(graphblascuda_test rmm_wrap)
132144

133145
target_link_libraries(graphblascuda_test
146+
PUBLIC
134147
graphblas
135148
graphblascuda
136-
gtest_main
137-
nvrtc
138-
cuda
139-
${ADDITIONAL_DEPS})
140-
141-
target_include_directories(graphblascuda_test PUBLIC
149+
CUDA::cudart_static
150+
CUDA::nvrtc
151+
${ADDITIONAL_DEPS}
152+
PRIVATE
153+
gtest_main)
154+
155+
target_include_directories(graphblascuda_test
156+
PUBLIC
142157
${ADDITIONAL_INCLUDES}
143-
${CUDA_INCLUDE_DIRECTORIES}
158+
${CUDAToolkit_INCLUDE_DIRS}
144159
${GRAPHBLAS_CUDA_INCLUDES})
160+

0 commit comments

Comments
 (0)