Cycles: Remove Fermi support from CMake and update runtime checks in device_cuda...
authorThomas Dinges <blender@dingto.org>
Sat, 17 Feb 2018 15:15:07 +0000 (16:15 +0100)
committerThomas Dinges <blender@dingto.org>
Sat, 17 Feb 2018 15:15:07 +0000 (16:15 +0100)
Fermi code in Cycles kernel and texture system are coming next.

CMakeLists.txt
build_files/cmake/config/blender_release.cmake
intern/cycles/device/device_cuda.cpp
intern/cycles/kernel/CMakeLists.txt

index dce622d4778aa0769db073b2e39538b343dc4448..025b76cd22be3319e2e1204d9d9d3e0de208011b 100644 (file)
@@ -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)
index 1d1793e0aba964891fcba332cad1d05fc59191ae..26267fd314ae7c8c00c6d817b1c18cf5e09efc67 100644 (file)
@@ -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)
index dfedf922ca9d18262735e8282ae1e326f42079a7..9644937d906507bf3fbf2b33c8cd5d2e87b80ad1 100644 (file)
@@ -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<DeviceInfo>& 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<DeviceInfo>& 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;
index d981b67559e95853304b32185b633b16390a8cd2..4d4b8602c78f7266c105f494cd599fd5c5404928 100644 (file)
@@ -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()