Implemented reaction-diffusion sample #109
Workflow file for this run
This file contains 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: Presubmit | |
on: [push, pull_request] | |
jobs: | |
get-branch: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get working branch | |
id: get-branch | |
run: | | |
if [[ ${{ github.event_name }} == "push" ]]; then | |
echo "branch=main" >> $GITHUB_OUTPUT | |
else | |
echo "branch=${{ github.base_ref }}" >> $GITHUB_OUTPUT | |
fi ; | |
echo $GITHUB_OUTPUT | |
outputs: | |
branch: ${{ steps.get-branch.outputs.branch }} | |
format: | |
name: Code formatting | |
runs-on: ubuntu-latest | |
needs: get-branch | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# repository: ${{ github.repository }} (default) | |
fetch-depth: 0 | |
- name: Install clang-format | |
run: sudo apt-get install clang-format | |
- name: Check format | |
run: $GITHUB_WORKSPACE/scripts/check-format.sh origin/${{ needs.get-branch.outputs.branch }} --binary clang-format | |
linux: | |
if: false | |
runs-on: ubuntu-latest | |
needs: format | |
strategy: | |
matrix: | |
CMAKE: [3.26.4] | |
COMPILER: | |
- C_NAME: gcc | |
CXX_NAME: g++ | |
VER: 11 | |
# - C_NAME: gcc | |
# CXX_NAME: g++ | |
# VER: 13 | |
# - C_NAME: clang | |
# CXX_NAME: clang++ | |
# VER: 14 | |
# - C_NAME: clang | |
# CXX_NAME: clang++ | |
# VER: 16 | |
DEPS: [os, vcpkg] | |
BIN: [64] | |
STD: [11, 17] | |
CONF: | |
- GEN: Unix Makefiles | |
CONFIG: Debug | |
IMAGE: | |
- streamhpc/opencl-sdk-base:ubuntu-22.04-20230717 | |
container: ${{matrix.IMAGE}} | |
env: | |
CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake | |
CPACK_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cpack | |
CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest | |
DEB_INSTALLATION_PATH: /usr | |
CC: ${{matrix.COMPILER.C_NAME}}-${{matrix.COMPILER.VER}} | |
CXX: ${{matrix.COMPILER.CXX_NAME}}-${{matrix.COMPILER.VER}} | |
steps: | |
- name: Checkout OpenCL-SDK | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Configure, package & install OpenCL-Headers | |
shell: bash | |
run: $CMAKE_EXE | |
-G "${{matrix.CONF.GEN}}" | |
`if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` | |
-D BUILD_TESTING=OFF | |
-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH | |
-S $GITHUB_WORKSPACE/external/OpenCL-Headers | |
-B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && | |
$CPACK_EXE | |
--config "$GITHUB_WORKSPACE/external/OpenCL-Headers/build/CPackConfig.cmake" | |
-G DEB | |
-C ${{matrix.CONF.CONFIG}} | |
-B "$GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb" && | |
dpkg -i $GITHUB_WORKSPACE/external/OpenCL-Headers/package-deb/*.deb | |
- name: Configure, package & install OpenCL-ICD-Loader | |
run: $CMAKE_EXE | |
-G "${{matrix.CONF.GEN}}" | |
`if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D ${{matrix.CONF.CONFIG}}"; fi` | |
-D BUILD_TESTING=OFF | |
-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH | |
-S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader | |
-B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && | |
$CPACK_EXE | |
--config "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build/CPackConfig.cmake" | |
-G DEB | |
-C ${{matrix.CONF.CONFIG}} | |
-B "$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb" && | |
dpkg -i $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb/*.deb && | |
dpkg -c $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/package-deb/ocl-icd-opencl-dev_3.0-1_amd64.deb | |
- name: Configure, package & install OpenCL-CLHPP | |
shell: bash | |
run: $CMAKE_EXE | |
-G "${{matrix.CONF.GEN}}" | |
`if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` | |
-D BUILD_TESTING=OFF | |
-D BUILD_EXAMPLES=OFF | |
-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH | |
-S $GITHUB_WORKSPACE/external/OpenCL-CLHPP | |
-B $GITHUB_WORKSPACE/external/OpenCL-CLHPP/build && | |
$CPACK_EXE | |
--config "$GITHUB_WORKSPACE/external/OpenCL-CLHPP/build/CPackConfig.cmake" | |
-G DEB | |
-C ${{matrix.CONF.CONFIG}} | |
-B "$GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb" && | |
dpkg -i $GITHUB_WORKSPACE/external/OpenCL-CLHPP/package-deb/*.deb | |
- name: Configure | |
shell: bash | |
run: if [[ "${{matrix.DEPS}}" == "vcpkg" ]]; | |
then | |
git clone https://github.com/Microsoft/vcpkg.git; | |
./vcpkg/bootstrap-vcpkg.sh; | |
./vcpkg/vcpkg install sfml tclap glm glew stb; | |
TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake"; | |
else | |
TOOLCHAIN_ARG=""; | |
fi && | |
mkdir $GITHUB_WORKSPACE/build && cd $GITHUB_WORKSPACE/build && | |
$CMAKE_EXE | |
-G "${{matrix.CONF.GEN}}" | |
`if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` | |
-D BUILD_DOCS=ON | |
-D BUILD_TESTING=ON | |
-D BUILD_EXAMPLES=ON | |
-D OPENCL_SDK_BUILD_SAMPLES=OFF | |
-D OPENCL_ICD_LOADER_BUILD_TESTING=ON | |
-D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install | |
-D CPACK_PACKAGING_INSTALL_PREFIX=$DEB_INSTALLATION_PATH | |
$GITHUB_WORKSPACE | |
- name: Build | |
shell: bash | |
run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; | |
then | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build -- -j`nproc`; | |
else | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug -- -j`nproc`; | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`; | |
fi; | |
- name: Test | |
shell: bash | |
working-directory: ${{runner.workspace}}/OpenCL-SDK/build | |
run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; | |
then | |
$CTEST_EXE --output-on-failure --parallel `nproc`; | |
else | |
$CTEST_EXE --output-on-failure -C Debug --parallel `nproc`; | |
$CTEST_EXE --output-on-failure -C Release --parallel `nproc`; | |
fi; | |
- name: Package DEB | |
shell: bash | |
run: $CPACK_EXE | |
--config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" | |
-G DEB | |
-C ${{matrix.CONF.CONFIG}} | |
-B "$GITHUB_WORKSPACE/package-deb" && | |
dpkg -c $GITHUB_WORKSPACE/package-deb/khronos-opencl-sdk_2023.4.17-1_amd64.deb | |
- name: Consume (DEB) | |
shell: bash | |
run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && | |
mkdir $GITHUB_WORKSPACE/build_package && | |
cd $GITHUB_WORKSPACE/build_package && | |
$CMAKE_EXE | |
-G "${{matrix.CONF.GEN}}" | |
`if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` | |
$GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil && | |
if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; | |
then | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build_package -- -j`nproc`; | |
else | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug -- -j`nproc`; | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release -- -j`nproc`; | |
fi; | |
- name: Uninstall (DEB) | |
shell: bash | |
run: apt-get remove -y ocl-icd-opencl-dev ocl-icd-libopencl1 opencl-c-headers opencl-clhpp-headers opencl-sdk | |
- name: Test install | |
shell: bash | |
run: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config ${{matrix.CONF.CONFIG}} -- -j`nproc` && | |
ls -lR $GITHUB_WORKSPACE/install | |
- name: Consume (install) | |
shell: bash | |
run: mkdir $GITHUB_WORKSPACE/build_install && cd $GITHUB_WORKSPACE/build_install && | |
$CMAKE_EXE | |
-G "${{matrix.CONF.GEN}}" | |
`if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` | |
-D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install | |
$GITHUB_WORKSPACE/test/cmake/pkgconfig/useutil && | |
if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; | |
then | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build_install -- -j`nproc`; | |
else | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug -- -j`nproc`; | |
$CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release -- -j`nproc`; | |
fi; | |
build: | |
if: false | |
needs: format | |
name: Build ${{ matrix.os }} ${{ matrix.compiler }} ${{ matrix.deps }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-latest] | |
compiler: [gcc, clang] | |
deps: [os, fetch, vcpkg] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Build | |
run: | | |
if [[ "${{ matrix.os }}" == "ubuntu-20.04" ]]; then | |
sudo apt update | |
sudo apt install -y libidn11 libx11-dev libxrandr-dev libxi-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libudev-dev \ | |
`if [[ "${{matrix.deps}}" == "os" ]]; then echo libtclap-dev libglm-dev libglew-dev libsfml-dev libstb-dev; fi;` \ | |
`if [[ "${{matrix.deps}}" == "vcpkg" ]]; then echo autoconf libtool libxcursor-dev; fi;` | |
if [[ "${{matrix.deps}}" == "vcpkg" ]]; then | |
git clone https://github.com/Microsoft/vcpkg.git | |
./vcpkg/bootstrap-vcpkg.sh | |
./vcpkg/vcpkg install sfml tclap glm glew stb | |
TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake" | |
else | |
TOOLCHAIN_ARG="" | |
fi | |
if [[ "${{matrix.deps}}" == "fetch" ]]; then | |
sudo apt remove -y libtclap-dev libglm-dev libglew-dev libsfml-dev libstb-dev libfreetype6-dev | |
fi | |
elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then | |
brew install tclap glm glew sfml mesa-glu | |
git clone https://github.com/Microsoft/vcpkg.git | |
./vcpkg/bootstrap-vcpkg.sh | |
./vcpkg/vcpkg install stb | |
TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake" | |
fi | |
if [[ "${{ matrix.compiler }}" == "gcc" ]]; then | |
CC=gcc | |
CXX=g++ | |
elif [[ "${{ matrix.compiler }}" == "clang" ]]; then | |
CC=clang | |
CXX=clang++ | |
fi | |
cmake \ | |
-D CMAKE_C_COMPILER=$CC \ | |
-D CMAKE_CXX_COMPILER=$CXX \ | |
$TOOLCHAIN_ARG \ | |
-S . -B build | |
cmake \ | |
--build ./build \ | |
--verbose \ | |
--parallel `numproc` | |
buildwin: | |
if: false | |
needs: format | |
name: Build Windows ${{ matrix.deps }} | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
deps: [fetch, vcpkg] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Build | |
shell: pwsh | |
run: | | |
if ('${{ matrix.deps }}' -eq 'vcpkg') { | |
Get-ChildItem Env:\ | |
& ${env:VCPKG_INSTALLATION_ROOT}\vcpkg.exe --triplet=x64-windows install sfml tclap glm glew stb | |
$TOOLCHAIN_ARG="-D CMAKE_TOOLCHAIN_FILE=${env:VCPKG_INSTALLATION_ROOT}\scripts\buildsystems\vcpkg.cmake" | |
} else { | |
$TOOLCHAIN_ARG='' | |
} | |
cmake ` | |
$TOOLCHAIN_ARG ` | |
-S . -B build | |
cmake ` | |
--build ./build ` | |
-- ` | |
/verbosity:minimal ` | |
/maxCpuCount ` | |
/noLogo | |
python: | |
if: false | |
name: Exercise Python examples on ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Environment setup | |
run: | | |
MINIFORGE_INSTALL_DIR=.miniforge3 | |
MINIFORGE_INSTALL_SH="Miniforge3-$(uname)-$(uname -m).sh" | |
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/$MINIFORGE_INSTALL_SH" | |
bash "$MINIFORGE_INSTALL_SH" -b -p "$MINIFORGE_INSTALL_DIR" | |
PATH="$MINIFORGE_INSTALL_DIR/bin/:$PATH" conda update conda --yes --quiet | |
PATH="$MINIFORGE_INSTALL_DIR/bin/:$PATH" conda update --all --yes --quiet | |
PATH="$MINIFORGE_INSTALL_DIR/bin:$PATH" conda env create --file python/.test-conda-env.yml --name testing --quiet | |
- name: Linter | |
run: | | |
source ".miniforge3/bin/activate" testing | |
(cd python && flake8) | |
- name: Run examples | |
run: | | |
source ".miniforge3/bin/activate" testing | |
for i in python/*.py; do | |
echo "-----------------------------------------------------------------------" | |
echo "RUNNING $i" | |
echo "-----------------------------------------------------------------------" | |
time python $i | |
done | |
checkruby: | |
if: false | |
name: Check Ruby Samples ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Install Ruby and POCL | |
run: sudo apt update; sudo apt install pocl-opencl-icd | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
- name: Install OpenCL Ruby Bindings and RuboCop | |
run: gem install --user-install opencl_ruby_ffi rubocop | |
- name: Check Ruby Syntax | |
run: | | |
export PATH=`ruby -r rubygems -e 'puts Gem.user_dir'`/bin:$PATH | |
rubocop | |
working-directory: ruby | |
- name: Run Ruby Samples | |
run: rake test | |
working-directory: ruby | |
android: | |
runs-on: ubuntu-latest | |
needs: format | |
strategy: | |
matrix: | |
ABI: | |
- arm64-v8a | |
- x86_64 | |
API_LEVEL: | |
- android-29 | |
- android-33 | |
CONFIG: | |
- Debug | |
- Release | |
env: | |
CFLAGS: -Wall -Wextra -pedantic -Werror -Wno-error=gnu-statement-expression | |
CXXFLAGS: -Wall -Wextra -pedantic -Werror -Wno-error=missing-field-initializers | |
steps: | |
- name: Checkout OpenCL-SDK | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: Configure | |
shell: bash | |
run: cmake | |
-G "Unix Makefiles" | |
-D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} | |
-D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake | |
-D ANDROID_ABI=${{matrix.ABI}} | |
-D ANDROID_PLATFORM=${{matrix.API_LEVEL}} | |
-D OPENCL_SDK_BUILD_OPENGL_SAMPLES=OFF | |
-S $GITHUB_WORKSPACE | |
-B $GITHUB_WORKSPACE/build | |
- name: Build | |
shell: bash | |
run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` |