美文网首页程序员日常
解决InfiniTAM在windows下的cuda问题

解决InfiniTAM在windows下的cuda问题

作者: 听风轻咛 | 来源:发表于2018-11-25 19:26 被阅读2次

    前情提要

    接之前的工作,今天我们继续来搞InfiniTAM工程的配置问题,之前经过一顿操作找各种问题,最终确定了我的各种配置没有错,仅仅是cuda的问题,真的是“一顿操作猛如虎,回头一看零杠五”。于是我们今天就cuda这个版本问题出发,来解决一下我们工程的配置问题;

    传送门:
    InfiniTAM在Windows10的配置
    解决InfiniTAM在windows下的驱动问题

    Cuda版本

    这次我们老老实实的按照InfiniTAM工程说明上所说的,选择cuda 6.0或7.0版本,我这里选择的是7.0;

    在nvidida网站上下载,发现有将近1个G的软件包,并且软件包是win8系统,win10系统应该也没问题,好现在让它下载,我需要起来去倒杯水。

    下载下来双击安装就可以了,安装过程中会提示你关掉VS,好的,我们继续,安装完成后需要重启电脑。

    安装的目录为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0,路径是默认的,无法更改,有点暴力哈。

    回到Cmake

    接下来是回到cmake配置cuda参数,这块应该不太好弄,我得上网找点成功的案例,另外我们要配置的全部是用x64位的,基于之前的经验,配置工程与32位或64位并没有什么关系。

    先直接改先直接改

    不管那么多,先把cuda勾选,直接把cuda root改成7.0的,编译运行下试试,如果成功,则今天就到此结束,不过我觉得应该没那么简单,在配环境的路上总是隐隐感到不安。

    果然没让我失望,问题依旧存在,不要慌,我们找方法解决一下;

    ITMLib_generated_CUDAInstantiations.cu.objITMLib_generated_CUDAInstantiations.cu.obj

    首先根据报错信息我们知道是有一个工程文件.cu.obj生成错误,还有一个ITMLib.lib链接错误,应该是ITMLib子工程没有生成对应的lib,那么网上找找吧,这个问题一定是没有找到对应的cuda库,所以编译链接出了问题;因为工程中有若干个子工程,子工程对子工程有库依赖,那某些子工程编译不成功则势必会导致链接问题;

    经过定位是ITMLib也就是生成那个ITMlib.lib的子工程,我们来解决cuda链接的问题;

    下午四点,又看了一篇:
    【链接】InfiniTAM的编译探索

    cuda配置cuda配置

    换编译工具

    上面这个问题搞我好久,ITMLib里的代码也看了看,发现不是代码问题,还是编译问题,因为我cmake工程选择的是2017的VS(用2013无法构建,具体原因不详,总不能现在去搞一遍cmake吧),而打开的时候用的2013编译(用2017编译会有报错)成功,所以我想可能这里会出现问题。

    于是把2017卸载掉(或者都装得了),装一个2015,2013,2010;

    用2010打开编译,发现错误:

     fatal error C1083: 无法打开包括文件:“mutex”: No such file or directory
    

    查了一下发现是因为vs 2010并不支持c++ 11,于是放弃10版本;

    用2013打开编译,在cmake里发现错误:

    Failed to run MSBuild command:      
    C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe
    

    查了一下,Stack Overflow上说是要让用Visual Studio 15 2017去编译,那就只好用2017来搞吧;

    NVCCNVCC

    看到了一句话,看来还是得用2013搞啊,或者从nvcc下手,先用2013来解决,仍然是不能生成ITMLib_generated_CUDAInstantiations.cu.obj,那么现在定位到问题了,是跟这个nvcc有关;

    感觉这篇博客要解决我的困扰,nvcc启动与配置说明

    有的时候网上的经验真的不能信,cmake版本也是有要求的好嘛,下了一个cmake3.1.3来继续搞,我们得跟着别人成功的经验走,这下选择2013进行编译的时候,出现下面错误:

    No CMAKE_C_COMPILER could be found.
    

    我有点想吐了。。。

    WTF,最怕这种盲目不知道该怎么解决的情况。。。

    最后我要把所有的版本全部删掉,留一个2013版本,用排除法解决;但是现在还没有搞通就很烦,唉,生命真的在于折腾吗?

    PS:

    并且得到了一个VS对应的版本信息:

     Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files. 
                                     Optional [arch] can be "Win64" or "ARM".    
      Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. 
                                     Optional [arch] can be "Win64" or "ARM".    
      Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. 
                                     Optional [arch] can be "Win64" or "ARM".    
      Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. 
                                     Optional [arch] can be "Win64" or "ARM".    
      Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. 
                                     Optional [arch] can be "Win64" or "IA64".   
      Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files. 
                                     Optional [arch] can be "Win64" or "IA64". 
    
    Visual StudioVisual Studio

    相关文章

      网友评论

        本文标题:解决InfiniTAM在windows下的cuda问题

        本文链接:https://www.haomeiwen.com/subject/xlcmqqtx.html