Skip to content

Implemented reaction-diffusion sample #109

Implemented reaction-diffusion sample

Implemented reaction-diffusion sample #109

Workflow file for this run

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`