mirror of
https://github.com/intel/intel-graphics-compiler.git
synced 2025-10-30 08:18:26 +08:00
219 lines
9.4 KiB
YAML
219 lines
9.4 KiB
YAML
#=========================== begin_copyright_notice ============================
|
|
#
|
|
# Copyright (C) 2022 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
#============================ end_copyright_notice =============================
|
|
|
|
name: Build IGC
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
download-OpenCL-Clang: # openCL Clang is downloaded from intel/intel-graphics-compiler releases
|
|
if: github.repository == 'intel/intel-graphics-compiler'
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
CLANG_CACHE_VALID: true
|
|
CLANG_CACHE_KEY: none
|
|
ORIGINAL_CLANG_CACHE_KEY: none
|
|
outputs:
|
|
CLANG_CACHE_KEY: ${{ env.CLANG_CACHE_KEY }}
|
|
steps:
|
|
- uses: oprypin/find-latest-tag@v1
|
|
with:
|
|
repository: intel/intel-graphics-compiler
|
|
releases-only: true
|
|
id: get-latest-IGC-release-tag
|
|
- name: set initial cache key
|
|
run: |
|
|
LOC_CLANG_CACHE_KEY="${{ steps.get-latest-IGC-release-tag.outputs.tag }}"
|
|
echo "CLANG_CACHE_KEY=$LOC_CLANG_CACHE_KEY" >> $GITHUB_ENV
|
|
echo "ORIGINAL_CLANG_CACHE_KEY=$LOC_CLANG_CACHE_KEY" >> $GITHUB_ENV
|
|
- name: caching downloaded OpenCL Clang # Downloading a new OpenCL Clang only after the new IGC is released
|
|
id: cache-igc-release
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ./igc-official-release
|
|
key: ${{ env.CLANG_CACHE_KEY }}
|
|
- name: checking for valid cache hit
|
|
if: steps.cache-igc-release.outputs.cache-hit == 'true'
|
|
run: |
|
|
if [[ $(ls ./igc-official-release | wc -c) == "0" ]]; then
|
|
echo "CLANG_CACHE_VALID=false" >> $GITHUB_ENV
|
|
echo "CLANG_CACHE_KEY=${{ steps.get-latest-IGC-release-tag.outputs.tag }}-${{ github.sha }}-${{ github.run_id }}-${{ github.run_attempt }}" >> $GITHUB_ENV
|
|
fi
|
|
- name: creating a folder for downloaded deb files
|
|
if: ${{ steps.cache-igc-release.outputs.cache-hit != 'true' || env.CLANG_CACHE_VALID != 'true' }}
|
|
run: mkdir -p igc-official-release
|
|
- name: download latest igc release
|
|
if: ${{ steps.cache-igc-release.outputs.cache-hit != 'true' || env.CLANG_CACHE_VALID != 'true' }}
|
|
working-directory: ./igc-official-release
|
|
# To install openCL clang from Deb package, IGC must also be installed. Therefore, the last IGC release is also downloaded.
|
|
run: curl -s https://api.github.com/repos/intel/intel-graphics-compiler/releases/latest | grep browser_download_url | egrep 'opencl-|core-' | cut -d '"' -f 4 | wget -qi -
|
|
- name: checking if downloaded deb files are here
|
|
run: |
|
|
ls ./igc-official-release
|
|
if [[ $(ls ./igc-official-release | wc -c) == "0" ]]; then
|
|
exit 1
|
|
fi
|
|
- name: force redownload if invalid cache
|
|
if: env.CLANG_CACHE_VALID != 'true'
|
|
id: force-redownload
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ./igc-official-release
|
|
key: ${{ env.CLANG_CACHE_KEY }}
|
|
restore-keys: ${{ env.ORIGINAL_CLANG_CACHE_KEY }}
|
|
|
|
build-SPIRV-LLVM-Translator:
|
|
if: github.repository == 'intel/intel-graphics-compiler'
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ubuntu_version: [ '24.04' ]
|
|
llvm_ver: [ 15 ]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: cloning SPIRV-LLVM-Translator repository
|
|
run: git clone --branch llvm_release_${{ matrix.llvm_ver }}0 https://github.com/KhronosGroup/SPIRV-LLVM-Translator
|
|
- name: getting latest commit hash from SPIRV-LLVM-Translator repository
|
|
id: SPIRV-LLVM-Translator-hash
|
|
working-directory: ./SPIRV-LLVM-Translator
|
|
run: |
|
|
SPIRV_TRANSLATOR_SHA_SHORT=$(git log -1 --pretty=format:"%h")
|
|
echo "This is SPIRV-LLVM-Translator repository latest commit hash = ${SPIRV_TRANSLATOR_SHA_SHORT}"
|
|
echo "spirv_translator_sha_short=$SPIRV_TRANSLATOR_SHA_SHORT" >> $GITHUB_OUTPUT
|
|
- name: caching SPIRV-LLVM-Translator deb files
|
|
id: cache-spirv-llvm-translator
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ./build-SPIRV-LLVM-Translator
|
|
key: ${{ steps.SPIRV-LLVM-Translator-hash.outputs.spirv_translator_sha_short }}-ubuntu${{ matrix.ubuntu_version }}-llvm${{ matrix.llvm_ver }}
|
|
- name: run Docker
|
|
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true'
|
|
run: |
|
|
docker run --name=buildslt \
|
|
-v $(pwd)/scripts/buildSLT.sh:/buildSLT.sh \
|
|
--env DEBIAN_FRONTEND="noninteractive" \
|
|
--env UBUNTU_VERSION=${{ matrix.ubuntu_version }} \
|
|
--env LLVM_VERSION=${{ matrix.llvm_ver }} \
|
|
ubuntu:${{ matrix.ubuntu_version }} \
|
|
sh /buildSLT.sh
|
|
- name: creating folders to store SPIRV-LLVM-Translator build outputs
|
|
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true'
|
|
run: mkdir build-SPIRV-LLVM-Translator && mkdir temp-SPIRV-LLVM-Translator-build
|
|
- name: copying artifact from docker to github host
|
|
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true'
|
|
run: sudo docker cp buildslt:/SPIRV-LLVM-Translator/build ./temp-SPIRV-LLVM-Translator-build
|
|
- name: copy deb file to main artifact folder
|
|
if: steps.cache-spirv-llvm-translator.outputs.cache-hit != 'true'
|
|
run: sudo cp ./temp-SPIRV-LLVM-Translator-build/build/*.deb ./build-SPIRV-LLVM-Translator
|
|
|
|
build-IGC:
|
|
needs: [build-SPIRV-LLVM-Translator, download-OpenCL-Clang]
|
|
if: github.repository == 'intel/intel-graphics-compiler'
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ubuntu_version: [ '24.04' ]
|
|
llvm_ver: [ 15 ]
|
|
compiler: [ gcc, clang ]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
#Get OpenCL Clang
|
|
- uses: oprypin/find-latest-tag@v1
|
|
with:
|
|
repository: intel/intel-graphics-compiler
|
|
releases-only: true
|
|
id: get-latest-IGC-release-tag
|
|
- name: getting OpenCL Clang from cache from the previous job
|
|
id: cache-igc-release
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ./igc-official-release
|
|
key: ${{ needs.download-OpenCL-Clang.outputs.CLANG_CACHE_KEY }}
|
|
- name: checking if deb files are here
|
|
run: |
|
|
ls ./igc-official-release
|
|
if [[ $(ls ./igc-official-release | wc -c) == "0" ]]; then
|
|
exit 1
|
|
fi
|
|
#Get SPIRV-LLVM-Translator
|
|
- name: cloning SPIRV-LLVM-Translator repository
|
|
run: git clone --branch llvm_release_${{ matrix.llvm_ver }}0 https://github.com/KhronosGroup/SPIRV-LLVM-Translator
|
|
- name: getting latest commit hash from SPIRV-LLVM-Translator repository
|
|
id: SPIRV-LLVM-Translator-hash
|
|
working-directory: ./SPIRV-LLVM-Translator
|
|
run: |
|
|
SPIRV_TRANSLATOR_SHA_SHORT=$(git log -1 --pretty=format:"%h")
|
|
echo "This is SPIRV-LLVM-Translator hash = ${SPIRV_TRANSLATOR_SHA_SHORT}"
|
|
echo "spirv_translator_sha_short=$SPIRV_TRANSLATOR_SHA_SHORT" >> $GITHUB_OUTPUT
|
|
- name: getting SPIRV-LLVM-Translator deb files from cache from the previous job
|
|
id: cache-spirv-llvm-translator
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ./build-SPIRV-LLVM-Translator
|
|
key: ${{ steps.SPIRV-LLVM-Translator-hash.outputs.spirv_translator_sha_short }}-ubuntu${{ matrix.ubuntu_version }}-llvm${{ matrix.llvm_ver }}
|
|
|
|
#Build IGC
|
|
- name: Checkout IGC sources
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: workspace/igc
|
|
- name: Checkout vc-intrinsics sources
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: intel/vc-intrinsics
|
|
ref: master
|
|
path: workspace/vc-intrinsics
|
|
- name: Checkout SPIRV-Headers sources
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: KhronosGroup/SPIRV-Headers
|
|
ref: main
|
|
path: workspace/SPIRV-Headers
|
|
- name: Checkout the SPIRV-Headers
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: KhronosGroup/SPIRV-Tools
|
|
ref: main
|
|
path: workspace/SPIRV-Tools
|
|
- name: get short hash
|
|
id: igc-current-short-Hash
|
|
run: echo "sha_short=${GITHUB_SHA::7}" >> $GITHUB_OUTPUT
|
|
- name: run Docker
|
|
run: |
|
|
docker run --name=buildigc \
|
|
-v $(pwd)/scripts/buildIGC.sh:/buildIGC.sh \
|
|
-v $(pwd)/igc-official-release:/igc-official-release \
|
|
-v $(pwd)/build-SPIRV-LLVM-Translator:/build-SPIRV-LLVM-Translator \
|
|
-v $(pwd)/workspace:/workspace \
|
|
--env DEBIAN_FRONTEND="noninteractive" \
|
|
--env UBUNTU_VERSION=${{ matrix.ubuntu_version }} \
|
|
--env LLVM_VERSION=${{ matrix.llvm_ver }} \
|
|
--env COMPILER=${{ matrix.compiler }} \
|
|
--env IGC_SHA=${{ steps.igc-current-short-Hash.outputs.sha_short }} \
|
|
ubuntu:${{ matrix.ubuntu_version }} \
|
|
sh /buildIGC.sh
|
|
- name: creating folder to store output artifacts
|
|
run: mkdir Artifacts
|
|
- name: copying artifact from docker to github host
|
|
run: sudo docker cp buildigc:/workspace/igc/build/DEB-FILES ./Artifacts
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: IGC_Ubuntu${{ matrix.ubuntu_version }}_llvm${{ matrix.llvm_ver }}_${{ matrix.compiler }}-${{ steps.igc-current-short-Hash.outputs.sha_short }}
|
|
path: ./Artifacts/DEB-FILES/*.deb
|
|
retention-days: 30
|