[arch-commits] Commit in python-pytorch/repos (6 files)

Sven-Hendrik Haase svenstaro at archlinux.org
Mon Jul 13 05:52:24 UTC 2020


    Date: Monday, July 13, 2020 @ 05:52:23
  Author: svenstaro
Revision: 663401

archrelease: copy trunk to community-testing-x86_64

Added:
  python-pytorch/repos/community-testing-x86_64/
  python-pytorch/repos/community-testing-x86_64/PKGBUILD
    (from rev 663400, python-pytorch/trunk/PKGBUILD)
  python-pytorch/repos/community-testing-x86_64/fix_include_system.patch
    (from rev 663400, python-pytorch/trunk/fix_include_system.patch)
  python-pytorch/repos/community-testing-x86_64/nccl_version.patch
    (from rev 663400, python-pytorch/trunk/nccl_version.patch)
  python-pytorch/repos/community-testing-x86_64/use-system-libuv.patch
    (from rev 663400, python-pytorch/trunk/use-system-libuv.patch)
  python-pytorch/repos/community-testing-x86_64/use-system-libuv2.patch
    (from rev 663400, python-pytorch/trunk/use-system-libuv2.patch)

--------------------------+
 PKGBUILD                 |  182 +++++++++++++++++++++++++++++++++++++++++++++
 fix_include_system.patch |   11 ++
 nccl_version.patch       |   46 +++++++++++
 use-system-libuv.patch   |   13 +++
 use-system-libuv2.patch  |   13 +++
 5 files changed, 265 insertions(+)

Copied: python-pytorch/repos/community-testing-x86_64/PKGBUILD (from rev 663400, python-pytorch/trunk/PKGBUILD)
===================================================================
--- community-testing-x86_64/PKGBUILD	                        (rev 0)
+++ community-testing-x86_64/PKGBUILD	2020-07-13 05:52:23 UTC (rev 663401)
@@ -0,0 +1,182 @@
+# Maintainer: Sven-Hendrik Haase <svenstaro at gmail.com>
+# Contributor: Stephen Zhang <zsrkmyn at gmail dot com>
+
+pkgbase=python-pytorch
+pkgname=("python-pytorch" "python-pytorch-opt" "python-pytorch-cuda" "python-pytorch-opt-cuda")
+_pkgname="pytorch"
+pkgver=1.6.0rc3
+_pkgver=1.6.0-rc3
+pkgrel=1
+pkgdesc="Tensors and Dynamic neural networks in Python with strong GPU acceleration"
+arch=('x86_64')
+url="https://pytorch.org"
+license=('BSD')
+depends=('google-glog' 'gflags' 'opencv' 'openmp' 'nccl' 'pybind11' 'python' 'python-yaml'
+         '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"
+        fix_include_system.patch
+        use-system-libuv.patch
+        use-system-libuv2.patch
+        nccl_version.patch)
+sha256sums=('SKIP'
+            '147bdaeac8ec46ea46382e6146878bd8f8d51e05d5bd6f930dfd8e2b520859b9'
+            '6f3b7a87172011de810bf1ab581245b4463ef86e5cd09bec63aeffa372e26646'
+            '7b65c3b209fc39f92ba58a58be6d3da40799f1922910b1171ccd9209eda1f9eb'
+            '1a276bd827a0c76dab908cbc6605fa4c9fc2cc2b9431b6578a41133ae27dba2b')
+
+get_pyver () {
+  python -c 'import sys; print(str(sys.version_info[0]) + "." + str(sys.version_info[1]))'
+}
+
+prepare() {
+  cd "${_pkgname}-${pkgver}"
+
+  # This is the lazy way since pytorch has sooo many submodules and they keep
+  # changing them around but we've run into more problems so far doing it the
+  # manual than the lazy way. This lazy way (not explicitly specifying all
+  # submodules) will make building inefficient but for now I'll take it.
+  # It will result in the same package, don't worry.
+  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 ..
+
+  cp -a "${_pkgname}-${pkgver}" "${_pkgname}-${pkgver}-opt"
+  cp -a "${_pkgname}-${pkgver}" "${_pkgname}-${pkgver}-cuda"
+  cp -a "${_pkgname}-${pkgver}" "${_pkgname}-${pkgver}-opt-cuda"
+
+  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 USE_MKLDNN=ON
+  # export BUILD_CUSTOM_PROTOBUF=OFF
+  # export BUILD_SHARED_LIBS=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 CUDNN_LIB_DIR=/usr/lib
+  export CUDNN_INCLUDE_DIR=/usr/include
+  export TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
+  export TORCH_CUDA_ARCH_LIST="5.2;5.3;6.0;6.0+PTX;6.1;6.1+PTX;6.2;6.2+PTX;7.0;7.0+PTX;7.2;7.2+PTX;7.5;7.5+PTX;8.0;8.0+PTX;"
+}
+
+build() {
+  echo "Building without cuda and without non-x86-64 optimizations"
+  export USE_CUDA=0
+  export USE_CUDNN=0
+  cd "${srcdir}/${_pkgname}-${pkgver}"
+  python setup.py build
+
+
+  echo "Building without cuda and with non-x86-64 optimizations"
+  export USE_CUDA=0
+  export USE_CUDNN=0
+  cd "${srcdir}/${_pkgname}-${pkgver}-opt"
+  echo "add_definitions(-march=haswell)" >> cmake/MiscCheck.cmake
+  python setup.py build
+
+
+  echo "Building with cuda and without non-x86-64 optimizations"
+  export USE_CUDA=1
+  export USE_CUDNN=1
+  cd "${srcdir}/${_pkgname}-${pkgver}-cuda"
+  python setup.py build
+
+
+  echo "Building with cuda and with non-x86-64 optimizations"
+  export USE_CUDA=1
+  export USE_CUDNN=1
+  cd "${srcdir}/${_pkgname}-${pkgver}-opt-cuda"
+  echo "add_definitions(-march=haswell)" >> cmake/MiscCheck.cmake
+  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"
+  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
+}
+
+package_python-pytorch() {
+  cd "${srcdir}/${_pkgname}-${pkgver}"
+  _package
+}
+
+package_python-pytorch-opt() {
+  pkgdesc="Tensors and Dynamic neural networks in Python with strong GPU acceleration (with CPU optimizations)"
+  conflicts=(python-pytorch)
+  provides=(python-pytorch)
+
+  cd "${srcdir}/${_pkgname}-${pkgver}-opt"
+  _package
+}
+
+package_python-pytorch-cuda() {
+  pkgdesc="Tensors and Dynamic neural networks in Python with strong GPU acceleration (with CUDA)"
+  depends+=(cuda cudnn magma)
+  conflicts=(python-pytorch)
+  provides=(python-pytorch)
+
+  cd "${srcdir}/${_pkgname}-${pkgver}-cuda"
+  _package
+}
+
+package_python-pytorch-opt-cuda() {
+  pkgdesc="Tensors and Dynamic neural networks in Python with strong GPU acceleration (with CUDA and CPU optimizations)"
+  depends+=(cuda cudnn magma)
+  conflicts=(python-pytorch)
+  provides=(python-pytorch python-pytorch-cuda)
+
+  cd "${srcdir}/${_pkgname}-${pkgver}-opt-cuda"
+  _package
+}
+
+# vim:set ts=2 sw=2 et:

Copied: python-pytorch/repos/community-testing-x86_64/fix_include_system.patch (from rev 663400, python-pytorch/trunk/fix_include_system.patch)
===================================================================
--- community-testing-x86_64/fix_include_system.patch	                        (rev 0)
+++ community-testing-x86_64/fix_include_system.patch	2020-07-13 05:52:23 UTC (rev 663401)
@@ -0,0 +1,11 @@
+--- a/utils/cpp_extension.py	2019-12-29 12:59:36.083692770 -0300
++++ b/utils/cpp_extension.py	2020-01-08 09:52:16.435316701 -0300
+@@ -1098,7 +1098,7 @@
+     if BUILD_NAMEDTENSOR:
+         common_cflags.append('-DBUILD_NAMEDTENSOR')
+     common_cflags += ['-I{}'.format(include) for include in user_includes]
+-    common_cflags += ['-isystem {}'.format(include) for include in system_includes]
++    common_cflags += ['-I{}'.format(include) for include in system_includes]
+ 
+     common_cflags += ['-D_GLIBCXX_USE_CXX11_ABI=' + str(int(torch._C._GLIBCXX_USE_CXX11_ABI))]
+

Copied: python-pytorch/repos/community-testing-x86_64/nccl_version.patch (from rev 663400, python-pytorch/trunk/nccl_version.patch)
===================================================================
--- community-testing-x86_64/nccl_version.patch	                        (rev 0)
+++ community-testing-x86_64/nccl_version.patch	2020-07-13 05:52:23 UTC (rev 663401)
@@ -0,0 +1,46 @@
+diff --git a/cmake/Modules/FindNCCL.cmake b/cmake/Modules/FindNCCL.cmake
+index 5bd3ccd606..f92eda98f5 100644
+--- a/cmake/Modules/FindNCCL.cmake
++++ b/cmake/Modules/FindNCCL.cmake
+@@ -48,37 +48,39 @@ find_library(NCCL_LIBRARIES
+ 
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(NCCL DEFAULT_MSG NCCL_INCLUDE_DIRS NCCL_LIBRARIES)
+ 
+ if(NCCL_FOUND)  # obtaining NCCL version and some sanity checks
+   set (NCCL_HEADER_FILE "${NCCL_INCLUDE_DIRS}/nccl.h")
+   message (STATUS "Determining NCCL version from ${NCCL_HEADER_FILE}...")
+   set (OLD_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
+   list (APPEND CMAKE_REQUIRED_INCLUDES ${NCCL_INCLUDE_DIRS})
+   include(CheckCXXSymbolExists)
+-  check_cxx_symbol_exists(NCCL_VERSION_CODE nccl.h NCCL_VERSION_DEFINED)
++  set(NCCL_VERSION_CODE $ENV{NCCL_VER_CODE})
++  set(NCCL_VERSION_DEFINED $ENV{NCCL_VER_CODE})
+ 
+-  if (NCCL_VERSION_DEFINED)
++  if (DEFINED NCCL_VERSION_DEFINED)
+     set(file "${PROJECT_BINARY_DIR}/detect_nccl_version.cc")
+     file(WRITE ${file} "
+       #include <iostream>
+       #include <nccl.h>
+       int main()
+       {
+         std::cout << NCCL_MAJOR << '.' << NCCL_MINOR << '.' << NCCL_PATCH << std::endl;
+ 
+         int x;
+         ncclGetVersion(&x);
+         return x == NCCL_VERSION_CODE;
+       }
+ ")
+     try_run(NCCL_VERSION_MATCHED compile_result ${PROJECT_BINARY_DIR} ${file}
++          CMAKE_FLAGS -DINCLUDE_DIRECTORIES=/opt/cuda/include
+           RUN_OUTPUT_VARIABLE NCCL_VERSION_FROM_HEADER
+           LINK_LIBRARIES ${NCCL_LIBRARIES})
+     if (NOT NCCL_VERSION_MATCHED)
+       message(FATAL_ERROR "Found NCCL header version and library version do not match! \
+ (include: ${NCCL_INCLUDE_DIRS}, library: ${NCCL_LIBRARIES}) Please set NCCL_INCLUDE_DIR and NCCL_LIB_DIR manually.")
+     endif()
+     message(STATUS "NCCL version: ${NCCL_VERSION_FROM_HEADER}")
+   else()
+     message(STATUS "NCCL version < 2.3.5-5")
+   endif ()

Copied: python-pytorch/repos/community-testing-x86_64/use-system-libuv.patch (from rev 663400, python-pytorch/trunk/use-system-libuv.patch)
===================================================================
--- community-testing-x86_64/use-system-libuv.patch	                        (rev 0)
+++ community-testing-x86_64/use-system-libuv.patch	2020-07-13 05:52:23 UTC (rev 663401)
@@ -0,0 +1,13 @@
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index b498be17e1..69e5c9f187 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -1312,7 +1312,7 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+     set(__BUILD_TESTING ${BUILD_TESTING})
+     set(BUILD_TESTING OFF)
+     set(TP_BUILD_PYTHON OFF)
+-    set(TP_BUILD_LIBUV ON)
++    set(TP_BUILD_LIBUV OFF)
+ 
+     add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 

Copied: python-pytorch/repos/community-testing-x86_64/use-system-libuv2.patch (from rev 663400, python-pytorch/trunk/use-system-libuv2.patch)
===================================================================
--- community-testing-x86_64/use-system-libuv2.patch	                        (rev 0)
+++ community-testing-x86_64/use-system-libuv2.patch	2020-07-13 05:52:23 UTC (rev 663401)
@@ -0,0 +1,13 @@
+diff --git a/cmake/pytorch.cmake b/cmake/pytorch.cmake
+index e4d6b9c..48e0669 100644
+--- a/cmake/pytorch.cmake
++++ b/cmake/pytorch.cmake
+@@ -138,7 +138,7 @@ endif()
+ 
+ add_library(tensorpipe ${TENSORPIPE_SRC})
+ 
+-set(TP_BUILD_LIBUV ON)
++set(TP_BUILD_LIBUV OFF)
+ find_package(uv REQUIRED)
+ target_link_libraries(tensorpipe PRIVATE uv::uv)
+ 


More information about the arch-commits mailing list