diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b09b9c3d9..75f86c766 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,6 +25,29 @@ on: - '!LICENSE-APACHE' - '!LICENSE-MIT' +env: + # + # Dependency versioning + # from wgpu repo: https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml + # + + # Sourced from https://vulkan.lunarg.com/sdk/home#linux + VULKAN_SDK_VERSION: "1.3.268" + # Sourced from https://www.nuget.org/packages/Microsoft.Direct3D.WARP + WARP_VERSION: "1.0.8" + + # Sourced from https://github.com/microsoft/DirectXShaderCompiler/releases + # + # Must also be changed in shaders.yaml + DXC_RELEASE: "v1.7.2308" + DXC_FILENAME: "dxc_2023_08_14.zip" + + # Sourced from https://archive.mesa3d.org/. Bumping this requires + # updating the mesa build in https://github.com/gfx-rs/ci-build and creating a new release. + MESA_VERSION: "23.3.1" + # Corresponds to https://github.com/gfx-rs/ci-build/releases + CI_BINARY_BUILD: "build18" + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true @@ -122,40 +145,97 @@ jobs: curl -L "$GRCOV_LINK/$GRCOV_VERSION/grcov-x86_64-unknown-linux-musl.tar.bz2" | tar xj -C $HOME/.cargo/bin - - name: (windows) install warp + - name: (windows) install dxc + # from wgpu repo: https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml if: runner.os == 'Windows' shell: bash run: | set -e - curl.exe -L https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.7.1 -o warp.zip + curl.exe -L --retry 5 https://github.com/microsoft/DirectXShaderCompiler/releases/download/$DXC_RELEASE/$DXC_FILENAME -o dxc.zip + 7z.exe e dxc.zip -odxc bin/x64/{dxc.exe,dxcompiler.dll,dxil.dll} + + # We need to use cygpath to convert PWD to a windows path as we're using bash. + cygpath --windows "$PWD/dxc" >> "$GITHUB_PATH" + + - name: (windows) install warp + # from wgpu repo: https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml + if: runner.os == 'Windows' + shell: bash + run: | + set -e + + # Make sure dxc is in path. + dxc --version + + curl.exe -L --retry 5 https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/$WARP_VERSION -o warp.zip 7z.exe e warp.zip -owarp build/native/amd64/d3d10warp.dll - mkdir -p target/debug/deps + mkdir -p target/llvm-cov-target/debug/deps - cp -v warp/d3d10warp.dll target/debug/ - cp -v warp/d3d10warp.dll target/debug/deps + cp -v warp/d3d10warp.dll target/llvm-cov-target/debug/ + cp -v warp/d3d10warp.dll target/llvm-cov-target/debug/deps - name: (windows) install mesa + # from wgpu repo: https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml if: runner.os == 'Windows' shell: bash run: | set -e - curl.exe -L https://github.com/pal1000/mesa-dist-win/releases/download/23.2.1/mesa3d-23.2.1-release-msvc.7z -o mesa.7z + curl.exe -L --retry 5 https://github.com/pal1000/mesa-dist-win/releases/download/$MESA_VERSION/mesa3d-$MESA_VERSION-release-msvc.7z -o mesa.7z 7z.exe e mesa.7z -omesa x64/{opengl32.dll,libgallium_wgl.dll,libglapi.dll,vulkan_lvp.dll,lvp_icd.x86_64.json} - mkdir -p target/debug/deps + cp -v mesa/* target/llvm-cov-target/debug/ + cp -v mesa/* target/llvm-cov-target/debug/deps - cp -v mesa/* target/debug/ - cp -v mesa/* target/debug/deps - - echo "VK_DRIVER_FILES=$PWD/mesa/lvp_icd.x86_64.json" >> "$GITHUB_ENV" + # We need to use cygpath to convert PWD to a windows path as we're using bash. + echo "VK_DRIVER_FILES=`cygpath --windows $PWD/mesa/lvp_icd.x86_64.json`" >> "$GITHUB_ENV" echo "GALLIUM_DRIVER=llvmpipe" >> "$GITHUB_ENV" - - name: (windows) install directx - if: runner.os == 'Windows' - uses: napokue/setup-dxc@v1.1.0 + - name: (linux) install vulkan sdk + # from wgpu repo: https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml + if: runner.os == 'Linux' + shell: bash + run: | + set -e + + sudo apt-get update -y -qq + + # vulkan sdk + wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - + sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-$VULKAN_SDK_VERSION-jammy.list https://packages.lunarg.com/vulkan/$VULKAN_SDK_VERSION/lunarg-vulkan-$VULKAN_SDK_VERSION-jammy.list + + sudo apt-get update + sudo apt install -y vulkan-sdk + + - name: (linux) install mesa + # from wgpu repo: https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml + if: runner.os == 'Linux' + shell: bash + run: | + set -e + + curl -L --retry 5 https://github.com/gfx-rs/ci-build/releases/download/$CI_BINARY_BUILD/mesa-$MESA_VERSION-linux-x86_64.tar.xz -o mesa.tar.xz + mkdir mesa + tar xpf mesa.tar.xz -C mesa + + # The ICD provided by the mesa build is hardcoded to the build environment. + # + # We write out our own ICD file to point to the mesa vulkan + cat <<- EOF > icd.json + { + "ICD": { + "api_version": "1.1.255", + "library_path": "$PWD/mesa/lib/x86_64-linux-gnu/libvulkan_lvp.so" + }, + "file_format_version": "1.0.0" + } + EOF + + echo "VK_DRIVER_FILES=$PWD/icd.json" >> "$GITHUB_ENV" + echo "LD_LIBRARY_PATH=$PWD/mesa/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH" >> "$GITHUB_ENV" + echo "LIBGL_DRIVERS_PATH=$PWD/mesa/lib/x86_64-linux-gnu/dri" >> "$GITHUB_ENV" - name: run checks & tests shell: bash diff --git a/NOTICES.md b/NOTICES.md index f0f65e020..a098a31a1 100644 --- a/NOTICES.md +++ b/NOTICES.md @@ -246,3 +246,28 @@ See the License for the specific language governing permissions and limitations under the License. +## wgpu + +**Source:** https://github.com/gfx-rs/wgpu/blob/trunk/.github/workflows/ci.yml + +MIT License + +Copyright (c) 2021 The gfx-rs developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/burn-import/src/burn/graph.rs b/burn-import/src/burn/graph.rs index e399ffba5..02d745652 100644 --- a/burn-import/src/burn/graph.rs +++ b/burn-import/src/burn/graph.rs @@ -458,6 +458,7 @@ impl BurnGraph { } } + #[allow(dead_code)] pub fn new_devauto() -> Self { let device = B::Device::default(); Self::new(&device)