轉載請注明出處:
http://www.cnblogs.com/darkknightzh/p/5717234.html
參考網址:
https://github.com/NVIDIA/nccl
https://github.com/ngimel/nccl.torch
1. 在https://github.com/NVIDIA/nccl中下載nvidia的nccl,並解壓。
2. 將終端cd到該文件夾。
3. 輸入如下命令:
make CUDA_HOME=<cuda install path> test
如:
make CUDA_HOME=</usr/local/CUDA-7.5> test
4. 等待編譯完成后,將下面的加入.profile中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/XXX/nccl-master/build/lib
5. 更新.bashrc(我這邊沒管用,重啟后就行了)
sourch ~/.bashrc
6. 運行測試程序,成功了。
./build/test/single/all_reduce_test 10000000
說明:官網中說:To install, run make PREFIX=<install dir> install
and add <instal dir>/lib
to your LD_LIBRARY_PATH
.
但是我沒有用這一步,也可以了。。。
不指定prefix,則可執行文件默認放在/usr /local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc。其它的資源文件放在/usr /local/share。你要卸載這個程序,要么在原來的make目錄下用一次make uninstall(前提是make文件指定過uninstall),要么去上述目錄里面把相關的文件一個個手工刪掉。
指定prefix,直接刪掉一個文件夾就夠了。
7. 直接使用luarocks install nccl或者在https://github.com/ngimel/nccl.torch中下載工程,並cd到該文件夾,使用luarocks 進行install即可。
=============================================================================================
180320更新:
今天在使用anaconda並編譯caffe時,出現crtbeginS.o:unrecognized relocation的錯誤。解決方法吐下:
1. 修改makefile文件
直接在Makefile最開始增加下面一句話:
CXX := /usr/bin/g++-4.9
之后在終端中直接使用官方的編譯命令即可:
make CUDA_HOME=/usr/local/cuda-8.0
方法2:輸入make時增加CXX標志位
https://www.cnblogs.com/sky-heaven/p/6272408.html中指出:
= 是最基本的賦值
:= 是覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號后面的值
+= 是添加等號后面的值
因而考慮直接添加CXX的標志,如下:
make CXX=/usr/bin/g++-4.9 CUDA_HOME=/usr/local/cuda-8.0
弱弱的說一下,終端中輸入下面的命令,也可以:
make CXX?=/usr/bin/g++-4.9 CUDA_HOME=/usr/local/cuda-8.0
如果要使用nccl,如https://www.cnblogs.com/haiyang21/p/7183413.html中所說,需要Makefile.config中取消注釋USE_NCCL := 1,並將NCCL的include和lib路徑增加到Makefile.config中,具體如下:
USE_NCCL := 1 INCLUDE_DIRS += /path/nccl/build/include LIBRARY_DIRS += /path/nccl/build/lib
但如果使用的是anaconda,可能會提示找不到某個庫。。。后來決定不使用nccl了,因而沒有繼續深入查找原因。見諒。
安裝nccl及可能碰到的問題見:
http://www.cnblogs.com/darkknightzh/p/5717234.html
http://www.cnblogs.com/darkknightzh/p/6950263.html
180320更新結束
=============================================================================================