readded compilers, CUDA #356
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: Build | |
on: [push, pull_request] | |
jobs: | |
build-linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04] | |
compiler: [g++-7, g++-8, g++-9, g++-10, clang++-8, clang++-9, clang++-10] | |
CUDA: ['0', '8.0', '11.0', 'NVHPC-22.5'] | |
ONEAPI: ['0', '2023.2.0', '2024.0'] | |
runs-on: ${{ matrix.os }} | |
env: | |
CUDA_ROOT: '/usr/local/cuda' | |
steps: | |
- name: Install g++-7 (if needed) | |
if: matrix.compiler == 'g++-7' | |
run: | | |
sudo apt install g++-7 | |
- name: Install g++-8 (if needed) | |
if: matrix.compiler == 'g++-8' | |
run: | | |
sudo apt install g++-8 | |
- name: Install clang++-8 (if needed) | |
if: matrix.compiler == 'clang++-8' | |
run: | | |
sudo apt install clang-8 | |
- name: Install clang++-9 (if needed) | |
if: matrix.compiler == 'clang++-9' | |
run: | | |
sudo apt install clang-9 | |
- name: Install clang++-10 (if needed) | |
if: matrix.compiler == 'clang++-10' | |
run: | | |
sudo apt install clang-10 | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: '0' | |
- name: Install CUDA runtime (if needed) | |
if: matrix.CUDA != '0' && matrix.ONEAPI == 0 | |
run: | | |
case ${{ matrix.CUDA }} in | |
8.0) | |
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run | |
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/patches/2/cuda_8.0.61.2_linux-run | |
sudo sh cuda_8.0.61_375.26_linux-run --extract=${CUDA_ROOT} | |
sudo sh ${CUDA_ROOT}/cuda-linux64-rel-8.0.61-21551265.run --tar mxvf -C ${CUDA_ROOT} | |
sudo sh cuda_8.0.61.2_linux-run --accept-eula --silent --installdir=${CUDA_ROOT} | |
;; | |
11.0) | |
wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run | |
sudo sh cuda_11.0.3_450.51.06_linux.run --toolkit --toolkitpath=${CUDA_ROOT} --override --silent | |
;; | |
NVHPC-22.5) | |
wget https://developer.download.nvidia.com/hpc-sdk/22.5/nvhpc_2022_225_Linux_x86_64_cuda_11.7.tar.gz | |
tar xpzf nvhpc_2022_225_Linux_x86_64_cuda_11.7.tar.gz | |
sudo NVHPC_SILENT="true" NVHPC_INSTALL_DIR="$CUDA_ROOT" NVHPC_INSTALL_TYPE="single" ./nvhpc_2022_225_Linux_x86_64_cuda_11.7/install | |
esac | |
- name: Install OneAPI Base-Toolkit (if needed) | |
if: matrix.ONEAPI != '0' && matrix.CUDA == '0' | |
run: | | |
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
sudo apt update | |
sudo apt install intel-basekit-${{ matrix.ONEAPI }} | |
- name: Create build directory | |
run: | | |
mkdir build | |
- name: Run CMake configure (default) | |
if: matrix.CUDA == '0' && matrix.ONEAPI == '0' | |
env: | |
CXX: ${{ matrix.compiler }} | |
run: | | |
cd build | |
cmake .. | |
- name: Run CMake configure (CUDA) | |
if: matrix.CUDA != '0' && matrix.CUDA != 'NVHPC-22.5' && matrix.ONEAPI == '0' | |
env: | |
CXX: ${{ matrix.compiler }} | |
run: | | |
export CPATH=${CUDA_ROOT}/include:${CPATH} | |
export LD_LIBRARY_PATH=${CUDA_ROOT}/lib64:${CUDA_ROOT}/lib64/stubs:${LD_LIBRARY_PATH} | |
export LIBRARY_PATH=${CUDA_ROOT}/lib64:${CUDA_ROOT}/lib64/stubs:${LIBRARY_PATH} | |
export CUDA_LIB_PATH=${CUDA_ROOT}/lib64:${CUDA_ROOT}/lib64/stubs | |
export PATH=${CUDA_ROOT}:${PATH} | |
export CUDA_HOME=${CUDA_ROOT} | |
export CUDA_PATH=${CUDA_ROOT} | |
export CUDAToolkit_ROOT=${CUDA_ROOT} | |
cd build | |
cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_CUDA" -DCMAKE_EXE_LINKER_FLAGS="-L${CUDA_ROOT}/lib64/stubs/" .. | |
- name: Run CMake configure (CUDA with NVHPC) | |
if: matrix.CUDA == 'NVHPC-22.5' && matrix.ONEAPI == '0' | |
env: | |
CXX: ${{ matrix.compiler }} | |
run: | | |
NVARCH=`uname -s`_`uname -m`; export NVARCH | |
PATH=$CUDA_ROOT/$NVARCH/22.5/compilers/bin:$PATH; export PATH | |
LD_LIBRARY_PATH=$CUDA_ROOT/$NVARCH/22.5/compilers/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH | |
LD_LIBRARY_PATH=$CUDA_ROOT/$NVARCH/22.5/cuda/11.7/lib64:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH | |
LD_LIBRARY_PATH=$CUDA_ROOT/$NVARCH/22.5/cuda/11.7/lib64/stubs:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH | |
cd build | |
cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_CUDA" -DCMAKE_EXE_LINKER_FLAGS=-L"$CUDA_ROOT/$NVARCH/22.5/cuda/11.7/lib64/stubs" -LA .. | |
- name: Run CMake configure (OneAPI 2023.2.0) | |
if: matrix.CUDA == '0' && matrix.ONEAPI =='2023.2.0' | |
run: | | |
. /opt/intel/oneapi/setvars.sh | |
cd build | |
cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_ONEAPI" .. | |
- name: Run CMake configure (OneAPI 2024.0) | |
if: matrix.CUDA == '0' && matrix.ONEAPI =='2024.0' | |
run: | | |
. /opt/intel/oneapi/${{ matrix.ONEAPI }}/oneapi-vars.sh | |
cd build | |
cmake -DFIRESTARTER_BUILD_TYPE="FIRESTARTER_ONEAPI" .. | |
- name: Build (default, CUDA) | |
if: matrix.ONEAPI =='0' | |
run: | | |
cd build | |
make -j2 | |
- name: Build (OneAPI 2023.2.0) | |
if: matrix.CUDA == '0' && matrix.ONEAPI =='2023.2.0' | |
run: | | |
. /opt/intel/oneapi/setvars.sh | |
cd build | |
make -j2 | |
- name: Build (OneAPI 2024.0) | |
if: matrix.CUDA == '0' && matrix.ONEAPI =='2024.0' | |
run: | | |
. /opt/intel/oneapi/${{ matrix.ONEAPI }}/oneapi-vars.sh | |
cd build | |
make -j2 | |
- name: Strip binary (default) | |
if: matrix.CUDA == '0' && matrix.ONEAPI == '0' | |
run: | | |
cd build | |
strip src/FIRESTARTER | |
- name: Strip binary (CUDA) | |
if: matrix.CUDA != '0' && matrix.ONEAPI == '0' | |
run: | | |
cd build | |
strip src/FIRESTARTER_CUDA | |
- name: Strip binary (OneAPI) | |
if: matrix.ONEAPI != '0' && matrix.CUDA == '0' | |
run: | | |
cd build | |
strip src/FIRESTARTER_ONEAPI | |
- name: Test FIRESTARTER (default) | |
if: matrix.CUDA == '0' && matrix.ONEAPI == '0' | |
run: ./build/src/FIRESTARTER -t 1 | |
- uses: actions/upload-artifact@v2 | |
if: matrix.compiler == 'clang++-10' && matrix.CUDA == '0' && matrix.ONEAPI == '0' | |
with: | |
name: FIRESTARTER-linux | |
path: build/src/FIRESTARTER | |
- uses: actions/upload-artifact@v2 | |
if: matrix.compiler == 'clang++-10' && matrix.CUDA != '0' && matrix.ONEAPI == '0' | |
with: | |
name: FIRESTARTER_CUDA_${{ matrix.CUDA }}-linux | |
path: build/src/FIRESTARTER_CUDA | |
- uses: actions/upload-artifact@v2 | |
if: matrix.compiler == 'clang++-10' && matrix.CUDA == '0' && matrix.ONEAPI != '0' | |
with: | |
name: FIRESTARTER_ONEAPI_${{ matrix.ONEAPI }}-linux | |
path: build/src/FIRESTARTER_ONEAPI | |
build-windows: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-2019] | |
cfg: | |
- { CUDA: '0', ONEAPI: '0', MSVC: true } | |
- { CUDA: '0', ONEAPI: '0', MSVC: false } | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: '0' | |
- name: Install CMake | |
uses: crazy-max/ghaction-chocolatey@v1 | |
with: | |
args: install cmake | |
- name: Install Mingw | |
uses: crazy-max/ghaction-chocolatey@v1 | |
if: matrix.cfg.MSVC == false | |
with: | |
args: install mingw | |
- uses: ilammy/msvc-dev-cmd@v1 | |
if: matrix.cfg.MSVC == true | |
- name: Create build directory | |
shell: pwsh | |
run: | | |
mkdir build | |
- name: Run CMake configure | |
if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == false | |
shell: pwsh | |
run: | | |
cd build | |
cmake -G "MinGW Makefiles" .. | |
- name: Run CMake configure | |
if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == true | |
shell: pwsh | |
run: | | |
cd build | |
cmake -G "NMake Makefiles" .. | |
- name: Build | |
shell: pwsh | |
run: | | |
cd build | |
cmake --build . -j2 | |
- name: Copy Hwloc DLL | |
shell: pwsh | |
if: matrix.cfg.MSVC == true | |
run: | | |
cd build | |
cp ../lib/Hwloc/sources/contrib/windows/x64/Release/libhwloc-15.dll src | |
- name: Strip binary | |
if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == false | |
run: | | |
cd build | |
strip src\FIRESTARTER.exe | |
- name: Test FIRESTARTER | |
if: matrix.cfg.CUDA == '0' | |
shell: pwsh | |
run: .\build\src\FIRESTARTER.exe -t 1 | |
- uses: actions/upload-artifact@v2 | |
if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == false | |
with: | |
name: FIRESTARTER-windows | |
path: | | |
build\src\FIRESTARTER.exe | |
build\src\libhwloc-15.dll | |
- uses: actions/upload-artifact@v2 | |
if: matrix.cfg.CUDA == '0' && matrix.cfg.MSVC == true | |
with: | |
name: FIRESTARTER-windows | |
path: | | |
build\src\FIRESTARTER.exe | |
build\src\libhwloc-15.dll | |
build-macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-10.15] | |
#os: [macos-11.0, macos-10.15] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: '0' | |
- name: Install Homebrew dependencies | |
run: | | |
brew upgrade cmake | |
- name: Create build directory | |
run: | | |
mkdir build | |
- name: Run CMake configure | |
run: | | |
cd build | |
cmake .. | |
- name: Build | |
run: | | |
cd build | |
make -j2 | |
- name: Strip binary | |
run: | | |
cd build | |
strip src/FIRESTARTER | |
- name: Test FIRESTARTER | |
run: | | |
cd build | |
./src/FIRESTARTER -t 1 | |
- uses: actions/upload-artifact@v2 | |
if: matrix.os == 'macos-10.15' | |
with: | |
name: FIRESTARTER-macOS_10.15 | |
path: build/src/FIRESTARTER | |
- uses: actions/upload-artifact@v2 | |
if: matrix.os == 'macos-11.0' | |
with: | |
name: FIRESTARTER-macOS_11.0 | |
path: build/src/FIRESTARTER | |
create-download: | |
name: Create download for Website | |
runs-on: ubuntu-latest | |
needs: [build-linux, build-macos, build-windows] | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: '0' | |
path: 'sources' | |
- name: Checkout submodules | |
run: | | |
cd sources | |
git submodule update --init --recursive | |
- name: Create Build directory | |
run: | | |
mkdir build | |
# Linux | |
- name: Retrieve FIRESTARTER-linux | |
uses: actions/download-artifact@v2 | |
with: | |
name: FIRESTARTER-linux | |
path: FIRESTARTER | |
- name: Move binary to right directory | |
run: | | |
mv FIRESTARTER/FIRESTARTER FIRESTARTER-linux | |
rm -rf FIRESTARTER | |
chmod +x FIRESTARTER-linux | |
# Linux CUDA 8.0 | |
- name: Retrieve FIRESTARTER_CUDA_8.0-linux | |
uses: actions/download-artifact@v2 | |
with: | |
name: FIRESTARTER_CUDA_8.0-linux | |
path: FIRESTARTER | |
- name: Move binary to right directory | |
run: | | |
mv FIRESTARTER/FIRESTARTER_CUDA FIRESTARTER_CUDA_8.0 | |
rm -rf FIRESTARTER | |
chmod +x FIRESTARTER_CUDA_8.0 | |
# Linux CUDA 11.0 | |
- name: Retrieve FIRESTARTER_CUDA_11.0-linux | |
uses: actions/download-artifact@v2 | |
with: | |
name: FIRESTARTER_CUDA_11.0-linux | |
path: FIRESTARTER | |
- name: Move binary to right directory | |
run: | | |
mv FIRESTARTER/FIRESTARTER_CUDA FIRESTARTER_CUDA_11.0 | |
rm -rf FIRESTARTER | |
chmod +x FIRESTARTER_CUDA_11.0 | |
# Linux OneAPI | |
- name: Retrieve FIRESTARTER_CUDA_11.0-linux | |
uses: actions/download-artifact@v2 | |
with: | |
name: FIRESTARTER_ONEAPI_2024.0-linux | |
path: FIRESTARTER | |
- name: Move binary to right directory | |
run: | | |
mv FIRESTARTER/FIRESTARTER_ONEAPI FIRESTARTER_ONEAPI_2024.0 | |
rm -rf FIRESTARTER | |
chmod +x FIRESTARTER_ONEAPI_2024.0 | |
# OSX 11.0 | |
#- name: Retrieve FIRESTARTER-macOS_11.0 | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: FIRESTARTER-macOS_11.0 | |
# path: FIRESTARTER | |
#- name: Move binary to right directory | |
# run: | | |
# mv FIRESTARTER/FIRESTARTER ../FIRESTARTER-macOS_11.0 | |
# rm -rf FIRESTARTER | |
# chmod +x ../FIRESTARTER-macOS_11.0 | |
# OSX 10.15 | |
- name: Retrieve FIRESTARTER-macOS_10.15 | |
uses: actions/download-artifact@v2 | |
with: | |
name: FIRESTARTER-macOS_10.15 | |
path: FIRESTARTER | |
- name: Move binary to right directory | |
run: | | |
mv FIRESTARTER/FIRESTARTER FIRESTARTER-macOS_10.15 | |
rm -rf FIRESTARTER | |
chmod +x FIRESTARTER-macOS_10.15 | |
# Windows | |
- name: Retrieve FIRESTARTER-windows | |
uses: actions/download-artifact@v2 | |
with: | |
name: FIRESTARTER-windows | |
path: FIRESTARTER | |
- name: Move binary to right directory | |
run: | | |
mv FIRESTARTER/FIRESTARTER.exe FIRESTARTER-windows.exe | |
mv FIRESTARTER/libhwloc-15.dll libhwloc-15.dll | |
rm -rf FIRESTARTER | |
# Create tar.gz | |
- name: Copy CHANGELOG, README and LICENSE | |
run: | | |
grep -v '\$\$' < sources/CHANGELOG > CHANGELOG | |
cat sources/README.md | tail -n +3 > README.md | |
cp sources/LICENSE LICENSE | |
cp sources/3rd-party-licenses . -r | |
cp sources/examples . -r | |
- name: Create tar.gz | |
run: | | |
mv FIRESTARTER-linux FIRESTARTER | |
rm -rf sources/.git* | |
tar -cvzf FIRESTARTER.tar.gz CHANGELOG README.md LICENSE libhwloc-15.dll 3rd-party-licenses examples sources FIRESTARTER* | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: FIRESTARTER.tar.gz | |
path: FIRESTARTER.tar.gz | |