环境说明

ubuntu16.04

cuda10.0

2080Ti显卡

拉取代码和修改编译脚本

拉取代码

用户先clone代码:

git clone https://github.com/torch/distro.git ~/torch --recursive

通常下载很慢,--recursive参数下载的submodule会失败,需要多执行几次如下命令:

cd torch
git submodule update --init --recursive

安装依赖

1.torch源码中明确指定的依赖
需要sudo权限安装,如果当前账户不是sudo账户也不是root账户则需要联系你的管理员来安装:

bash install-deps;

2.torch源码没说,但实测下来需要的依赖

使用原生的lua5.2而不是luajit,需要apt装一下lua:

sudo apt install lua-5.2

配置cuda/cudnn:系统管理员先前已经安装了cuda-8.0, cuda-9.0, cuda-10.0到/usr/local/cuda-10.0等目录,在~/.bashrc中配置PATH和LD_LIBRARY_PATH即可。

配置CMake,需要高版本cmake,ubuntu16.04用apt装的cmake3.5.1版本太老,FindCUDA.cmake相关有问题。

  • 手动安装了cmake-3.15-rc1

  • 拷贝CMake-3.15-rc1安装路径下的Modules目录到~/torch/cmake/3.15/

  • 拷贝~/torch/cmake/3.6/CMakeLists.txt到~/torch/cmake/3.15目录

  • 配置使用CUDA10,因为用的是2080Ti,cuda9.0虽然能找到compute_75算力但是编译失败,需要配置cuda10。编辑~/.bashrc添加:
export CUDA_HOME=/usr/local/cuda-10.0
export PATH=/usr/local/cmake-3.15/bin:/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64
export TORCH_NVCC_FLAGS="-Xcompiler -D__CUDA_NO_HALF_OPERATORS__"
  • cudnn也需要一定的配置。torch7默认用cudnn5,cuda10搭配的cudnn7.5。
git clone https://github.com/soumith/cudnn.torch.git -b R7 && cd cudnn.torch && luarocks make cudnn-scm-1.rockspec

(from: https://github.com/soumith/cudnn.torch/issues/383)

然后~/.bashrc配置:

export CUDNN_PATH="/usr/local/cuda-10.0/lib64/libcudnn.so.7"

3.torch源码修改
几个坑:

  • torch官方很久不更新了,ATen等C++重新实现的核心代码在PyTorch官方repo中,https://github.com/torch/torch7则几乎不维护
  • torch7不支持cuda10.0,需要自行修改cmake脚本
  • torch7判断cuda>=7.0.5就使用FP16,然而我这里用的gcc-5.4发现FP16(half精度)相关的代码报错,需要手动注释掉,修改包括cmake脚本和.cuh、.c代码

具体包括:

因为torch默认不支持cuda10.0,需要修改extra/cutorch/lib/THC/cmake/select_compute_arch.cmake:

找到

list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1" "6.1+PTX" 

改为

list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1" "6.1+PTX" "7.5")

找到

    if(nvcc_res EQUAL 0)                                                                  # only keep the last line of nvcc_out                                              STRING(REGEX REPLACE ";" "\\\\;" nvcc_out "${nvcc_out}") STRING(REGEX REPLACE "\n" ";" nvcc_out "${nvcc_out}") list(GET nvcc_out -1 nvcc_out)                                                  string(REPLACE "2.1" "2.1(2.0)" nvcc_out "${nvcc_out}")                           set(CUDA_GPU_DETECT_OUTPUT ${nvcc_out} CACHE INTERNAL "Returned GPU architetures from detect_gpus tool" FORCE)                                                                 endif()                            

修改为:

    #if(nvcc_res EQUAL 0)                                                                  #  # only keep the last line of nvcc_out                                              #  STRING(REGEX REPLACE ";" "\\\\;" nvcc_out "${nvcc_out}") #  STRING(REGEX REPLACE "\n" ";" nvcc_out "${nvcc_out}") #  list(GET nvcc_out -1 nvcc_out)                                                  #  string(REPLACE "2.1" "2.1(2.0)" nvcc_out "${nvcc_out}")                           #  set(CUDA_GPU_DETECT_OUTPUT ${nvcc_out} CACHE INTERNAL "Returned GPU architetures from detect_gpus tool" FORCE)                                                                 #endif()                                                                              set(__nvcc_out "7.5")  

修改torch/install.sh,把里面所有3.6改成3.15。

去掉FP16功能相关的宏,因为编译会失败。方法:

ag 'CUDA_HAS_FP16'

找到

extra/cutorch/lib/THC/CMakeLists.txt
extra/cutorch/CMakeLists.txt

这两个文件,里面FLAGS去掉CUDA_HAS_FP16相关功能。

extra/cutorch/lib/THC/THCHalf.h,去掉#define CUDA_HAS_FP16 1

extra/cutorch/lib/THC/THCTensorMode.cuh,找到带字样的4个函数,用#ifdef CUDA_HAS_FP16 #endif包裹

extra/cutorch/lib/THC/THCGeneral.c,文件最后面两个函数half2float和float2half,用#ifdef CUDA_HAS_FP16 #endif包裹

error: cannot overload functions distinguished by return type alone
需要添加nvcc的flags,vim ~/torch/extra/cutorch/lib/THC/CMakeLists.txt +65,添加:

-Xcompiler -D__CORRECT_ISO_CPP11_MATH_H_PROTO

error: more than one operator "==" matches these operands
原因是cuda和torch的头文件都提供了相同的重载运算符,编译器不知道用哪一个。输入下面shell命令禁止使用cuda的头文件编译torch即可:
export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
然后重新执行torch的编译安装
(from: https://blog.csdn.net/u013066730/article/details/80936627)

编译

TORCH_LUA_VERSION=LUA52 ./install.sh 2>&1 | 

编译失败,清理办法

./clean.sh

编译成功,截图:

转载于:https://www.cnblogs.com/zjutzz/p/11056940.html

ubuntu16.04+GTX2080Ti+torch7安装记录相关推荐

  1. Ubuntu16.04下TensorFlow-GPU安装记录(GTX1060显卡)

    Ubuntu16.04下TensorFlow-GPU安装记录 1 确定电脑型号(重要的是显卡型号) 2 确定CUDA版本.ubuntu版本 3 Win10系统下安装Ubuntu组成双系统(简述过程) ...

  2. ubuntu16.04+gtx1050驱动安装记录

    1.查看显卡信息 lspci | grep VGA显示的硬件信息是主板上的Intel集显,Nvidia显卡也要依赖于这块集显运行,我们的NVIDIA显卡分配到了3D controler中去了.lspc ...

  3. Ubuntu16.04 Caffe 编译安装步骤记录

    历时一周终于在 ubuntu16.04 系统成功安装 caffe 并编译,网上有很多教程,但是某些步骤并没有讲解详尽,导致配置过程总是出现各种各样匪夷所思的问题,尤其对于新手而言更是欲哭无泪,在我饱受 ...

  4. 工作站Ubuntu16.04环境下安装nvidia显卡驱动

    近期实验室的工作站,由于teamviewer的原因又崩了.这次只能重装系统才得以解决.nvidia驱动安装步骤记录如下: 备注:工作站品牌为北京联众集群.配备有2块NVIDIA Titan xp 12 ...

  5. (提示)ubuntu16.04通过sealos安装k8s,需要重新部署apply一下calico组件

    ubuntu16.04通过sealos安装k8s,需要重新部署apply一下calico组件

  6. Ubuntu16.04+caffe+digits安装配置

    注:本文主要介绍的是如何在ubuntu16.04系统下安装caffe以及可视化工具digits,至于cuda和cudnn的安装配置在我前一篇文章http://blog.csdn.net/cdwxx12 ...

  7. linux系统安装佳能打印机驱动,在ubuntu16.04 64-bit上安装佳能打印机驱动Linux_UFRII_PrinterDriver_V320_us_EN...

    在ubuntu16.04 64-bit上安装佳能打印机驱动Linux_UFRII_PrinterDriver_V320_us_EN 发布时间:2018-04-06 21:46, 浏览次数:631 , ...

  8. ubuntu16.04源码安装opencv3.4.0

    ubuntu16.04源码安装opencv3.4.0 opencv下载地址:https://opencv.org/releases/page/3/ 1.下载安装包 2.安装依赖 sudo apt-ge ...

  9. ubuntu16.04源码安装python3.7

    ubuntu16.04源码安装Python3.7 python源码安装包下载:https://www.python.org/downloads/release/python-371/ 在安装的过程中, ...

最新文章

  1. Leangoo思维导图管理用户故事
  2. m行n列最大值和最小值C语言,找数组最值 按如下函数原型编程从键盘输入一个m行n列的二维数...
  3. C# 生成编号的方法
  4. 安全可靠国产系统下的应用怎么搭建?
  5. @初学编程的朋友们,如果你能学得这些方法,学习将会更快一步!
  6. 读后感:软件测试经验与教训
  7. 使用freemarker模板生成word文档
  8. Spring Cloud基础入门
  9. JAVA day10、11、12 飞机大战
  10. AcWing 4240. 青蛙(最短路 or 最小生成树)
  11. 噪声报警c语言程序,环境噪声监测器(软件部分).doc
  12. 自动驾驶技术越来越火,浅谈一些对百度Apollo开放平台8.0的看法和认知
  13. genymotion报错an error occured while deploying the file解决办法
  14. adb 查看手机闪存类型
  15. 空间注意力 通道注意力_注意力发生了什么变化?
  16. 表妹也录取了计算机专业,作为过来人要给她领好路!
  17. 饿了么table排序
  18. 缩减openssl库体积
  19. 三观不合,永远不会是一路人!
  20. react--随笔3

热门文章

  1. 网狐框架移植到linux,Red Hat反驳Linux漏洞报告 应关注危急缺陷!
  2. Jmse Touchpad
  3. 51nod 1455 宝石猎人(记忆化搜索)
  4. 游戏中的“垂直同步”与“三重缓冲”究竟是个啥?
  5. 英雄联盟手游服务器什么时候修复,英雄联盟手游炸服是什么原因?LOL手游日服炸服什么时候修好...
  6. php早午晚问候语_php 自动变换随机问候语的简单示例
  7. Linux 下 ftp的详细配置
  8. AI作画,AIGC领域新的引爆点
  9. 谷歌浏览器地址转换成二维码的插件,只需几行代码即可实现
  10. 《Android安全技术揭秘与防范》目录—导读