Skip to content

Commit 95c991a

Browse files
committed
build(kernel): try to use local cccl instead of system
Signed-off-by: YdrMaster <[email protected]>
1 parent 40fcbee commit 95c991a

File tree

7 files changed

+50
-7
lines changed

7 files changed

+50
-7
lines changed

CMakeLists.txt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,20 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
1212
set(CMAKE_CXX_EXTENSIONS OFF)
1313
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1414

15+
# Download with:
16+
#
17+
# mkdir -p cmake
18+
# wget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/latest/download/get_cpm.cmake
19+
include(cmake/CPM.cmake)
20+
1521
if(USE_CUDA)
22+
CPMAddPackage(NAME CCCL SOURCE_DIR ${CMAKE_SOURCE_DIR}/3rd-party/cccl)
23+
1624
add_compile_definitions(USE_CUDA)
1725
enable_language(CUDA)
1826
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER})
1927
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
20-
set(CMAKE_CUDA_ARCHITECTURES 80)
28+
set(CMAKE_CUDA_ARCHITECTURES native)
2129
endif()
2230
if(NOT DEFINED CMAKE_CUDA_STANDARD)
2331
set(CMAKE_CUDA_STANDARD 17)
@@ -45,7 +53,7 @@ endif()
4553
if (USE_BANG)
4654
add_compile_definitions(USE_BANG)
4755
include_directories(src/kernels/mlu/include)
48-
56+
4957
# Neuware Evironment
5058
if ((NOT DEFINED NEUWARE_HOME) AND (NOT DEFINED ENV{NEUWARE_HOME}))
5159
message(FATAL_ERROR "NEUWARE_HOME is not defined from cmake or env")
@@ -55,14 +63,14 @@ if (USE_BANG)
5563
set(NEUWARE_HOME $ENV{NEUWARE_HOME} CACHE STRING "NEUWARE_HOME directory for Cambricon Neuware development")
5664
endif()
5765
message(STATUS "NEUWARE_HOME: ${NEUWARE_HOME}")
58-
66+
5967
# cnrt cndrv cnnl
6068
include_directories("${NEUWARE_HOME}/include")
6169
find_library(CAMBRICON_CNNL libcnnl.so "${NEUWARE_HOME}/lib64")
6270
find_library(CAMBRICON_CNRT libcnrt.so "${NEUWARE_HOME}/lib64")
6371
find_library(CAMBRICON_CNDRV libcndrv.so "${NEUWARE_HOME}/lib64")
6472
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++ -Wall")
65-
73+
6674
if ((NOT DEFINED TARGET_CPU_ARCH) AND (NOT DEFINED ENV{TARGET_CPU_ARCH}))
6775
execute_process(COMMAND uname -m OUTPUT_VARIABLE _uname_m OUTPUT_STRIP_TRAILING_WHITESPACE)
6876
set(TARGET_CPU_ARCH "${_uname_m}" CACHE STRING "Target CPU ARCH")

cmake/CPM.cmake

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: MIT
2+
#
3+
# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors
4+
5+
set(CPM_DOWNLOAD_VERSION 0.38.7)
6+
set(CPM_HASH_SUM "83e5eb71b2bbb8b1f2ad38f1950287a057624e385c238f6087f94cdfc44af9c5")
7+
8+
if(CPM_SOURCE_CACHE)
9+
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
10+
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
11+
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
12+
else()
13+
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
14+
endif()
15+
16+
# Expand relative path. This is important if the provided path contains a tilde (~)
17+
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
18+
19+
file(DOWNLOAD
20+
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
21+
${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}
22+
)
23+
24+
include(${CPM_DOWNLOAD_LOCATION})

src/04kernel/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ if(USE_CUDA)
2626
# nvrtc for cuda kernel compile
2727
# cublas for matmul
2828
# cudnn for conv and others
29-
target_link_libraries(kernel PUBLIC cuda nvrtc cublas cublasLt cudnn kernel_cuda)
29+
target_link_libraries(kernel PUBLIC cuda kernel_cuda)
30+
target_link_libraries(kernel PRIVATE nvrtc cublas cublasLt cudnn)
3031
target_include_directories(kernel PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
3132
endif()
3233
if(USE_KUNLUN)

src/04kernel/cuda/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ project(kernel_cuda)
44
file(GLOB_RECURSE KERNEL_CUDA_SUB_SRC src/*.cu)
55

66
add_library(kernel_cuda STATIC ${KERNEL_CUDA_SUB_SRC})
7-
target_link_libraries(kernel_cuda PUBLIC common)
7+
target_link_libraries(kernel_cuda PUBLIC common CCCL::CCCL)
88
target_include_directories(kernel_cuda PUBLIC include)
99

1010
file(GLOB_RECURSE KERNEL_CUDA_TEST test/*.cu)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#ifndef KERNEL_CUDA_REDUCE_CUH
2+
#define KERNEL_CUDA_REDUCE_CUH
3+
4+
#include <cub/warp/warp_reduce.cuh>
5+
6+
namespace refactor::kernel::cuda {
7+
}
8+
9+
#endif// KERNEL_CUDA_REDUCE_CUH

src/04kernel/src/kernels/attention/cuda_kernel.cu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "../../utilities/cuda/cublaslt_utils.cuh"
22
#include "cuda_kernel.hh"
33
#include "hardware/functions.h"
4+
#include "kernel/cuda/reduce.cuh"
45

56
namespace refactor::kernel {
67
using K = AttentionCuda;

0 commit comments

Comments
 (0)