Date: Thursday, November 3, 2022 @ 22:43:56 Author: kgizdov Revision: 1341752
initial release Modified: torchvision/trunk/PKGBUILD ----------+ PKGBUILD | 78 +++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 33 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2022-11-03 22:32:44 UTC (rev 1341751) +++ PKGBUILD 2022-11-03 22:43:56 UTC (rev 1341752) @@ -12,13 +12,14 @@ # see also https://github.com/pytorch/vision/blob/main/torchvision/csrc/io/decoder/gpu/README.rst # -_CUDA_ARCH_LIST="5.2;5.3;6.0;6.1;6.2;7.0;7.2;7.5;8.0;8.6;8.7;8.7+PTX" -_CUDA_ARCH_LIST_CMAKE="52;53;60;61;62;70;72;75;80;86;87;87-virtual" +# update when available in pytorch +_CUDA_ARCH_LIST="5.2;5.3;6.0;6.1;6.2;7.0;7.2;7.5;8.0;8.6;8.9;8.9+PTX" #;9.0;9.0+PTX" +_CUDA_ARCH_LIST_CMAKE="52-real;53-real;60-real;61-real;62-real;70-real;72-real;75-real;80-real;86-real;89-real;89-virtual" #;90-real;90-virtual" _pkgname=vision pkgbase='torchvision' pkgname=('torchvision' 'torchvision-cuda' 'python-torchvision' 'python-torchvision-cuda') -pkgver=0.13.1 -pkgrel=3 +pkgver=0.14.0 +pkgrel=1 pkgdesc='Datasets, transforms, and models specific to computer vision' arch=('x86_64') url='https://github.com/pytorch/vision' @@ -31,15 +32,14 @@ ) optdepends=( 'ffmpeg4.4: video reader backend (the recommended one with better performance)' - 'python-av: video reader backend (the default one)' 'python-pycocotools: support for MS-COCO dataset' ) makedepends=( cmake + ninja cuda ffmpeg4.4 - python-av - python-pytorch-cuda + python-pytorch-opt-cuda python-setuptools qt5-base nvidia-utils @@ -48,24 +48,29 @@ "https://github.com/NVIDIA/DALI/raw/main/dali/operators/reader/loader/video/nvdecode/cuviddec.h" "https://github.com/NVIDIA/DALI/raw/main/dali/operators/reader/loader/video/nvdecode/nvcuvid.h" ) -b2sums=('7c44458177f18866b133d8f47fb6b8e1b4f6ecc6a757b46cafe2ae0bbebf582f2b5b64cc208a4c3d6a5e59e740177ed9457c1be36a58b423ae70b5d67a5973e9' +b2sums=('6ddf5c9bdd11e5f496d994ad69426430eab051a5a7eb4805abae9b17509e3d524b6197bd5ad8966a49d2260ad1c93994a52f09cf5e4f31d85625ed9c990d07e2' 'e0e3637aae332c9c9ba0546597685b0368cb569f6d5a0ce2e792e1c204dc787b88d8f149fd0a3fba12527fa3048e41ba8605c3215df5062e6988f22fc5caabc8' '7db5d621f3099bc5455f1faeb7f4c3575a9cf70153ba56a6efc6d67d0ef2ac5438f6e117e621c5ef35c239eb3bce3fe17ce160e6b7765e8203d67a7299085429') prepare() { + cd "${srcdir}/${_pkgname}-${pkgver}" + # fix building with ffmpeg4.4 by manually setup include and lib dir # and remove other codes to find ffmpeg exe, as ffmpeg4.4 are only headers and libs without ffmpeg cmd - sed -i '351,358d' "${srcdir}/${_pkgname}-${pkgver}/setup.py" - sed -i 's#ffmpeg_include_dir = os.path.join(ffmpeg_root, "include")#ffmpeg_include_dir = "/usr/include/ffmpeg4.4"#' "${srcdir}/${_pkgname}-${pkgver}/setup.py" - sed -i 's#ffmpeg_library_dir = os.path.join(ffmpeg_root, "lib")#ffmpeg_library_dir = "/usr/lib/ffmpeg4.4"#' "${srcdir}/${_pkgname}-${pkgver}/setup.py" - sed -i 's#has_ffmpeg = ffmpeg_exe is not None#has_ffmpeg = True#' "${srcdir}/${_pkgname}-${pkgver}/setup.py" - sed -i '/ffmpeg_exe/d' "${srcdir}/${_pkgname}-${pkgver}/setup.py" - sed -i '/ffmpeg_bin/d' "${srcdir}/${_pkgname}-${pkgver}/setup.py" - sed -i '/ffmpeg_root/d' "${srcdir}/${_pkgname}-${pkgver}/setup.py" + sed -e 's#ffmpeg_include_dir = os.path.join(ffmpeg_root, "include")#ffmpeg_include_dir = "/usr/include/ffmpeg4.4"#' \ + -e 's#ffmpeg_library_dir = os.path.join(ffmpeg_root, "lib")#ffmpeg_library_dir = "/usr/lib/ffmpeg4.4"#' \ + -e 's#has_ffmpeg = ffmpeg_exe is not None#has_ffmpeg = True#' \ + -e '/ffmpeg_exe/d' \ + -e '/ffmpeg_bin/d' \ + -e '/ffmpeg_root/d' \ + -i setup.py cp -a "${srcdir}/${_pkgname}-${pkgver}" "${srcdir}/${_pkgname}-cuda-${pkgver}" - cp -a "${srcdir}/${_pkgname}-${pkgver}" "${srcdir}/py-${_pkgname}-${pkgver}" - cp -a "${srcdir}/${_pkgname}-${pkgver}" "${srcdir}/py-${_pkgname}-cuda-${pkgver}" + cp -a "${srcdir}/${_pkgname}-${pkgver}" "${srcdir}/python-${_pkgname}-${pkgver}" + # need this to disable CUDA + cd "${srcdir}/python-${_pkgname}-${pkgver}" + sed -e 's#torch.cuda.is_available()#False#' -i setup.py + cp -a "${srcdir}/${_pkgname}-${pkgver}" "${srcdir}/python-${_pkgname}-cuda-${pkgver}" } build() { @@ -81,6 +86,9 @@ -DCMAKE_CXX_FLAGS="${CXXFLAGS} -O3" \ -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ -DWITH_CUDA=OFF + make + + # build torchvision-cuda cd "${srcdir}/${_pkgname}-cuda-${pkgver}" rm -rf build @@ -96,13 +104,19 @@ -DTORCH_CUDA_ARCH_LIST="${_CUDA_ARCH_LIST}" \ -DCUDA_ARCH_LIST="${_CUDA_ARCH_LIST}" \ -DCMAKE_CUDA_ARCHITECTURES="${_CUDA_ARCH_LIST_CMAKE}" + make + # build python-torchvision - cd "${srcdir}/py-${_pkgname}-${pkgver}" + cd "${srcdir}/python-${_pkgname}-${pkgver}" + WITH_CUDA=0 \ + FORCE_CUDA=0 \ + TORCHVISION_USE_NVJPEG=0 \ python setup.py build + # build python-torchvision-cuda - cd "${srcdir}/py-${_pkgname}-cuda-${pkgver}" + cd "${srcdir}/python-${_pkgname}-cuda-${pkgver}" TORCHVISION_INCLUDE=${srcdir} \ TORCHVISION_LIBRARY=/usr/lib \ FORCE_CUDA=1 \ @@ -114,19 +128,19 @@ local python_version=$(python -c 'import sys; print("".join(map(str, sys.version_info[:2])))') # check if VideoReader is build # VideoReader depends on ffmpeg - cd "${srcdir}/py-${_pkgname}-${pkgver}" + cd "${srcdir}/python-${_pkgname}-${pkgver}" PYTHONPATH="${PWD}/build/lib.linux-${CARCH}-cpython-${python_version}" \ python -c "from torchvision.io import VideoReader" - cd "${srcdir}/py-${_pkgname}-cuda-${pkgver}" + cd "${srcdir}/python-${_pkgname}-cuda-${pkgver}" PYTHONPATH="${PWD}/build/lib.linux-${CARCH}-cpython-${python_version}" \ python -c "from torchvision.io import VideoReader" } package_python-torchvision() { - depends+=(python-pytorch) + depends+=('python-pytorch') - cd "${srcdir}/py-${_pkgname}-${pkgver}" + cd "${srcdir}/python-${_pkgname}-${pkgver}" python setup.py install --root="${pkgdir}" --optimize=1 --skip-build install -Dm644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}" } @@ -133,11 +147,11 @@ package_python-torchvision-cuda() { pkgdesc='Datasets, transforms, and models specific to computer vision (with GPU support)' - depends+=(python-pytorch-cuda) - provides+=(python-torchvision=${pkgver}) - conflicts+=(python-torchvision=${pkgver}) + depends+=('python-pytorch-cuda') + provides+=('python-torchvision') + conflicts+=('python-torchvision') - cd "${srcdir}/py${_pkgname}-cuda-${pkgver}" + cd "${srcdir}/python-${_pkgname}-cuda-${pkgver}" TORCHVISION_INCLUDE=${srcdir} \ TORCHVISION_LIBRARY=/usr/lib \ FORCE_CUDA=1 \ @@ -148,9 +162,7 @@ package_torchvision() { pkgdesc='Datasets, transforms, and models specific to computer vision (C++ library only)' - depends+=(python-pytorch-cuda) - provides+=(torchvision=${pkgver}) - conflicts+=(torchvision=${pkgver}) + depends+=('python-pytorch-cuda') cd "${srcdir}/${_pkgname}-${pkgver}" make -C build install DESTDIR="$pkgdir" @@ -158,9 +170,9 @@ } package_torchvision-cuda() { pkgdesc='Datasets, transforms, and models specific to computer vision (C++ library only with GPU support)' - depends+=(python-pytorch-cuda) - provides+=(torchvision=${pkgver}) - conflicts+=(torchvision=${pkgver}) + depends+=('python-pytorch-cuda') + provides+=('torchvision') + conflicts+=('torchvision') cd "${srcdir}/${_pkgname}-cuda-${pkgver}" make -C build install DESTDIR="$pkgdir"
