Skip to content

Commit

Permalink
Improved adapter selection in CTS testing
Browse files Browse the repository at this point in the history
The CTS tests now have an additional --backend option, and the --platform
option allows specifying platforms per-device. In addition, new targets
have been added that test the "loader"; that is, where the adapter isn't
forced.
  • Loading branch information
RossBrunton committed Oct 3, 2024
1 parent 32e8de4 commit 90b9a46
Show file tree
Hide file tree
Showing 72 changed files with 284 additions and 65 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build-hw-reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ jobs:
-DUR_ENABLE_TRACING=ON
-DUR_DEVELOPER_MODE=ON
-DUR_BUILD_TESTS=ON
-DUR_CONFORMANCE_TEST_LOADER=OFF
-DUR_BUILD_ADAPTER_${{matrix.adapter.name}}=ON
-DUR_STATIC_LOADER=${{matrix.adapter.static_Loader}}
-DUR_STATIC_ADAPTER_${{matrix.adapter.name}}=${{matrix.adapter.static_adapter}}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/multi_device.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ jobs:
-DUR_DEVELOPER_MODE=ON
-DUR_BUILD_TESTS=ON
-DUR_BUILD_ADAPTER_${{matrix.adapter.name}}=ON
-DUR_CONFORMANCE_TEST_LOADER=OFF
-DUR_TEST_DEVICES_COUNT=2
-DUR_DPCXX=${{github.workspace}}/dpcpp_compiler/bin/clang++
-DUR_SYCL_LIBRARY_DIR=${{github.workspace}}/dpcpp_compiler/lib
Expand Down
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ set(UR_CONFORMANCE_TARGET_TRIPLES "" CACHE STRING
"List of sycl targets to build CTS device binaries for")
set(UR_CONFORMANCE_AMD_ARCH "" CACHE STRING "AMD device target ID to build CTS binaries for")
option(UR_CONFORMANCE_ENABLE_MATCH_FILES "Enable CTS match files" ON)
option(UR_CONFORMANCE_TEST_LOADER "Also test the loader in the conformance tests" ON)
set(UR_ADAPTER_LEVEL_ZERO_SOURCE_DIR "" CACHE PATH
"Path to external 'level_zero' adapter source dir")
set(UR_ADAPTER_OPENCL_SOURCE_DIR "" CACHE PATH
Expand Down
2 changes: 1 addition & 1 deletion test/adapters/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ function(add_adapter_memcheck_test name)
add_test(NAME ${test_name}
COMMAND ${CMAKE_COMMAND}
-D TEST_FILE=valgrind
-D TEST_ARGS="--tool=memcheck --leak-check=full $<TARGET_FILE:${target}> --devices_count=${UR_TEST_DEVICES_COUNT} --platforms_count=${UR_TEST_DEVICES_COUNT}"
-D TEST_ARGS="--tool=memcheck --leak-check=full $<TARGET_FILE:${target}> --backend=${backend} --devices_count=${UR_TEST_DEVICES_COUNT} --platforms_count=${UR_TEST_DEVICES_COUNT}"
-D MODE=stderr
-D MATCH_FILE=${CMAKE_CURRENT_SOURCE_DIR}/${name}_memcheck.match
-P ${PROJECT_SOURCE_DIR}/cmake/match.cmake
Expand Down
43 changes: 33 additions & 10 deletions test/conformance/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ set(UR_CONFORMANCE_DEVICE_BINARIES_DIR
"${CMAKE_CURRENT_BINARY_DIR}/device_binaries" CACHE INTERNAL
"Internal cache variable for device binaries directory")

function(add_test_adapter name adapter)
function(add_test_adapter name adapter backend force)
if(NOT "${ARGN}" STREQUAL "")
set(EXTRA_NAME "-${ARGN}")
endif()
set(TEST_TARGET_NAME test-${name})
set(TEST_NAME ${name}-${adapter}${EXTRA_NAME})

set(TEST_COMMAND
"${PROJECT_BINARY_DIR}/bin/${TEST_TARGET_NAME} --devices_count=${UR_TEST_DEVICES_COUNT} --platforms_count=${UR_TEST_PLATFORMS_COUNT}"
"${PROJECT_BINARY_DIR}/bin/${TEST_TARGET_NAME} --backend=${backend} --devices_count=${UR_TEST_DEVICES_COUNT} --platforms_count=${UR_TEST_PLATFORMS_COUNT}"
)
set(MATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${name}_${adapter}${EXTRA_NAME}.match")

Expand All @@ -41,7 +41,9 @@ function(add_test_adapter name adapter)
)
endif()

set(TEST_ENV UR_ADAPTERS_FORCE_LOAD="$<TARGET_FILE:ur_${adapter}>")
if(${force})
set(TEST_ENV UR_ADAPTERS_FORCE_LOAD="$<TARGET_FILE:ur_${adapter}>")
endif()
if(UR_CONFORMANCE_ENABLE_MATCH_FILES)
list(APPEND TEST_ENV GTEST_COLOR=no)
endif()
Expand All @@ -66,29 +68,50 @@ function(add_conformance_test name)
unit_tests_helpers)

if(UR_BUILD_ADAPTER_CUDA OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_cuda)
add_test_adapter(${name} adapter_cuda CUDA ON)
endif()
if(UR_BUILD_ADAPTER_HIP OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_hip)
add_test_adapter(${name} adapter_hip HIP ON)
endif()
if(UR_BUILD_ADAPTER_L0 OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_level_zero)
add_test_adapter(${name} adapter_level_zero LEVEL_ZERO ON)
endif()
if(UR_BUILD_ADAPTER_L0_V2)
add_test_adapter(${name} adapter_level_zero_v2)
add_test_adapter(${name} adapter_level_zero_v2 LEVEL_ZERO ON)
endif()
if(UR_BUILD_ADAPTER_OPENCL OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_opencl)
add_test_adapter(${name} adapter_opencl OPENCL ON)
endif()
if(UR_BUILD_ADAPTER_NATIVE_CPU OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_native_cpu)
add_test_adapter(${name} adapter_native_cpu NATIVE_CPU ON)
endif()

if(UR_CONFORMANCE_TEST_LOADER)
if(UR_BUILD_ADAPTER_CUDA OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_cuda_loader CUDA OFF)
endif()
if(UR_BUILD_ADAPTER_HIP OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_hip_loader HIP OFF)
endif()
if(UR_BUILD_ADAPTER_L0 OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_level_zero_loader LEVEL_ZERO OFF)
endif()
if(UR_BUILD_ADAPTER_L0_V2)
add_test_adapter(${name} adapter_level_zero_v2_loader LEVEL_ZERO OFF)
endif()
if(UR_BUILD_ADAPTER_OPENCL OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_opencl_loader OPENCL OFF)
endif()
if(UR_BUILD_ADAPTER_NATIVE_CPU OR UR_BUILD_ADAPTER_ALL)
add_test_adapter(${name} adapter_native_cpu_loader NATIVE_CPU OFF)
endif()
endif()

if(NOT (UR_BUILD_ADAPTER_CUDA OR UR_BUILD_ADAPTER_HIP
OR UR_BUILD_ADAPTER_L0 OR UR_BUILD_ADAPTER_OPENCL
OR UR_BUILD_ADAPTER_NATIVE_CPU OR UR_BUILD_ADAPTER_L0_V2
OR UR_BUILD_ADAPTER_ALL))
add_test_adapter(${name} adapter_mock)
add_test_adapter(${name} adapter_mock MOCK ON)
endif()
endfunction()

Expand Down
4 changes: 3 additions & 1 deletion test/conformance/cts_exe.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@
parser.add_argument("--test_command", help="Ctest test case")
parser.add_argument("--devices_count", type=str, help="Number of devices on which tests will be run")
parser.add_argument("--platforms_count", type=str, help="Number of platforms on which tests will be run")
parser.add_argument("--backend", type=str, help="Number of platforms on which tests will be run")
args = parser.parse_args()

result = subprocess.Popen([args.test_command, '--gtest_brief=1', # nosec B603
f'--devices_count={args.devices_count}',
f'--platforms_count={args.platforms_count}'],
f'--platforms_count={args.platforms_count}',
f'--backend={args.backend}'],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)

pat = re.compile(r'\[( )*FAILED( )*\]')
Expand Down
1 change: 1 addition & 0 deletions test/conformance/device/device_adapter_cuda_loader.match
1 change: 1 addition & 0 deletions test/conformance/device/device_adapter_hip_loader.match
1 change: 1 addition & 0 deletions test/conformance/device/device_adapter_opencl_loader.match
1 change: 1 addition & 0 deletions test/conformance/enqueue/enqueue_adapter_cuda_loader.match
1 change: 1 addition & 0 deletions test/conformance/enqueue/enqueue_adapter_hip_loader.match
1 change: 1 addition & 0 deletions test/conformance/event/event_adapter_cuda_loader.match
1 change: 1 addition & 0 deletions test/conformance/event/event_adapter_hip_loader.match
1 change: 1 addition & 0 deletions test/conformance/kernel/kernel_adapter_cuda_loader.match
1 change: 1 addition & 0 deletions test/conformance/kernel/kernel_adapter_hip_loader.match
1 change: 1 addition & 0 deletions test/conformance/kernel/kernel_adapter_opencl_loader.match
1 change: 1 addition & 0 deletions test/conformance/memory/memory_adapter_cuda_loader.match
1 change: 1 addition & 0 deletions test/conformance/memory/memory_adapter_hip_loader.match
1 change: 1 addition & 0 deletions test/conformance/memory/memory_adapter_opencl_loader.match
1 change: 1 addition & 0 deletions test/conformance/program/program_adapter_cuda_loader.match
1 change: 1 addition & 0 deletions test/conformance/program/program_adapter_hip_loader.match
Loading

0 comments on commit 90b9a46

Please sign in to comment.