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
|
# Maintainer: Pi-Yueh Chuang <pychuang@pm.me>
pkgname=python-pytorch-cuda-kepler
_pkgname="pytorch"
pkgver=1.6.0
_pkgver=1.6.0
pkgrel=1
pkgdesc="PyTorch with Kepler GPU (e.g., K20, K40, K80, etc.) support (only)."
arch=('x86_64')
url="https://pytorch.org"
license=('BSD')
depends=(
'google-glog' 'gflags' 'opencv' 'openmp' 'nccl' 'pybind11' 'python'
'python-yaml' 'libuv' 'python-numpy' 'protobuf' 'ffmpeg' 'python-future'
'qt5-base' 'onednn' 'intel-mkl'
)
makedepends=(
'python' 'python-setuptools' 'python-yaml' 'python-numpy' 'cmake' 'cuda'
'cudnn' 'git' 'magma' 'ninja' 'pkgconfig' 'doxygen'
)
source=(
"${_pkgname}-${pkgver}::git+https://github.com/pytorch/pytorch.git#tag=v$_pkgver"
"https://github.com/archlinux/svntogit-community/raw/packages/python-pytorch/trunk/fix_include_system.patch"
"https://github.com/archlinux/svntogit-community/raw/packages/python-pytorch/trunk/use-system-libuv.patch"
"https://github.com/archlinux/svntogit-community/raw/packages/python-pytorch/trunk/use-system-libuv2.patch"
"https://github.com/archlinux/svntogit-community/raw/packages/python-pytorch/trunk/nccl_version.patch"
"https://github.com/archlinux/svntogit-community/raw/packages/python-pytorch/trunk/disable_non_x86_64.patch"
)
sha256sums=(
'SKIP'
'147bdaeac8ec46ea46382e6146878bd8f8d51e05d5bd6f930dfd8e2b520859b9'
'6f3b7a87172011de810bf1ab581245b4463ef86e5cd09bec63aeffa372e26646'
'7b65c3b209fc39f92ba58a58be6d3da40799f1922910b1171ccd9209eda1f9eb'
'1a276bd827a0c76dab908cbc6605fa4c9fc2cc2b9431b6578a41133ae27dba2b'
'd3ef8491718ed7e814fe63e81df2f49862fffbea891d2babbcb464796a1bd680'
)
conflicts=(python-pytorch)
provides=(python-pytorch python-pytorch-cuda)
prepare() {
cd "${_pkgname}-${pkgver}"
git submodule update --init --recursive
# 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
patch -Np1 -i "${srcdir}"/use-system-libuv2.patch -d third_party/tensorpipe
# FindNCCL patch to export correct nccl version
patch -Np1 -i "${srcdir}"/nccl_version.patch
# remove local nccl
rm -rf third_party/nccl/nccl
cd ..
export VERBOSE=1
export PYTORCH_BUILD_VERSION="${pkgver}"
export PYTORCH_BUILD_NUMBER=1
export USE_MKLDNN=ON
export BUILD_CUSTOM_PROTOBUF=OFF
export USE_FFMPEG=ON
export USE_GFLAGS=ON
export USE_GLOG=ON
export BUILD_BINARY=ON
export USE_OPENCV=ON
export USE_SYSTEM_NCCL=ON
export NCCL_VERSION=$(pkg-config nccl --modversion)
export NCCL_VER_CODE=$(sed -n 's/^#define NCCL_VERSION_CODE\s*\(.*\).*/\1/p' /usr/include/nccl.h)
export CUDAHOSTCXX=g++-9
export CUDA_HOME=/opt/cuda
export USE_CUDA=1
export USE_CUDNN=1
export CUDNN_LIB_DIR=/usr/lib
export CUDNN_INCLUDE_DIR=/usr/include
export TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
export TORCH_CUDA_ARCH_LIST="3.5;3.7;"
}
build() {
cd "${srcdir}/${_pkgname}-${pkgver}"
patch -Np1 -i "${srcdir}/disable_non_x86_64.patch"
echo "add_definitions(-march=x86-64)" >> cmake/MiscCheck.cmake
python setup.py build
}
package() {
cd "${srcdir}/${_pkgname}-${pkgver}"
# 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/python3.8/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"
mv "${pkgdir}/${pytorchpath}/lib"/*.so* "${pkgdir}/usr/lib/"
# clean up duplicates
# TODO: move towards direct shared library dependecy of:
# c10, caffe2, libcpuinfo, CUDA RT, gloo, GTest, Intel MKL,
# NVRTC, 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 -type f -name "*.so*" -print0 | while read -rd $'\0' _lib; do
ln -s ${_lib#"$pkgdir"} "${pkgdir}/${pytorchpath}/lib/"
done
}
# vim:set ts=2 sw=2 et:
|