sys-cluster/Graph500: new package, add 1.2

Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2022-05-23 23:22:01 +02:00
parent 9c370ee3ec
commit 3ff3149eea
6 changed files with 227 additions and 0 deletions

View File

@@ -0,0 +1,135 @@
cmake_minimum_required(VERSION 3.15)
project(graph500 LANGUAGES C)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
include(GNUInstallDirs)
SET(GRAPH500_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/options.c"
"${CMAKE_CURRENT_SOURCE_DIR}/rmat.c"
"${CMAKE_CURRENT_SOURCE_DIR}/kronecker.c"
"${CMAKE_CURRENT_SOURCE_DIR}/verify.c"
"${CMAKE_CURRENT_SOURCE_DIR}/prng.c"
"${CMAKE_CURRENT_SOURCE_DIR}/xalloc.c"
"${CMAKE_CURRENT_SOURCE_DIR}/timer.c"
)
ADD_LIBRARY(GRAPH500_OBJECTS OBJECT ${GRAPH500_SOURCES})
target_include_directories(GRAPH500_OBJECTS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
SET(GENERATOR_SRC
"${CMAKE_CURRENT_SOURCE_DIR}/generator/btrd_binomial_distribution.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/splittable_mrg.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/mrg_transitions.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/graph_generator.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/permutation_gen.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/make_graph.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/utils.c"
"${CMAKE_CURRENT_SOURCE_DIR}/generator/scramble_edges.c"
)
ADD_LIBRARY(generator-seq SHARED ${GENERATOR_SRC} $<TARGET_OBJECTS:GRAPH500_OBJECTS>)
target_compile_definitions(generator-seq PUBLIC GRAPH_GENERATOR_SEQ)
target_include_directories(generator-seq PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/generator")
target_link_libraries(generator-seq PUBLIC -liberty)
install(TARGETS generator-seq LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
if(BUILD_OPENMP)
find_package(OpenMP REQUIRED)
ADD_LIBRARY(generator-omp SHARED ${GENERATOR_SRC} $<TARGET_OBJECTS:GRAPH500_OBJECTS>)
set_target_properties(generator-omp PROPERTIES COMPILE_FLAGS "-fopenmp")
target_compile_definitions(generator-omp PUBLIC GRAPH_GENERATOR_OMP)
target_include_directories(generator-omp PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/generator")
target_link_libraries(generator-omp PUBLIC OpenMP::OpenMP_C -liberty)
install(TARGETS generator-omp LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
ADD_EXECUTABLE(omp-csr
"${CMAKE_CURRENT_SOURCE_DIR}/omp-csr/omp-csr.c"
"${CMAKE_CURRENT_SOURCE_DIR}/graph500.c"
)
target_link_libraries(omp-csr generator-omp -lm)
install(TARGETS omp-csr RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
ADD_EXECUTABLE(generator_test_omp "${CMAKE_CURRENT_SOURCE_DIR}/generator/generator_test_omp.c")
target_link_libraries(generator_test_omp generator-omp -lm)
install(TARGETS generator_test_omp RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
ADD_EXECUTABLE(seq-list
"${CMAKE_CURRENT_SOURCE_DIR}/seq-list/seq-list.c"
"${CMAKE_CURRENT_SOURCE_DIR}/graph500.c"
)
target_link_libraries(seq-list generator-seq -lm)
install(TARGETS seq-list RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
ADD_EXECUTABLE(seq-csr
"${CMAKE_CURRENT_SOURCE_DIR}/seq-csr/seq-csr.c"
"${CMAKE_CURRENT_SOURCE_DIR}/graph500.c"
)
target_link_libraries(seq-csr generator-seq -lm)
install(TARGETS seq-csr RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
ADD_EXECUTABLE(generator_test_seq "${CMAKE_CURRENT_SOURCE_DIR}/generator/generator_test_seq.c")
target_link_libraries(generator_test_seq generator-seq -lm)
install(TARGETS generator_test_seq RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
if(BUILD_MPI)
find_package(MPI REQUIRED)
ADD_LIBRARY(graph_generator_mpi SHARED
"${CMAKE_CURRENT_SOURCE_DIR}/generator/apply_permutation_mpi.c"
${GENERATOR_SRC}
)
target_compile_definitions(graph_generator_mpi PUBLIC restrict=__restrict__ GRAPH_GENERATOR_MPI GRAPHGEN_DISTRIBUTED_MEMORY)
target_include_directories(graph_generator_mpi
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/generator"
PRIVATE
${MPI_INCLUDE_PATH}
)
target_link_libraries(graph_generator_mpi PUBLIC ${MPI_LIBRARIES} ${MPI_LINK_FLAGS} -liberty)
install(TARGETS graph_generator_mpi LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
ADD_EXECUTABLE(generator_test_mpi "${CMAKE_CURRENT_SOURCE_DIR}/generator/generator_test_mpi.c")
target_compile_definitions(graph_generator_mpi PUBLIC restrict=__restrict__ GRAPH_GENERATOR_MPI GRAPHGEN_DISTRIBUTED_MEMORY)
target_include_directories(generator_test_mpi
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/generator"
PRIVATE
${MPI_INCLUDE_PATH}
)
target_link_libraries(generator_test_mpi graph_generator_mpi ${MPI_LIBRARIES} ${MPI_LINK_FLAGS} -lm)
install(TARGETS generator_test_mpi RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
SET(graph500_mpi_src
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/convert_to_csr.c"
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/find_roots.c"
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/utils.c"
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/validate.c"
)
ADD_LIBRARY(graph500_mpi_obj OBJECT ${graph500_mpi_src})
target_include_directories(graph500_mpi_obj PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/mpi")
target_compile_definitions(graph500_mpi_obj PUBLIC restrict=__restrict__ GRAPH_GENERATOR_MPI GRAPHGEN_DISTRIBUTED_MEMORY)
ADD_LIBRARY(graph500_mpi SHARED $<TARGET_OBJECTS:graph500_mpi_obj>)
install(TARGETS graph500_mpi LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
ADD_EXECUTABLE(graph500_mpi_simple
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/main.c"
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/bfs_simple.c"
)
target_compile_definitions(graph500_mpi_simple PUBLIC restrict=__restrict__ GRAPH_GENERATOR_MPI GRAPHGEN_DISTRIBUTED_MEMORY)
target_link_libraries(graph500_mpi_simple graph500_mpi graph_generator_mpi -lm)
install(TARGETS graph500_mpi_simple RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
ADD_EXECUTABLE(graph500_mpi_one_sided
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/main.c"
"${CMAKE_CURRENT_SOURCE_DIR}/mpi/bfs_one_sided.c"
)
target_compile_definitions(graph500_mpi_simple PUBLIC restrict=__restrict__ GRAPH_GENERATOR_MPI GRAPHGEN_DISTRIBUTED_MEMORY)
target_link_libraries(graph500_mpi_one_sided graph500_mpi graph_generator_mpi -lm)
install(TARGETS graph500_mpi_one_sided RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
endif()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/graph500" FILES_MATCHING PATTERN "*.h")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/mpi/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/graph500/mpi" FILES_MATCHING PATTERN "*.h")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/generator/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/graph500/generator" FILES_MATCHING PATTERN "*.h")

View File

@@ -0,0 +1,11 @@
--- a/generator/permutation_gen.c
+++ b/generator/permutation_gen.c
@@ -251,7 +251,7 @@
indices[0] -= temp_base;
indices[1] -= temp_base;
MPI_Datatype old_types[] = {INT64_T_MPI_TYPE, INT64_T_MPI_TYPE};
- MPI_Type_struct(2, blocklens, indices, old_types, &slot_data_type);
+ MPI_Type_create_struct(2, blocklens, indices, old_types, &slot_data_type);
MPI_Type_commit(&slot_data_type);
}

View File

@@ -0,0 +1,11 @@
--- a/generator/generator_test_seq.c
+++ b/generator/generator_test_seq.c
@@ -20,7 +20,7 @@
#include "make_graph.h"
-inline double get_time() {
+static inline double get_time() {
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec + tv.tv_usec * 1.e-6;