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
|
# Maintainer: Butui Hu <hot123tea123@gmail.com>
# cuda 11 supports Pascal, Volta,Turing, Ampere
# see also https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards
# adjust this list according to your target device
_CUDA_ARCH_LIST="60;61;62;70;72;75;80;86;86+PTX"
_pkgname=Paddle
pkgname=('python-paddlepaddle' 'python-paddlepaddle-cuda')
pkgver=2.2.2
pkgrel=1
pkgdesc='PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice'
arch=('x86_64')
url='http://www.paddlepaddle.org'
license=('Apache')
depends=(
blas
python-astor
python-decorator
python-numpy
python-pillow
python-protobuf
python-requests
python-six
)
makedepends=(
cmake
cuda
cudnn
git
nccl
patchelf
python-pip
python-setuptools
python-wheel
swig
wget
)
source=("${_pkgname}::git+https://github.com/PaddlePaddle/Paddle.git#tag=v${pkgver}")
sha512sums=('SKIP')
get_pyver() {
python -c 'import sys; print(str(sys.version_info[0]) + "." + str(sys.version_info[1]))'
}
prepare() {
# improve the file descriptors limit to avoid "Too many open files" error
ulimit -n 4096
# use the same version of system's protobuf
# always check https://github.com/PaddlePaddle/Paddle/blob/v2.2.1/cmake/external/protobuf.cmake
# to make sure which protobuf git commit is used
# if you set other config that might affect this
_protobuf_version=$(protoc --version|cut -f 2 -d ' ')
sed -i "s,9f75c5aa851cd877fb0d93ccc31b8567a6706546,v${_protobuf_version}," "${_pkgname}/cmake/external/protobuf.cmake"
# set CUDA_HOME for dgc building
sed -i 's,BUILD_COMMAND make -j $(nproc),BUILD_COMMAND make CUDA_HOME=/opt/cuda,' "${_pkgname}/cmake/external/dgc.cmake"
# fix std::move error, see also https://github.com/PaddlePaddle/Paddle/issues/26878
find "${_pkgname}" -type f -name CMakeLists.txt -exec sed -i -e '$aset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=pessimizing-move")' {} \;
# fix range-loop-construct
find "${_pkgname}" -type f -name CMakeLists.txt -exec sed -i -e '$aset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=range-loop-construct")' {} \;
# fix #include <cstddef>
sed -i 's,#include <cstdint>,#include <cstdint>\n#include <cstddef>,' "${_pkgname}/paddle/fluid/memory/detail/memory_block.h"
}
build() {
# WITH_DISTRIBUTE=ON is not working now
# maybe we could build it with gcc 8
# for more related issue, report it to upstream
cmake_opts=(
-DCMAKE_INSTALL_PREFIX=/usr
-DCMAKE_SKIP_INSTALL_RPATH=ON
-DWITH_AVX=ON
-DWITH_DISTRIBUTE=OFF
-DWITH_MKL=OFF
-DWITH_PYTHON=ON
-DWITH_SYSTEM_BLAS=ON
-DWITH_TESTING=OFF
)
# building with CUDA
cmake -B "${srcdir}/build-cuda" \
-S "${srcdir}/${_pkgname}" \
${cmake_opts[@]} \
-DCUDA_ARCH_BIN=${_CUDA_ARCH_LIST} \
-DCUDA_ARCH_NAME="Manual" \
-DWITH_GPU=ON
make -C "${srcdir}/build-cuda"
# building without CUDA
cmake -B "${srcdir}/build" \
-S "${srcdir}/${_pkgname}" \
${cmake_opts[@]} \
-DWITH_GPU=OFF
make -C "${srcdir}/build"
}
package_python-paddlepaddle-cuda() {
pkgdesc="${pkgdesc} (with CUDA)"
depends+=(
cuda
cudnn
nccl
)
provides=(python-paddlepaddle)
conflicts=(python-paddlepaddle)
PIP_CONFIG_FILE=/dev/null find "${srcdir}/build-cuda" -type f -name "*.whl" -exec pip install --isolated --root="${pkgdir}" --ignore-installed --no-deps {} \;
python -O -m compileall "${pkgdir}"
# remove unneeded libs
rm -rfv "${pkgdir}/usr/lib/python$(get_pyver)/site-packages/paddle/libs"
rm -vf ${pkgdir}/usr/lib/python$(get_pyver)/site-packages/_foo.*
# remove rpath
find "${pkgdir}/usr/lib" -type f -name "*.so" -exec patchelf --remove-rpath {} \;
}
package_python-paddlepaddle() {
PIP_CONFIG_FILE=/dev/null find "${srcdir}/build" -type f -name "*.whl" -exec pip install --isolated --root="${pkgdir}" --ignore-installed --no-deps {} \;
python -O -m compileall "${pkgdir}"
# remove unneeded libs
rm -rfv "${pkgdir}/usr/lib/python$(get_pyver)/site-packages/paddle/libs"
rm -vf ${pkgdir}/usr/lib/python$(get_pyver)/site-packages/_foo.*
# remove rpath
find "${pkgdir}/usr/lib" -type f -name "*.so" -exec patchelf --remove-rpath {} \;
}
# vim:set ts=2 sw=2 et:
|