如何在 gcc 版本之间切换以在 manjaro linux 上使用 cudnn 5 加速(cuda 7.5)构建 torch7 或 caffe?

Posted

技术标签:

【中文标题】如何在 gcc 版本之间切换以在 manjaro linux 上使用 cudnn 5 加速(cuda 7.5)构建 torch7 或 caffe?【英文标题】:how to switch between gcc versions to build torch7 or caffe with cudnn 5 acceleration (cuda 7.5) on manjaro linux? 【发布时间】:2016-10-30 10:09:33 【问题描述】:

我尝试在 manjaro linux 上使用 cuda 7.5 构建支持 cudnn5 的 torch7 或 caffe。

gcc 6.1 和 gcc 4.9 都可用。 gcc 6.1 与 cuda 7.5 不兼容,导致在构建torch7 和支持cudnn 5 的caffe 时出错。

gcc4.9 是从 AUR 存储库安装的:

jeanpat@dip4fish ~]$ whereis gcc-4.9
gcc-4: /usr/bin/gcc-4.9
[jeanpat@dip4fish ~]$ whereis g++-4.9
g++-4: /usr/bin/g++-4.9
[jeanpat@dip4fish ~]$ whereis g++
g++: /usr/bin/g++ /usr/share/man/man1/g++.1.gz
[jeanpat@dip4fish ~]$ whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz /usr/share/info/gcc.info.gz

这个想法是在编译之前从 gcc6.1 切换到 gcc4.9:

jeanpat@dip4fish ~]$ export CC=/usr/bin/gcc-4.9
[jeanpat@dip4fish ~]$ export CXX=/usr/bin/g++-4.9

但是当 gcc 被调用时,这仍然是 6.1 版本:

[jeanpat@dip4fish ~]$ gcc --version
gcc (GCC) 6.1.1 20160602  

.bashrc 被修改为:

$ echo $LD_LIBRARY_PATH 
:/opt/cuda/lib64:

如何透明地临时切换到gcc 4.9(不修改makefile或者caffe和torch7的install.sh脚本)?

【问题讨论】:

导出命令 export CC=gcc-4.9 CXX=g++-4.9 不会改变 gcc/g++。但可以与 ./configure 一起使用:export CC=gcc-4.9 CXX=g++-4.9 && ./configure 并且“CC/CXX 命令”可以与某些 Makefile 一起使用,例如:make CXX=g++-4.9 AFAIK Caffe 不支持 CuDNN 3 以外的任何东西。 "可选依赖项:OpenCV >= 2.4 包括 3.0 IO 库:lmdb、leveldb(注意:leveldb 需要 snappy)用于 GPU 加速的 cuDNN (v5)" 【参考方案1】:

如果您不想更改任何文件,可以使用此 hack:

cd /usr/bin/
mv gcc gcc-6.1-back
mv g++ g++-6.1-back
ln -s gcc-4.9 gcc
ln -s g++-4.9 g++

...然后很容易恢复到“6.1”...删除链接等。


如果 Manjaro 具有 /etc/alternatives/ 机制,您可以将两个 gcc 版本“安装”到 /etc/alternatives/ ,就像这个 java 示例 When and Why run alternatives --install java jar javac javaws on installing jdk in linux .... 并使用单个命令切换版本,+一个设置。

【讨论】:

不幸的是,debian/ubuntu 上提供了替代方案 至少,torch7 已经构建好了。 Theano 从测试脚本 (deeplearning.net/software/theano/tutorial/…) 调用时以 cpu 模式运行... 有没有办法在没有root访问权限的情况下完成这项任务..?我在没有 root 访问权限的远程服务器上工作..

以上是关于如何在 gcc 版本之间切换以在 manjaro linux 上使用 cudnn 5 加速(cuda 7.5)构建 torch7 或 caffe?的主要内容,如果未能解决你的问题,请参考以下文章

RxJS:如何切换以在多个行为主题源之间切换

如何定义键绑定以在 emacs 中的次要模式之间切换?

切换节点版本以在 heroku 上构建

Manjaro中源码安装gcc7.1

Manjaro(Gnome)输入法切换不了(已解决)

实现侧边导航以在活动之间切换