This repository has been archived by the owner on May 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 295
/
Copy pathPKGBUILD
302 lines (267 loc) · 13 KB
/
PKGBUILD
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
# Maintainer: Torsten Keßler <tpkessler at archlinux dot org>
# Contributor: acxz <akashpatel2008 at yahoo dot com>
# Contributor: Sven-Hendrik Haase <[email protected]>
# Contributor: Stephen Zhang <zsrkmyn at gmail dot com>
# Contributor: Federico Zappone <federico dot zappone at unimol dot it>
_pkgname="pytorch"
pkgbase="python-${_pkgname}-rocm"
pkgname=("${pkgbase}" "python-pytorch-opt-rocm")
pkgver=1.13.1
_pkgver=1.13.1
pkgrel=2
_pkgdesc="Tensors and Dynamic neural networks in Python with strong GPU acceleration"
pkgdesc="${_pkgdesc}"
arch=('x86_64')
url="https://pytorch.org"
license=('BSD')
depends=('google-glog' 'gflags' 'opencv' 'openmp' 'rccl' 'pybind11' 'python' 'python-yaml' 'libuv'
'python-numpy' 'protobuf' 'ffmpeg4.4' 'python-future' 'qt5-base' 'intel-oneapi-mkl'
'python-typing_extensions')
makedepends=('python' 'python-setuptools' 'python-yaml' 'python-numpy' 'cmake' 'rocm-hip-sdk' 'roctracer'
'miopen' 'git' 'hipmagma' 'ninja' 'pkgconfig' 'doxygen' 'gcc11' 'onednn'
'vulkan-headers' 'shaderc')
source=("${_pkgname}-${pkgver}::git+https://github.com/pytorch/pytorch.git#tag=v$_pkgver"
# generated using parse-submodules
"${pkgname}-cub::git+https://github.com/NVlabs/cub.git"
"${pkgname}-NNPACK::git+https://github.com/Maratyszcza/NNPACK.git"
"${pkgname}-ios-cmake::git+https://github.com/Yangqing/ios-cmake.git"
"${pkgname}-pthreadpool::git+https://github.com/Maratyszcza/pthreadpool.git"
"${pkgname}-FXdiv::git+https://github.com/Maratyszcza/FXdiv.git"
"${pkgname}-gloo::git+https://github.com/facebookincubator/gloo"
"${pkgname}-benchmark::git+https://github.com/google/benchmark.git"
"${pkgname}-pybind11::git+https://github.com/pybind/pybind11.git"
"${pkgname}-googletest::git+https://github.com/google/googletest.git"
"${pkgname}-enum34::git+https://github.com/PeachPy/enum34.git"
"${pkgname}-six::git+https://github.com/benjaminp/six.git"
"${pkgname}-cpuinfo::git+https://github.com/pytorch/cpuinfo.git"
"${pkgname}-protobuf::git+https://github.com/protocolbuffers/protobuf.git"
"${pkgname}-foxi::git+https://github.com/houseroad/foxi.git"
"${pkgname}-sleef::git+https://github.com/shibatch/sleef"
"${pkgname}-ideep::git+https://github.com/intel/ideep"
"${pkgname}-nccl::git+https://github.com/NVIDIA/nccl"
"${pkgname}-zstd::git+https://github.com/facebook/zstd.git"
"${pkgname}-gemmlowp::git+https://github.com/google/gemmlowp.git"
"${pkgname}-QNNPACK::git+https://github.com/pytorch/QNNPACK"
"${pkgname}-onnx-tensorrt::git+https://github.com/onnx/onnx-tensorrt"
"${pkgname}-onnx::git+https://github.com/onnx/onnx.git"
"${pkgname}-cudnn-frontend::git+https://github.com/NVIDIA/cudnn-frontend.git"
"${pkgname}-ARM_NEON_2_x86_SSE::git+https://github.com/intel/ARM_NEON_2_x86_SSE.git"
"${pkgname}-ittapi::git+https://github.com/intel/ittapi.git"
"${pkgname}-fbjni::git+https://github.com/facebookincubator/fbjni.git"
"${pkgname}-json::git+https://github.com/nlohmann/json.git"
"${pkgname}-fbgemm::git+https://github.com/pytorch/fbgemm"
"${pkgname}-fmt::git+https://github.com/fmtlib/fmt.git"
"${pkgname}-kineto::git+https://github.com/pytorch/kineto"
"${pkgname}-tbb::git+https://github.com/01org/tbb"
"${pkgname}-tensorpipe::git+https://github.com/pytorch/tensorpipe.git"
"${pkgname}-psimd::git+https://github.com/Maratyszcza/psimd.git"
"${pkgname}-XNNPACK::git+https://github.com/google/XNNPACK.git"
"${pkgname}-FP16::git+https://github.com/Maratyszcza/FP16.git"
"${pkgname}-flatbuffers::git+https://github.com/google/flatbuffers.git"
"${pkgname}-eigen::git+https://gitlab.com/libeigen/eigen.git"
"${pkgname}-PeachPy::git+https://github.com/malfet/PeachPy.git"
"${pkgname}-pocketfft::git+https://github.com/mreineck/pocketfft"
fix_include_system.patch
use-system-libuv.patch
fix-building-for-torchvision.patch
87773.patch
ffmpeg4.4.patch
gloo-linux-6.patch)
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'557761502bbd994d9795bef46779e4b8c60ba0b45e7d60841f477d3b7f28a00a'
'cd9ac4aaa9f946ac5eafc57cf66c5c16b3ea7ac8af32c2558fad0705411bb669'
'600bd6a4bbcec9f99ab815d82cee1c2875530b2b75f4010da5ba72ce9bf31aff'
'bbc61ba2392bd4c6766cca820d4c5ca51ef9abd188e53884b95abcbe4d89a20e'
'75001b59e76831b0c93a547f851cb980e00b0d8cc7b66fb507eaeac217dc6ff9'
'91061f2ec36b5aa2002053654e1517d04bc2defa1ce3985ac554944a6497ce52')
options=('!lto')
get_pyver () {
python -c 'import sys; print(str(sys.version_info[0]) + "." + str(sys.version_info[1]))'
}
prepare() {
cd "${srcdir}/${_pkgname}-${pkgver}"
# generated using parse-submodules
git submodule init
git config submodule."third_party/pybind11".url "${srcdir}/${pkgname}"-pybind11
git config submodule."third_party/cub".url "${srcdir}/${pkgname}"-cub
git config submodule."third_party/eigen".url "${srcdir}/${pkgname}"-eigen
git config submodule."third_party/googletest".url "${srcdir}/${pkgname}"-googletest
#https://github.com/rocm-arch/python-pytorch-rocm/issues/49
#git config submodule."third_party/benchmark".url "${srcdir}/${pkgname}"-benchmark
git config submodule."third_party/protobuf".url "${srcdir}/${pkgname}"-protobuf
git config submodule."third_party/ios-cmake".url "${srcdir}/${pkgname}"-ios-cmake
git config submodule."third_party/NNPACK".url "${srcdir}/${pkgname}"-NNPACK
git config submodule."third_party/gloo".url "${srcdir}/${pkgname}"-gloo
git config submodule."third_party/NNPACK_deps/pthreadpool".url "${srcdir}/${pkgname}"-pthreadpool
git config submodule."third_party/NNPACK_deps/FXdiv".url "${srcdir}/${pkgname}"-FXdiv
git config submodule."third_party/NNPACK_deps/FP16".url "${srcdir}/${pkgname}"-FP16
git config submodule."third_party/NNPACK_deps/psimd".url "${srcdir}/${pkgname}"-psimd
git config submodule."third_party/zstd".url "${srcdir}/${pkgname}"-zstd
git config submodule."third_party/cpuinfo".url "${srcdir}/${pkgname}"-cpuinfo
git config submodule."third_party/python-enum".url "${srcdir}/${pkgname}"-enum34
git config submodule."third_party/python-peachpy".url "${srcdir}/${pkgname}"-PeachPy
git config submodule."third_party/python-six".url "${srcdir}/${pkgname}"-six
git config submodule."third_party/onnx".url "${srcdir}/${pkgname}"-onnx
git config submodule."third_party/onnx-tensorrt".url "${srcdir}/${pkgname}"-onnx-tensorrt
git config submodule."third_party/sleef".url "${srcdir}/${pkgname}"-sleef
git config submodule."third_party/ideep".url "${srcdir}/${pkgname}"-ideep
git config submodule."third_party/gemmlowp/gemmlowp".url "${srcdir}/${pkgname}"-gemmlowp
git config submodule."third_party/QNNPACK".url "${srcdir}/${pkgname}"-QNNPACK
git config submodule."third_party/neon2sse".url "${srcdir}/${pkgname}"-ARM_NEON_2_x86_SSE
git config submodule."third_party/fbgemm".url "${srcdir}/${pkgname}"-fbgemm
git config submodule."third_party/foxi".url "${srcdir}/${pkgname}"-foxi
git config submodule."third_party/tbb".url "${srcdir}/${pkgname}"-tbb
git config submodule."android/libs/fbjni".url "${srcdir}/${pkgname}"-fbjni
git config submodule."third_party/XNNPACK".url "${srcdir}/${pkgname}"-XNNPACK
git config submodule."third_party/fmt".url "${srcdir}/${pkgname}"-fmt
git config submodule."third_party/tensorpipe".url "${srcdir}/${pkgname}"-tensorpipe
git config submodule."third_party/kineto".url "${srcdir}/${pkgname}"-kineto
git config submodule."third_party/pocketfft".url "${srcdir}/${pkgname}"-pocketfft
git config submodule."third_party/ittapi".url "${srcdir}/${pkgname}"-ittapi
git config submodule."third_party/flatbuffers".url "${srcdir}/${pkgname}"-flatbuffers
git config submodule."third_party/nlohmann".url "${srcdir}/${pkgname}"-json
git -c protocol.file.allow=always submodule update --init --recursive
sed "1i#include <mutex>" -i third_party/kineto/libkineto/src/RoctracerActivityApi.h
# https://bugs.archlinux.org/task/64981
patch -N torch/utils/cpp_extension.py "${srcdir}"/fix_include_system.patch
# Use system libuv
patch -Np1 -i "${srcdir}"/use-system-libuv.patch
# fix https://github.com/pytorch/vision/issues/3695
patch -Np1 -i "${srcdir}/fix-building-for-torchvision.patch"
# Fix building against glog 0.6
patch -Np1 -i "${srcdir}/87773.patch"
# build against ffmpeg4.4
patch -Np1 -i "${srcdir}/ffmpeg4.4.patch"
cd "third_party/gloo"
patch -Np1 -i "${srcdir}/gloo-linux-6.patch"
cd "${srcdir}"
cp -r "${_pkgname}-${pkgver}" "${_pkgname}-${pkgver}-rocm"
cp -r "${_pkgname}-${pkgver}" "${_pkgname}-${pkgver}-opt-rocm"
export VERBOSE=1
export PYTORCH_BUILD_VERSION="${pkgver}"
export PYTORCH_BUILD_NUMBER=1
# Check tools/setup_helpers/cmake.py, setup.py and CMakeLists.txt for a list of flags that can be set via env vars.
export ATEN_NO_TEST=ON # do not build ATen tests
export USE_MKLDNN=ON
export BUILD_CUSTOM_PROTOBUF=OFF
export BUILD_CAFFE2=ON
export BUILD_CAFFE2_OPS=ON
# export BUILD_SHARED_LIBS=OFF
export USE_FFMPEG=ON
export USE_GFLAGS=ON
export USE_GLOG=ON
export BUILD_BINARY=ON
export USE_OBSERVERS=ON
export USE_OPENCV=ON
# export USE_SYSTEM_LIBS=ON # experimental, not all libs present in repos
export USE_CUPTI_SO=ON # make sure cupti.so is used as shared lib
export CC=/usr/bin/gcc-11
export CXX=/usr/bin/g++-11
export CUDAHOSTCXX=/usr/bin/g++-11
export CUDA_HOST_COMPILER="${CUDAHOSTCXX}"
}
build() {
export PYTORCH_ROCM_ARCH="gfx803;gfx900;gfx906;gfx908;gfx90a;gfx1030"
echo "Building with rocm and without non-x86-64 optimizations"
export USE_CUDA=0
export USE_CUDNN=0
export USE_ROCM=1
cd "${srcdir}/${_pkgname}-${pkgver}-rocm"
echo "add_definitions(-march=x86-64)" >> cmake/MiscCheck.cmake
# Apply changes needed for ROCm
python tools/amd_build/build_amd.py
# this horrible hack is necessary because the current release
# ships inconsistent CMake which tries to build objects before
# thier dependencies, build twice when dependencies are available
python setup.py build || python setup.py build
echo "Building with rocm and with non-x86-64 optimizations"
export USE_CUDA=0
export USE_CUDNN=0
export USE_ROCM=1
cd "${srcdir}/${_pkgname}-${pkgver}-opt-rocm"
echo "add_definitions(-march=haswell)" >> cmake/MiscCheck.cmake
# Apply changes needed for ROCm
python tools/amd_build/build_amd.py
# same horrible hack as above
python setup.py build || python setup.py build
}
_package() {
# Prevent setup.py from re-running CMake and rebuilding
sed -e 's/RUN_BUILD_DEPS = True/RUN_BUILD_DEPS = False/g' -i setup.py
python setup.py install --root="${pkgdir}"/ --optimize=1 --skip-build
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
pytorchpath="usr/lib/python$(get_pyver)/site-packages/torch"
install -d "${pkgdir}/usr/lib"
# put CMake files in correct place
mv "${pkgdir}/${pytorchpath}/share/cmake" "${pkgdir}/usr/lib/cmake"
# put C++ API in correct place
mv "${pkgdir}/${pytorchpath}/include" "${pkgdir}/usr/include"
find "${pkgdir}/${pytorchpath}"/lib/ -type f,l \( -iname '*.so' -or -iname '*.so*' \) -print0 | while read -rd $'\0' _lib; do
mv "${_lib}" "${pkgdir}"/usr/lib/
done
# clean up duplicates
# TODO: move towards direct shared library dependecy of:
# c10, caffe2, libcpuinfo, gloo, GTest, Intel MKL,
# ONNX, protobuf, libthreadpool, QNNPACK
rm -rf "${pkgdir}/usr/include/pybind11"
# python module is hardcoded to look there at runtime
ln -s /usr/include "${pkgdir}/${pytorchpath}/include"
find "${pkgdir}"/usr/lib -maxdepth 1 -type f,l \( -iname '*.so' -or -iname '*.so*' \) -print0 | while read -rd $'\0' _lib; do
ln -s ${_lib#"$pkgdir"} "${pkgdir}/${pytorchpath}/lib/"
done
}
package_python-pytorch-rocm() {
pkgdesc="${_pkgdesc} (with ROCm)"
depends+=(rocm-hip-sdk roctracer miopen hipmagma)
conflicts=(python-pytorch)
provides=(python-pytorch)
cd "${srcdir}/${_pkgname}-${pkgver}-rocm"
_package
}
package_python-pytorch-opt-rocm() {
pkgdesc="${_pkgdesc} (with ROCm and AVX2 CPU optimizations)"
depends+=(rocm-hip-sdk roctracer miopen hipmagma)
conflicts=(python-pytorch)
provides=(python-pytorch python-pytorch-rocm)
cd "${srcdir}/${_pkgname}-${pkgver}-opt-rocm"
_package
}