Skip to content

try build gpu sm86/sm89 #4

try build gpu sm86/sm89

try build gpu sm86/sm89 #4

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 -DWITH_GPU=OFF" }
# - { name: openblas, cmake_flags: "-DWITH_AVX=ON -DWITH_MKL=OFF -DWITH_GPU=OFF" }
# - { name: mkldnn, cmake_flags: "-DWITH_AVX=ON -DWITH_MKL=ON -DWITH_GPU=OFF" }
- 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
steps:
- name: Setup dependencies
run: |
pip3 install numpy protobuf wheel ninja
- uses: Jimver/cuda-toolkit@master
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"]' }}
non-cuda-sub-packages: ${{ matrix.os == 'ubuntu-22.04' && '["libcublas", "libcublas-dev"]' || '[]' }}
log-file-suffix: '${{matrix.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 ("${{ matrix.os }}" -eq "ubuntu-22.04") {
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 ("${{ matrix.os }}" -eq "windows-2022") {
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/*