当前位置: 首页 > java >正文

WIN11+CUDA11.8+VS2019配置BundleFusion

参考:

BundleFusion:VS2019 2017 ,CUDA11.5,win11,Realsense D435i+离线数据包跑通,环境搭建 - 知乎

Win10+VS2017+CUDA10.1环境下配置BundleFusion - 知乎

BundleFusion+WIN11+VS2019 + CUDA11.7环境配置-CSDN博客

我的环境:Win 11专业版,显卡Nvidia RTX 4090D(CUDA驱动572.83,最大支持CUDA12.8)。

step1. 先安装Visual Studio 2019 community

项目首页 - VisualStudio2019社区版离线下载资源:Visual Studio 2019 社区版离线下载资源本仓库提供了一个名为 `vs_Community-2019.zip` 的资源文件,该文件包含了 Visual Studio 2019 社区版的离线下载内容 - GitCode

 下载,点击安装,只选择C++桌面开发模块,选中右侧在msvc-x86/64、win10SDK(和win11sdk)。

step 2. 安装CUDA 11.8

进入官网CUDA Toolkit Archive | NVIDIA Developer

选择版本号11.8,选择WIN 11 x86_64,进行local离线安装模式:下载对应.exe。

双击.exe,选择自定义安装,不选Other components 和 Driver components,下一步。

在安装界面会显示CUDA检测到的VS版本(我的是2019)。

检验:windows powershell中:nvcc -V,输出版本11.8说明安装成功。

检验2:右键点击 此电脑->属性->高级系统设置->环境变量,在系统变量中自动出现CUDA_PATH和CUDA_PATH_V11_8的路径。

step 3. 安装DirectX SDK

Download DirectX SDK from Official Microsoft Download Center

下载DXSDK_Jun10.exe,双击安装(注意可能出现之前安装的Microsoft Visual C++ 2010 x86 Redistributable和Microsoft Visual C++ 2010 x64 Redistributable 引起的问题):accept->not participate,等待下载和安装完成。

查看电脑的系统变量中,自动出现DXSDK_DIR。

step 4. 安装meshlab

MeshLab - Windows官方下载 | 微软应用商店 | Microsoft Store

可以直接由microsoft store安装,用来可视化bundlefusion生成的.ply文件。

由于我不用realsense或kinect实时采集数据,而是运行离线的.sense数据集(地址:BundleFusion),所有没有配置Realsense.SDK(配置详情请参考[1])。

step 5. 下载BundleFusion和相关依赖库源码

 BundleFusion:

Bniessner/BundleFusion: [Siggraph 2017] BundleFusion: Real-time Globally Consistent 3D Reconstruction using Online Surface Re-integrationhttps://github.com/niessner/BundleFusionmLib:github.comhttps://github.com/niessner/mLibmLib external:

百度网盘 请输入提取码https://pan.baidu.com/share/init?surl=CJysQCHl4t7RPfvqliwfew提取码:0x4t。

三个文件解压缩,注意BundleFusion-master的存放路径不包含中文、空格,不要放在桌面。

将mLib-master解压缩后的文件替换BundleFusion-master\external\mLib;

将mlibExternal解压缩后,放在BundleFusion-master同一级文件夹下。

step 6. 更改代码

用VS2019打开BundleFusion-master/BundleFusion-master/FriedLiver/FriedLiver.sln

(点击确定:重定向项目:win 10 sdk)

6.1 修改FriedLiver.vcxproj

ctrl+f,查找7.0(共两处),替换为CUDA版本号 11.8。

6.2 修改BundleFusion-master\external\mLib\include\core-base\common.h

将代码第61行#include <boost/serialization/array_wrapper.hpp>

改为#include <boost/serialization/array.hpp>

6.3 修改mLibExternal\include\Eigen\src\Core\util\Macros.h

将310行改为

#if defined(_MSC_VER) && (_MSC_VER < 1900) && (!defined(__INTEL_COMPILER))

6.4 修改\SiftGPU\ProgramCU.cu

参考Fix GPU hangs in SiftGPU by stotko · Pull Request #56 · niessner/BundleFusion

需要注释掉if{ __syncthreads()},否则带条件的同步会引起死锁问题,导致编译成功后Fried Liver运行界面会卡住不显示。

具体注释两个地方:992行,和 1104行。

6.5 修改GlobalAppState.h

因为不用realsense或kinect实时采集输入,所以将深度相机(即带Sensor的)注释掉(反之亦然),如下图。

6.6 配置CUDA算力

在VS界面右侧解决方案资源管理器中,右键项目名FriedLiver->属性,在CUDA C/C++中Device中修改compute_35,sm_35为合适的计算能力。我的显卡虽然是NVIDIA RTX 4090D,计算能力为8.9,但改为89后,会报类似于__shfl_down未定义的错误;需要下调为合适的值,我最终改成compute_52,sm_52。

6.7 找不到 xxx.dll

编译报错:找不到FreeImage.dll,将BundleFusion-master\mLibExternal\libsWindows\dll64目录下的FreeImage.dll,复制到项目目录./x64/debug下。

报错找不到vcomp110.dll,进入Download Visual C++ Redistributable for Visual Studio 2012 Update 4 from Official Microsoft Download Center

选择download x64.exe,安装即可。

step 7. 编译生成

不报错了,但是提示参数文件zParametersBundlingDefault.txt和zParametersDefault.txt设置有问题。

首先设置zParametersBundlingDefault.txt:将s_maxNumImages = 1200改为稍微小的值比如400。注意根据SensorDataReader.cpp64行,传入.sense的图像数量m_numFrames应不超过s_maxNumImages*s_submapsize。所以如果你选择的sense规模比较大,就会报错"change param file to accommodate"。

然后修改zParametersDefault.txt:将s_sensoridx = 8,即offiline processing读取已经录制好的.sense输入,而不是实时采集的相机。将s_hashNumSDFBlocks调小为100000。将s_binaryDumpSensorFile = "最好是.sense的绝对路径",设置好输入路径,最后生成的.ply也保存在该路径下

编译运行,应该没有问题了:

http://www.xdnf.cn/news/10248.html

相关文章:

  • Linux之MySQL安装篇
  • Redis主从复制详解
  • 扫一扫的时候会经历哪些事
  • 华为OD机试真题——模拟消息队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 哪些工作最容易被AI取代?
  • C++基础算法————深度优先搜索(DFS)
  • 【速通RAG实战:进阶】17、AI视频打点全攻略:从技术实现到媒体工作流提效的实战指南
  • 嵌入式(C语言篇)Day13
  • Go语言事件总线EventBus本地事件总线系统的完整实现框架
  • Angularjs-Hello
  • Java中的引用类型以及区别的特点
  • 复数三角不等式简介及 MATLAB 演示
  • 电脑用户名是中文,conda配置环境报错,该怎么解决
  • SpringBoot网络请求RestTemplate Util工具类
  • Kerberos面试内容整理-会话密钥的协商与使用
  • WIN11+eclipse搭建java开发环境
  • 端午安康(Python)
  • C++深入类与对象
  • 电脑重装或者开机出现错误
  • 【harbor】--基础使用
  • 利用aqs构建一个自己的非公平独占锁
  • 【数据集】全球无缝高分辨率1 km 月均地表温度和气温(2001-2020)
  • 小白的进阶之路系列之八----人工智能从初步到精通pytorch综合运用的讲解第一部分
  • 【C++】 类和对象(上)
  • Matlab数据类型
  • 界面形成能的理解
  • Python简易音乐播放器开发教程
  • day61—DFS—省份数量(LeetCode-547)
  • 【计算机网络】 ARP协议和DNS协议
  • 38.springboot使用rabbitmq