2018/6/22

cuda9.0 + cunn 7.05 on ubuntu 18.04

tensorflow 官網使用 cuda Toolkit 9.0, 如果在 ubuntu 18.04 上 build 的話,要改用就版本的 gcc (ubuntu 18.04 的 gcc 太新)。

這一篇 5 月的文,好像有 2018 的 patch,安裝好像沒提到要重新 build。直接用 17.10 的 deb + patch 就可以了。

使用 cuda 9.2 的話,package 好像還沒完成,所有相依的 package 都要自己 build 過一次。(雖然github 上已經有 build 完成的 script)
所以,為求簡單,還是依照 cuda toolkit 9.0 有支援的版本 (16.04, 17.10) 選一個。(16.04 是 LTS, support 到2021)。

然後 nvidia cuda toolkit 網站download link 是 9.2, 9.0 要到 archive 去找。
所以不能 follow nvidia cuda toolkit 的 link download


真的,跟這個 說明的一樣。可以直接在 18.04 上安裝cuda-9.0 和 cudnn 7.05,不會有 gcc 版本過新的問題。

然後 pip install tensorflow 時出現 exception .... MemoryError,有一個 link 說,加上 --no-cache-dir 就可以。
然後 follow 說明.. 開啟 python..try:
>>from tensorflow.python.client import device_lib
>>device_lib.list_local_devices()
2018-06-25 10:45:58.955248: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2018-06-25 10:45:59.256407: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:898] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-06-25 10:45:59.257329: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1356] Found device 0 with properties: 
name: GeForce GTX 1050 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.62
pciBusID: 0000:01:00.0
totalMemory: 3.95GiB freeMemory: 3.56GiB
2018-06-25 10:45:59.257385: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0
2018-06-25 10:46:04.408233: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-06-25 10:46:04.408308: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929]      0 
2018-06-25 10:46:04.408330: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0:   N 
2018-06-25 10:46:04.425190: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/device:GPU:0 with 3290 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1050 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 1869392221051952077
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 3450404864
locality {
  bus_id: 1
  links {
  }
}
incarnation: 8818617857580197841
physical_device_desc: "device: 0, name: GeForce GTX 1050 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1"
]



想要 follow 這一篇, test build cuda sample 得話。會出現 gcc 版本太新問題。
所以,遵照這一篇,裝完m gcc-6, g++6 (好像已經裝好),
然後手動建 gcc-6 link 到 /usr/local/cuda/bin/gcc, g++ 也一樣。
sudo ln -s /usr/bin/gcc-6 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/cuda/bin/g++
就可以 make OK 了。


200823 更新:
ubuntu 18.04. CUDA 10.2
libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev libprotobuf-dev protobuf-compiler libhdf5-dev libleveldb-dev libsnappy-dev libopencv-dev libatlas-base-dev python-numpy
cmake 3.10 一樣會在link 的時候找不到 cublas.要用 3.14 以上版本。可以自己build一個版本

使用 cuda10.2 之後,系統就只有 cmake 的問題,其他都不用修改了。
上面的 package install 完,改 cmake 3.14 之後..
mkdir build && cd build
cmake ..
make
make install
這樣就可以了。

install path 是 caffe/build/install

沒有留言:

張貼留言