From 2eaf90b305fc6fb37f775f288c3d5cd34cc66c81 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 17 Feb 2018 16:15:07 +0100 Subject: Cycles: Remove Fermi support from CMake and update runtime checks in device_cuda.cpp. Fermi code in Cycles kernel and texture system are coming next. --- CMakeLists.txt | 2 +- build_files/cmake/config/blender_release.cmake | 2 +- intern/cycles/device/device_cuda.cpp | 14 +++++++------- intern/cycles/kernel/CMakeLists.txt | 24 ++++++++---------------- 4 files changed, 17 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dce622d4778..025b76cd22b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -409,7 +409,7 @@ option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL}) option(WITH_CYCLES_OPENSUBDIV "Build Cycles with OpenSubdiv support" ${_init_CYCLES_OPENSUBDIV}) option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF) option(WITH_CYCLES_CUBIN_COMPILER "Build cubins with nvrtc based compiler instead of nvcc" OFF) -set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 CACHE STRING "CUDA architectures to build binaries for") +set(CYCLES_CUDA_BINARIES_ARCH sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 CACHE STRING "CUDA architectures to build binaries for") mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH) unset(PLATFORM_DEFAULT) option(WITH_CYCLES_LOGGING "Build Cycles with logging support" ON) diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake index 1d1793e0aba..26267fd314a 100644 --- a/build_files/cmake/config/blender_release.cmake +++ b/build_files/cmake/config/blender_release.cmake @@ -54,7 +54,7 @@ set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) set(WITH_PLAYER ON CACHE BOOL "" FORCE) set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE) set(WITH_CYCLES_CUDA_BINARIES ON CACHE BOOL "" FORCE) -set(CYCLES_CUDA_BINARIES_ARCH sm_20;sm_21;sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61 CACHE STRING "" FORCE) +set(CYCLES_CUDA_BINARIES_ARCH sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61 CACHE STRING "" FORCE) # platform dependent options if(UNIX AND NOT APPLE) diff --git a/intern/cycles/device/device_cuda.cpp b/intern/cycles/device/device_cuda.cpp index dfedf922ca9..9644937d906 100644 --- a/intern/cycles/device/device_cuda.cpp +++ b/intern/cycles/device/device_cuda.cpp @@ -322,9 +322,9 @@ public: cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, cuDevId); cuDeviceGetAttribute(&minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, cuDevId); - /* We only support sm_20 and above */ - if(major < 2) { - cuda_error_message(string_printf("CUDA device supported only with compute capability 2.0 or up, found %d.%d.", major, minor)); + /* We only support sm_30 and above */ + if(major < 3) { + cuda_error_message(string_printf("CUDA device supported only with compute capability 3.0 or up, found %d.%d.", major, minor)); return false; } @@ -462,9 +462,9 @@ public: #ifdef _WIN32 if(have_precompiled_kernels()) { - if(major < 2) { + if(major < 3) { cuda_error_message(string_printf( - "CUDA device requires compute capability 2.0 or up, " + "CUDA device requires compute capability 3.0 or up, " "found %d.%d. Your GPU is not supported.", major, minor)); } @@ -2532,7 +2532,7 @@ void device_cuda_info(vector& devices) int major; cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, num); - if(major < 2) { + if(major < 3) { VLOG(1) << "Ignoring device \"" << name << "\", compute capability is too low."; continue; @@ -2544,7 +2544,7 @@ void device_cuda_info(vector& devices) info.description = string(name); info.num = num; - info.advanced_shading = (major >= 2); + info.advanced_shading = (major >= 3); info.has_fermi_limits = !(major >= 3); info.has_half_images = (major >= 3); info.has_volume_decoupled = false; diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt index d981b67559e..4d4b8602c78 100644 --- a/intern/cycles/kernel/CMakeLists.txt +++ b/intern/cycles/kernel/CMakeLists.txt @@ -316,12 +316,8 @@ set(SRC_SPLIT_HEADERS # CUDA module if(WITH_CYCLES_CUDA_BINARIES) - # 32 bit or 64 bit - if(CUDA_64_BIT_DEVICE_CODE) - set(CUDA_BITS 64) - else() - set(CUDA_BITS 32) - endif() + # 64 bit only + set(CUDA_BITS 64) # CUDA version execute_process(COMMAND ${CUDA_NVCC_EXECUTABLE} "--version" OUTPUT_VARIABLE NVCC_OUT) @@ -420,17 +416,13 @@ if(WITH_CYCLES_CUDA_BINARIES) endmacro() foreach(arch ${CYCLES_CUDA_BINARIES_ARCH}) - if(CUDA_VERSION GREATER "89" AND ${arch} MATCHES "sm_2.") - message(STATUS "CUDA binaries for ${arch} disabled, not supported by CUDA 9.") - else() - # Compile regular kernel - CYCLES_CUDA_KERNEL_ADD(${arch} filter "" "${cuda_filter_sources}" FALSE) - CYCLES_CUDA_KERNEL_ADD(${arch} kernel "" "${cuda_sources}" FALSE) + # Compile regular kernel + CYCLES_CUDA_KERNEL_ADD(${arch} filter "" "${cuda_filter_sources}" FALSE) + CYCLES_CUDA_KERNEL_ADD(${arch} kernel "" "${cuda_sources}" FALSE) - if(WITH_CYCLES_CUDA_SPLIT_KERNEL_BINARIES) - # Compile split kernel - CYCLES_CUDA_KERNEL_ADD(${arch} kernel_split "-D __SPLIT__" ${cuda_sources} FALSE) - endif() + if(WITH_CYCLES_CUDA_SPLIT_KERNEL_BINARIES) + # Compile split kernel + CYCLES_CUDA_KERNEL_ADD(${arch} kernel_split "-D __SPLIT__" ${cuda_sources} FALSE) endif() endforeach() -- cgit v1.2.3