Ubuntu14.04安裝CUDA8.0+kaldi詳細步驟
Ubuntu14.04安裝CUDA8.0+kaldi詳細步驟
一、預先安裝
- kaldi需要安裝在帶有NVIDIA顯示卡的物理機或者伺服器上。
- 下載 Ubuntu 14.04 版本,並且取消更新,防止出現問題。
- 安裝 CUDA 以及 Kaldi 之前的相關依賴檔案的基本配置
輸入指令:
sudo apt-get update
sudo apt-get install libtool
sudo apt-get install autoconf
sudo apt-get install wget
sudo apt-get install perl
sudo apt-get install subversion
sudo apt-get install build-essential
sudo apt-get install gfortran
sudo apt-get install libatlas-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install zlib1g-dev (中間的是數字 1)
sudo apt-get install gawk
二、安裝 CUDA
複雜常規版:
1. 下載 cuda_8.0.61_375.26_linux.run 驅動
- 放在主資料夾下
2. 安裝 CUDA 依賴庫
- 安裝軟體:
輸入:sudo apt-get install ppa-purge
- 增加安裝源:
輸入:sudo apt-add-repository ppa:xorg-edgers
- 更新安裝源:
輸入:sudo apt-get update
輸入:
sudo apt-get install freeglut3-dev
sudo apt-get install build-essential
sudo apt-get install libx11-dev
sudo apt-get install libxmu-dev
sudo apt-get install libxi-dev
sudo apt-get install libgl1-mesa-glx
sudo apt-get install libglu1-mesa
sudo apt-get install libglu1-mesa-dev
3. 刪除已有的 nvidia:
輸入:
sudo apt-get remove --purge nvidia*
4. 編輯黑名單
輸入:
sudo vi /etc/modprobe.d/blacklist.conf
- 在終端的末尾新增:
blacklist amd76x_edac
注:這個本身就有,就在這後面新增後面以下五行,注意不要拼錯
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
5. 檢查是否安裝了kernel header和 package development
$ uname –r
檢視 kenel header資訊
$ sudo apt-get install linux-headers-$(uname -r)
檢查全部通過。繼續安裝
6.檢視自己的驅動狀態
$ lsmod | grep nouveau
如果有顯示就要執行下面的操作了
建立blacklist-nouveau.conf
touch /etc/modprobe.d/blacklist-nouveau.conf
gedit blacklist-nouveau.conf
下面是新增的內容
blacklist nouveau
options nouveau modeset=0
更新一下:
$ sudo update-initramfs -u
執行檢查是否禁用
$lsmod | grep nouveau
沒有東西輸出變是成功啦
然後再更新並重啟
$ sudo update-initramfs -u
$ sudo reboot
執行檢查是否禁用
$lsmod | grep nouveau
7. 關閉圖形化介面並安裝 CUDA
- 操作:按住Ctrl+Alt+F1
輸入:賬號和密碼
輸入:
sudo service lightdm stop
chmod +x cuda_8.0.61_375.26_linux.run
sudo ./ cuda_8.0.61_375.26_linux.run
注:之後一直長按回車鍵,直到百分比進度條到 100%,之後除了OpenGL選擇(n),其他全部選擇(y)es,然後一路回 車就可以了。
如果在OpenGL處選擇了yes就會導致登陸介面 無限迴圈和黑屏。
等待 CUDA 安裝完成之後,螢幕最後會顯示:
8. 設定環境變數
輸入:
sudo vi /etc/profile
- 在檔案的最後一行新增 PATH="$PATH:/usr/local/cuda-8.0/bin"
- 然後儲存並退出
輸入:
source /etc/profile
輸入:
echo $PATH
輸入:
sudo vi /etc/ld.so.conf
- 在第二行寫入 include /usr/local/cuda-8.0/lib64
檢視一下是否設定成功了
$ env
如果有上面新增的路徑則為成功。
注:如果是第一次裝機,先要設定一下 root 密碼
輸入:
sudo passwd root
root 密碼設定好之後,輸入 su 進入 root 賬號
輸入:ldconfig
輸入:exit
輸入:sudo service lightdm start
Alt + ctrl +F7,返回到圖形化登入介面,輸入密碼登入。 倘若沒有遇到迴圈登入的問題,基本說明cuda的安裝成功了
9.檢查是否成功
檢查路徑/dev/下 有無存在名為nvidia*,我的有三個
如果沒有的話官方也給瞭解決方案,如下:
新建一個指令碼檔案,把官網給的程式碼貼上進去,並執行就好。我這裡新建一個名為 nvi.sh的檔案
輸入:
$touch nvi.sh
$sudo gedit nvi.sh
輸入下列內容,並儲存
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
給這個指令碼賦予執行許可權,然後執行
$ sudo chmod a+x nvi.sh
$ sudo ./nvi.sh
10.檢查 CUDA Toolkit
$nvcc –version
會顯示cuda8.0的版本資訊
11.嘗試編譯cuda的例子
cd到例子存放的路徑,預設路徑是 ~/NVIDIA_CUDA-8.0_Samples (即 /home/xxx/ NVIDIA_CUDA-8.0_Samples, xxx是你自己的使用者名稱。或者直接cd,然後ls,可能會出現NVIDIA_CUDA-8.0_Samples資料夾)
然後終端輸入:
# make
執行生成的二進位制檔案
cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release
執行一下 $ ./deviceQuery
檢查一下系統和CUDA-Capable device的連線情況
$ ./bandwidthTest
出現Result=Pass 意味著終於安裝好啦
三、安裝 Kaldi
第一步:下載 Kaldi 原始碼
現在 Kaldi 的最新網址是:http://www.kaldi-asr.org/
同時,下載地址是:https://github.com/kaldi-asr/kaldi
下載後,提取並放在主資料夾下即可。
注:可以選擇git clone ,但是網路不穩定或者網速較慢時可以選擇直接去github上下載kaldi的zip包,然後解壓縮安裝。
第二步:準備階段
編譯 Kaldi 之前需要完成:
1. 修改 gcc 以及 g++版本
注:Ubuntu14.04 預設安裝的 gcc/g++版本是 4.8,編譯 Kaldi 所需的版本要在 4.8.3 以上,所以 需要要把 gcc/g++版本升級成 4.9
1.1 首先檢視安裝的版本:
輸入:
ls /usr/bin/gcc*
如果沒有版本 4.9,則需要安裝:
輸入:
sudo apt-get install gcc-4.9
sudo apt-get install gcc-4.9-multilib
sudo apt-get install g++-4.9
sudo apt-get install g++-4.9-multilib
1.2 安裝之後選擇當前版本
修改 gcc
輸入:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40
之後輸入:
sudo update-alternatives --config gcc
之後手動選擇所需 gcc 版本編號,輸入 1,即選擇當前 gcc 版本為 4.9,之後回車
修改 g++
輸入:
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40
之後輸入:
sudo update-alternatives --config g++
之後需要手動選擇 g++版本編號,輸入 1,即選擇當前 g++版本為 4.9,之後回車
1.3 修改後檢視當前版本
輸入:
gcc --version
g++ --version
檢視當前版本 ,如果顯示為4.9則升級gcc/g++成功。
2. 修改預設 shell
輸入:sudo ln -s -f bash /bin/sh
3. 安裝 git
輸入:sudo apt-get install git
第三步:編譯 Kaldi
輸入:
cd ./kaldi-master/tools
make –j 4
注:如果中途沒有退出的話就基本沒問題了。需要注意的是安裝過程中全程保持網路暢通。
如果實在看下載進度條沒速度,就自己下載好相應的包,放在應該存放的目錄下即可。
輸入:
cd ../src
./configure
注:檢查 OpenFST 和 ATLAS 兩個外部庫是否安裝成功,並且檢查 CUDA 是否安裝成功。如果出現提示OpenFST沒有安裝,到tools目錄下刪除openfst的資料夾,重新解壓openfst的壓縮檔案,再進入到openfst資料夾下./configure然後make install。
沒問題的話應該有如下顯示:
輸入:
make depend –j 4
make –j 4
注:如果有 8 個 cpu 可以將 4 替換成 8,這部分時間會比較長。
第四步:單獨編譯 cudamatrix
輸入:
cd kaldi-maser/src/cudamatrix/
sudo nano Makefile
- 把檔案中的 TESTFILES 改成 BINFILES
輸入:
cd ~/kaldi-master/src/cudamatrix
make all
./cu-vector-test
如果不報錯並顯示如下資訊,則說明 CUDA 進行矩陣運算了。
自此,Kaldi 就安裝成功了。