diff --git a/.github/workflows/linux_matrix_e2e_on_nightly.yml b/.github/workflows/linux_matrix_e2e_on_nightly.yml index 2bc5165b082a9..db1c4f213351d 100644 --- a/.github/workflows/linux_matrix_e2e_on_nightly.yml +++ b/.github/workflows/linux_matrix_e2e_on_nightly.yml @@ -22,33 +22,33 @@ jobs: - name: AMD/HIP runner: '["Linux", "amdgpu"]' image: ghcr.io/intel/llvm/sycl_ubuntu2204_nightly:build - extra_cmake_args: -DHIP_PLATFORM="AMD" -DAMD_ARCH="gfx1031" extra_image_opts: --device=/dev/kfd + extra_cmake_args: -DHIP_PLATFORM="AMD" -DAMD_ARCH="gfx1031" target_devices: ext_oneapi_hip:gpu reset_gpu: false - name: Intel runner: '["Linux", "gen9"]' image: ghcr.io/intel/llvm/sycl_ubuntu2204_nightly:latest - extra_cmake_args: extra_image_opts: -u 1001 + extra_cmake_args: target_devices: ext_oneapi_level_zero:gpu;opencl:gpu;opencl:cpu reset_gpu: true - name: ESIMD Emu runner: '["Linux", "x86-cpu"]' image: ghcr.io/intel/llvm/sycl_ubuntu2204_nightly:latest - extra_cmake_args: extra_image_opts: -u 1001 + extra_cmake_args: target_devices: ext_intel_esimd_emulator:gpu reset_gpu: false - uses: ./.github/workflows/linux_single_e2e_on_nightly.yml + uses: ./.github/workflows/linux_single_e2e.yml with: name: ${{ matrix.name }} runner: ${{ matrix. runner }} image: ${{ matrix.image }} + image_options: --device=/dev/dri --privileged --cap-add SYS_ADMIN ${{ matrix.extra_image_opts }} extra_cmake_args: ${{ matrix.extra_cmake_args }} - extra_image_opts: ${{ matrix.extra_image_opts }} target_devices: ${{ matrix.target_devices }} ref: ${{ inputs.ref }} reset_gpu: ${{ matrix.reset_gpu }} @@ -64,13 +64,13 @@ jobs: linux_e2e_on_nightly_aws: name: '[AWS][CUDA] E2E on Nightly' needs: [aws_start] - uses: ./.github/workflows/linux_single_e2e_on_nightly.yml + uses: ./.github/workflows/linux_single_e2e.yml with: name: CUDA runner: '["aws-cuda_${{ inputs.uniq }}"]' image: ghcr.io/intel/llvm/sycl_ubuntu2204_nightly:build + image_options: --device=/dev/dri --privileged --cap-add SYS_ADMIN --gpus all extra_cmake_args: - extra_image_opts: --gpus all target_devices: all ref: ${{ inputs.ref }} reset_gpu: false diff --git a/.github/workflows/linux_single_e2e_on_nightly.yml b/.github/workflows/linux_single_e2e.yml similarity index 51% rename from .github/workflows/linux_single_e2e_on_nightly.yml rename to .github/workflows/linux_single_e2e.yml index 49fd542f02f84..a327dcd448570 100644 --- a/.github/workflows/linux_single_e2e_on_nightly.yml +++ b/.github/workflows/linux_single_e2e.yml @@ -1,4 +1,4 @@ -name: SYCL E2E on Nightly build +name: SYCL E2E on: workflow_call: @@ -9,9 +9,9 @@ on: type: string image: type: string - extra_cmake_args: + image_options: type: string - extra_image_opts: + extra_cmake_args: type: string target_devices: type: string @@ -20,13 +20,28 @@ on: reset_gpu: type: string + sycl_toolchain_artifact: + type: string + default: '' + sycl_toolchain_archive: + type: string + default: '' + sycl_toolchain_decompress_command: + type: string + default: '' + + env: + type: string + default: '{}' + jobs: lin_e2e_only: name: ${{ inputs.name }} runs-on: ${{ fromJSON(inputs.runner) }} container: image: ${{ inputs.image }} - options: --device=/dev/dri --privileged --cap-add SYS_ADMIN ${{ inputs.extra_image_opts }} + options: ${{ inputs.image_options }} + env: ${{ fromJSON(inputs.env) }} steps: - name: Reset GPU if: inputs.reset_gpu == 'true' @@ -39,24 +54,25 @@ jobs: ref: ${{ inputs.ref }} sparse-checkout: | devops/actions + devops/scripts/get_release.py sycl/test-e2e llvm/utils + - name: Install drivers + if: env.compute_runtime_tag != '' + run: | + if [ -e /opt/install_drivers.sh ]; then + # TODO pack this script into container + sudo cp llvm/devops/scripts/get_release.py /opt/ + sudo -E /opt/install_drivers.sh --all + fi - name: Register cleanup after job is finished uses: ./llvm/devops/actions/cleanup - - name: Configure - run: | - cmake -GNinja -B./build-e2e -S./llvm/sycl/test-e2e -DSYCL_TEST_E2E_TARGETS="${{ inputs.target_devices }}" -DCMAKE_CXX_COMPILER="clang++" -DLLVM_LIT="$PWD/llvm/llvm/utils/lit/lit.py" ${{ inputs.extra_cmake_args }} - # opencl:cpu backend won't be visible in the sycl-ls commands below, see the - # comment below referencing https://github.com/actions/runner/issues/1964. - - run: sycl-ls --verbose - - run: SYCL_PI_TRACE=-1 sycl-ls - - name: SYCL End-to-end tests - env: - LIT_OPTS: -v --no-progress-bar --show-unsupported --max-time 3600 --time-tests + - name: Source OneAPI TBB vars.sh shell: bash run: | # https://github.com/actions/runner/issues/1964 prevents us from using # the ENTRYPOINT in the image. + env | sort > env_before if [ -e /runtimes/oneapi-tbb/env/vars.sh ]; then source /runtimes/oneapi-tbb/env/vars.sh; elif [ -e /opt/runtimes/oneapi-tbb/env/vars.sh ]; then @@ -64,4 +80,30 @@ jobs: else echo "no TBB vars in /opt/runtimes or /runtimes"; fi + env | sort > env_after + comm -13 env_before env_after >> $GITHUB_ENV + rm env_before env_after + - name: Download SYCL toolchain + if: inputs.sycl_toolchain_artifact != '' + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.sycl_toolchain_artifact }} + - name: Extract/Setup SYCL toolchain + if: inputs.sycl_toolchain_artifact != '' + run: | + mkdir toolchain + tar -I '${{ inputs.sycl_toolchain_decompress_command }}' -xf ${{ inputs.sycl_toolchain_archive }} -C toolchain + rm -f ${{ inputs.sycl_toolchain_archive }} + echo PATH=$PWD/toolchain/bin/:$PATH >> $GITHUB_ENV + echo LD_LIBRARY_PATH=$PWD/toolchain/lib/:$LD_LIBRARY_PATH >> $GITHUB_ENV + - run: which clang++ sycl-ls + - run: sycl-ls --verbose + - run: SYCL_PI_TRACE=-1 sycl-ls + - name: Configure + run: | + cmake -GNinja -B./build-e2e -S./llvm/sycl/test-e2e -DSYCL_TEST_E2E_TARGETS="${{ inputs.target_devices }}" -DCMAKE_CXX_COMPILER="$(which clang++)" -DLLVM_LIT="$PWD/llvm/llvm/utils/lit/lit.py" ${{ inputs.extra_cmake_args }} + - name: SYCL End-to-end tests + env: + LIT_OPTS: -v --no-progress-bar --show-unsupported --max-time 3600 --time-tests + run: | ninja -C build-e2e check-sycl-e2e diff --git a/.github/workflows/sycl_linux_build_and_test.yml b/.github/workflows/sycl_linux_build_and_test.yml index 2a2f36b940748..387cdfafa045e 100644 --- a/.github/workflows/sycl_linux_build_and_test.yml +++ b/.github/workflows/sycl_linux_build_and_test.yml @@ -222,45 +222,22 @@ jobs: fail-fast: false matrix: include: ${{ fromJSON(inputs.lts_matrix) }} - name: ${{ matrix.name }} - runs-on: ${{ matrix.runs-on }} - env: ${{ matrix.env }} - container: + uses: ./.github/workflows/linux_single_e2e.yml + with: + name: ${{ matrix.name }} + runner: ${{ toJSON(matrix.runs-on) }} image: ${{ matrix.image }} - options: ${{ matrix.container_options }} - steps: - - name: Reset GPU - if: ${{ contains(matrix.runs-on, 'gen9') && contains(matrix.runs-on, 'Linux') }} - run: | - sudo mount -t debugfs none /sys/kernel/debug - sudo bash -c 'echo 1 > /sys/kernel/debug/dri/0/i915_wedged' - - run: cp -r /actions . - - name: Register cleanup after job is finished - uses: ./actions/cleanup - - name: Install drivers - if: env.compute_runtime_tag != '' - run: | - if [ -e /opt/install_drivers.sh ]; then - # TODO pack this script into container - wget raw.githubusercontent.com/intel/llvm/${{ github.sha }}/devops/scripts/get_release.py - sudo mv get_release.py /opt/ - sudo -E /opt/install_drivers.sh --all - fi - # FIXME cached_checkout fails here, but works everywhere else - - uses: actions/checkout@v3 - with: - persist-credentials: false - path: llvm - ref: ${{ inputs.build_ref || github.sha }} - # TODO should this action be packed into container as well? - - uses: ./llvm/devops/actions/e2e-tests - name: Run SYCL End-to-End tests - with: - sycl_artifact: sycl_linux_${{ inputs.build_artifact_suffix }} - sycl_archive: ${{ inputs.artifact_archive_name }} - decompress_command: ${{ inputs.artifact_decompress_command }} - targets: ${{ matrix.targets }} - cmake_args: '${{ matrix.cmake_args }} ${{ inputs.lts_cmake_extra_args }}' + image_options: ${{ matrix.container_options }} + extra_cmake_args: '${{ matrix.cmake_args }} ${{ inputs.lts_cmake_extra_args }}' + target_devices: ${{ matrix.targets }} + ref: ${{ inputs.build_ref || github.sha }} + reset_gpu: ${{ contains(matrix.runs-on, 'gen9') && contains(matrix.runs-on, 'Linux') }} + + sycl_toolchain_artifact: sycl_linux_${{ inputs.build_artifact_suffix }} + sycl_toolchain_archive: ${{ inputs.artifact_archive_name }} + sycl_toolchain_decompress_command: ${{ inputs.artifact_decompress_command }} + + env: ${{ toJSON(matrix.env) }} khronos_sycl_cts: needs: build diff --git a/devops/actions/e2e-tests/action.yml b/devops/actions/e2e-tests/action.yml deleted file mode 100644 index f41cc2b818e29..0000000000000 --- a/devops/actions/e2e-tests/action.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: 'Run SYCL End-to-End testing' -description: 'Run SYCL End-to-End testing' -inputs: - sycl_artifact: - description: 'Name of the artifact, that contains compiler toolchain' - required: true - sycl_archive: - description: 'Name of SYCL toolchain archive file' - required: false - default: 'llvm_sycl.tar.zst' - decompress_command: - default: zstd - targets: - description: 'List of SYCL backends with set of target devices per each to be tested iteratively' - required: true - cmake_args: - description: 'Extra arguments to cmake command' - required: false - -post-if: false -runs: - using: "composite" - steps: - - run: | - cp -r /actions . - shell: bash - - name: Download compiler toolchain - uses: actions/download-artifact@v3 - with: - name: ${{ inputs.sycl_artifact }} - - name: Extract SYCL toolchain - shell: bash - run: | - mkdir toolchain - tar -I '${{ inputs.decompress_command }}' -xf ${{ inputs.sycl_archive }} -C toolchain - rm -f ${{ inputs.sycl_archive }} - - name: Configure - shell: bash - run: | - echo "::group::CMake configuration" - export PATH=$PWD/toolchain/bin/:$PATH - export LD_LIBRARY_PATH=$PWD/toolchain/lib/:$LD_LIBRARY_PATH - cmake -GNinja -B./build-e2e -S./llvm/sycl/test-e2e -DSYCL_TEST_E2E_TARGETS="${{ inputs.targets }}" -DCMAKE_CXX_COMPILER="$PWD/toolchain/bin/clang++" -DLLVM_LIT="$PWD/llvm/llvm/utils/lit/lit.py" ${{ inputs.cmake_args }} - echo "::endgroup::" - - name: Run testing - shell: bash - run: | - export LD_LIBRARY_PATH=$PWD/toolchain/lib/:$LD_LIBRARY_PATH - export PATH=$PWD/toolchain/bin/:$PATH - export LIT_OPTS="-v --no-progress-bar --show-unsupported --max-time 3600 --time-tests" - if [ -e /runtimes/oneapi-tbb/env/vars.sh ]; then - source /runtimes/oneapi-tbb/env/vars.sh; - elif [ -e /opt/runtimes/oneapi-tbb/env/vars.sh ]; then - source /opt/runtimes/oneapi-tbb/env/vars.sh; - else - echo "no TBB vars in /opt/runtimes or /runtimes"; - fi - echo "::group::sycl-ls --verbose" - sycl-ls --verbose - echo "::endgroup::" - echo "::group::SYCL_PI_TRACE=-1 sycl-ls" - echo $LD_LIBRARY_PATH - SYCL_PI_TRACE=-1 sycl-ls - echo "::endgroup::" - ninja -C build-e2e check-sycl-e2e - - name: Cleanup - shell: bash - if: always() - run: | - rm -rf toolchain - rm -rf build-e2e