Skip to content

Commit cb17404

Browse files
authored
Merge branch 'sycl-develop' into zt/perf
2 parents 7e69f3d + ce061da commit cb17404

File tree

5 files changed

+189
-70
lines changed

5 files changed

+189
-70
lines changed

.github/actions/install-dpcpp/action.yml

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,32 +36,66 @@ runs:
3636
URL=https://github.com/intel/llvm/releases/download/${{ inputs.DPCPP_VERSION }}/sycl_linux.tar.gz;
3737
else
3838
echo "Will use latest DPCPP version"
39-
latest=$(curl -sS https://api.github.com/repos/intel/llvm/releases | jq -r '[.[].tag_name|select(match("nightly-[0-9]{4}-[0-9]{2}-[0-9]{2}"))][0]')
39+
# Use grep and sed instead of jq to avoid additional dependencies
40+
latest=$(curl -sS https://api.github.com/repos/intel/llvm/releases | \
41+
grep '"tag_name":' | \
42+
grep 'nightly-[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' | \
43+
head -1 | \
44+
sed 's/.*"tag_name": *"\([^"]*\)".*/\1/')
4045
URL=https://github.com/intel/llvm/releases/download/${latest}/sycl_linux.tar.gz;
4146
fi
4247
echo "Downloading DPCPP from ${URL}"
4348
sudo wget -q $URL
4449
sudo tar -xf sycl_linux.tar.gz
4550
sudo rm sycl_linux.tar.gz
4651
popd
52+
53+
# Detect system C++ compiler and standard library automatically
54+
echo "=== Detecting system C++ environment ==="
55+
SYSTEM_GCC_VERSION=$(gcc --version | head -1 | grep -o '[0-9]\+\.[0-9]\+' | head -1 | cut -d. -f1)
56+
SYSTEM_CXX_INCLUDE_DIR="/usr/include/c++/${SYSTEM_GCC_VERSION}"
57+
SYSTEM_CXX_ARCH_INCLUDE_DIR="/usr/include/x86_64-linux-gnu/c++/${SYSTEM_GCC_VERSION}"
58+
SYSTEM_GCC_LIB_DIR="/usr/lib/gcc/x86_64-linux-gnu/${SYSTEM_GCC_VERSION}"
59+
60+
echo "Detected GCC version: ${SYSTEM_GCC_VERSION}"
61+
echo "C++ include directory: ${SYSTEM_CXX_INCLUDE_DIR}"
62+
echo "C++ arch include directory: ${SYSTEM_CXX_ARCH_INCLUDE_DIR}"
63+
echo "GCC library directory: ${SYSTEM_GCC_LIB_DIR}"
64+
65+
# Verify directories exist, fallback to available versions if needed
66+
if [[ ! -d "$SYSTEM_CXX_INCLUDE_DIR" ]]; then
67+
echo "Primary C++ include dir not found, searching for alternatives..."
68+
SYSTEM_CXX_INCLUDE_DIR=$(find /usr/include/c++/ -maxdepth 1 -type d -name '[0-9]*' | sort -V | tail -1)
69+
if [[ -n "$SYSTEM_CXX_INCLUDE_DIR" ]]; then
70+
DETECTED_VERSION=$(basename "$SYSTEM_CXX_INCLUDE_DIR")
71+
SYSTEM_CXX_ARCH_INCLUDE_DIR="/usr/include/x86_64-linux-gnu/c++/${DETECTED_VERSION}"
72+
SYSTEM_GCC_LIB_DIR="/usr/lib/gcc/x86_64-linux-gnu/${DETECTED_VERSION}"
73+
echo "Using fallback C++ version: ${DETECTED_VERSION}"
74+
fi
75+
fi
76+
4777
cat <<EOF | tee setvars.sh
48-
export PATH=$DPCPP_PATH/bin:$PATH
49-
export C_INCLUDE_PATH=$DPCPP_PATH/include:$C_INCLUDE_PATH
50-
export CPLUS_INCLUDE_PATH=$DPCPP_PATH/include:$CPLUS_INCLUDE_PATH
51-
export LD_LIBRARY_PATH=$DPCPP_PATH/lib:$LD_LIBRARY_PATH
78+
export PATH=$DPCPP_PATH/bin:/bin:/usr/bin:/usr/local/bin:\$PATH
79+
export C_INCLUDE_PATH=$DPCPP_PATH/include:${SYSTEM_CXX_INCLUDE_DIR}:${SYSTEM_CXX_ARCH_INCLUDE_DIR}:/usr/include/x86_64-linux-gnu:/usr/include:\$C_INCLUDE_PATH
80+
export CPLUS_INCLUDE_PATH=$DPCPP_PATH/include:${SYSTEM_CXX_INCLUDE_DIR}:${SYSTEM_CXX_ARCH_INCLUDE_DIR}:/usr/include/x86_64-linux-gnu:/usr/include:\$CPLUS_INCLUDE_PATH
81+
export LD_LIBRARY_PATH=$DPCPP_PATH/lib:/usr/lib/x86_64-linux-gnu:${SYSTEM_GCC_LIB_DIR}:/usr/lib:\$LD_LIBRARY_PATH
82+
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:${SYSTEM_GCC_LIB_DIR}:/usr/lib:\$LIBRARY_PATH
5283
export CC=$DPCPP_PATH/bin/clang
5384
export CXX=$DPCPP_PATH/bin/clang++
85+
# Configure DPC++ to use system C++ standard library with proper linking
86+
export CXXFLAGS="-stdlib=libstdc++ -I${SYSTEM_CXX_INCLUDE_DIR} -I${SYSTEM_CXX_ARCH_INCLUDE_DIR} \$CXXFLAGS"
87+
export LDFLAGS="-L/usr/lib/x86_64-linux-gnu -L${SYSTEM_GCC_LIB_DIR} -L/usr/lib \$LDFLAGS"
5488
EOF
5589
- name: Install DPCPP
5690
if: inputs.DPCPP_RELEASE == 'RELEASE'
5791
shell: bash
5892
run: |
5993
shopt -s expand_aliases
6094
which sudo || alias sudo=""
61-
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
62-
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
63-
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
64-
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
95+
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | \
96+
gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
97+
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | \
98+
sudo tee /etc/apt/sources.list.d/oneAPI.list
6599
sudo apt update
66100
sudo apt install -y intel-oneapi-runtime-libs intel-oneapi-compiler-dpcpp-cpp
67101
. /opt/intel/oneapi/setvars.sh

.github/actions/install-intel-graphics/action.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ runs:
2121
sudo add-apt-repository ppa:kobuk-team/intel-graphics
2222
sudo apt update
2323
else
24-
sudo apt update
24+
. /etc/os-release
25+
wget https://repositories.intel.com/gpu/ubuntu/dists/${VERSION_CODENAME}/intel-gpu-ubuntu-${VERSION_CODENAME}.run
26+
chmod +x intel-gpu-ubuntu-${VERSION_CODENAME}.run
27+
sudo ./intel-gpu-ubuntu-${VERSION_CODENAME}.run
2528
sudo apt install -y \
2629
intel-media-va-driver-non-free libmfx-gen1 libvpl2 \
2730
libegl-mesa0 libegl1-mesa-dev libgl1-mesa-dev \
@@ -39,7 +42,7 @@ runs:
3942
shopt -s expand_aliases
4043
which sudo || alias sudo=""
4144
if [[ "${{ inputs.GPU }}" == "BMG" ]]; then
42-
sudo rm /etc/apt/sources.list.d/ppa_kobuk_team_intel_graphics_oracular.list
45+
sudo rm -f /etc/apt/sources.list.d/ppa_kobuk_team_intel_graphics_oracular.list
4346
sudo add-apt-repository ppa:kobuk-team/intel-graphics-staging
4447
sudo apt update
4548
sudo apt-get install -y libze-intel-gpu1 libze-dev intel-metrics-discovery \

.github/workflows/intel_test.yml

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,36 +28,36 @@ jobs:
2828
gpu: BMG
2929
intel_graphics: STAGING
3030
sycl_target: intel_gpu_bmg_g21
31-
runner: cp-b580-gpu
31+
runner: bmg108629-01
3232
- compiler: RELEASE
3333
gpu: BMG
3434
intel_graphics: STAGING
3535
sycl_target: intel_gpu_bmg_g21
36-
runner: cp-b580-gpu
37-
- compiler: RELEASE
36+
runner: bmg108629-01
37+
- compiler: NIGHTLY
3838
gpu: BMG
3939
intel_graphics: ROLLING
4040
sycl_target: intel_gpu_bmg_g21
41-
runner: cp-b580-gpu
42-
- compiler: NIGHTLY
41+
runner: bmg108629-01
42+
- compiler: RELEASE
4343
gpu: BMG
4444
intel_graphics: ROLLING
4545
sycl_target: intel_gpu_bmg_g21
46-
runner: cp-b580-gpu
47-
- compiler: NIGHTLY
46+
runner: bmg108629-01
47+
- compiler: RELEASE
4848
gpu: PVC
4949
intel_graphics: ROLLING
5050
sycl_target: intel_gpu_pvc
51-
runner: cp-gpumax-1100-gpu
52-
- compiler: RELEASE
51+
runner: pvc146162-01
52+
- compiler: NIGHTLY
5353
gpu: PVC
5454
intel_graphics: ROLLING
5555
sycl_target: intel_gpu_pvc
56-
runner: cp-gpumax-1100-gpu
56+
runner: pvc146162-01
5757

5858
name: Run Intel ${{ matrix.compiler }} tests on ${{ matrix.gpu }} with intel-graphics ${{ matrix.intel_graphics }}
5959
runs-on: ${{ matrix.runner }}
60-
timeout-minutes: 30
60+
timeout-minutes: 120
6161

6262
steps:
6363
- name: Checkout repository
@@ -79,9 +79,17 @@ jobs:
7979
- name: Setup virtual environment
8080
shell: bash
8181
run: |
82+
# Install cmake and ninja if not already available
83+
if ! command -v cmake &> /dev/null || ! command -v ninja &> /dev/null; then
84+
echo "Installing cmake and/or ninja..."
85+
sudo apt update
86+
sudo apt install -y cmake ninja-build
87+
else
88+
echo "cmake and ninja already available"
89+
fi
8290
. setvars.sh
8391
export IGC_ExtraOCLOptions="-cl-intel-256-GRF-per-thread"
84-
export SYCL_PROGRAM_COMPILE_OPTIONS="-ze-opt-large-register-file -gline-tables-only"
92+
export SYCL_PROGRAM_COMPILE_OPTIONS="-ze-opt-large-register-file -gline-tables-only"
8593
export ONEAPI_DEVICE_SELECTOR=level_zero:gpu
8694
export IGC_VectorAliasBBThreshold=100000000000
8795
# Persist environment variables to following steps
@@ -96,11 +104,16 @@ jobs:
96104
-DCUTLASS_ENABLE_SYCL=ON \
97105
-DDPCPP_SYCL_TARGET=${{ matrix.sycl_target }} \
98106
-DCUTLASS_SYCL_RUNNING_CI=ON
99-
cmake --build .
107+
# Use reduced parallelism for BMG runners, full for PVC
108+
if [[ "${{ matrix.gpu }}" == "BMG" ]]; then
109+
cmake --build . -j 2
110+
else
111+
cmake --build .
112+
fi
100113
- name: Unit test
101114
shell: bash
102115
run: |
103-
cmake --build . --target test_unit
116+
cmake --build . --target test_unit -j 8
104117
- name: Examples
105118
shell: bash
106119
run: |
@@ -109,3 +122,30 @@ jobs:
109122
shell: bash
110123
run: |
111124
cmake --build . --target cutlass_benchmarks
125+
- name: Cleanup DPC++
126+
if: always()
127+
shell: bash
128+
run: |
129+
echo "Cleaning up DPC++ installation..."
130+
# Remove DPCPP directory if it exists
131+
DPCPP_PATH="${{ inputs.DPCPP_PATH || '~/dpcpp' }}"
132+
DPCPP_PATH=$(eval echo $DPCPP_PATH) # Expand ~ to home directory
133+
if [ -d "$DPCPP_PATH" ]; then
134+
echo "Removing DPCPP directory: $DPCPP_PATH"
135+
sudo rm -rf "$DPCPP_PATH"
136+
fi
137+
# For RELEASE installs, remove OneAPI packages
138+
if [[ "${{ matrix.compiler }}" == "RELEASE" ]]; then
139+
echo "Removing OneAPI packages..."
140+
sudo apt remove -y intel-oneapi-runtime-libs intel-oneapi-compiler-dpcpp-cpp || true
141+
sudo rm -f /etc/apt/sources.list.d/oneAPI.list
142+
sudo rm -f /usr/share/keyrings/oneapi-archive-keyring.gpg
143+
fi
144+
# Clean up environment files
145+
rm -f setvars.sh
146+
# Clean up build artifacts
147+
rm -rf build/ || true
148+
# Reset environment variables that might interfere
149+
unset CC CXX CPLUS_INCLUDE_PATH C_INCLUDE_PATH LD_LIBRARY_PATH
150+
unset IGC_ExtraOCLOptions SYCL_PROGRAM_COMPILE_OPTIONS ONEAPI_DEVICE_SELECTOR IGC_VectorAliasBBThreshold
151+
echo "DPC++ cleanup completed"

0 commit comments

Comments
 (0)