Skip to content

Commit 41228d3

Browse files
authored
Merge pull request #993 from fabiomestre/fabio/opencl_ci
[CI] Add support for OpenCL CI on CPU
2 parents 0250c64 + 6502de1 commit 41228d3

16 files changed

+202
-50
lines changed

.github/workflows/cmake.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,10 @@ jobs:
163163
strategy:
164164
matrix:
165165
adapter: [
166-
{name: CUDA, triplet: nvptx64-nvidia-cuda},
167-
{name: HIP, triplet: amdgcn-amd-amdhsa},
168-
{name: L0, triplet: spir64}
166+
{name: CUDA, triplet: nvptx64-nvidia-cuda, platform: ""},
167+
{name: HIP, triplet: amdgcn-amd-amdhsa, platform: ""},
168+
{name: L0, triplet: spir64, platform: ""},
169+
{name: OPENCL, triplet: spir64, platform: "Intel(R) OpenCL"}
169170
]
170171
build_type: [Debug, Release]
171172
compiler: [{c: gcc, cxx: g++}, {c: clang, cxx: clang++}]
@@ -219,7 +220,7 @@ jobs:
219220
- name: Test adapters
220221
if: matrix.adapter.name != 'L0'
221222
working-directory: ${{github.workspace}}/build
222-
run: ctest -C ${{matrix.build_type}} --output-on-failure -L "conformance" --timeout 180
223+
run: env UR_CTS_ADAPTER_PLATFORM="${{matrix.adapter.platform}}" ctest -C ${{matrix.build_type}} --output-on-failure -L "conformance" --timeout 180
223224

224225
examples-build-hw:
225226
name: Build - examples on HW

source/adapters/opencl/CMakeLists.txt

Lines changed: 77 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,65 +5,96 @@
55

66
set(OPENCL_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH "OpenCL adapter directory")
77

8+
set(UR_OPENCL_INCLUDE_DIR "" CACHE PATH "Directory containing the OpenCL Headers")
9+
set(UR_OPENCL_ICD_LOADER_LIBRARY "" CACHE FILEPATH "Path of the OpenCL ICD Loader library")
10+
11+
find_package(Threads REQUIRED)
12+
813
set(TARGET_NAME ur_adapter_opencl)
914

10-
add_ur_adapter(${TARGET_NAME}
11-
SHARED
12-
${CMAKE_CURRENT_SOURCE_DIR}/ur_interface_loader.cpp
13-
${CMAKE_CURRENT_SOURCE_DIR}/adapter.hpp
14-
${CMAKE_CURRENT_SOURCE_DIR}/adapter.cpp
15-
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer.hpp
16-
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer.cpp
17-
${CMAKE_CURRENT_SOURCE_DIR}/common.hpp
18-
${CMAKE_CURRENT_SOURCE_DIR}/common.cpp
19-
${CMAKE_CURRENT_SOURCE_DIR}/context.hpp
20-
${CMAKE_CURRENT_SOURCE_DIR}/context.cpp
21-
${CMAKE_CURRENT_SOURCE_DIR}/device.hpp
22-
${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
23-
${CMAKE_CURRENT_SOURCE_DIR}/enqueue.cpp
24-
${CMAKE_CURRENT_SOURCE_DIR}/event.cpp
25-
${CMAKE_CURRENT_SOURCE_DIR}/image.cpp
26-
${CMAKE_CURRENT_SOURCE_DIR}/kernel.cpp
27-
${CMAKE_CURRENT_SOURCE_DIR}/memory.cpp
28-
${CMAKE_CURRENT_SOURCE_DIR}/platform.hpp
29-
${CMAKE_CURRENT_SOURCE_DIR}/platform.cpp
30-
${CMAKE_CURRENT_SOURCE_DIR}/program.cpp
31-
${CMAKE_CURRENT_SOURCE_DIR}/queue.cpp
32-
${CMAKE_CURRENT_SOURCE_DIR}/sampler.cpp
33-
${CMAKE_CURRENT_SOURCE_DIR}/usm.cpp
34-
${CMAKE_CURRENT_SOURCE_DIR}/usm_p2p.cpp
35-
${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp
36-
${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp
15+
add_ur_adapter(${TARGET_NAME} SHARED
16+
${CMAKE_CURRENT_SOURCE_DIR}/ur_interface_loader.cpp
17+
${CMAKE_CURRENT_SOURCE_DIR}/adapter.hpp
18+
${CMAKE_CURRENT_SOURCE_DIR}/adapter.cpp
19+
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer.hpp
20+
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer.cpp
21+
${CMAKE_CURRENT_SOURCE_DIR}/common.hpp
22+
${CMAKE_CURRENT_SOURCE_DIR}/common.cpp
23+
${CMAKE_CURRENT_SOURCE_DIR}/context.hpp
24+
${CMAKE_CURRENT_SOURCE_DIR}/context.cpp
25+
${CMAKE_CURRENT_SOURCE_DIR}/device.hpp
26+
${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
27+
${CMAKE_CURRENT_SOURCE_DIR}/enqueue.cpp
28+
${CMAKE_CURRENT_SOURCE_DIR}/event.cpp
29+
${CMAKE_CURRENT_SOURCE_DIR}/image.cpp
30+
${CMAKE_CURRENT_SOURCE_DIR}/kernel.cpp
31+
${CMAKE_CURRENT_SOURCE_DIR}/memory.cpp
32+
${CMAKE_CURRENT_SOURCE_DIR}/platform.hpp
33+
${CMAKE_CURRENT_SOURCE_DIR}/platform.cpp
34+
${CMAKE_CURRENT_SOURCE_DIR}/program.cpp
35+
${CMAKE_CURRENT_SOURCE_DIR}/queue.cpp
36+
${CMAKE_CURRENT_SOURCE_DIR}/sampler.cpp
37+
${CMAKE_CURRENT_SOURCE_DIR}/usm.cpp
38+
${CMAKE_CURRENT_SOURCE_DIR}/usm_p2p.cpp
39+
${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp
40+
${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp
3741
)
3842

3943
set_target_properties(${TARGET_NAME} PROPERTIES
40-
VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
41-
SOVERSION "${PROJECT_VERSION_MAJOR}"
44+
VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
45+
SOVERSION "${PROJECT_VERSION_MAJOR}"
4246
)
4347

44-
find_package(Threads REQUIRED)
48+
if(UR_OPENCL_INCLUDE_DIR)
49+
set(OpenCLIncludeDirectory ${UR_OPENCL_INCLUDE_DIR})
50+
else()
51+
FetchContent_Declare(OpenCL-Headers
52+
GIT_REPOSITORY "https://github.com/KhronosGroup/OpenCL-Headers.git"
53+
GIT_TAG main
54+
)
55+
FetchContent_MakeAvailable(OpenCL-Headers)
56+
FetchContent_GetProperties(OpenCL-Headers
57+
SOURCE_DIR OpenCLIncludeDirectory
58+
)
59+
endif()
4560

46-
# The OpenCL target can be set manually on upstream cmake to avoid using find_package().
47-
if (NOT UR_OPENCL_ICD_LOADER_LIBRARY)
48-
find_package(OpenCL REQUIRED)
49-
message(STATUS "OpenCL_LIBRARY: ${OpenCL_LIBRARY}")
50-
message(STATUS "OpenCL_INCLUDE_DIR: ${OpenCL_INCLUDE_DIR}")
51-
set(UR_OPENCL_ICD_LOADER_LIBRARY OpenCL::OpenCL)
61+
# The OpenCL target can be set manually on upstream cmake to avoid using
62+
# find_package().
63+
if(UR_OPENCL_ICD_LOADER_LIBRARY)
64+
set(OpenCLICDLoaderLibrary ${UR_OPENCL_ICD_LOADER_LIBRARY})
65+
else()
66+
find_package(OpenCL 3.0)
67+
if(OpenCL_FOUND)
68+
set(OpenCLICDLoaderLibrary OpenCL::OpenCL)
69+
else()
70+
FetchContent_Declare(OpenCL-ICD-Loader
71+
GIT_REPOSITORY "https://github.com/KhronosGroup/OpenCL-ICD-Loader.git"
72+
GIT_TAG main
73+
)
74+
FetchContent_MakeAvailable(OpenCL-ICD-Loader)
75+
set(OpenCLICDLoaderLibrary ${PROJECT_BINARY_DIR}/lib/libOpenCL.so)
76+
endif()
5277
endif()
5378

79+
message(STATUS "OpenCL Include Directory: ${OpenCLIncludeDirectory}")
80+
message(STATUS "OpenCL ICD Loader Library: ${OpenCLICDLoaderLibrary}")
81+
5482
# Suppress a compiler message about undefined CL_TARGET_OPENCL_VERSION.
5583
# Define all symbols up to OpenCL 3.0.
56-
target_compile_definitions(ur_adapter_opencl PRIVATE CL_TARGET_OPENCL_VERSION=300 CL_USE_DEPRECATED_OPENCL_1_2_APIS)
57-
58-
target_link_libraries(${TARGET_NAME} PRIVATE
59-
${PROJECT_NAME}::headers
60-
${PROJECT_NAME}::common
61-
${PROJECT_NAME}::unified_malloc_framework
62-
Threads::Threads
63-
${UR_OPENCL_ICD_LOADER_LIBRARY}
84+
target_compile_definitions(ur_adapter_opencl PRIVATE
85+
CL_TARGET_OPENCL_VERSION=300
86+
CL_USE_DEPRECATED_OPENCL_1_2_APIS
6487
)
6588

6689
target_include_directories(${TARGET_NAME} PRIVATE
67-
"${CMAKE_CURRENT_SOURCE_DIR}/../../"
68-
${OpenCL_INCLUDE_DIR}
90+
${OpenCLIncludeDirectory}
91+
"${CMAKE_CURRENT_SOURCE_DIR}/../../"
92+
)
93+
94+
target_link_libraries(${TARGET_NAME} PRIVATE
95+
${PROJECT_NAME}::headers
96+
${PROJECT_NAME}::common
97+
${PROJECT_NAME}::unified_malloc_framework
98+
Threads::Threads
99+
${OpenCLICDLoaderLibrary}
69100
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
urContextCreateWithNativeHandleTest.Success/Intel_R__OpenCL___{{.*}}_
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
urDeviceGetTest.InvalidValueNumEntries
2+
urDeviceGetInfoTest.Success/UR_DEVICE_INFO_HALF_FP_CONFIG
3+
urDeviceGetInfoTest.Success/UR_DEVICE_INFO_PARTITION_TYPE
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{{OPT}}urEnqueueDeviceGetGlobalVariableReadTest.Success/Intel_R__OpenCL___{{.*}}_
2+
{{OPT}}urEnqueueMemBufferCopyRectTest.InvalidSize/Intel_R__OpenCL___{{.*}}_
3+
{{OPT}}urEnqueueMemBufferReadRectTest.InvalidSize/Intel_R__OpenCL___{{.*}}_
4+
{{OPT}}urEnqueueMemBufferWriteRectTest.InvalidSize/Intel_R__OpenCL___{{.*}}_
5+
{{OPT}}Segmentation fault
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
urEventSetCallbackTest.AllStates/Intel_R__OpenCL___{{.*}}_
2+
urEventSetCallbackNegativeTest.InvalidNullHandle/Intel_R__OpenCL___{{.*}}_
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Segmentation fault
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
urMemGetInfoTest.InvalidNullPointerParamValue/Intel_R__OpenCL___{{.*}}___UR_MEM_INFO_SIZE
2+
urMemGetInfoTest.InvalidNullPointerParamValue/Intel_R__OpenCL___{{.*}}___UR_MEM_INFO_CONTEXT
3+
urMemGetInfoTest.InvalidNullPointerPropSizeRet/Intel_R__OpenCL___{{.*}}___UR_MEM_INFO_SIZE
4+
urMemGetInfoTest.InvalidNullPointerPropSizeRet/Intel_R__OpenCL___{{.*}}___UR_MEM_INFO_CONTEXT
5+
urMemImageCreateTest.InvalidImageDescStype/Intel_R__OpenCL___{{.*}}_
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
urPlatformGetTest.InvalidNumEntries
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
urProgramCreateWithBinaryTest.Success/Intel_R__OpenCL___{{.*}}_
2+
urProgramCreateWithBinaryTest.InvalidNullHandleContext/Intel_R__OpenCL___{{.*}}_
3+
urProgramCreateWithBinaryTest.InvalidNullHandleDevice/Intel_R__OpenCL___{{.*}}_
4+
urProgramCreateWithBinaryTest.InvalidNullPointerBinary/Intel_R__OpenCL___{{.*}}_
5+
urProgramCreateWithBinaryTest.InvalidNullPointerProgram/Intel_R__OpenCL___{{.*}}_
6+
urProgramCreateWithBinaryTest.InvalidNullPointerMetadata/Intel_R__OpenCL___{{.*}}_
7+
urProgramCreateWithBinaryTest.InvalidSizePropertyCount/Intel_R__OpenCL___{{.*}}_
8+
urProgramCreateWithNativeHandleTest.InvalidNullHandleContext/Intel_R__OpenCL___{{.*}}_
9+
urProgramCreateWithNativeHandleTest.InvalidNullPointerProgram/Intel_R__OpenCL___{{.*}}_
10+
urProgramGetBuildInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_STATUS
11+
urProgramGetBuildInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_OPTIONS
12+
urProgramGetBuildInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_LOG
13+
urProgramGetBuildInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_BINARY_TYPE
14+
urProgramGetBuildInfoTest.InvalidNullHandleDevice/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_STATUS
15+
urProgramGetBuildInfoTest.InvalidNullHandleDevice/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_OPTIONS
16+
urProgramGetBuildInfoTest.InvalidNullHandleDevice/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_LOG
17+
urProgramGetBuildInfoTest.InvalidNullHandleDevice/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_BUILD_INFO_BINARY_TYPE
18+
urProgramGetFunctionPointerTest.InvalidFunctionName/Intel_R__OpenCL___{{.*}}_
19+
urProgramGetInfoTest.Success/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_SOURCE
20+
urProgramGetInfoTest.Success/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_NUM_KERNELS
21+
urProgramGetInfoTest.Success/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_KERNEL_NAMES
22+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_REFERENCE_COUNT
23+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_CONTEXT
24+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_NUM_DEVICES
25+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_DEVICES
26+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_SOURCE
27+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_BINARY_SIZES
28+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_BINARIES
29+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_NUM_KERNELS
30+
urProgramGetInfoTest.InvalidNullHandleProgram/Intel_R__OpenCL___{{.*}}___UR_PROGRAM_INFO_KERNEL_NAMES

0 commit comments

Comments
 (0)