Doppia(version-2)编译
2015-12-23 15:14
225 查看
Doppia(version-2)编译
1. Doppia简介
该C++和CUDA代码提供从立体图像中估计stixels,从单幅图像中检测行人和为新类训练检测器[1]。2. Doppia编译参考
JpHu分四部分讲述Doppia version-1的编译及其准备工作[6],介绍得很详细。不过第四部分他和我遇到的问题出入比较大。我遇到的是由于CUDA_NVCC_FLAGS设置不当造成的各种乱七八糟的问题。3. Doppia编译
(1)下载Doppia源代码[1或2]
原作者的代码在[1]中可以下载;另外一位台北的大哥biotrump[2]编译成功了原作者的version-2的代码并发布出来,我用他咀嚼后的版本make异常顺利,最后所有模块都测试成功。(2)修改common_settings.cmake
在else()前面添加主机名,对GPU和CUDA作相关设置。CUDA_NVCC_FLAGS指令设置不妥make时也会出问题[3]。最重要的是GPU架构(--gpu-architecture,短名为-arch)。GPU架构用于指定NVIDIA虚拟GPU架构的类名称,虚拟GPU架构的CUDA输入文件必须要编译。为nvcc编译方便,--gpu-architecture指定的值可能是nvcc使用的真实架构和最接近真实架构的有效虚拟架构[4]。比如,nvcc --gpu-architecture=sm_20等效于nvcc --gpu-architecture=compute_20
--gpu-code=sm_20,compute_20。
1)GPU特征列表(GPU Feature List)
GPU都命名为sm_xy,其中x表示GPU属于哪一代,y表示该代的版本。如果x1y1<=x2y2,那么sm_x2y2将包含sm_x1y1所有的非ISA的相关功能。sm_30是基本的Kepler模型,所以会包含基本特征(sm_20的功能)[5]。
sm_20:基本功能+Fermi支持;
sm_30和sm_32:+Kepler支持+统一的内存;
sm_35:+动态并行支持;
sm_50,sm_52和sm_53:+Maxwell支持。
2)虚拟架构特征列表
和GPU特征列表类似。
添加的完整内容如下。
elseif(${HOSTNAME} STREQUAL "parallel") # change the_name_of_your_machine to what /bin/hostname returns message(STATUS "Using parallel compilation options") # start with an empty section, and see what fails as you go through the readme.text instructions option(USE_GPU "Should the GPU be used ?" TRUE) set(CUDA_BUILD_CUBIN OFF) set(CUDA_NVCC_FLAGS "-arch=sm_50" CACHE STRING "nvcc flags" FORCE)
(3)后来
根据[1]中的编译说明一步一步往下走很顺利。中间会遇到的都是些小问题。1)"__float128未定义":把__float128改成float;
2)“swap未定义”:添加algorithm头文件;
3)对于[1]中下载的版本,编译出现tools里面的文件not found:version-1和version-2的文件夹合并(P.S.[1]中的version-2我也没有编译成功)。
4. 参考链接
[1] https://bitbucket.org/rodrigob/doppia[2] https://github.com/biotrump/rodrigob-doppia
[3] https://bitbucket.org/rodrigob/doppia/issues/84/the-problem-while-compiling
[4] docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#axzz3v6hJhflM
[5] docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#virtual-architecture-feature-list
[6] blog.csdn.net/tingyue_/article/details/45619745
相关文章推荐
- Linux awk 命令
- 优秀运维的5项准则
- iOS 开发-教大家如何使用github客户端上传自己的代码到github网站
- 关于hibernate悲观锁设置方法setLockMode无效而setLockOptions有效的解答
- Linux Bash Shell入门教程
- nginx扩展模块,不能正常显示FastDfs上传的图片问题
- 语法、函数、开发工具详细释义查询网站
- SharePoint&Infopath——添加Products.xml到表单作为数据连接
- Hadoop 单节点 & 伪分布 安装手记
- 每天一个linux之touch命令
- geoserver和openlayers学习网站
- linux shell 获取进程id,或者在应用程序中获取进程id
- FastDFS的配置、部署与API使用解读(7)Nginx的FastDFS模块
- OpenXml Sdk 根据Word模板导出到word
- MySQL下高可用故障转移方案MHA的超级部署教程
- 我的XMPP协议IM架构
- 《近匠》Worktile王涛:典型MEAN架构下的团队协作工具
- 进入docker容器之nsenter
- linux修改文件权限命令chown、chmod、chgrp
- Interllij idea Tomcat 内存调优