From e435ee1be8f222d7105586227f5e533b4d4dd772 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Thu, 2 Jul 2020 21:30:50 +0800 Subject: [PATCH] fix(build): generate nccl.h before calling make src.build src/Makefile of nccl does not specify dependency between %.cc and include/nccl.h, leads to a subtle race condition. We workaround that by explicitly calling make on the nccl.h target before running the build. GitOrigin-RevId: d062aa9db02dc48604053a388a6f4f4f91f3e182 --- cmake/nccl.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/nccl.cmake b/cmake/nccl.cmake index bd572b8..97b0d6a 100644 --- a/cmake/nccl.cmake +++ b/cmake/nccl.cmake @@ -2,6 +2,7 @@ set(NCCL_DIR ${PROJECT_SOURCE_DIR}/third_party/nccl CACHE STRING "nccl directory set(NCCL_BUILD_DIR ${PROJECT_BINARY_DIR}/third_party/nccl/build) set(NCCL_LIBS ${NCCL_BUILD_DIR}/lib/libnccl_static.a) +get_filename_component(NCCL_BUILD_DIR ${NCCL_BUILD_DIR} ABSOLUTE) get_filename_component(CUDA_HOME ${CMAKE_CUDA_COMPILER} DIRECTORY) get_filename_component(CUDA_HOME ${CUDA_HOME} DIRECTORY) @@ -13,6 +14,7 @@ endif() add_custom_command( OUTPUT ${NCCL_LIBS} + COMMAND ${MAKE_COMMAND} -C src ${NCCL_BUILD_DIR}/include/nccl.h BUILDDIR=${NCCL_BUILD_DIR} COMMAND ${MAKE_COMMAND} src.build NVCC_GENCODE=${MEGRAY_CUDA_GENCODE} BUILDDIR=${NCCL_BUILD_DIR} CUDA_HOME=${CUDA_HOME} WORKING_DIRECTORY ${NCCL_DIR} VERBATIM -- GitLab