__ ldg() 内置仅适用于计算能力3.5(或更高版本)架构。
这意味着:
- 必须在计算3.5(或更新版本)GPU上运行
- 必须针对计算3.5(或更新版本)的GPU进行编译
- 不能为旧体系结构编译。
解决方式修改cmake:
set(CUDA_ARCH "-arch=sm_50" CACHE STRING "Value of the NVCC -arch option.")
if(DEFINED AUTO_DETECT_ARCH AND "${AUTO_DETECT_ARCH}")
CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS "Auto")
set(CUDA_ARCH "${ARCH_FLAGS}" CACHE STRING "Value of the NVCC -arch option." FORCE)
endif()
message(STATUS "CUDA_ARCH: \"${CUDA_ARCH}\"")
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-O3 -Wall")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11")
endif()
SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} ${CUDA_ARCH}")