Skip to content

Commit 9e56ad3

Browse files
committed
Rework test device code
1 parent 7443873 commit 9e56ad3

File tree

5 files changed

+58
-43
lines changed

5 files changed

+58
-43
lines changed

offload/unittests/OffloadAPI/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ add_libompt_unittest("offload.unittests"
3232
${CMAKE_CURRENT_SOURCE_DIR}/kernel/olReleaseKernel.cpp
3333
${CMAKE_CURRENT_SOURCE_DIR}/kernel/olRetainKernel.cpp
3434
)
35-
add_dependencies("offload.unittests" ${PLUGINS_TEST_COMMON} LibompUnitTestsDeviceBins)
35+
add_dependencies("offload.unittests" ${PLUGINS_TEST_COMMON} LibomptUnitTestsDeviceBins)
3636
target_compile_definitions("offload.unittests" PRIVATE DEVICE_CODE_PATH="${OFFLOAD_TEST_DEVICE_CODE_PATH}")
3737
target_link_libraries("offload.unittests" PRIVATE ${PLUGINS_TEST_COMMON})
3838
target_include_directories("offload.unittests" PRIVATE ${PLUGINS_TEST_INCLUDE})
Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,68 @@
11
macro(add_offload_test_device_code test_filename test_name)
22
message("Building Offload API device code for test '${test_name}'")
33
set(SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${test_filename})
4-
set(UTIL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/util.h)
54

65
# Build for NVPTX
7-
set(BIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/${test_name}.nvptx64.bin)
8-
add_custom_command(OUTPUT ${BIN_PATH}
9-
COMMAND
10-
${CMAKE_C_COMPILER} --target=nvptx64-nvidia-cuda -march=native
11-
--cuda-path=/usr/local/cuda
12-
${SRC_PATH} -o ${BIN_PATH}
13-
DEPENDS ${SRC_PATH} ${UTIL_PATH}
14-
)
15-
list(APPEND BIN_PATHS ${BIN_PATH})
6+
if(OFFLOAD_TEST_TARGET_NVIDIA)
7+
set(BIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/${test_name}.nvptx64.bin)
8+
add_custom_command(OUTPUT ${BIN_PATH}
9+
COMMAND
10+
${CMAKE_C_COMPILER} --target=nvptx64-nvidia-cuda
11+
-march=${LIBOMPTARGET_DEP_CUDA_ARCH}
12+
--cuda-path=${CUDA_ROOT}
13+
${SRC_PATH} -o ${BIN_PATH}
14+
DEPENDS ${SRC_PATH}
15+
)
16+
list(APPEND BIN_PATHS ${BIN_PATH})
17+
endif()
1618

1719
# Build for AMDGPU
18-
set(BIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/${test_name}.amdgpu.bin)
19-
add_custom_command(OUTPUT ${BIN_PATH}
20-
COMMAND
21-
${CMAKE_C_COMPILER} --target=amdgcn-amd-amdhsa -nogpulib
22-
${SRC_PATH} -o ${BIN_PATH}
23-
DEPENDS ${SRC_PATH} ${UTIL_PATH}
24-
)
25-
list(APPEND BIN_PATHS ${BIN_PATH})
20+
if(OFFLOAD_TEST_TARGET_AMDGPU)
21+
set(BIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/${test_name}.amdgpu.bin)
22+
add_custom_command(OUTPUT ${BIN_PATH}
23+
COMMAND
24+
${CMAKE_C_COMPILER} --target=amdgcn-amd-amdhsa -nogpulib
25+
-mcpu=${LIBOMPTARGET_DEP_AMDGPU_ARCH}
26+
${SRC_PATH} -o ${BIN_PATH}
27+
DEPENDS ${SRC_PATH}
28+
)
29+
list(APPEND BIN_PATHS ${BIN_PATH})
30+
endif()
2631

2732
# TODO: Build for host CPU
2833
endmacro()
2934

3035

36+
# Decide what device targets to build for. LibomptargetGetDependencies is
37+
# included at the top-level so the GPUs present on the system are already
38+
# detected.
39+
set(OFFLOAD_TESTS_FORCE_NVIDIA_ARCH "" CACHE STRING
40+
"Force building of NVPTX device code for Offload unit tests with the given arch, e.g. sm_61")
41+
set(OFFLOAD_TESTS_FORCE_AMDGPU_ARCH "" CACHE STRING
42+
"Force building of AMDGPU device code for Offload unit tests with the given arch, e.g. gfx1030")
43+
44+
find_package(CUDAToolkit QUIET)
45+
if(CUDAToolkit_FOUND)
46+
get_filename_component(CUDA_ROOT "${CUDAToolkit_BIN_DIR}" DIRECTORY ABSOLUTE)
47+
endif()
48+
if (OFFLOAD_TESTS_FORCE_NVIDIA_ARCH)
49+
set(LIBOMPTARGET_DEP_CUDA_ARCH ${OFFLOAD_TESTS_FORCE_NVIDIA_ARCH})
50+
set(OFFLOAD_TEST_TARGET_NVIDIA ON)
51+
elseif (LIBOMPTARGET_FOUND_NVIDIA_GPU AND CUDA_ROOT AND "cuda" IN_LIST LIBOMPTARGET_PLUGINS_TO_BUILD)
52+
set(OFFLOAD_TEST_TARGET_NVIDIA ON)
53+
endif()
54+
55+
if (OFFLOAD_TESTS_FORCE_AMDGPU_ARCH)
56+
set(LIBOMPTARGET_DEP_AMDGPU_ARCH ${OFFLOAD_TESTS_FORCE_AMDGPU_ARCH})
57+
set(OFFLOAD_TEST_TARGET_AMDGPU ON)
58+
elseif (LIBOMPTARGET_FOUND_AMDGPU_GPU AND "amdgpu" IN_LIST LIBOMPTARGET_PLUGINS_TO_BUILD)
59+
list(GET LIBOMPTARGET_AMDGPU_DETECTED_ARCH_LIST 0 LIBOMPTARGET_DEP_AMDGPU_ARCH)
60+
set(OFFLOAD_TEST_TARGET_AMDGPU ON)
61+
endif()
62+
3163
add_offload_test_device_code(foo.c foo)
3264
add_offload_test_device_code(bar.c bar)
3365

34-
add_custom_target(LibompUnitTestsDeviceBins DEPENDS ${BIN_PATHS})
66+
add_custom_target(LibomptUnitTestsDeviceBins DEPENDS ${BIN_PATHS})
3567

3668
set(OFFLOAD_TEST_DEVICE_CODE_PATH ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "util.h"
1+
#include <gpuintrin.h>
22

3-
KERNEL void bar(int *out) {
4-
out[get_thread_id_x()] = get_thread_id_x() + 1;
3+
__gpu_kernel void foo(int *out) {
4+
out[__gpu_thread_id(0)] = __gpu_thread_id(0) + 1;
55
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "util.h"
1+
#include <gpuintrin.h>
22

3-
KERNEL void foo(int *out) {
4-
out[get_thread_id_x()] = get_thread_id_x();
3+
__gpu_kernel void foo(int *out) {
4+
out[__gpu_thread_id(0)] = __gpu_thread_id(0);
55
}

offload/unittests/OffloadAPI/device_code/util.h

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)