Sycl nightly workflow #34
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: SYCL | |
| on: | |
| workflow_call: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| last-release: | |
| # run only on upstream; forks will not have the HW | |
| # currently this job is disabled as sycl-ls doesn't detect devices on the last release + latest UMF | |
| if: github.repository == 'oneapi-src/unified-memory-framework' && false | |
| name: Last release | |
| runs-on: [DSS-LEVEL_ZERO, DSS-UBUNTU] | |
| steps: | |
| # Install sycl | |
| - name: Download latest llvm release | |
| run: | | |
| latest_release=$(curl -s https://api.github.com/repos/intel/llvm/releases/latest | grep "tag_name" | cut -d '"' -f 4) | |
| download_url="https://github.com/intel/llvm/archive/refs/tags/${latest_release}.tar.gz" | |
| wget --no-verbose $download_url -O sycl_linux.tar.gz | |
| - name: Extract llvm | |
| run: | | |
| mkdir sycl_repo | |
| tar -xzf sycl_linux.tar.gz -C sycl_repo --strip-components=1 | |
| - name: Build llvm | |
| working-directory: sycl_repo | |
| run: | | |
| python3 buildbot/configure.py | |
| python3 buildbot/compile.py -j $(nproc) | |
| - name: Add llvm install directory to environment | |
| run: | | |
| echo "SYCL_INSTALL_DIR=${{ github.workspace }}/sycl_repo/build/install" >> $GITHUB_ENV | |
| - name: Add llvm to PATH | |
| run: | | |
| echo "${{ github.workspace }}/llvm/bin:$PATH" >> $GITHUB_PATH | |
| echo "LD_LIBRARY_PATH=${{env.SYCL_INSTALL_DIR}}/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
| - name: Remove UMF installed with llvm | |
| run: rm -f ${{env.SYCL_INSTALL_DIR}}/lib/libumf* | |
| - name: Print installed sycl files | |
| run: | | |
| tree -L 2 ${{env.SYCL_INSTALL_DIR}} | |
| # Install UMF | |
| - name: Checkout UMF | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| path: umf_repo | |
| fetch-depth: 0 | |
| - name: Configure UMF | |
| working-directory: umf_repo | |
| run: > | |
| cmake | |
| -B build | |
| -DCMAKE_INSTALL_PREFIX=${{ env.SYCL_INSTALL_DIR }} | |
| -DCMAKE_BUILD_TYPE=Release | |
| -DCMAKE_C_COMPILER=gcc | |
| -DCMAKE_CXX_COMPILER=g++ | |
| -DUMF_BUILD_SHARED_LIBRARY=ON | |
| -DUMF_BUILD_TESTS=OFF | |
| -DUMF_BUILD_EXAMPLES=OFF | |
| - name: Build and install UMF | |
| working-directory: umf_repo | |
| run: cmake --build build --target install -j$(nproc) | |
| - name: Print installed lib files | |
| run: ls -l ${{env.SYCL_INSTALL_DIR}}/lib | |
| # Test sycl | |
| - name: Run sycl-ls | |
| run: | | |
| ${{env.SYCL_INSTALL_DIR}}/bin/sycl-ls | |
| - name: Print clang++ version | |
| run: clang++ --version | |
| - name: Run sycl tests built locally | |
| working-directory: sycl_repo | |
| run: | | |
| ${{env.SYCL_INSTALL_DIR}}/bin/clang++ -fsycl sycl/test-e2e/AbiNeutral/submit-kernel.cpp -o submit-kernel -I${{env.SYCL_INSTALL_DIR}}/include -I${{env.SYCL_INSTALL_DIR}}/include/sycl | |
| ONEAPI_DEVICE_SELECTOR=level_zero:gpu ./submit-kernel | |
| - name: Clean up | |
| if: always() | |
| run: rm -rf llvm sycl_repo sycl_linux.tar.gz | |
| latest-daily: | |
| # run only on upstream; forks will not have the HW | |
| if: github.repository == 'oneapi-src/unified-memory-framework' | |
| name: Latest daily build | |
| runs-on: ["DSS-LEVEL_ZERO", "DSS-UBUNTU"] | |
| steps: | |
| # Install sycl | |
| - name: Download latest llvm daily release | |
| run: | | |
| latest_tag=$(curl -s https://api.github.com/repos/intel/llvm/releases | awk -F'"' '/"tag_name":/ {print $4; exit}') | |
| download_url="https://github.com/intel/llvm/releases/download/${latest_tag}/sycl_linux.tar.gz" | |
| wget --no-verbose $download_url -O sycl_linux.tar.gz | |
| - name: Extract llvm | |
| run: | | |
| mkdir llvm | |
| tar -xzf sycl_linux.tar.gz -C llvm --strip-components=1 | |
| - name: Add sycl to PATH | |
| run: | | |
| echo "${{ github.workspace }}/llvm/bin:$PATH" >> $GITHUB_PATH | |
| echo "LD_LIBRARY_PATH=${{ github.workspace }}/llvm/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
| # Install UMF | |
| - name: Checkout UMF | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| path: umf_repo | |
| fetch-depth: 0 | |
| - name: Configure UMF | |
| working-directory: umf_repo | |
| run: > | |
| cmake | |
| -B build | |
| -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/llvm | |
| -DCMAKE_BUILD_TYPE=Release | |
| -DCMAKE_C_COMPILER=gcc | |
| -DCMAKE_CXX_COMPILER=g++ | |
| -DUMF_BUILD_SHARED_LIBRARY=ON | |
| -DUMF_BUILD_TESTS=OFF | |
| -DUMF_BUILD_EXAMPLES=OFF | |
| - name: Remove UMF installed with llvm | |
| run: rm -f llvm/lib/libumf* | |
| - name: Build and install UMF | |
| working-directory: umf_repo | |
| run: cmake --build build --target install -j$(nproc) | |
| - name: Print installed lib files | |
| run: ls -l llvm/lib | |
| # Test sycl-ls | |
| - name: Run sycl-ls | |
| run: | | |
| ./llvm/bin/sycl-ls | |
| # Test several sycl e2e test | |
| - name: Checkout sycl | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| repository: intel/llvm | |
| path: sycl_repo | |
| fetch-depth: 1 | |
| ref: sycl | |
| - name: Create sycl tests build directory | |
| run: | | |
| echo "TESTS_BUILD_DIR=${{ github.workspace }}/sycl_repo/test-e2e/build" >> $GITHUB_ENV | |
| mkdir ${{env.TESTS_BUILD_DIR}} | |
| - name: Build sycl e2e tests | |
| working-directory: sycl_repo | |
| run: | | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/AbiNeutral/submit-kernel.cpp -o ${{env.TESTS_BUILD_DIR}}/submit-kernel -Iinclude | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/Adapters/interop-l0-direct.cpp -o ${{env.TESTS_BUILD_DIR}}/interop-l0-direct -lze_loader -Iinclude | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/Adapters/level_zero_interop_memcpy.cpp -o ${{env.TESTS_BUILD_DIR}}/level_zero_interop_memcpy -Iinclude | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/Basic/build_log.cpp -o ${{env.TESTS_BUILD_DIR}}/build_log -Iinclude | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/PerformanceTests/ParallelFor/parallel_for_range_roundup.cpp -fsycl-range-rounding=force -o ${{env.TESTS_BUILD_DIR}}/parallel_for_range_roundup -Iinclude | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/ThreadSanitizer/check_no_race.cpp -Xarch_device -fsanitize=thread -O0 -g -o ${{env.TESTS_BUILD_DIR}}/check_no_race -Iinclude | |
| ./llvm/bin/clang++ -fsycl sycl/test-e2e/USM/fill_any_size.cpp -o ${{env.TESTS_BUILD_DIR}}/fill_any_size -Iinclude | |
| - name: Run sycl e2e tests | |
| env: | |
| ONEAPI_DEVICE_SELECTOR: level_zero:gpu | |
| UMF_LOG: "level:debug;flush:debug;output:stdout;pid:yes" | |
| working-directory: ${{env.TESTS_BUILD_DIR}} | |
| run: | | |
| ./submit-kernel | |
| ./interop-l0-direct | |
| ./level_zero_interop_memcpy | |
| ./build_log | |
| ./parallel_for_range_roundup | |
| ./check_no_race | |
| ./fill_any_size | |
| - name: Clean up | |
| if: always() | |
| run: rm -rf llvm sycl_linux.tar.gz |