Debian Linux Wheezy 安裝 GTX 1080 GPU 顯示卡 + R 軟體

Linux 核心資訊:Linux debian64 3.2.0-4-amd64

昨天買的 GTX 1080 Turbo OC 8G 顯示卡寄來,於是把之前那張便宜的 GeForce 210 顯示卡換掉,重新開機後進入 R,本來以為之前已經裝好了 Navidia CUDA Toolkit 跟 gpuR, gputools , 結果紛紛出現錯誤訊息,無法執行

於是上網搜尋看看別人在相同的作業系統下安裝 GTX 1080 的經驗,沒想到沒有人裝過

一開始我懷疑是 Debian Linux 版本太老舊,幾乎就快要昇級到 Debian Linux 8.x (Jessie) 了,將是個大工程,後來想想我以前做的滿多東西將會受到很大的影響,於是死馬當活馬醫,不昇級作業系統,後來東搞西搞終於搞定了。

這裡要特別註明的是,我的 Linux 作業系統向來不安裝 X window 圖形介面的,純文字介面操作。

以下是安裝過程:

apt-get purge nvidia*
apt-get autoremove

apt-get update
apt-get install binutils gcc make g++-4.6 build-essential linux-headers-$(uname -r)

sudo apt-get install mpich2 libglui-dev libxmu-dev libxi-dev

# 安裝 Linux OS 原始碼,因為需重新編譯顯示卡驅動
apt-get install linux-source-3.2
cd /usr/src
tar jxvf linux-source-3.2.tar.bz2

######################################
# Nvidia CUDA Toolkit
# 上次抓 6.0.37 版, 這次抓最新的 8.0.44 版
######################################
wget https://developer.nvidia.com/…/local_…/cuda_8.0.44_linux-run

export CC=/usr/bin/gcc-4.6

./cuda_8.0.44_linux-run

# reboot 電腦

export CUDA_HOME=/usr/local/cuda-8.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64

PATH=${CUDA_HOME}/bin:${PATH}
PATH=${CUDA_HOME}/bin/nvcc:${PATH}
export PATH

# 順便把上面幾行 export 寫到以下檔案最尾端
# /etc/profile
# /etc/bash.bashrc

export CC=/usr/bin/gcc-4.6

cd /tmp
wget http://cran.csie.ntu.edu.tw/src/contrib/gputools_1.1.tar.gz

/usr/bin/R CMD INSTALL gputools_1.1.tar.gz

# 進入 R, 因為我的 Linux 有兩個 R 版本, 用的是 3.2.0 版
/usr/bin/R

> library(gputools)
> install.packages(“gpuR”)

> library(gpuR)
> gpuInfo()

$deviceName
[1] “GeForce GTX 1080”

$deviceVendor
[1] “NVIDIA Corporation”

# Number of Streaming Multiprocessors = 20
$numberOfCores
[1] 20

$maxWorkGroupSize
[1] 1024

$maxWorkItemDim
[1] 3

$maxWorkItemSizes
[1] 1024 1024 64

$deviceMemory
[1] 8507162624

$clockFreq
[1] 1771

$localMem
[1] 49152

$maxAllocatableMem
[1] 2126790656

$available
[1] “yes”

$deviceExtensions
[1] “cl_khr_global_int32_base_atomics”
[2] “cl_khr_global_int32_extended_atomics”
[3] “cl_khr_local_int32_base_atomics”
[4] “cl_khr_local_int32_extended_atomics”
[5] “cl_khr_fp64”
[6] “cl_khr_byte_addressable_store”
[7] “cl_khr_icd”
[8] “cl_khr_gl_sharing”
[9] “cl_nv_compiler_options”
[10] “cl_nv_device_attribute_query”
[11] “cl_nv_pragma_unroll”
[12] “cl_nv_copy_opts”

$double_support
[1] TRUE

> deviceHasDouble()
[1] TRUE