You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

COLMAP非NVIDIA GPU支持情况及CUDA设备识别失败问题问询

我来帮你拆解并解答这两个问题:

COLMAP对非NVIDIA GPU的支持情况

COLMAP的GPU加速功能完全依赖NVIDIA的CUDA框架,这是NVIDIA专属的并行计算平台。目前官方没有为非NVIDIA GPU(比如AMD、Intel集成显卡等)提供GPU加速支持,如果你使用这类设备,只能切换到CPU模式运行所有模块(特征提取、特征匹配、三维重建等),无法利用GPU加速。

最新dev分支CUDA设备识别失败的问题(macOS Mojave)

从你的描述来看,8月30日的版本能正常运行,但升级到dev分支的ad7bd93版本后出现崩溃,且回滚旧版本构建失败。结合你的环境(macOS Mojave 10.14.6),可以从以下几个方向排查和解决:

1. 检查CUDA版本兼容性

macOS Mojave的系统版本限制了最高支持的CUDA版本为CUDA 10.1——NVIDIA从CUDA 10.2开始就停止了对macOS的支持。如果新版本COLMAP提升了CUDA版本要求,你的系统无法满足,就会导致CUDA设备识别失败。建议你确认当前安装的CUDA版本,以及新版本COLMAP的CUDA依赖要求。

2. 重新构建时确保CUDA被正确检测

回滚或重新构建COLMAP时,一定要确保CMake正确识别到CUDA。可以尝试以下步骤:

  • 彻底删除之前的build目录,避免缓存干扰
  • 运行CMake时手动指定CUDA编译器路径:
    cmake -S . -B build -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc
    
  • 查看CMake的输出日志,确认是否有类似Found CUDA: /usr/local/cuda的提示,如果没有,说明构建过程中没有启用CUDA支持,运行时调用GPU就会崩溃。

3. 先验证CPU模式是否正常

先切换到CPU模式运行特征提取,排查是否是GPU专属问题:

colmap feature_extractor --database_path DATABASE_PATH --image_path IMAGES_PATH --ImageReader.camera_model RADIAL --ImageReader.single_camera_per_folder 1 --SiftExtraction.use_gpu 0

如果CPU模式能正常运行,说明问题确实出在CUDA设备的适配层面。

4. 解决回滚版本的构建失败问题

回滚到旧版本后构建失败,大概率是构建缓存或依赖库版本不兼容导致的:

  • 清理所有构建缓存,包括build目录和系统中可能残留的旧编译文件
  • 检查OpenCV、Eigen等依赖库的版本,旧版本COLMAP可能依赖特定版本的库,如果你的系统已经更新了这些库,可能需要安装对应版本的依赖包。

5. 排查代码变更影响

查看ad7bd93提交及之后的代码变更,重点关注SIFT特征提取器或CUDA设备检测相关的逻辑——新版本可能对CUDA设备的检测更严格,导致旧系统的CUDA设备无法通过校验,进而触发崩溃。

你的报错信息与复现命令

报错信息:

*** Check failure stack trace: ***
@ 0x11303b349 google::LogMessage::Flush()
@ 0x11303e9ef google::LogMessageFatal::~LogMessageFatal()
@ 0x11303bc77 google::LogMessageFatal::~LogMessageFatal()
@ 0x10d99e10d colmap::SiftFeatureExtractor::SiftFeatureExtractor()
@ 0x10d7bcd19 RunFeatureExtractor()
@ 0x10d7da01c main
[1] 38034 abort colmap feature_extractor --database_path --image_path RADIAL 1 1

复现命令:

colmap feature_extractor --database_path DATABASE_PATH --image_path IMAGES_PATH --ImageReader.camera_model RADIAL --ImageReader.single_camera_per_folder 1 --SiftExtraction.use_gpu 1

内容的提问来源于stack exchange,提问作者Saad Bahir

火山引擎 最新活动