Merge branch 'blender2.7'
This commit is contained in:
@@ -116,23 +116,6 @@ if 'cmake' in builder:
|
|||||||
cmake_extra_options.extend(["-DCMAKE_C_COMPILER=/usr/bin/gcc-7",
|
cmake_extra_options.extend(["-DCMAKE_C_COMPILER=/usr/bin/gcc-7",
|
||||||
"-DCMAKE_CXX_COMPILER=/usr/bin/g++-7"])
|
"-DCMAKE_CXX_COMPILER=/usr/bin/g++-7"])
|
||||||
|
|
||||||
# Workaround to build only sm_7x kernels with CUDA 10, until
|
|
||||||
# older kernels work well with this version.
|
|
||||||
if builder.startswith('win'):
|
|
||||||
cmake_extra_options.append('-DCUDA_VERSION=9.1')
|
|
||||||
cmake_extra_options.append('-DCUDA_TOOLKIT_INCLUDE:PATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.1/include')
|
|
||||||
cmake_extra_options.append('-DCUDA_TOOLKIT_ROOT_DIR:PATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.1')
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC_EXECUTABLE:FILEPATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.1/bin/nvcc.exe')
|
|
||||||
cmake_extra_options.append('-DCUDA10_NVCC_EXECUTABLE:FILEPATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/bin/nvcc.exe')
|
|
||||||
cmake_extra_options.append('-DCUDA10_TOOLKIT_ROOT_DIR:PATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0')
|
|
||||||
elif builder.startswith('linux'):
|
|
||||||
cmake_extra_options.append('-DCUDA_VERSION=9.1')
|
|
||||||
cmake_extra_options.append('-DCUDA_TOOLKIT_INCLDUE:PATH=/usr/local/cuda-9.1/include')
|
|
||||||
cmake_extra_options.append('-DCUDA_TOOLKIT_ROOT_DIR:PATH=/usr/local/cuda-9.1')
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC_EXECUTABLE:FILEPATH=/usr/local/cuda-9.1/bin/nvcc')
|
|
||||||
cmake_extra_options.append('-DCUDA10_NVCC_EXECUTABLE:FILEPATH=/usr/local/cuda-10.0/bin/nvcc')
|
|
||||||
cmake_extra_options.append('-DCUDA10_TOOLKIT_ROOT_DIR:PATH=/usr/local/cuda-10.0')
|
|
||||||
|
|
||||||
cmake_options.append("-C" + os.path.join(blender_dir, cmake_config_file))
|
cmake_options.append("-C" + os.path.join(blender_dir, cmake_config_file))
|
||||||
|
|
||||||
# Prepare CMake options needed to configure cuda binaries compilation, 64bit only.
|
# Prepare CMake options needed to configure cuda binaries compilation, 64bit only.
|
||||||
|
@@ -52,6 +52,7 @@ set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
|
|||||||
|
|
||||||
set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
|
set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CYCLES_CUDA_BINARIES ON CACHE BOOL "" FORCE)
|
set(WITH_CYCLES_CUDA_BINARIES ON CACHE BOOL "" FORCE)
|
||||||
|
set(WITH_CYCLES_CUBIN_COMPILER OFF CACHE BOOL "" FORCE)
|
||||||
set(CYCLES_CUDA_BINARIES_ARCH sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61;sm_70;sm_75 CACHE STRING "" FORCE)
|
set(CYCLES_CUDA_BINARIES_ARCH sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61;sm_70;sm_75 CACHE STRING "" FORCE)
|
||||||
|
|
||||||
# platform dependent options
|
# platform dependent options
|
||||||
|
@@ -301,6 +301,8 @@ if(WITH_CYCLES_CUDA_BINARIES AND (NOT WITH_CYCLES_CUBIN_COMPILER))
|
|||||||
set(MAX_MSVC 1911)
|
set(MAX_MSVC 1911)
|
||||||
elseif(${CUDA_VERSION} EQUAL "10.0")
|
elseif(${CUDA_VERSION} EQUAL "10.0")
|
||||||
set(MAX_MSVC 1999)
|
set(MAX_MSVC 1999)
|
||||||
|
elseif(${CUDA_VERSION} EQUAL "10.1")
|
||||||
|
set(MAX_MSVC 1999)
|
||||||
endif()
|
endif()
|
||||||
if(NOT MSVC_VERSION LESS ${MAX_MSVC} OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
if(NOT MSVC_VERSION LESS ${MAX_MSVC} OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
message(STATUS "nvcc not supported for this compiler version, using cycles_cubin_cc instead.")
|
message(STATUS "nvcc not supported for this compiler version, using cycles_cubin_cc instead.")
|
||||||
|
@@ -1453,10 +1453,11 @@ class CyclesPreferences(bpy.types.AddonPreferences):
|
|||||||
# Update name in case it changed
|
# Update name in case it changed
|
||||||
entry.name = device[0]
|
entry.name = device[0]
|
||||||
|
|
||||||
def get_devices(self):
|
# Gets all devices types by default.
|
||||||
|
def get_devices(self, compute_device_type=''):
|
||||||
import _cycles
|
import _cycles
|
||||||
# Layout of the device tuples: (Name, Type, Persistent ID)
|
# Layout of the device tuples: (Name, Type, Persistent ID)
|
||||||
device_list = _cycles.available_devices(self.compute_device_type)
|
device_list = _cycles.available_devices(compute_device_type)
|
||||||
# Make sure device entries are up to date and not referenced before
|
# Make sure device entries are up to date and not referenced before
|
||||||
# we know we don't add new devices. This way we guarantee to not
|
# we know we don't add new devices. This way we guarantee to not
|
||||||
# hold pointers to a resized array.
|
# hold pointers to a resized array.
|
||||||
@@ -1513,7 +1514,7 @@ class CyclesPreferences(bpy.types.AddonPreferences):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(self, "compute_device_type", expand=True)
|
row.prop(self, "compute_device_type", expand=True)
|
||||||
|
|
||||||
cuda_devices, opencl_devices = self.get_devices()
|
cuda_devices, opencl_devices = self.get_devices(self.compute_device_type)
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
if self.compute_device_type == 'CUDA':
|
if self.compute_device_type == 'CUDA':
|
||||||
self._draw_devices(row, 'CUDA', cuda_devices)
|
self._draw_devices(row, 'CUDA', cuda_devices)
|
||||||
|
@@ -253,7 +253,7 @@ def do_versions(self):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# Init device list for UI
|
# Init device list for UI
|
||||||
prop.get_devices()
|
prop.get_devices(prop.compute_device_type)
|
||||||
|
|
||||||
# We don't modify startup file because it assumes to
|
# We don't modify startup file because it assumes to
|
||||||
# have all the default values only.
|
# have all the default values only.
|
||||||
|
@@ -400,9 +400,9 @@ public:
|
|||||||
major, minor);
|
major, minor);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(cuda_version != 80) {
|
else if(cuda_version != 101) {
|
||||||
printf("CUDA version %d.%d detected, build may succeed but only "
|
printf("CUDA version %d.%d detected, build may succeed but only "
|
||||||
"CUDA 8.0 is officially supported.\n",
|
"CUDA 10.1 is officially supported.\n",
|
||||||
major, minor);
|
major, minor);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -346,11 +346,11 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
set(CUDA_VERSION "${CUDA_VERSION_MAJOR}${CUDA_VERSION_MINOR}")
|
set(CUDA_VERSION "${CUDA_VERSION_MAJOR}${CUDA_VERSION_MINOR}")
|
||||||
|
|
||||||
# warn for other versions
|
# warn for other versions
|
||||||
if(CUDA_VERSION MATCHES "90" OR CUDA_VERSION MATCHES "91" OR CUDA_VERSION MATCHES "100")
|
if(CUDA_VERSION MATCHES "101")
|
||||||
else()
|
else()
|
||||||
message(WARNING
|
message(WARNING
|
||||||
"CUDA version ${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR} detected, "
|
"CUDA version ${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR} detected, "
|
||||||
"build may succeed but only CUDA 9.0, 9.1 and 10.0 are officially supported")
|
"build may succeed but only CUDA 10.1 is officially supported")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# build for each arch
|
# build for each arch
|
||||||
@@ -400,29 +400,17 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
set(cuda_flags ${cuda_flags} -D __KERNEL_DEBUG__)
|
set(cuda_flags ${cuda_flags} -D __KERNEL_DEBUG__)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Workaround to build only sm_7x kernels with CUDA 10, until
|
if(WITH_CYCLES_CUBIN_COMPILER)
|
||||||
# older kernels work well with this version.
|
|
||||||
if(DEFINED CUDA10_NVCC_EXECUTABLE AND (${arch} MATCHES "sm_7."))
|
|
||||||
set(with_cubin_compiler OFF)
|
|
||||||
set(cuda_nvcc_executable "${CUDA10_NVCC_EXECUTABLE}")
|
|
||||||
set(cuda_toolkit_root_dir "${CUDA10_TOOLKIT_ROOT_DIR}")
|
|
||||||
else()
|
|
||||||
set(with_cubin_compiler ${WITH_CYCLES_CUBIN_COMPILER})
|
|
||||||
set(cuda_nvcc_executable "${CUDA_NVCC_EXECUTABLE}")
|
|
||||||
set(cuda_toolkit_root_dir "${CUDA_TOOLKIT_ROOT_DIR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(with_cubin_compiler)
|
|
||||||
string(SUBSTRING ${arch} 3 -1 CUDA_ARCH)
|
string(SUBSTRING ${arch} 3 -1 CUDA_ARCH)
|
||||||
|
|
||||||
# Needed to find libnvrtc-builtins.so. Can't do it from inside
|
# Needed to find libnvrtc-builtins.so. Can't do it from inside
|
||||||
# cycles_cubin_cc since the env variable is read before main()
|
# cycles_cubin_cc since the env variable is read before main()
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CUBIN_CC_ENV ${CMAKE_COMMAND}
|
set(CUBIN_CC_ENV ${CMAKE_COMMAND}
|
||||||
-E env DYLD_LIBRARY_PATH="${cuda_toolkit_root_dir}/lib")
|
-E env DYLD_LIBRARY_PATH="${CUDA_TOOLKIT_ROOT_DIR}/lib")
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
set(CUBIN_CC_ENV ${CMAKE_COMMAND}
|
set(CUBIN_CC_ENV ${CMAKE_COMMAND}
|
||||||
-E env LD_LIBRARY_PATH="${cuda_toolkit_root_dir}/lib64")
|
-E env LD_LIBRARY_PATH="${CUDA_TOOLKIT_ROOT_DIR}/lib64")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
@@ -433,12 +421,12 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
-i ${CMAKE_CURRENT_SOURCE_DIR}${cuda_kernel_src}
|
-i ${CMAKE_CURRENT_SOURCE_DIR}${cuda_kernel_src}
|
||||||
${cuda_flags}
|
${cuda_flags}
|
||||||
-v
|
-v
|
||||||
-cuda-toolkit-dir "${cuda_toolkit_root_dir}"
|
-cuda-toolkit-dir "${CUDA_TOOLKIT_ROOT_DIR}"
|
||||||
DEPENDS ${kernel_sources} cycles_cubin_cc)
|
DEPENDS ${kernel_sources} cycles_cubin_cc)
|
||||||
else()
|
else()
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${cuda_cubin}
|
OUTPUT ${cuda_cubin}
|
||||||
COMMAND ${cuda_nvcc_executable}
|
COMMAND ${CUDA_NVCC_EXECUTABLE}
|
||||||
-arch=${arch}
|
-arch=${arch}
|
||||||
${CUDA_NVCC_FLAGS}
|
${CUDA_NVCC_FLAGS}
|
||||||
--cubin
|
--cubin
|
||||||
@@ -457,7 +445,7 @@ if(WITH_CYCLES_CUDA_BINARIES)
|
|||||||
foreach(arch ${CYCLES_CUDA_BINARIES_ARCH})
|
foreach(arch ${CYCLES_CUDA_BINARIES_ARCH})
|
||||||
if(${arch} MATCHES "sm_2.")
|
if(${arch} MATCHES "sm_2.")
|
||||||
message(STATUS "CUDA binaries for ${arch} are no longer supported, skipped.")
|
message(STATUS "CUDA binaries for ${arch} are no longer supported, skipped.")
|
||||||
elseif(${arch} MATCHES "sm_7." AND (${CUDA_VERSION} LESS 100) AND (NOT DEFINED CUDA10_NVCC_EXECUTABLE))
|
elseif(${arch} MATCHES "sm_7." AND ${CUDA_VERSION} LESS 100)
|
||||||
message(STATUS "CUDA binaries for ${arch} require CUDA 10.0+, skipped.")
|
message(STATUS "CUDA binaries for ${arch} require CUDA 10.0+, skipped.")
|
||||||
else()
|
else()
|
||||||
# Compile regular kernel
|
# Compile regular kernel
|
||||||
|
Reference in New Issue
Block a user