Skip to content
This repository has been archived by the owner on Apr 8, 2024. It is now read-only.

Merge pull request #104 from spacemeshos/deprecate_repo #600

Merge pull request #104 from spacemeshos/deprecate_repo

Merge pull request #104 from spacemeshos/deprecate_repo #600

Workflow file for this run

name: Build
env:
CUDA_LINUX: "11.8"
CUDA_WINDOWS: "11.8.0_522.06"
VULKAN_LINUX: "1.3.231"
VULKAN_MAC: "1.3.231.1"
VULKAN_WINDOWS: "1.3.231.1"
on:
pull_request:
push:
branches: [develop]
jobs:
linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install CUDA
run: .github/tools/linux-install-cuda.sh
- name: Install Vulkan
run: .github/tools/linux-install-vulkan.sh
- run: cmake -B build -DSPACEMESHVULKAN=OFF
- run: cmake --build build
- name: Copy library
run: cp build/src/libgpu-setup.so build/test/libgpu-setup.so
- name: Unit tests - List providers
run: build/test/gpu-setup-test --list
- name: Unit tests - Golden vectors
run: build/test/gpu-setup-test --test-vector-check
- name: Unit tests - hash and bitstream
run: build/test/gpu-setup-test --unit-tests
- name: Unit tests - PoW
run: build/test/gpu-setup-test -tp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - PoW and Leafs
run: build/test/gpu-setup-test -tlp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - label lengths
run: build/test/gpu-setup-test -il
- name: Unit tests - labels count
run: build/test/gpu-setup-test -in
- name: Integration tests - concurrency test
run: build/test/gpu-setup-test -ip
- name: Integration tests - cancellation test
run: build/test/gpu-setup-test -ic
- name: Upload lib
uses: actions/upload-artifact@v3
with:
name: linux
path: build/src/libgpu-setup.so
- name: Upload test-app
uses: actions/upload-artifact@v3
with:
name: linux
path: build/test/gpu-setup-test
- name: Upload api.h
uses: actions/upload-artifact@v3
with:
name: linux
path: include/api.h
windows:
runs-on: windows-2022
env:
vs_path: C:\Program Files\Microsoft Visual Studio\2022\Enterprise
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Cache Windows Vulkan downloads
uses: actions/cache@v3
id: cache-win-vulkan
with:
path: .cache/vulkan
key: win-vulkan-${{ env.VULKAN_WINDOWS }}
- name: Cache Windows CUDA downloads
uses: actions/cache@v3
id: cache-win-cuda
with:
path: .cache/cuda
key: win-cuda-${{ env.CUDA_WINDOWS }}
- name: Download Vulkan SDK
if: ${{ steps.cache-win-vulkan.outputs.cache-hit != 'true' }}
env:
file-url: "https://sdk.lunarg.com/sdk/download/${{ env.VULKAN_WINDOWS }}/windows/VulkanSDK-${{ env.VULKAN_WINDOWS }}-Installer.exe"
file-name: VulkanSDK-${{ env.VULKAN_WINDOWS }}-Installer.exe
location: .cache/vulkan
sha256: "ffdf442893761a453499d612d86534a02573c3d2b2442b40311b69a4b2518bf2"
run: go run .github/tools/download.go
- name: Install vulkan SDK
run: |
Start-Process .cache/vulkan/VulkanSDK-${{ env.VULKAN_WINDOWS }}-Installer.exe -Wait -ArgumentList "--accept-licenses","--default-answer","--confirm-command install"
"VULKAN_SDK_VERSION=${{ env.VULKAN_WINDOWS }}" >> $env:GITHUB_ENV
"VULKAN_SDK=C:\VulkanSDK\${{ env.VULKAN_WINDOWS }}" >> $env:GITHUB_ENV
"PATH=C:\VulkanSDK\${{ env.VULKAN_WINDOWS }}\bin;$env:PATH" >> $env:GITHUB_ENV
- name: Setup CUDA env variables
shell: bash
run: |
CUDA_SHORT="$(cut -d '.' -f 1 <<< ${{ env.CUDA_WINDOWS }})"."$(cut -d '.' -f 2 <<< ${{ env.CUDA_WINDOWS }})"
echo "CUDA_WINDOWS_SHORT=$CUDA_SHORT" >> $GITHUB_ENV
CUDA_URL=${CUDA_WINDOWS/_*/}
echo "CUDA_WINDOWS_URL=$CUDA_URL" >> $GITHUB_ENV
- name: Download CUDA
if: ${{ steps.cache-win-cuda.outputs.cache-hit != 'true' }}
env:
file-url: "https://developer.download.nvidia.com/compute/cuda/${{ env.CUDA_WINDOWS_URL }}/local_installers/cuda_${{ env.CUDA_WINDOWS }}_windows.exe"
file-name: cuda_${{ env.CUDA_WINDOWS }}_windows.exe
location: .cache/cuda
md5: "894c61ba173d26dc667e95ee734d3c5a"
run: go run .github/tools/download.go
- name: Install CUDA
run: Start-Process .cache/cuda/cuda_${{ env.CUDA_WINDOWS }}_windows.exe -Wait -ArgumentList "-s","-n"
- name: Build
run: |
call "${{ env.vs_path }}\VC\Auxiliary\Build\vcvars64.bat"
"${{ env.vs_path }}\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake" -G "Ninja" -B build -DCMAKE_BUILD_TYPE="Release" -DCMAKE_IGNORE_PATH="C:/Strawberry/c/bin;C:/ProgramData/chocolatey/bin" -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v${{ env.CUDA_WINDOWS_SHORT }}" -DCMAKE_MAKE_PROGRAM="${{ env.vs_path }}\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe"
cmake --build build
shell: cmd
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: mingw64
pacboy: >-
toolchain:p
- name: Convert library to gnu format
run: |
cd build/src
gendef gpu-setup.dll
dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libgpu-setup.a --input-def gpu-setup.def
shell: msys2 {0}
- name: Copy library
shell: bash
run: cp build/src/gpu-setup.dll build/test/gpu-setup.dll
- name: Unit tests - List providers
run: build/test/gpu-setup-test --list
- name: Unit tests - Golden vectors
run: build/test/gpu-setup-test --test-vector-check
- name: Unit tests - hash and bitstream
run: build/test/gpu-setup-test --unit-tests
- name: Unit tests - PoW
run: build/test/gpu-setup-test -tp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - PoW and Leafs
run: build/test/gpu-setup-test -tlp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - label lengths
run: build/test/gpu-setup-test -il
- name: Unit tests - labels count
run: build/test/gpu-setup-test -in
- name: Integration tests - concurrency test
run: build/test/gpu-setup-test -ip
- name: Integration tests - cancellation test
run: build/test/gpu-setup-test -ic
- name: Upload DLL
uses: actions/upload-artifact@v3
with:
name: windows
path: build/src/gpu-setup.dll
- name: Upload lib
uses: actions/upload-artifact@v3
with:
name: windows
path: build/src/gpu-setup.lib
- name: Upload gnu lib
uses: actions/upload-artifact@v3
with:
name: windows
path: build/src/libgpu-setup.a
- name: Upload test app
uses: actions/upload-artifact@v3
with:
name: windows
path: build/test/gpu-setup-test.exe
- name: Upload api.h
uses: actions/upload-artifact@v3
with:
name: windows
path: include/api.h
macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Cache macOS downloads
id: cache-mac-vulkan
uses: actions/cache@v3
with:
path: .cache/vulkan
key: macos-cuda-vulkan-${{ env.VULKAN_MAC }}
- name: Download Vulkan SDK
if: ${{ steps.cache-mac-vulkan.outputs.cache-hit != 'true' }}
env:
file-url: "https://sdk.lunarg.com/sdk/download/${{ env.VULKAN_MAC }}/mac/vulkansdk-macos-${{ env.VULKAN_MAC }}.dmg"
file-name: vulkansdk-macos-${{ env.VULKAN_MAC }}.dmg
location: .cache/vulkan
sha256: "ee63c647eb5108dfb663b701fd3d5e976e9826f991cbe4aaaf43b5bb01971db5"
run: go run .github/tools/download.go
- name: Install vulkan SDK
run: |
sudo hdiutil attach .cache/vulkan/vulkansdk-macos-${{ env.VULKAN_MAC }}.dmg
cd /Volumes/vulkansdk-macos-${{ env.VULKAN_MAC }}
./InstallVulkan.app/Contents/MacOS/InstallVulkan --accept-licenses --default-answer --confirm-command install
cd /Users/runner/VulkanSDK/${{ env.VULKAN_MAC }}
python install_vulkan.py
VULKAN_ROOT_LOCATION=$PWD
VULKAN_SDK=${VULKAN_ROOT_LOCATION}/macOS
echo "VULKAN_ROOT_LOCATION=$VULKAN_ROOT_LOCATION" >> $GITHUB_ENV
echo "VULKAN_SDK_VERSION=${{ env.VULKAN_MAC }}" >> $GITHUB_ENV
echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV
echo "VK_ICD_FILENAMES=${VULKAN_SDK}/etc/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
echo "VK_LAYER_PATH=${VULKAN_SDK}/etc/vulkan/explicit_layers.d" >> $GITHUB_ENV
echo "PATH=${VULKAN_SDK}/bin:$PATH" >> $GITHUB_ENV
echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${VULKAN_SDK}/lib" >> $GITHUB_ENV
- run: cmake -DSPACEMESHCUDA=OFF -DSPACEMESHVULKAN=OFF -B build
- run: cmake --build build
- name: Copy library
run: cp build/src/libgpu-setup.dylib build/test/libgpu-setup.dylib
- name: Copy ICD file
run: cp ${{ env.VULKAN_ROOT_LOCATION }}/MoltenVK/dylib/macOS/MoltenVK_icd.json build/test/MoltenVK_icd.json
- name: Copy libMoltenVK
run: cp ${{ env.VULKAN_ROOT_LOCATION }}/MoltenVK/dylib/macOS/libMoltenVK.dylib build/test/libMoltenVK.dylib
- name: Fix library import paths
run: install_name_tool -add_rpath @loader_path build/test/libgpu-setup.dylib
- name: Unit tests - List providers
run: VK_LOADER_DEBUG=all build/test/gpu-setup-test --list
- name: Unit tests - Golden vectors
run: build/test/gpu-setup-test --test-vector-check
- name: Unit tests - hash and bitstream
run: build/test/gpu-setup-test --unit-tests
- name: Unit tests - PoW
run: build/test/gpu-setup-test -tp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - PoW and Leafs
run: build/test/gpu-setup-test -tlp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - label lengths
run: build/test/gpu-setup-test -il
- name: Unit tests - labels count
run: build/test/gpu-setup-test -in
- name: Integration tests - concurrency test
run: build/test/gpu-setup-test -ip
- name: Integration tests - cancellation test
run: build/test/gpu-setup-test -ic
- name: Upload library
uses: actions/upload-artifact@v3
with:
name: macos
path: build/src/libgpu-setup.dylib
- name: Upload test app
uses: actions/upload-artifact@v3
with:
name: macos
path: build/test/gpu-setup-test
- name: Upload api.h
uses: actions/upload-artifact@v3
with:
name: macos
path: include/api.h
- name: Upload MoltenVK
uses: actions/upload-artifact@v3
with:
name: macos
path: build/test/libMoltenVK.dylib
- name: Upload MoltenVK config
uses: actions/upload-artifact@v3
with:
name: macos
path: build/test/MoltenVK_icd.json
- name: Upload Vulkan
uses: actions/upload-artifact@v3
with:
name: macos
path: ${{ env.VULKAN_ROOT_LOCATION }}/macOS/lib/libvulkan.1.dylib
macos-m1:
runs-on: [self-hosted, macos, arm64]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup env
run: echo "VULKAN_ROOT_LOCATION=$VULKAN_ROOT_LOCATION" >> $GITHUB_ENV
- name: Vulkan Info
run: vulkaninfo
- run: arch -arm64 cmake -DSPACEMESHCUDA=OFF -DSPACEMESHVULKAN=OFF -B build
- run: arch -arm64 cmake --build build
- name: Copy library
run: cp build/src/libgpu-setup.dylib build/test/libgpu-setup.dylib
- name: Copy ICD file
run: cp ${{ env.VULKAN_ROOT_LOCATION }}/MoltenVK/dylib/macOS/MoltenVK_icd.json build/test/MoltenVK_icd.json
- name: Copy libMoltenVK
run: cp ${{ env.VULKAN_ROOT_LOCATION }}/MoltenVK/dylib/macOS/libMoltenVK.dylib build/test/libMoltenVK.dylib
- name: Fix library import paths
run: install_name_tool -add_rpath @loader_path build/test/libgpu-setup.dylib
- name: Unit tests - List providers
run: VK_LOADER_DEBUG=all build/test/gpu-setup-test --list
- name: Unit tests - Golden vectors
run: build/test/gpu-setup-test --test-vector-check
- name: Unit tests - hash and bitstream
run: build/test/gpu-setup-test --unit-tests
- name: Unit tests - PoW
run: build/test/gpu-setup-test -tp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - PoW and Leafs
run: build/test/gpu-setup-test -tlp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - label lengths
run: build/test/gpu-setup-test -il
- name: Unit tests - labels count
run: build/test/gpu-setup-test -in
- name: Integration tests - concurrency test
run: build/test/gpu-setup-test -ip
- name: Integration tests - cancellation test
run: build/test/gpu-setup-test -ic
- name: Upload library
uses: actions/upload-artifact@v3
with:
name: macos-m1
path: build/src/libgpu-setup.dylib
- name: Upload test app
uses: actions/upload-artifact@v3
with:
name: macos-m1
path: build/test/gpu-setup-test
- name: Upload api.h
uses: actions/upload-artifact@v3
with:
name: macos-m1
path: include/api.h
- name: Upload MoltenVK
uses: actions/upload-artifact@v3
with:
name: macos-m1
path: build/test/libMoltenVK.dylib
- name: Upload MoltenVK config
uses: actions/upload-artifact@v3
with:
name: macos-m1
path: build/test/MoltenVK_icd.json
- name: Upload Vulkan
uses: actions/upload-artifact@v3
with:
name: macos-m1
path: ${{ env.VULKAN_ROOT_LOCATION }}/macOS/lib/libvulkan.1.dylib
linux-arm64:
runs-on: [self-hosted, linux, arm64]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- run: cmake -DSPACEMESH_ARCH_ARM64=ON -DSPACEMESHVULKAN=OFF -B build
- run: cmake --build build
- name: Copy library
run: cp build/src/libgpu-setup.so build/test/libgpu-setup.so
- name: Unit tests - List providers
run: build/test/gpu-setup-test --list
- name: Unit tests - Golden vectors
run: build/test/gpu-setup-test --test-vector-check
# # Disabled because it's super slow on lavapipe
# - name: Unit tests - hash and bitstream
# run: build/test/gpu-setup-test --unit-tests
- name: Unit tests - PoW
run: build/test/gpu-setup-test -tp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
- name: Unit tests - PoW and Leafs
run: build/test/gpu-setup-test -tlp -d 18 -id 0xe26b543725490682675f6f84ea7689601adeaf14caa7024ec1140c82754ca339 --salt 0x165310acce39719148915c356f25c5cb78e82203222cccdf3c15a9c3684e08cb -si 126202
# # Disabled because it's super slow on lavapipe
# - name: Unit tests - label lengths
# run: build/test/gpu-setup-test -il
# - name: Unit tests - labels count
# run: build/test/gpu-setup-test -in
- name: Integration tests - concurrency test
run: build/test/gpu-setup-test -ip
- name: Integration tests - cancellation test
run: build/test/gpu-setup-test -ic
- name: Upload lib
uses: actions/upload-artifact@v3
with:
name: linux-arm64
path: build/src/libgpu-setup.so
- name: Upload test-app
uses: actions/upload-artifact@v3
with:
name: linux-arm64
path: build/test/gpu-setup-test
- name: Upload api.h
uses: actions/upload-artifact@v3
with:
name: linux-arm64
path: include/api.h
release:
runs-on: ubuntu-latest
needs: [linux, windows, macos, macos-m1, linux-arm64]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/download-artifact@v3
- run: |
VER="${{ github.ref }}"
echo "VERSION=${VER#refs/tags/v}" >> $GITHUB_ENV
- name: Archive Linux Library
run: zip --junk-paths libgpu-setup-linux-${{ env.VERSION }}.zip linux/*
- name: Archive Windows Library
run: zip --junk-paths libgpu-setup-windows-${{ env.VERSION }}.zip windows/*
- name: Archive MacOS Library
run: zip --junk-paths libgpu-setup-macos-${{ env.VERSION }}.zip macos/*
- name: Archive MacOS-M1 Library
run: zip --junk-paths libgpu-setup-macos-m1-${{ env.VERSION }}.zip macos-m1/*
- name: Archive Linux ARM64 Library
run: zip --junk-paths libgpu-setup-linux-arm64-${{ env.VERSION }}.zip linux-arm64/*
- name: Release
uses: softprops/action-gh-release@v1
with:
name: Release v${{ env.VERSION }}
files: |
libgpu-setup-linux-${{ env.VERSION }}.zip
libgpu-setup-windows-${{ env.VERSION }}.zip
libgpu-setup-macos-${{ env.VERSION }}.zip
libgpu-setup-macos-m1-${{ env.VERSION }}.zip
libgpu-setup-linux-arm64-${{ env.VERSION }}.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}