Bạn có thể sử dụng CUDA_GENERATION
để xác định tên mã thế hệ tương ứng cho kiến trúc GPU của bạn.
Đây là liên quan opencv cmake code rằng phân tích giá trị CUDA_GENERATION
:
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "2.0")
elseif(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
elseif(CUDA_GENERATION STREQUAL "Maxwell")
set(__cuda_arch_bin "5.0 5.2")
elseif(CUDA_GENERATION STREQUAL "Pascal")
set(__cuda_arch_bin "6.0 6.1")
elseif(CUDA_GENERATION STREQUAL "Volta")
set(__cuda_arch_bin "7.0")
elseif(CUDA_GENERATION STREQUAL "Auto")
execute_process(COMMAND "${CUDA_NVCC_EXECUTABLE}" ${CUDA_NVCC_FLAGS} "${OpenCV_SOURCE_DIR}/cmake/checks/OpenCVDetectCudaArch.cu" "--run"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/"
RESULT_VARIABLE _nvcc_res OUTPUT_VARIABLE _nvcc_out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT _nvcc_res EQUAL 0)
message(STATUS "Automatic detection of CUDA generation failed. Going to build for all known architectures.")
else()
set(__cuda_arch_bin "${_nvcc_out}")
string(REPLACE "2.1" "2.1(2.0)" __cuda_arch_bin "${__cuda_arch_bin}")
endif()
endif()
Và trang wikipedia CUDA có một bảng tốt đẹp cho việc lập bản đồ card màn hình của bạn để tên mã vi kiến trúc đúng (xin lỗi, nó quá lớn để tái tạo ở đây):
https://en.wikipedia.org/wiki/CUDA#GPUs_supported
Ví dụ, tôi middling 2012 Macbook Pro có một GeForce GT 650m cổ, mà bảng wikipedia chỉ sử dụng microarch Kepler nó. Vì vậy, tôi sử dụng này trong dòng lệnh cmake tôi:
cmake -D CUDA_GENERATION="Kepler" ...
và kịch bản OpenCV chuyển đến "3,0 3,5 3,7" khi nó sẽ hiển thị tóm tắt cấu hình, và đi trên những lá cờ tương ứng để nvcc
.
Trong trường hợp của tôi, trước khi cài đặt đúng cách, tôi gặp lỗi về số compute_70
không được hỗ trợ. Rõ ràng, vẫn còn open issue in the opencv tracker kể từ hôm nay (2017-10-07) về tự động phát hiện không hoạt động đúng cách.
Cảm ơn bạn đã trả lời câu hỏi. Tuy nhiên, đây là câu trả lời chỉ có liên kết; nó sẽ là tốt hơn để bao gồm một mô tả chi tiết hơn trong câu trả lời của bạn với thông tin từ liên kết mà bạn đang đề cập đến. –