-
Notifications
You must be signed in to change notification settings - Fork 248
144 lines (125 loc) · 5.62 KB
/
Copy pathpaddle-build.yml
File metadata and controls
144 lines (125 loc) · 5.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: paddle-build
on:
push:
branches:
- feature/linux
- master
paths:
- .github/workflows/paddle-build.yml
workflow_dispatch:
env:
PADDLE_VERSION: "3.0.0"
PADDLE_BRANCH: "v3.0.0"
jobs:
build-all:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- { name: openblas, os: windows-2022, cmake_flags: "-DWITH_MKL=OFF -DWITH_ONNXRUNTIME=ON" }
- { name: openblas, os: ubuntu-22.04, cmake_flags: "-DWITH_MKL=OFF -DWITH_ONNXRUNTIME=ON" }
- { name: mkldnn, os: ubuntu-22.04, cmake_flags: "-DWITH_MKL=ON -DWITH_ONNXRUNTIME=ON" }
- { name: openvino, os: ubuntu-22.04, cmake_flags: "-DWITH_MKL=ON -DWITH_OPENVINO=ON -DWITH_ONNXRUNTIME=ON" }
- { name: openblas, os: ubuntu-22.04-arm, cmake_flags: "-DWITH_ARM=ON -DCMAKE_CXX_FLAGS=\"-Wno-error=class-memaccess\"" }
- { name: openblas, os: macos-13, cmake_flags: "-DWITH_ONNXRUNTIME=ON" }
- { name: openblas, os: macos-15, cmake_flags: "-DWITH_ARM=ON" }
steps:
- name: Setup dependencies
shell: bash
run: |
if [ "${{ runner.os }}" == "macOS" ]; then
pip install numpy protobuf wheel ninja --break-system-packages
else
pip install numpy protobuf wheel ninja
fi
- uses: Jimver/cuda-toolkit@v0.2.24
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", "thrust"]'
}}
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", "libthrust"]' ||
'[]' }}
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
if: ${{ runner.os == 'Windows' }}
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
shell: pwsh
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_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: ${{ matrix.os }}_cpp_${{ matrix.name }}
path: ./paddle-src/build/paddle_inference_install_dir/*
- name: Copy common.dll/.so
run: |
# libcommon.so, common.dll,
cp ./paddle-src/build/paddle_inference_install_dir/paddle/lib/*common.* ./paddle-src/build/paddle_inference_c_install_dir/paddle/lib/
- name: Upload paddle_inference_c_install_dir
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}_c_${{ matrix.name }}
path: ./paddle-src/build/paddle_inference_c_install_dir/*