GPU并行优化

This commit is contained in:
hesuicong committed 2025-10-25 16:36:17 +08:00
1 parent 5814b15eff
commit a395698345
3 files changed
+105 -16

No files matched your search

+40 -1
View File
@@ -12,6 +12,37 @@ if(VCG_FOUND)
add_definitions(${VCG_DEFINITIONS})
endif()
# 在find_package(CUDA)之前设置全局PIC
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
find_package(CUDA REQUIRED)
SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}
-Xcompiler=-fPIC
--relocatable-device-code=true
--ptxas-options=-v
-gencode arch=compute_75,code=sm_75
")
# 启用CUDA语言支持(现代CMake方式)
IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
ENABLE_LANGUAGE(CUDA)
ENDIF()
cuda_add_library(MeshTextureCUDA
cuda/MeshTextureCUDA.cu
)
SET_TARGET_PROPERTIES(MeshTextureCUDA PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_RESOLVE_DEVICE_SYMBOLS ON # 关键:解析设备符号
POSITION_INDEPENDENT_CODE ON
)
# 为CUDA目标显式添加编译标志
TARGET_COMPILE_OPTIONS(MeshTextureCUDA PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=-fPIC>
)
set(CERES_LIBS "")
if(OpenMVS_USE_CERES)
FIND_PACKAGE(Ceres)
@@ -44,11 +75,19 @@ IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.16.0)
TARGET_PRECOMPILE_HEADERS(MVS PRIVATE "Common.h")
endif()
TARGET_LINK_LIBRARIES(MeshTextureCUDA
${CUDA_LIBRARIES}
${OpenCV_LIBRARIES}
cudart_static
)
# Link its dependencies
if(_USE_CUDA)
SET_TARGET_PROPERTIES(MVS PROPERTIES CUDA_ARCHITECTURES "50;72;75")
endif()
TARGET_LINK_LIBRARIES(MVS PRIVATE Common Math IO CGAL::CGAL ${CERES_LIBRARIES} ${CUDA_CUDA_LIBRARY})
TARGET_LINK_LIBRARIES(MVS PRIVATE Common Math IO CGAL::CGAL ${CERES_LIBRARIES} ${CUDA_CUDA_LIBRARY}
MeshTextureCUDA
${CUDA_LIBRARIES})
if(OpenMVS_USE_PYTHON)
# Create the Python wrapper