diff --git a/.github/workflows/sycl-aws.yml b/.github/workflows/sycl-aws.yml index 869b734df541d..2ed860980b19a 100644 --- a/.github/workflows/sycl-aws.yml +++ b/.github/workflows/sycl-aws.yml @@ -15,6 +15,9 @@ on: description: "JSON string with array of objects with aws-type, runs-on, aws-ami, aws-spot, aws-disk, aws-timebomb, one-job properties" type: string default: '[{"runs-on":"aws_cuda-${{ github.run_id }}-${{ github.run_attempt }}","aws-ami":"ami-01cb0573cb039ab24","aws-type":["g5.2xlarge","g5.4xlarge"],"aws-disk":"/dev/sda1:64","aws-spot":"false"}]' + ref: + type: string + required: false jobs: aws: @@ -24,6 +27,7 @@ jobs: - uses: actions/checkout@v4 with: sparse-checkout: devops/actions/aws-ec2 + ref: ${{ inputs.ref || github.sha }} - run: npm install ./devops/actions/aws-ec2 - uses: ./devops/actions/aws-ec2 with: diff --git a/.github/workflows/sycl-linux-build.yml b/.github/workflows/sycl-linux-build.yml index 0dc956dfea752..5a3abd6b899f0 100644 --- a/.github/workflows/sycl-linux-build.yml +++ b/.github/workflows/sycl-linux-build.yml @@ -50,6 +50,9 @@ on: description: 'Artifacts retention period' type: string default: 3 + ref: + type: string + required: false outputs: build_conclusion: @@ -143,6 +146,7 @@ jobs: with: sparse-checkout: | devops/actions + ref: ${{ inputs.ref || github.sha }} # Cleanup will be run after all actions are completed. - name: Register cleanup after job is finished uses: ./devops/actions/cleanup diff --git a/.github/workflows/sycl-rel-nightly.yml b/.github/workflows/sycl-rel-nightly.yml new file mode 100644 index 0000000000000..b44c90fdddcb4 --- /dev/null +++ b/.github/workflows/sycl-rel-nightly.yml @@ -0,0 +1,180 @@ +name: SYCL Release Branch Nightly + +on: + workflow_dispatch: + schedule: + - cron: '0 3 * * *' + +permissions: read-all + +env: + # NOTE: so that GitHub Actions can trigger the scheduled workflow run - the + # workflow file should be on the default branch. Therefore every job should + # checkout the release branch. + SYCL_REL_BRANCH: "draft-sycl-rel-6_0_0" + +jobs: + # To avoid unnecessary scheduled runs this job checks if there are new commits + # since the last run. More precisely, it checks if the last commit is older + # than 24h. That means the previous Nightly already tested this commit. + check_for_new_commits: + runs-on: ubuntu-latest + name: Check for new commits + outputs: + is_new_commit: ${{ steps.is_new_commit.outputs.is_new_commit }} + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ env.SYCL_REL_BRANCH }} + - run: git show --quiet | tee -a $GITHUB_STEP_SUMMARY + + - id: is_new_commit + if: ${{ github.event_name == 'schedule' }} + run: | + if [ -z "$(git rev-list --after="24 hours" HEAD)" ]; then + echo "is_new_commit=false" >> $GITHUB_OUTPUT + fi + + ubuntu2204_build: + needs: [check_for_new_commits] + if: ${{ github.repository == 'intel/llvm' && needs.check_for_new_commits.outputs.is_new_commit != 'false' }} + uses: ./.github/workflows/sycl-linux-build.yml + secrets: inherit + with: + build_cache_root: "/__w/" + build_artifact_suffix: v6 + build_configure_extra_args: '--hip --cuda' + merge_ref: '' + ref: ${{ env.SYCL_REL_BRANCH }} + + # We upload the build for people to download/use, override its name and + # prefer widespread gzip compression. + artifact_archive_name: sycl_linux.tar.gz + + ubuntu2204_test: + needs: [ubuntu2204_build] + if: ${{ always() && !cancelled() && needs.ubuntu2204_build.outputs.build_conclusion == 'success' }} + strategy: + fail-fast: false + matrix: + include: + - name: AMD/HIP + runner: '["Linux", "amdgpu"]' + image: ghcr.io/intel/llvm/ubuntu2204_build:latest + image_options: -u 1001 --device=/dev/dri --device=/dev/kfd + target_devices: ext_oneapi_hip:gpu + tests_selector: e2e + + - name: Intel L0 GPU + runner: '["Linux", "gen12"]' + image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest + image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN + target_devices: level_zero:gpu + reset_intel_gpu: true + tests_selector: e2e + extra_lit_opts: --param gpu-intel-gen12=True + + - name: Intel OCL GPU + runner: '["Linux", "gen12"]' + image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest + image_options: -u 1001 --device=/dev/dri -v /dev/dri/by-path:/dev/dri/by-path --privileged --cap-add SYS_ADMIN + target_devices: opencl:gpu + reset_intel_gpu: true + tests_selector: e2e + extra_lit_opts: --param gpu-intel-gen12=True + + - name: Intel OCL CPU + runner: '["Linux", "gen12"]' + image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest + image_options: -u 1001 --privileged --cap-add SYS_ADMIN + target_devices: opencl:cpu + tests_selector: e2e + + - name: SYCL-CTS on OCL CPU + runner: '["Linux", "gen12"]' + image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest + image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN + target_devices: opencl:cpu + tests_selector: cts + + - name: SYCL-CTS on L0 gen12 + runner: '["Linux", "gen12"]' + image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest + image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN + target_devices: level_zero:gpu + tests_selector: cts + uses: ./.github/workflows/sycl-linux-run-tests.yml + with: + name: ${{ matrix.name }} + runner: ${{ matrix.runner }} + image: ${{ matrix.image }} + image_options: ${{ matrix.image_options }} + target_devices: ${{ matrix.target_devices }} + tests_selector: ${{ matrix.tests_selector }} + extra_lit_opts: ${{ matrix.extra_lit_opts }} + reset_intel_gpu: ${{ matrix.reset_intel_gpu }} + ref: ${{ env.SYCL_REL_BRANCH }} + merge_ref: '' + sycl_toolchain_artifact: sycl_linux_default + sycl_toolchain_archive: ${{ needs.ubuntu2204_build.outputs.artifact_archive_name }} + sycl_toolchain_decompress_command: ${{ needs.ubuntu2204_build.outputs.artifact_decompress_command }} + + build-win: + needs: [check_for_new_commits] + if: ${{ github.repository == 'intel/llvm' && needs.check_for_new_commits.outputs.is_new_commit != 'false' }} + uses: ./.github/workflows/sycl-windows-build.yml + with: + # We upload both Linux/Windows build via Github's "Releases" + # functionality, make sure Linux/Windows names follow the same pattern. + artifact_archive_name: sycl_windows.tar.gz + build_ref: ${{ env.SYCL_REL_BRANCH }} + + e2e-win: + needs: build-win + # Continue if build was successful. + if: | + always() + && !cancelled() + && needs.build-win.outputs.build_conclusion == 'success' + uses: ./.github/workflows/sycl-windows-run-tests.yml + with: + name: Intel GEN12 Graphics with Level Zero + runner: '["Windows","gen12"]' + sycl_toolchain_archive: ${{ needs.build-win.outputs.artifact_archive_name }} + extra_lit_opts: --param gpu-intel-gen12=True + ref: ${{ env.SYCL_REL_BRANCH }} + + cuda-aws-start: + needs: [ubuntu2204_build] + if: ${{ always() && !cancelled() && needs.ubuntu2204_build.outputs.build_conclusion == 'success' }} + uses: ./.github/workflows/sycl-aws.yml + secrets: inherit + with: + mode: start + ref: ${{ env.SYCL_REL_BRANCH }} + + cuda-run-tests: + needs: [ubuntu2204_build, cuda-aws-start] + if: ${{ always() && !cancelled() && needs.ubuntu2204_build.outputs.build_conclusion == 'success' }} + uses: ./.github/workflows/sycl-linux-run-tests.yml + with: + name: CUDA E2E + runner: '["aws_cuda-${{ github.run_id }}-${{ github.run_attempt }}"]' + image: ghcr.io/intel/llvm/ubuntu2204_build:latest-0300ac924620a51f76c4929794637b82790f12ab + image_options: -u 1001 --gpus all --cap-add SYS_ADMIN --env NVIDIA_DISABLE_REQUIRE=1 + target_devices: ext_oneapi_cuda:gpu + ref: ${{ env.SYCL_REL_BRANCH }} + merge_ref: '' + + sycl_toolchain_artifact: sycl_linux_default + sycl_toolchain_archive: ${{ needs.ubuntu2204_build.outputs.artifact_archive_name }} + sycl_toolchain_decompress_command: ${{ needs.ubuntu2204_build.outputs.artifact_decompress_command }} + + cuda-aws-stop: + needs: [cuda-aws-start, cuda-run-tests] + if: always() + uses: ./.github/workflows/sycl-aws.yml + secrets: inherit + with: + mode: stop + ref: ${{ env.SYCL_REL_BRANCH }}