Skip to content

Commit

Permalink
Set alpaka tag to 1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
sbaldu committed Feb 24, 2025
1 parent b0e191d commit ff8b416
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 319 deletions.
33 changes: 13 additions & 20 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,9 @@ add_subdirectory(extern/pybind11)
find_package(Boost 1.75.0 REQUIRED)

include(FetchContent)

FetchContent_Declare(
alpaka
GIT_REPOSITORY https://github.com/alpaka-group/alpaka.git
GIT_TAG develop
GIT_SHALLOW TRUE
FIND_PACKAGE_ARGS)
URL https://github.com/alpaka-group/alpaka/archive/refs/tags/1.2.0.tar.gz)
FetchContent_MakeAvailable(alpaka)

# create lib directory in CLUEstering folder
Expand All @@ -46,9 +42,9 @@ target_include_directories(
CLUE_Convolutional_Kernels
PRIVATE ${CMAKE_SOURCE_DIR}/include ${alpaka_SOURCE_DIR}/include
${Boost_INCLUDE_DIR})
target_compile_options(
CLUE_Convolutional_Kernels PRIVATE -DALPAKA_HOST_ONLY
-DALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED)
target_compile_definitions(
CLUE_Convolutional_Kernels PRIVATE ALPAKA_HOST_ONLY
ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED)
set_target_properties(
CLUE_Convolutional_Kernels
PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/CLUEstering/lib/)
Expand All @@ -69,9 +65,8 @@ pybind11_add_module(
target_include_directories(
CLUE_CPU_Serial PRIVATE ${CMAKE_SOURCE_DIR}/include
${alpaka_SOURCE_DIR}/include ${Boost_INCLUDE_DIR})
target_compile_options(
CLUE_CPU_Serial PRIVATE -DALPAKA_HOST_ONLY
-DALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED)
target_compile_definitions(
CLUE_CPU_Serial PRIVATE ALPAKA_HOST_ONLY ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED)
set_target_properties(
CLUE_CPU_Serial PROPERTIES LIBRARY_OUTPUT_DIRECTORY
${CMAKE_BINARY_DIR}/lib/CLUEstering/lib/)
Expand All @@ -94,9 +89,8 @@ if(TBB_FOUND)
target_include_directories(
CLUE_CPU_TBB PRIVATE ${CMAKE_SOURCE_DIR}/include
${alpaka_SOURCE_DIR}/include ${Boost_SOURCE_DIR})
target_compile_options(
CLUE_CPU_TBB PRIVATE -DALPAKA_HOST_ONLY
-DALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLED)
target_compile_definitions(
CLUE_CPU_TBB PRIVATE ALPAKA_HOST_ONLY ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLED)
target_link_libraries(CLUE_CPU_TBB PRIVATE TBB::tbb)
set_target_properties(
CLUE_CPU_TBB PROPERTIES LIBRARY_OUTPUT_DIRECTORY
Expand Down Expand Up @@ -136,13 +130,12 @@ if(CMAKE_CUDA_COMPILER)
target_include_directories(
CLUE_GPU_CUDA PRIVATE ${CMAKE_SOURCE_DIR}/include
${alpaka_SOURCE_DIR}/include ${Boost_INCLUDE_DIR})
set_target_properties(CLUE_GPU_CUDA PROPERTIES CUDA_ARCHITECTURES
"50;60;61;62;70")
target_compile_options(CLUE_GPU_CUDA PRIVATE -DALPAKA_ACC_GPU_CUDA_ENABLED
--expt-relaxed-constexpr)
target_compile_definitions(CLUE_GPU_CUDA PRIVATE ALPAKA_ACC_GPU_CUDA_ENABLED)
target_compile_options(CLUE_GPU_CUDA PRIVATE --expt-relaxed-constexpr)
set_target_properties(
CLUE_GPU_CUDA PROPERTIES LIBRARY_OUTPUT_DIRECTORY
${CMAKE_BINARY_DIR}/lib/CLUEstering/lib/)
CLUE_GPU_CUDA
PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/CLUEstering/lib/
CUDA_ARCHITECTURES "50;60;61;62;70")
# copy shared library for local testing
add_custom_command(
TARGET CLUE_GPU_CUDA
Expand Down
201 changes: 51 additions & 150 deletions benchmark/dataset_size/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.16.0)
project(Profiling LANGUAGES CXX)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand All @@ -9,168 +10,68 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()

if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "-Wall -Wextra -pg")
elseif(${CMAKE_BUILD_TYPE} STREQUAL "Release")
set(CMAKE_CXX_FLAGS "-O2")
endif()
string(
APPEND
CMAKE_CXX_FLAGS_DEBUG
"-DCLUE_DEBUG -D_GLIBCXX_ASSERTIONS -Wall -Wextra -Wpedantic -Wpedantic -Werror"
)
string(APPEND CMAKE_CXX_FLAGS "-O2")

# include alpaka extern subfolder
add_subdirectory(pybind11)

include(FetchContent)

find_package(alpaka)
if (NOT alpaka_FOUND)
FetchContent_Declare(
alpaka
GIT_REPOSITORY https://github.com/alpaka-group/alpaka.git
GIT_TAG develop
)

FetchContent_GetProperties(alpaka)
if(NOT alpaka_POPULATED)
FetchContent_Populate(alpaka)
endif()
set(alpaka_PATH ./build/_deps/alpaka-src/include)
else()
set(alpaka_PATH ${alpaka_INCLUDE_DIRS})
endif()
find_package(Boost 1.75.0 REQUIRED)

# look for boost
find_package(Boost 1.75.0)
# if boost is not found, it's fetched from the official boost repository
if(NOT Boost_FOUND)
FetchContent_Declare(
boost
URL https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz
)

FetchContent_GetProperties(boost)
if(NOT boost_POPULATED)
FetchContent_Populate(boost)
endif()
set(Boost_PATH ./build/_deps/boost-src)
else()
set(Boost_PATH ${Boost_INCLUDE_DIRS})
endif()

if(NOT DEFINED CPU_ONLY)
set(CPU_ONLY OFF)
endif()
if(NOT DEFINED SERIAL_ONLY)
set(SERIAL_ONLY OFF)
endif()
include(FetchContent)
FetchContent_Declare(
alpaka
URL https://github.com/alpaka-group/alpaka/archive/refs/tags/1.2.0.tar.gz)

# include source directories
include_directories(../../include/)
FetchContent_MakeAvailable(alpaka)

# CPU Serial
add_executable(serial.out main.cpp)
target_include_directories(serial.out PRIVATE ${alpaka_PATH})
target_include_directories(
serial.out PRIVATE ${CMAKE_SOURCE_DIR}/../../include
${alpaka_SOURCE_DIR}/include ${Boost_INCLUDE_DIR})
target_link_libraries(serial.out PRIVATE pybind11::embed)
# link boost
target_link_libraries(serial.out PRIVATE ${Boost_LIBRARIES})
target_include_directories(serial.out PRIVATE ${Boost_PATH})
# alpaka build flags
target_compile_options(
serial.out
PRIVATE -DALPAKA_HOST_ONLY -DALPAKA_ACC_CPU_B_SEQ_T_SEQ_PRESENT
-DALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
-DALPAKA_ACC_CPU_B_SEQ_T_SEQ_SYNC_BACKEND)
if(NOT "${ANNOTATE}" STREQUAL "")
target_compile_options(serial.out PRIVATE -DANNOTATE)
endif()
target_compile_options(serial.out PRIVATE -pg)
target_link_options(serial.out PRIVATE -pg)

if(NOT ${SERIAL_ONLY})
find_package(TBB)

# CPU TBB
if(TBB_FOUND)
# compile cpu tbb module
add_executable(tbb.out main.cpp)
target_include_directories(tbb.out PRIVATE ${alpaka_PATH})
target_link_libraries(tbb.out PRIVATE pybind11::embed)
target_link_libraries(tbb.out PRIVATE ${Boost_LIBRARIES})
target_include_directories(tbb.out PRIVATE ${Boost_PATH})
target_compile_options(
tbb.out
PRIVATE -ltbb -DALPAKA_ACC_CPU_B_TBB_T_SEQ_PRESENT
-DALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLED
-DALPAKA_ACC_CPU_B_TBB_T_SEQ_ASYNC_BACKEND)
target_link_libraries(tbb.out PRIVATE TBB::tbb)
if(NOT "${ANNOTATE}" STREQUAL "")
target_compile_options(tbb.out PRIVATE -DANNOTATE)
endif()
target_compile_options(serial.out PRIVATE -pg)
target_link_options(serial.out PRIVATE -pg)
endif()
target_compile_definitions(
serial.out PRIVATE ALPAKA_HOST_ONLY ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED)

find_package(TBB)
# CPU TBB
if(TBB_FOUND)
add_executable(tbb.out main.cpp)
target_include_directories(
tbb.out PRIVATE ${CMAKE_SOURCE_DIR}/../../include
${alpaka_SOURCE_DIR}/include ${Boost_INCLUDE_DIR})
target_link_libraries(tbb.out PRIVATE pybind11::embed TBB::tbb)
target_compile_definitions(tbb.out PRIVATE ALPAKA_HOST_ONLY
ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLED)
endif()

if((NOT ${CPU_ONLY}) AND (NOT ${SERIAL_ONLY}))
# check if CUDA is available
include(CheckLanguage)
check_language(CUDA)

# GPU CUDA
if(CMAKE_CUDA_COMPILER)
# enable CUDA
enable_language(CUDA)
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CUDA_COMPILER})

# set the CUDA standard
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()
# check if CUDA is available
include(CheckLanguage)
check_language(CUDA)

set(CMAKE_CUDA_FLAGS "-Wall -Wextra -g -O2")
# GPU CUDA
if(CMAKE_CUDA_COMPILER)
enable_language(CUDA)
set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CUDA_COMPILER})

# compile the file with .cc extension using nvcc
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
# compile gpu cuda module
add_executable(cuda.out main.cpp)
target_include_directories(cuda.out PRIVATE ${alpaka_PATH})
target_link_libraries(cuda.out PRIVATE pybind11::embed)
# link boost
target_link_libraries(cuda.out PRIVATE ${Boost_LIBRARIES})
target_include_directories(cuda.out PRIVATE ${Boost_PATH})
# set the cuda architectures
set_target_properties(cuda.out PROPERTIES CUDA_ARCHITECTURES
"50;60;61;62;70")
# alpaka build flags
target_compile_options(
cuda.out
PRIVATE -DALPAKA_ACC_GPU_CUDA_PRESENT -DALPAKA_ACC_GPU_CUDA_ENABLED
-DALPAKA_ACC_GPU_CUDA_ASYNC_BACKEND)
# nvcc compilation flags
target_compile_options(
cuda.out PRIVATE --expt-relaxed-constexpr -gencode
arch=compute_61,code=[sm_61,compute_61])
if(NOT "${ANNOTATE}" STREQUAL "")
target_compile_options(cuda.out PRIVATE -DANNOTATE)
endif()
target_compile_options(cuda.out PRIVATE -pg)
target_link_options(cuda.out PRIVATE -pg)
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 20)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()

# # GPU HIP check if HIP is available check_language(HIP)
# if(CMAKE_HIP_COMPILER) # enable HIP enable_language(HIP)
# set(CMAKE_HIP_HOST_COMPILER ${CMAKE_HIP_COMPILER})

# # look for the hip package folder find_package(hip)

# set(hip_BASE "${hip_INCLUDE_DIRS}/..") # set the hipcc compiler
# set(CMAKE_CXX_COMPILER "${hip_BASE}/bin/hipcc") # compile gpu hip module
# add_executable(hip.out main.cpp) # link boost target_link_libraries(hip.out
# PRIVATE ${Boost_LIBRARIES}) target_include_directories(hip.out PRIVATE
# ${Boost_PATH}) # alpaka build flags target_compile_options( hip.out PRIVATE
# -DALPAKA_ACC_GPU_HIP_PRESENT -DALPAKA_ACC_GPU_HIP_ENABLED
# -DALPAKA_ACC_GPU_HIP_ASYNC_BACKEND) # link hip-rand libraries
# target_include_directories(hip.out PRIVATE ${hip_INCLUDE_DIRS})
# target_include_directories(hip.out PRIVATE ${hip_BASE}/hiprand/include)
# target_include_directories(hip.out PRIVATE ${hip_BASE}/rocrand/include)
# endif()
add_executable(cuda.out main.cpp)
target_include_directories(
cuda.out PRIVATE ${CMAKE_SOURCE_DIR}/../../include
${alpaka_SOURCE_DIR}/include ${Boost_INCLUDE_DIR})
target_compile_definitions(cuda.out PRIVATE ALPAKA_ACC_GPU_CUDA_ENABLED)
target_compile_options(cuda.out PRIVATE --expt-relaxed-constexpr)
set_target_properties(
cuda.out
PROPERTIES LANGUAGE CUDA
CUDA_SEPARABLE_COMPILATION ON
CUDA_ARCHITECTURES "50;60;61;62;70")
endif()
Loading

0 comments on commit ff8b416

Please sign in to comment.