Sources: siboehm/SGEMM_CUDA → upstream_ref/sgemm_siboehm/ (25 files) wangzyon/NVIDIA_SGEMM_PRACTICE → upstream_ref/nvidia_sgemm_practice/ (23 files, filled gaps) edtallison/sgemm-cuda → upstream_ref/sgemm_edtallison/ (41 files) All files cat'd one by one from git clone (no --depth). These are the 3 public SGEMM repos that can compile on CUDA 10.2 + CoreX ivcore10. Key files for BI-V100 porting: kernel 10 (warp tiling) — already proven on device with WARPSIZE=64 kernel 11/12 (double buffering) — next optimization target sgemm.cu + runner.cu — complete build+benchmark harness CMakeLists.txt — build system reference
36 lines
1.3 KiB
CMake
36 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.19)
|
|
project(NVIDIA_SGEMM_PRACTICE LANGUAGES CXX CUDA)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
find_package(CUDA REQUIRED)
|
|
|
|
# ensure cuda is available
|
|
include(CheckLanguage)
|
|
check_language(CUDA)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CUDA_COMPUTE_CAPABILITY 75)
|
|
|
|
# in debug mode, add debug symbols to device code
|
|
# this disables most optimizations and kills performance
|
|
add_compile_options("$<$<AND:$<CONFIG:Debug>,$<COMPILE_LANGUAGE:CUDA>>:-G;-src-in-ptx>")
|
|
# add_compile_options("--ptxas-options=-v")
|
|
|
|
# Configure header file search paths
|
|
include_directories(${CUDA_INCLUDE_DIRS})
|
|
include_directories(${PROJECT_SOURCE_DIR}/src)
|
|
# Configure the source file path to be compiled
|
|
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
|
|
|
|
# generate executable
|
|
add_executable(sgemm sgemm.cu ${SRC})
|
|
set_target_properties(sgemm PROPERTIES CUDA_ARCHITECTURES ${CUDA_COMPUTE_CAPABILITY})
|
|
target_link_libraries(sgemm ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES})
|
|
|
|
add_executable(cuBLAS_sgemm cuBLAS_sgemm.cu )
|
|
set_target_properties(sgemm PROPERTIES CUDA_ARCHITECTURES ${CUDA_COMPUTE_CAPABILITY})
|
|
target_link_libraries(cuBLAS_sgemm ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES})
|
|
|
|
add_executable(simplest_kernel simplest_kernel.cu)
|
|
set_target_properties(sgemm PROPERTIES CUDA_ARCHITECTURES ${CUDA_COMPUTE_CAPABILITY})
|
|
target_link_libraries(simplest_kernel ${CUDA_LIBRARIES}) |