Skip to content

switch to runner.os #16

switch to runner.os

switch to runner.os #16

name: paddle-windows-build
on:
push:
branches:
- feature/3.0-gpu
- feature/3.0
- main
paths:
- '.github/workflows/paddle-windows-build.yml'
workflow_dispatch:
env:
PADDLE_VERSION: "3.0.0"
PADDLE_BRANCH: "v3.0.0"
jobs:
build-all:
runs-on: windows-2022
strategy:
matrix:
include:
- name: openblas_noavx
cmake_flags: "-DWITH_AVX=OFF -DWITH_MKL=OFF"
- name: openblas
cmake_flags: "-DWITH_MKL=OFF"
- name: mkldnn
cmake_flags: "-DWITH_MKL=ON"
- name: onemkl
cmake_flags: "-DWITH_ONEMKL=ON"
- name: cu126_cudnn95_sm86
cmake_flags: "-DWITH_GPU=ON -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=86 -DCMAKE_CUDA_ARCHITECTURES=86-real"
cuda: 12.6.3
cudnn: 9.5.1.17
- name: cu126_cudnn95_sm89
cmake_flags: "-DWITH_GPU=ON -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=89 -DCMAKE_CUDA_ARCHITECTURES=89-real"
cuda: 12.6.3
cudnn: 9.5.1.17
- name: cu126_cudnn95_sm75
cmake_flags: "-DWITH_GPU=ON -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=75 -DCMAKE_CUDA_ARCHITECTURES=75-real"
cuda: 12.6.3
cudnn: 9.5.1.17
- name: cu126_cudnn95_sm61
cmake_flags: "-DWITH_GPU=ON -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=61 -DCMAKE_CUDA_ARCHITECTURES=61-real"
cuda: 12.6.3
cudnn: 9.5.1.17
- name: cu126_cudnn95
cmake_flags: "-DWITH_GPU=ON -DCUDA_ARCH_NAME=Auto"
cuda: 12.6.3
cudnn: 9.5.1.17
steps:
- name: Setup dependencies
run: |
pip3 install numpy protobuf wheel ninja
- uses: Jimver/cuda-toolkit@v0.2.25
if: ${{ matrix.cuda != '' }}
id: cuda-toolkit
with:
method: network
cuda: ${{ matrix.cuda }}
# Windows sub-packages are kind of different, so we need to handle them separately
# https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
sub-packages: ${{ matrix.os == 'ubuntu-22.04' &&
'["nvcc"]' ||
'["nvcc", "cublas", "cublas_dev", "cudart", "cufft", "cufft_dev", "curand", "curand_dev",
"cusparse", "cusparse_dev", "cusolver", "cusolver_dev", "nvrtc", "nvrtc_dev",
"cuda_profiler_api", "nvjpeg", "nvjpeg_dev"]'
}}
non-cuda-sub-packages: ${{ matrix.os == 'ubuntu-22.04' &&
'["libcublas", "libcublas-dev", "libcufft", "libcufft-dev", "libcurand", "libcurand-dev",
"libcusparse", "libcusparse-dev", "libcusolver", "libcusolver-dev", "libnvrtc",
"libnvrtc-dev", "profiler_api"]' ||
'[]' }}
log-file-suffix: ${{ runner.os }}.txt
- name: Download cuDNN
if: ${{ matrix.cudnn != '' }}
shell: pwsh
run: |
$cudaMajor = '${{ matrix.cuda }}'.Split('.')[0]
echo "Downloading cuDNN for CUDA $cudaMajor and cuDNN ${{ matrix.cudnn }}..."
if ("${{ runner.os }}" -eq "Linux") {
Invoke-WebRequest -Uri https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-${{ matrix.cudnn }}_cuda$cudaMajor-archive.tar.xz -OutFile cudnn.tar.xz
mkdir cudnn && tar -xf cudnn.tar.xz --strip-components=1 -C cudnn
sudo cp cudnn/include/* ${{steps.cuda-toolkit.outputs.CUDA_PATH}}/include/
sudo cp cudnn/lib/* ${{steps.cuda-toolkit.outputs.CUDA_PATH}}/lib64/
} elseif ("${{ runner.os }}" -eq "Windows") {
Invoke-WebRequest -Uri https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/windows-x86_64/cudnn-windows-x86_64-${{ matrix.cudnn }}_cuda$cudaMajor-archive.zip -OutFile cudnn.zip
mkdir cudnn && tar -xf cudnn.zip --strip-components=1 -C cudnn
cp -Recurse -Force cudnn\* "${{ steps.cuda-toolkit.outputs.CUDA_PATH }}"
}
echo "::group:: cuDNN files"
Get-ChildItem -Recurse cudnn
echo "::endgroup::"
- name: Checkout Paddle repo
uses: actions/checkout@v4
with:
repository: PaddlePaddle/Paddle
ref: ${{ env.PADDLE_BRANCH }}
path: paddle-src
fetch-depth: 1
- uses: ilammy/msvc-dev-cmd@v1
with:
toolset: '14.29'
- name: Apply patches
shell: pwsh
run: |
cd ./paddle-src
Invoke-WebRequest -Uri https://gist.githubusercontent.com/sdcb/19dde1c9554e6066aade2a859070149b/raw/capi.patch -OutFile capi.patch
git apply --ignore-whitespace capi.patch
rm capi.patch
- name: Configure with CMake
run: |
mkdir ./paddle-src/build
mkdir ./paddle-src/build/paddle/phi/ops/yaml/inconsistent
mkdir ./paddle-src/build/paddle/phi/ops/yaml/legacy
cd ./paddle-src/build
cmake .. -GNinja `
${{ matrix.cmake_flags }} `
-DON_INFER=ON `
-DWITH_PYTHON=OFF `
-DWITH_ONNXRUNTIME=ON `
-DWITH_UNITY_BUILD=ON
- name: Build with Ninja
run: |
cd ./paddle-src/build
ninja all
- name: Show build files
shell: bash
run: |
ls -lR ./paddle-src/build
- name: Upload paddle_inference_install_dir
uses: actions/upload-artifact@v4
with:
name: cpp_${{ matrix.name }}
path: ./paddle-src/build/paddle_inference_install_dir/*
- name: Copy common.dll/.so
run: |
cp ./paddle-src/build/paddle_inference_install_dir/paddle/lib/common.* ./paddle-src/build/paddle_inference_c_install_dir/
- name: Upload paddle_inference_c_install_dir
uses: actions/upload-artifact@v4
with:
name: c_${{ matrix.name }}
path: ./paddle-src/build/paddle_inference_c_install_dir/*