Skip to content

Commit b1e3943

Browse files
authored
[Build] Organize cmake file (Fixed) (#7715)
1 parent 09ea319 commit b1e3943

File tree

4 files changed

+49
-53
lines changed

4 files changed

+49
-53
lines changed

CMakeLists.txt

+36-52
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ dgl_option(BUILD_TYPE "Type of the build: dev, dogfood or release" "dev")
2020
message(STATUS "Build for ${BUILD_TYPE}")
2121

2222
dgl_option(USE_CUDA "Build with CUDA" OFF)
23-
dgl_option(USE_LIBURING "Build with liburing" ON)
2423
dgl_option(TORCH_PYTHON_INTERPS "Python interpreter for building sub-components" python3)
2524

2625
# Conda build related options.
@@ -129,11 +128,11 @@ if (${BUILD_TYPE} STREQUAL "dev")
129128
endif()
130129
else()
131130
if (MSVC)
132-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /O2")
133-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2")
131+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /O2 /DNDEBUG")
132+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /DNDEBUG")
134133
else()
135-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
136-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
134+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -DNDEBUG")
135+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -DNDEBUG")
137136
endif()
138137
endif()
139138

@@ -186,48 +185,11 @@ else(MSVC)
186185
endif(NOT APPLE)
187186
endif(MSVC)
188187

189-
if(USE_OPENMP)
190-
include(FindOpenMP)
191-
if(OPENMP_FOUND)
192-
set(CMAKE_C_FLAGS "${OpenMP_C_FLAGS} ${CMAKE_C_FLAGS}")
193-
set(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
194-
endif(OPENMP_FOUND)
195-
message(STATUS "Build with OpenMP.")
196-
endif(USE_OPENMP)
197-
198188
if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
199189
message(STATUS "Disabling LIBXSMM on ${CMAKE_SYSTEM_PROCESSOR}.")
200190
set(USE_LIBXSMM OFF)
201191
endif()
202192

203-
if(USE_LIBXSMM)
204-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_LIBXSMM -DDGL_CPU_LLC_SIZE=40000000 -D__BLAS=0")
205-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_LIBXSMM -DDGL_CPU_LLC_SIZE=40000000 -D__BLAS=0")
206-
message(STATUS "Build with LIBXSMM optimization.")
207-
endif(USE_LIBXSMM)
208-
209-
if ((NOT MSVC) AND USE_EPOLL)
210-
INCLUDE(CheckIncludeFile)
211-
check_include_file("sys/epoll.h" EPOLL_AVAILABLE)
212-
if (EPOLL_AVAILABLE)
213-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_EPOLL")
214-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_EPOLL")
215-
else()
216-
message(WARNING "EPOLL is not available on this platform...")
217-
endif()
218-
endif ()
219-
220-
# To compile METIS correct for DGL.
221-
if(MSVC)
222-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DIDXTYPEWIDTH=64 /DREALTYPEWIDTH=32")
223-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DIDXTYPEWIDTH=64 /DREALTYPEWIDTH=32")
224-
else(MSVC)
225-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DIDXTYPEWIDTH=64 -DREALTYPEWIDTH=32")
226-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIDXTYPEWIDTH=64 -DREALTYPEWIDTH=32")
227-
endif(MSVC)
228-
229-
# configure minigun
230-
add_definitions(-DENABLE_PARTIAL_FRONTIER=0) # disable minigun partial frontier compile
231193
# Source file lists
232194
file(GLOB DGL_SRC
233195
src/*.cc
@@ -256,6 +218,12 @@ else()
256218
endif()
257219
list(APPEND DGL_SRC ${DGL_RPC_SRC})
258220

221+
if(USE_OPENMP)
222+
find_package(OpenMP REQUIRED)
223+
list(APPEND DGL_LINKER_LIBS OpenMP::OpenMP_CXX)
224+
message(STATUS "Build with OpenMP.")
225+
endif(USE_OPENMP)
226+
259227
# Configure cuda
260228
if(USE_CUDA)
261229
file(GLOB_RECURSE DGL_CUDA_SRC
@@ -279,6 +247,16 @@ else(USE_CUDA)
279247
add_library(dgl SHARED ${DGL_SRC})
280248
endif(USE_CUDA)
281249

250+
if ((NOT MSVC) AND USE_EPOLL)
251+
INCLUDE(CheckIncludeFile)
252+
check_include_file("sys/epoll.h" EPOLL_AVAILABLE)
253+
if (EPOLL_AVAILABLE)
254+
target_compile_definitions(dgl PRIVATE USE_EPOLL)
255+
else()
256+
message(WARNING "EPOLL is not available on this platform...")
257+
endif()
258+
endif ()
259+
282260
# include directories
283261
target_include_directories(dgl PRIVATE "include")
284262
# check for conda includes
@@ -351,18 +329,26 @@ else(EXTERNAL_NANOFLANN_PATH)
351329
endif(EXTERNAL_NANOFLANN_PATH)
352330

353331
if (USE_LIBXSMM)
332+
target_compile_definitions(dgl PRIVATE USE_LIBXSMM DGL_CPU_LLC_SIZE=40000000 __BLAS=0)
354333
target_include_directories(dgl PRIVATE "third_party/libxsmm/include")
334+
message(STATUS "Build with LIBXSMM optimization.")
355335
endif()
356336

337+
# To compile METIS correct for DGL.
338+
add_compile_definitions(IDXTYPEWIDTH=64 REALTYPEWIDTH=32)
357339
if (EXTERNAL_METIS_PATH)
340+
# To compile METIS correct for DGL.
341+
if(MSVC)
342+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DIDXTYPEWIDTH=64 /DREALTYPEWIDTH=32")
343+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DIDXTYPEWIDTH=64 /DREALTYPEWIDTH=32")
344+
else(MSVC)
345+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DIDXTYPEWIDTH=64 -DREALTYPEWIDTH=32")
346+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIDXTYPEWIDTH=64 -DREALTYPEWIDTH=32")
347+
endif(MSVC)
358348
find_package(METIS REQUIRED)
359-
if (NOT METIS_FOUND)
360-
message(FATAL_ERROR "Failed to find METIS library")
361-
else()
362-
message(STATUS "Found METIS library")
363-
target_include_directories(dgl SYSTEM PUBLIC ${METIS_INCLUDE_DIR})
364-
list(APPEND DGL_LINKER_LIBS ${METIS_LIBRARIES})
365-
endif()
349+
message(STATUS "Found METIS library")
350+
target_include_directories(dgl SYSTEM PUBLIC ${METIS_INCLUDE_DIR})
351+
list(APPEND DGL_LINKER_LIBS ${METIS_LIBRARIES})
366352
else(EXTERNAL_METIS_PATH)
367353
target_include_directories(dgl PRIVATE "third_party/METIS/include")
368354
# Compile METIS
@@ -391,8 +377,6 @@ endif()
391377

392378
# Compile gpu_cache
393379
if(USE_CUDA)
394-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_GPU_CACHE")
395-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_GPU_CACHE")
396380
# Manually build gpu_cache because CMake always builds it as shared
397381
file(GLOB gpu_cache_src
398382
third_party/HugeCTR/gpu_cache/src/nv_gpu_cache.cu
@@ -406,7 +390,7 @@ endif(USE_CUDA)
406390

407391
# support PARALLEL_ALGORITHMS
408392
if (LIBCXX_ENABLE_PARALLEL_ALGORITHMS)
409-
add_definitions(-DPARALLEL_ALGORITHMS)
393+
target_compile_definitions(dgl PRIVATE PARALLEL_ALGORITHMS)
410394
endif(LIBCXX_ENABLE_PARALLEL_ALGORITHMS)
411395

412396
target_link_libraries(dgl ${DGL_LINKER_LIBS} ${DGL_RUNTIME_LINKER_LIBS})

cmake/modules/CUDA.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,10 @@ macro(dgl_config_cuda linker_libs)
230230
string(CONCAT CXX_HOST_FLAGS ${CXX_HOST_FLAGS} ",/MD")
231231
endif()
232232
list(APPEND CUDA_NVCC_FLAGS "-Xcompiler" "${CXX_HOST_FLAGS}")
233+
if(USE_OPENMP)
234+
# Needed by CUDA disjoint union source file.
235+
list(APPEND CUDA_NVCC_FLAGS "-Xcompiler" "${OpenMP_CXX_FLAGS}")
236+
endif(USE_OPENMP)
233237

234238
# 1. Add arch flags
235239
dgl_select_nvcc_arch_flags(NVCC_FLAGS_ARCH)

graphbolt/CMakeLists.txt

+8
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g3 -ggdb")
4646

4747
set(LIB_GRAPHBOLT_NAME "graphbolt_pytorch_${TORCH_VER}")
4848
option(BUILD_WITH_TASKFLOW "Use taskflow as parallel backend" ON)
49+
option(USE_OPENMP "Use OpenMP for graphbolt" ON)
50+
option(USE_LIBURING "Build graphbolt with liburing support" ON)
4951

5052
set(BOLT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
5153
set(BOLT_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/include")
@@ -85,6 +87,12 @@ if(BUILD_WITH_TASKFLOW)
8587
target_compile_definitions(${LIB_GRAPHBOLT_NAME} PRIVATE BUILD_WITH_TASKFLOW=1)
8688
endif()
8789

90+
if(USE_OPENMP)
91+
find_package(OpenMP REQUIRED)
92+
target_link_libraries(${LIB_GRAPHBOLT_NAME} OpenMP::OpenMP_CXX)
93+
message(STATUS "Build graphbolt with OpenMP.")
94+
endif(USE_OPENMP)
95+
8896
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
8997
if(USE_LIBURING)
9098
add_definitions(-DHAVE_LIBRARY_LIBURING)

graphbolt/build.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ if ! [[ -z "${CUDAARCHS}" ]]; then
2828
TORCH_CUDA_ARCH_LIST=${LAST_ARCHITECTURE:0:-1}'.'${LAST_ARCHITECTURE: -1}
2929
fi
3030
fi
31-
CMAKE_FLAGS="-DCUDA_TOOLKIT_ROOT_DIR=$CUDA_TOOLKIT_ROOT_DIR -DUSE_CUDA=$USE_CUDA -DGPU_CACHE_BUILD_DIR=$BINDIR -DTORCH_CUDA_ARCH_LIST=$TORCH_CUDA_ARCH_LIST -DUSE_LIBURING=$USE_LIBURING"
31+
CMAKE_FLAGS="-DCUDA_TOOLKIT_ROOT_DIR=$CUDA_TOOLKIT_ROOT_DIR -DUSE_CUDA=$USE_CUDA -DTORCH_CUDA_ARCH_LIST=$TORCH_CUDA_ARCH_LIST"
3232
echo "graphbolt cmake flags: $CMAKE_FLAGS"
3333

3434
if [ $# -eq 0 ]; then

0 commit comments

Comments
 (0)