aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorbartus2018-03-11 11:40:42 +0100
committerbartus2018-03-11 11:40:42 +0100
commit60cf727d906383059f7a4886a8830d8480e0d59b (patch)
tree9ecb90987b6370fc1e9cfe9df9fe8abbf23d6eee
parentea19020d24ad6050c98fc49c5707972550001f67 (diff)
downloadaur-60cf727d906383059f7a4886a8830d8480e0d59b.tar.gz
use cmake internal SelectCudaCompyteArch
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD8
-rw-r--r--SelectCudaComputeArch.cmake.patch232
-rw-r--r--SelectCudaComputeArch.patch15
4 files changed, 22 insertions, 239 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 754df8e546dc..1317dfccdfb6 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = blender-2.8-git
pkgdesc = Development version of Blender 2.8 branch
- pkgver = 2.8_r74298.2adece9fbb6
+ pkgver = 2.8_r74406.7ecc7c46af4
pkgrel = 1
url = http://blender.org/
install = blender.install
@@ -38,7 +38,7 @@ pkgbase = blender-2.8-git
source = blender-translations.git::git://git.blender.org/blender-translations.git
source = blender-dev-tools.git::git://git.blender.org/blender-dev-tools.git
source = blender-2.8.desktop
- source = SelectCudaComputeArch.cmake.patch
+ source = SelectCudaComputeArch.patch
source = openvdb4.revert.patch
md5sums = SKIP
md5sums = SKIP
@@ -46,7 +46,7 @@ pkgbase = blender-2.8-git
md5sums = SKIP
md5sums = SKIP
md5sums = cd108dca1c77607c6a7cc45aa284ea97
- md5sums = d1ee53ea71d0617c28caba2774eaf3e0
+ md5sums = 9454ff7e994f72ead5027356e227cbd2
md5sums = 449373d2fdf2af6b357101fc10e3d573
pkgname = blender-2.8-git
diff --git a/PKGBUILD b/PKGBUILD
index e9d392fe7a7d..d4b00c3dfaa8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@
pkgname=blender-2.8-git
-pkgver=2.8_r74298.2adece9fbb6
+pkgver=2.8_r74406.7ecc7c46af4
pkgrel=1
pkgdesc="Development version of Blender 2.8 branch"
arch=('i686' 'x86_64')
@@ -27,7 +27,7 @@ source=('git://git.blender.org/blender.git#branch=blender2.8' \
'blender-translations.git::git://git.blender.org/blender-translations.git' \
'blender-dev-tools.git::git://git.blender.org/blender-dev-tools.git' \
blender-2.8.desktop \
- SelectCudaComputeArch.cmake.patch \
+ SelectCudaComputeArch.patch \
openvdb4.revert.patch)
md5sums=('SKIP'
'SKIP'
@@ -35,7 +35,7 @@ md5sums=('SKIP'
'SKIP'
'SKIP'
'cd108dca1c77607c6a7cc45aa284ea97'
- 'd1ee53ea71d0617c28caba2774eaf3e0'
+ '9454ff7e994f72ead5027356e227cbd2'
'449373d2fdf2af6b357101fc10e3d573')
# determine whether we can precompile CUDA kernels
@@ -56,7 +56,7 @@ prepare() {
git submodule update --init --recursive
git submodule foreach git checkout master
git submodule foreach git pull --rebase origin master
-# patch -Np1 -i ../SelectCudaComputeArch.cmake.patch
+ patch -Np1 -i ../SelectCudaComputeArch.patch
patch -Np1 -i ../openvdb4.revert.patch
}
diff --git a/SelectCudaComputeArch.cmake.patch b/SelectCudaComputeArch.cmake.patch
index 9e0cead49008..94139e29da66 100644
--- a/SelectCudaComputeArch.cmake.patch
+++ b/SelectCudaComputeArch.cmake.patch
@@ -1,234 +1,3 @@
-diff --git a/build_files/cmake/SelectCudaComputeArch.cmake b/build_files/cmake/SelectCudaComputeArch.cmake
-new file mode 100644
-index 00000000000..c3bf8639460
---- /dev/null
-+++ b/build_files/cmake/SelectCudaComputeArch.cmake
-@@ -0,0 +1,225 @@
-+# CMake - Cross Platform Makefile Generator
-+# Copyright 2000-2017 Kitware, Inc. and Contributors
-+# All rights reserved.
-+#
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions
-+# are met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+#
-+# * Redistributions in binary form must reproduce the above copyright
-+# notice, this list of conditions and the following disclaimer in the
-+# documentation and/or other materials provided with the distribution.
-+#
-+# * Neither the name of Kitware, Inc. nor the names of Contributors
-+# may be used to endorse or promote products derived from this
-+# software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+# Synopsis:
-+# CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures])
-+# -- Selects GPU arch flags for nvcc based on target_CUDA_architectures
-+# target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...)
-+# - "Auto" detects local machine GPU compute arch at runtime.
-+# - "Common" and "All" cover common and entire subsets of architectures
-+# ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX
-+# NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal
-+# NUM: Any number. Only those pairs are currently accepted by NVCC though:
-+# 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2
-+# Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable}
-+# Additionally, sets ${out_variable}_readable to the resulting numeric list
-+# Example:
-+# CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
-+# LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
-+#
-+# More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA
-+#
-+
-+# This list will be used for CUDA_ARCH_NAME = All option
-+set(CUDA_KNOWN_GPU_ARCHITECTURES "Fermi" "Kepler" "Maxwell")
-+
-+# This list will be used for CUDA_ARCH_NAME = Common option (enabled by default)
-+set(CUDA_COMMON_GPU_ARCHITECTURES "3.0" "3.5" "5.0")
-+
-+if (CUDA_VERSION VERSION_GREATER "6.5")
-+ list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Kepler+Tegra" "Kepler+Tesla" "Maxwell+Tegra")
-+ list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "5.2")
-+endif ()
-+
-+if (CUDA_VERSION VERSION_GREATER "7.5")
-+ list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Pascal")
-+ list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1" "6.1+PTX")
-+else()
-+ list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "5.2+PTX")
-+endif ()
-+
-+
-+
-+################################################################################################
-+# A function for automatic detection of GPUs installed (if autodetection is enabled)
-+# Usage:
-+# CUDA_DETECT_INSTALLED_GPUS(OUT_VARIABLE)
-+#
-+function(CUDA_DETECT_INSTALLED_GPUS OUT_VARIABLE)
-+ if(NOT CUDA_GPU_DETECT_OUTPUT)
-+ set(cufile ${PROJECT_BINARY_DIR}/detect_cuda_archs.cu)
-+
-+ file(WRITE ${cufile} ""
-+ "#include <cstdio>\n"
-+ "int main()\n"
-+ "{\n"
-+ " int count = 0;\n"
-+ " if (cudaSuccess != cudaGetDeviceCount(&count)) return -1;\n"
-+ " if (count == 0) return -1;\n"
-+ " for (int device = 0; device < count; ++device)\n"
-+ " {\n"
-+ " cudaDeviceProp prop;\n"
-+ " if (cudaSuccess == cudaGetDeviceProperties(&prop, device))\n"
-+ " std::printf(\"%d.%d \", prop.major, prop.minor);\n"
-+ " }\n"
-+ " return 0;\n"
-+ "}\n")
-+
-+ execute_process(COMMAND "${CUDA_NVCC_EXECUTABLE}" "--run" "${cufile}"
-+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/CMakeFiles/"
-+ RESULT_VARIABLE nvcc_res OUTPUT_VARIABLE nvcc_out
-+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
-+
-+ if(nvcc_res EQUAL 0)
-+ string(REPLACE "2.1" "2.1(2.0)" nvcc_out "${nvcc_out}")
-+ set(CUDA_GPU_DETECT_OUTPUT ${nvcc_out} CACHE INTERNAL "Returned GPU architetures from detect_gpus tool" FORCE)
-+ endif()
-+ endif()
-+
-+ if(NOT CUDA_GPU_DETECT_OUTPUT)
-+ message(STATUS "Automatic GPU detection failed. Building for common architectures.")
-+ set(${OUT_VARIABLE} ${CUDA_COMMON_GPU_ARCHITECTURES} PARENT_SCOPE)
-+ else()
-+ set(${OUT_VARIABLE} ${CUDA_GPU_DETECT_OUTPUT} PARENT_SCOPE)
-+ endif()
-+endfunction()
-+
-+
-+################################################################################################
-+# Function for selecting GPU arch flags for nvcc based on CUDA architectures from parameter list
-+# Usage:
-+# SELECT_NVCC_ARCH_FLAGS(out_variable [list of CUDA compute archs])
-+function(CUDA_SELECT_NVCC_ARCH_FLAGS out_variable)
-+ set(CUDA_ARCH_LIST "${ARGN}")
-+
-+ if("X${CUDA_ARCH_LIST}" STREQUAL "X" )
-+ set(CUDA_ARCH_LIST "Auto")
-+ endif()
-+
-+ set(cuda_arch_bin)
-+ set(cuda_arch_ptx)
-+
-+ if("${CUDA_ARCH_LIST}" STREQUAL "All")
-+ set(CUDA_ARCH_LIST ${CUDA_KNOWN_GPU_ARCHITECTURES})
-+ elseif("${CUDA_ARCH_LIST}" STREQUAL "Common")
-+ set(CUDA_ARCH_LIST ${CUDA_COMMON_GPU_ARCHITECTURES})
-+ elseif("${CUDA_ARCH_LIST}" STREQUAL "Auto")
-+ CUDA_DETECT_INSTALLED_GPUS(CUDA_ARCH_LIST)
-+ endif()
-+
-+ # Now process the list and look for names
-+ string(REGEX REPLACE "[ \t]+" ";" CUDA_ARCH_LIST "${CUDA_ARCH_LIST}")
-+ list(REMOVE_DUPLICATES CUDA_ARCH_LIST)
-+ foreach(arch_name ${CUDA_ARCH_LIST})
-+ set(arch_bin)
-+ set(add_ptx FALSE)
-+ # Check to see if we are compiling PTX
-+ if(arch_name MATCHES "(.*)\\+PTX$")
-+ set(add_ptx TRUE)
-+ set(arch_name ${CMAKE_MATCH_1})
-+ endif()
-+ if(arch_name MATCHES "^([0-9]\\.[0-9](\\([0-9]\\.[0-9]\\))?)$")
-+ set(arch_bin ${CMAKE_MATCH_1})
-+ set(arch_ptx ${arch_bin})
-+ else()
-+ # Look for it in our list of known architectures
-+ if(${arch_name} STREQUAL "Fermi")
-+ set(arch_bin 2.0 "2.1(2.0)")
-+ elseif(${arch_name} STREQUAL "Kepler+Tegra")
-+ set(arch_bin 3.2)
-+ elseif(${arch_name} STREQUAL "Kepler+Tesla")
-+ set(arch_bin 3.7)
-+ elseif(${arch_name} STREQUAL "Kepler")
-+ set(arch_bin 3.0 3.5)
-+ set(arch_ptx 3.5)
-+ elseif(${arch_name} STREQUAL "Maxwell+Tegra")
-+ set(arch_bin 5.3)
-+ elseif(${arch_name} STREQUAL "Maxwell")
-+ set(arch_bin 5.0 5.2)
-+ set(arch_ptx 5.2)
-+ elseif(${arch_name} STREQUAL "Pascal")
-+ set(arch_bin 6.0 6.1)
-+ set(arch_ptx 6.1)
-+ else()
-+ message(SEND_ERROR "Unknown CUDA Architecture Name ${arch_name} in CUDA_SELECT_NVCC_ARCH_FLAGS")
-+ endif()
-+ endif()
-+ if(NOT arch_bin)
-+ message(SEND_ERROR "arch_bin wasn't set for some reason")
-+ endif()
-+ list(APPEND cuda_arch_bin ${arch_bin})
-+ if(add_ptx)
-+ if (NOT arch_ptx)
-+ set(arch_ptx ${arch_bin})
-+ endif()
-+ list(APPEND cuda_arch_ptx ${arch_ptx})
-+ endif()
-+ endforeach()
-+
-+ # remove dots and convert to lists
-+ string(REGEX REPLACE "\\." "" cuda_arch_bin "${cuda_arch_bin}")
-+ string(REGEX REPLACE "\\." "" cuda_arch_ptx "${cuda_arch_ptx}")
-+ string(REGEX MATCHALL "[0-9()]+" cuda_arch_bin "${cuda_arch_bin}")
-+ string(REGEX MATCHALL "[0-9]+" cuda_arch_ptx "${cuda_arch_ptx}")
-+
-+ if(cuda_arch_bin)
-+ list(REMOVE_DUPLICATES cuda_arch_bin)
-+ endif()
-+ if(cuda_arch_ptx)
-+ list(REMOVE_DUPLICATES cuda_arch_ptx)
-+ endif()
-+
-+ set(nvcc_flags "")
-+ set(nvcc_archs_readable "")
-+
-+ # Tell NVCC to add binaries for the specified GPUs
-+ foreach(arch ${cuda_arch_bin})
-+ if(arch MATCHES "([0-9]+)\\(([0-9]+)\\)")
-+ # User explicitly specified ARCH for the concrete CODE
-+ list(APPEND nvcc_flags -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})
-+ list(APPEND nvcc_archs_readable sm_${CMAKE_MATCH_1})
-+ else()
-+ # User didn't explicitly specify ARCH for the concrete CODE, we assume ARCH=CODE
-+ list(APPEND nvcc_flags -gencode arch=compute_${arch},code=sm_${arch})
-+ list(APPEND nvcc_archs_readable sm_${arch})
-+ endif()
-+ endforeach()
-+
-+ # Tell NVCC to add PTX intermediate code for the specified architectures
-+ foreach(arch ${cuda_arch_ptx})
-+ list(APPEND nvcc_flags -gencode arch=compute_${arch},code=compute_${arch})
-+ list(APPEND nvcc_archs_readable compute_${arch})
-+ endforeach()
-+
-+ string(REPLACE ";" " " nvcc_archs_readable "${nvcc_archs_readable}")
-+ set(${out_variable} ${nvcc_flags} PARENT_SCOPE)
-+ set(${out_variable}_readable ${nvcc_archs_readable} PARENT_SCOPE)
-+endfunction()
diff --git a/intern/cycles/cmake/external_libs.cmake b/intern/cycles/cmake/external_libs.cmake
index df88b91f5ac..4b3335122b2 100644
--- a/intern/cycles/cmake/external_libs.cmake
@@ -238,7 +7,6 @@ index df88b91f5ac..4b3335122b2 100644
if(CUDA_FOUND)
message(STATUS "CUDA nvcc = ${CUDA_NVCC_EXECUTABLE}")
+
-+ include(${CMAKE_SOURCE_DIR}/build_files/cmake/SelectCudaComputeArch.cmake)
+ CUDA_SELECT_NVCC_ARCH_FLAGS(CUDA_ARCH_FLAGS Auto)
+ set(CYCLES_CUDA_BINARIES_ARCH "${CUDA_ARCH_FLAGS_readable}")
+ message(STATUS "Enabling CUDA support (version: ${CUDA_VERSION_STRING},"
diff --git a/SelectCudaComputeArch.patch b/SelectCudaComputeArch.patch
new file mode 100644
index 000000000000..540d50f0bcc3
--- /dev/null
+++ b/SelectCudaComputeArch.patch
@@ -0,0 +1,15 @@
+diff --git a/intern/cycles/cmake/external_libs.cmake b/intern/cycles/cmake/external_libs.cmake
+index 8d04025e6fd..a6949c99f60 100644
+--- a/intern/cycles/cmake/external_libs.cmake
++++ b/intern/cycles/cmake/external_libs.cmake
+@@ -41,6 +41,10 @@ if(WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD)
+ find_package(CUDA) # Try to auto locate CUDA toolkit
+ if(CUDA_FOUND)
+ message(STATUS "CUDA nvcc = ${CUDA_NVCC_EXECUTABLE}")
++ CUDA_SELECT_NVCC_ARCH_FLAGS(CUDA_ARCH_FLAGS Auto)
++ set(CYCLES_CUDA_BINARIES_ARCH "${CUDA_ARCH_FLAGS_readable}")
++ message(STATUS "Enabling CUDA support (version: ${CUDA_VERSION_STRING},"
++ " archs: ${CUDA_ARCH_FLAGS_readable})")
+ else()
+ message(STATUS "CUDA compiler not found, disabling WITH_CYCLES_CUDA_BINARIES")
+ set(WITH_CYCLES_CUDA_BINARIES OFF)