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
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 | |
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 }} |