From 44d11091687da9f0d681ef4f80b7f009c0dd7d9c Mon Sep 17 00:00:00 2001 From: Jan Stephan Date: Mon, 7 Aug 2023 14:49:00 +0200 Subject: [PATCH] Update README.md and temporarily disable SYCL runtime checks --- README.md | 23 +++++++++++++---------- script/install_oneapi.sh | 12 +----------- script/job_generator/generate_job_yaml.py | 4 +--- script/job_generator/job_modifier.py | 19 ++++++++++--------- script/job_generator/requirements.txt | 2 +- script/job_generator/verify.py | 1 + 6 files changed, 27 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 9b4821f56853..d9a51ed4f7ed 100644 --- a/README.md +++ b/README.md @@ -65,21 +65,24 @@ Supported Compilers This library uses C++17 (or newer when available). -| Accelerator Back-end | gcc 9.5
(Linux) | gcc 10.4 / 11.1
(Linux) | gcc 12.3
(Linux) | gcc 13.1
(Linux) | clang 9
(Linux) | clang 10 / 11
(Linux) | clang 12
(Linux) | clang 13
(Linux) | clang 14
(Linux) | clang 15
(Linux) | clang 16
(Linux) | icpx (latest) | Xcode 13.2.1 / 14.2 / 14.3.1
(macOS) | Visual Studio 2022
(Windows) | -|--------------------------------------------------------------------------------|-------------------------------------------------|-------------------------------------------------|---------------------------------------------|------------------------|------------------------------------------------------------|-------------------------------------------------------|-------------------------------------------------|---------------------------------------------|---------------------------------------------------|-------------------------------------------|-------------------------------------------|--------------------|-------------------------------------------------------|--------------------------------------| -| Serial | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| OpenMP 2.0+ blocks | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| OpenMP 2.0+ threads | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| std::thread | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| TBB | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| CUDA (nvcc) | :white_check_mark:
(CUDA 11.0 - 12.2)[^2] | :white_check_mark:
(CUDA 11.4 - 12.0)[^2] | :white_check_mark:
(CUDA 12.0 - 12.2) | :x: | :white_check_mark:
(CUDA 11.0-11.2; 11.6 - 12.0)[^2] | :white_check_mark:
(CUDA 11.2, 11.6 - 12.0)[^2] | :white_check_mark:
(CUDA 11.6 - 12.0)[^2] | :white_check_mark:
(CUDA 11.7 - 12.0) | :white_check_mark:
(CUDA 11.8 - 12.0) | :white_check_mark:
(CUDA 12.2) | :x: | :x: | :x: | :x: | -| CUDA (clang) | - | - | - | :x: | :x: | :x: | :x: | :x: | :white_check_mark: (CUDA 11.0 - 11.5) | :white_check_mark: (CUDA 11.0 - 11.5)[^1] | :white_check_mark: (CUDA 11.0 - 11.5)[^1] | :x: | - | - | -| [HIP](https://alpaka.readthedocs.io/en/latest/install/HIP.html) (clang) | - | - | - | :x: | :x: | :x: | :x: | :x: | :white_check_mark: (HIP 5.0 - 5.2) | :white_check_mark: (HIP 5.3 - 5.4) | :white_check_mark: (HIP 5.5) | :x: | - | - | +| Accelerator Back-end | gcc 9.5
(Linux) | gcc 10.4 / 11.1
(Linux) | gcc 12.3
(Linux) | gcc 13.1
(Linux) | clang 9
(Linux) | clang 10 / 11
(Linux) | clang 12
(Linux) | clang 13
(Linux) | clang 14
(Linux) | clang 15
(Linux) | clang 16
(Linux) | icpx 2023.1.0 / 2023.2.0 (Linux) | Xcode 13.2.1 / 14.2 / 14.3.1
(macOS) | Visual Studio 2022
(Windows) | +|--------------------------------------------------------------------------------|-------------------------------------------------|-------------------------------------------------|---------------------------------------------|------------------------|------------------------------------------------------------|-------------------------------------------------------|-------------------------------------------------|---------------------------------------------|---------------------------------------------------|-------------------------------------------|-------------------------------------------|----------------------------------|-------------------------------------------------------|--------------------------------------| +| Serial | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| OpenMP 2.0+ blocks | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark:[^3] | :white_check_mark: | :white_check_mark: | +| OpenMP 2.0+ threads | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark:[^3] | :white_check_mark: | :white_check_mark: | +| std::thread | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| TBB | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| CUDA (nvcc) | :white_check_mark:
(CUDA 11.0 - 12.2)[^2] | :white_check_mark:
(CUDA 11.4 - 12.0)[^2] | :white_check_mark:
(CUDA 12.0 - 12.2) | :x: | :white_check_mark:
(CUDA 11.0-11.2; 11.6 - 12.0)[^2] | :white_check_mark:
(CUDA 11.2, 11.6 - 12.0)[^2] | :white_check_mark:
(CUDA 11.6 - 12.0)[^2] | :white_check_mark:
(CUDA 11.7 - 12.0) | :white_check_mark:
(CUDA 11.8 - 12.0) | :white_check_mark:
(CUDA 12.2) | :x: | :x: | :x: | :x: | +| CUDA (clang) | - | - | - | :x: | :x: | :x: | :x: | :x: | :white_check_mark: (CUDA 11.0 - 11.5) | :white_check_mark: (CUDA 11.0 - 11.5)[^1] | :white_check_mark: (CUDA 11.0 - 11.5)[^1] | :x: | - | - | +| [HIP](https://alpaka.readthedocs.io/en/latest/install/HIP.html) (clang) | - | - | - | :x: | :x: | :x: | :x: | :x: | :white_check_mark: (HIP 5.0 - 5.2) | :white_check_mark: (HIP 5.3 - 5.4) | :white_check_mark: (HIP 5.5) | :x: | - | - | +| SYCL | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark:[^4] | :x: | :x: | Other compilers or combinations marked with :x: in the table above may work but are not tested in CI and are therefore not explicitly supported. [^1]: Due to an [LLVM bug](https://github.com/llvm/llvm-project/issues/58491) in debug mode only release builds are supported. [^2]: Due to a [CUDA bug](https://github.com/alpaka-group/alpaka/issues/2035) debug builds are only supported for CUDA versions >= 11.7. +[^3]: Due to an [`icpx` bug](https://github.com/intel/llvm/issues/10711) the OpenMP back-ends cannot be used together with the SYCL back-end. +[^4]: Currently, the unit tests are compiled but not executed. Dependencies ------------ diff --git a/script/install_oneapi.sh b/script/install_oneapi.sh index 11b969f3ae92..f68a02ffc5e4 100755 --- a/script/install_oneapi.sh +++ b/script/install_oneapi.sh @@ -30,21 +30,11 @@ then sudo -E apt-cache pkgnames intel echo "################################" - # Intel mixes different version numbers in releases. Make sure we install the versions that are compatible. - if [ "${ALPAKA_CI_ONEAPI_VERSION}" == "2023.1.0" ] - then - ALPAKA_CI_TBB_VERSION="2021.9.0" - elif [ "${ALPAKA_CI_ONEAPI_VERSION}" == "2023.2.0" ] - then - ALPAKA_CI_TBB_VERSION="2021.10.0" - fi - + # The compiler will automatically pull in OpenMP and TBB as dependencies components=( intel-oneapi-common-vars # Contains /opt/intel/oneapi/setvars.sh - has no version number intel-oneapi-compiler-dpcpp-cpp-"${ALPAKA_CI_ONEAPI_VERSION}" # Contains icpx compiler and SYCL runtime - intel-oneapi-openmp-"${ALPAKA_CI_ONEAPI_VERSION}" # For OpenMP back-ends intel-oneapi-runtime-opencl # Required to run SYCL tests on the CPU - has no version number - intel-oneapi-tbb-devel-"${ALPAKA_CI_TBB_VERSION}" # For TBB back-end ) travis_retry sudo apt-get install -y "${components[@]}" diff --git a/script/job_generator/generate_job_yaml.py b/script/job_generator/generate_job_yaml.py index c33e25bf4c88..84ec98f5ac24 100644 --- a/script/job_generator/generate_job_yaml.py +++ b/script/job_generator/generate_job_yaml.py @@ -476,9 +476,7 @@ def create_job( job_name + "-" + job[HOST_COMPILER][NAME] + job[HOST_COMPILER][VERSION] ) # if Clang-CUDA is the device compiler, add also the CUDA SDK version to the name - if (job[DEVICE_COMPILER][NAME] == CLANG_CUDA - and ALPAKA_ACC_GPU_CUDA_ENABLE in job - and job[ALPAKA_ACC_GPU_CUDA_ENABLE][VERSION] != OFF_VER): + if job[DEVICE_COMPILER][NAME] == CLANG_CUDA: job_name = job_name + "-cuda" + job[ALPAKA_ACC_GPU_CUDA_ENABLE][VERSION] if job[JOB_EXECUTION_TYPE][VERSION] == JOB_EXECUTION_COMPILE_ONLY: diff --git a/script/job_generator/job_modifier.py b/script/job_generator/job_modifier.py index 1077b217e571..d56aeefe3fc4 100644 --- a/script/job_generator/job_modifier.py +++ b/script/job_generator/job_modifier.py @@ -29,15 +29,16 @@ def add_job_parameters(job_matrix: List[Dict[str, Tuple[str, str]]]): job[JOB_EXECUTION_TYPE] = (JOB_EXECUTION_TYPE, JOB_EXECUTION_RUNTIME) break - for icpx_version in versions.sw_versions[ICPX]: - for job in job_matrix: - if( - job[DEVICE_COMPILER][NAME] == ICPX - and job[DEVICE_COMPILER][VERSION] == icpx_version - and job[BUILD_TYPE][VERSION] == CMAKE_DEBUG - ): - job[JOB_EXECUTION_TYPE] = (JOB_EXECUTION_TYPE, JOB_EXECUTION_RUNTIME) - break + # Disabled until all runtime errors for the SYCL CPU back-end are fixed. + # for icpx_version in versions.sw_versions[ICPX]: + # for job in job_matrix: + # if( + # job[DEVICE_COMPILER][NAME] == ICPX + # and job[DEVICE_COMPILER][VERSION] == icpx_version + # and job[BUILD_TYPE][VERSION] == CMAKE_DEBUG + # ): + # job[JOB_EXECUTION_TYPE] = (JOB_EXECUTION_TYPE, JOB_EXECUTION_RUNTIME) + # break ############################################## ## Defining runtime test for the CUDA backend diff --git a/script/job_generator/requirements.txt b/script/job_generator/requirements.txt index a5806b04a488..b889e07e891f 100644 --- a/script/job_generator/requirements.txt +++ b/script/job_generator/requirements.txt @@ -1,4 +1,4 @@ -alpaka-job-coverage == 1.5.1 +alpaka-job-coverage == 1.5.2 allpairspy == 2.5.0 typeguard < 3.0.0 pyaml diff --git a/script/job_generator/verify.py b/script/job_generator/verify.py index 2a5a651920fb..c4e07fdc1a4f 100644 --- a/script/job_generator/verify.py +++ b/script/job_generator/verify.py @@ -130,6 +130,7 @@ def verify(combinations: List[Dict[str, Tuple[str, str]]]) -> bool: Combination( {DEVICE_COMPILER: (NVCC, "12.1"), CXX_STANDARD: (CXX_STANDARD, "20")} ), + Combination({HOST_COMPILER: (ICPX, "*"), DEVICE_COMPILER: (ICPX, "*")}), ] for cs in combinations_to_search: