Win10下双系统Ubuntu14.04+GTX1070+CUDAcuDNN+Tensorflow环境搭建
先說機器配置:
CPU:Intel Xeon E3-1230 v5 skylake平臺(此CPU無核顯)
主板:ASUS E3 Pro Gaming v5
RAM:8G
GPU:ASUS STRIX-GTX1070 O8GB
存儲:1個128G SSD + 1個 1T 機械硬盤 都是GPT分區
為什么先說機器配置呢?因為在安裝Ubuntu過程中這個相當重要,在網上找到的教程中,大多數是在筆記本電腦或者比較舊的電腦上安裝。如果你的機器是這一兩年內的新配置(一般都是UEFI+GPT),本教程應該會相對實用。不過,還是要先了解自己的機器是傳統的BIOS+MBR還是新的UEFI+GPT,相關內容可以看這里(關鍵是看看BIOS和UEFI長什么樣子)。而自己機器分區表是MBR還是GPT,在Win10下也可通過Win+X進入“磁盤管理”查看。我的機器是UEFI+GPT的,環境搭建也是以此為基礎。
1 Ubuntu安裝
1.1 Win10下的磁盤分區
考慮到雙系統的共存,需要在磁盤中為Ubuntu系統劃分空間。Win10下,通過Win+X進入磁盤管理查看分區,由于我的機器的128G SSD作為Win10系統C盤,所以我在仍有較大空間的D盤(機械硬盤)中為Ubuntu系統劃分100GB,步驟:在新加卷D:上右鍵->壓縮卷->填寫劃分的空間->壓縮->完成。此時可以看到在D盤下劃分了一個未分配的100GB空間:需要注意的是 ,無需對這100GB未分配空間改動,讓它保持 未分配就好。
1.2 Win10下的設置
這里主要是要禁用快速啟動,因為快速啟動會阻礙Ubuntu系統的掛載。
Win+X進入電源選項->選擇電源按鈕的功能->更改當前不可用的設置->將“啟用快速啟動”的選項去掉->保存修改。
1.3 UEFI下的設置
這里首先要重啟,華碩主板按Delete或者F2進入UEFI界面。1.3.1 UEFI禁用Fast Boot
進入UEFI后,按F7進入Advanced Mode,在Boot菜單下,將Fast Boot改為Disable。
1.3.2 UEFI更改CSM(重中之重)
在Fast Boot下面,可以看到CSM(Compatibility Support Module),這是主板可以兼容傳統BIOS和新UEFI引導的模塊,點入去將Boot Device Control 更改為UEFI only。
這里Legacy OPROM就是傳統BIOS引導,有人可能會問,為什么不保留初始的UEFI and?Legacy OPROM,就可以兼容兩種模式了?經過我的試驗,即多次安裝Ubuntu過程中,發現使用純UEFI引導的安裝更容易成功,特別在Ubuntu系統內的分區中(后面會提到)會更妥當。
1.3.3 UEFI禁用Secure Boot(自行選擇)
CSM下方的Secure Boot,點進去會看到Secure Boot的選項是灰色無法更改的。關于Secure Boot的問題,可以參考這里和這里。
但是當我將各種Key備份好,準備Delete?Platform Key (PK)時,我發現這樣會導致Win10系統重置,所以我并未執行此步,在后面步驟也正常,讀者可自行選擇是否執行此步。
1.4 制作Ubuntu的U盤啟動盤
網上大多數教程都會采用UltraISO,這里我用的是 Rufus。從官網下載好ubuntu-14.04.5-desktop-amd64.iso后,利用Rufus刻錄。注意,一定要在“分區方案和目標系統類型”中選擇->“用于UEFI計算機的GPT分區方案”。
1.5 開始安裝
重啟,華碩主板按Delete或者F2進入UEFI界面,選擇帶UEFI字樣的U盤啟動。進入GNU GRUB后,選擇Install Ubuntu。
后面的安裝有圖形界面引導,需要說明的是安裝方式及分區。由于要安裝雙系統,在安裝方式里一定要選擇“其它選項(Something else)”。
進入分區后,根據剛才在Win10下劃分的未分配100GB,可以在當前安裝界面中的分區表找到一個107876MB左右的空閑區域,選中,點擊左側“+”進行分區,共分三個區如下:
1. 300MB->邏輯分區->空間起始位置->EFI引導分區(EFI boot partition) ;
2. 8192MB->主分區->空間起始位置->交換空間(swap area);
3. 剩余所有空間->主分區->空間起始位置->Ext4日志文件系統(Ext4 journaling file system)->掛載點為“/”。
分區完成后,下面要選擇“安裝啟動引導器的設備”,這里選擇分區表中EFI引導分區(300MB)所在的設備,這個設備是分區表中的第一列,你可以在那里看到剛剛分的各個區所在的“設備”(實際上都在同一個硬盤上,但由于虛擬磁盤管理,不同的分區在不同“設備”上)。我的EFI引導分區在“dev/sdb3”上,那么“安裝啟動引導器的設備”就相應選擇“dev/sdb3”。分區過程圖可以看這里。
注意:
1.?交換空間的大小是根據機器本身的內存RAM大小決定的,可以根據實際情況分配。
2.?“安裝啟動引導器的設備”這里的“dev/”后面接的無論是“sda”還是“sdb”,選擇EFI引導分區對應的設備即可。順帶解釋一下“dev/sda”、“dev/sdb”的問題,這是在有兩塊不同的物理硬盤才會顯示,如果只有一塊硬盤的話,當然只能看見“dev/sda”了。
接下來的地區選擇、鍵盤布局、用戶名及密碼相對常規,可以自行設置。
1.6 安裝過程中可能出現的情況
這里可能出現的情況可以看我在這里的描述。最初在UEFI的CSM中一直選擇UEFI and Legacy OPROM的兼容模式,經常在分區的安裝步驟前后,不是無法掃描分區表(進入分區表時一片空白)導致無法分區,就是分區完成后安裝程序突然崩潰。最后選擇UEFI only后,安裝才正常進行。
回顧一下。
這里有個印象十分深刻,就是當時也嘗試過Legacy OPROM only的模式進行安裝,在分區選項中是沒有EFI引導分區這一選項的,只有“保留的 BIOS 啟動區域”選項(在UEFI only的模式下EFI引導分區和保留的 BIOS 啟動區域都有),分區完成后也正常,但在最后安裝復制文件時報錯,原因應該BIOS安裝往磁盤寫文件時默認磁盤分區表是MBR,而我的磁盤分區表是GPT,會導致讀寫出現問題。
另外,在UEFI and Legacy OPROM的兼容模式下安裝,假如分區步驟未給“保留的 BIOS 啟動區域”分配空間,安裝程序提醒你要給“保留的 BIOS 啟動區域”分配至少1MB,實際上這是不需要的,采用UEFI引導的安裝,給EFI引導分區分配空間就足夠了。
所以,再次要提醒,在UEFI的CSM中一定要選擇UEFI only,避免兼容問題。
One more thing. 有時安裝在分區完成后,安裝程序也可能崩潰,這時你先重啟退出安裝回到Win10下的磁盤管理,可以看到分區的確是完成了,你可以選擇將這些分區右鍵->刪除卷,使其變回未分配狀態。但是,EFI系統分區是無法以此方式刪除的,可以選擇DiskGenius進行。然后嘗試安裝Ubuntu。
2 顯卡驅動安裝
可以先去 這里確定顯卡驅動的版本,我的是GTX1070。
安裝完成后,重啟進入Ubuntu系統,Ctrl+Alt+T打開終端。執行順序如下:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-367 sudo apt-get install mesa-common-dev sudo apt-get install freeglut3-dev sudo reboot顯卡驅動安裝完成重啟進入Ubuntu系統,屏幕分辨率應該顯示正常。
3 CUDA&cuDNN安裝
3.1 CUDA
先到 官網下載Cuda8.0。
下載完成后,打開終端,先進入CUDA安裝程序所在的目錄(cd命令可以跳轉目錄),然后執行:
sudo sh cuda_8.0.44_linux.run首先會出現安裝協議,按Space向下翻,輸入accpet接受協議,需要注意的是:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.**?(y)es/(n)o/(q)uit: n這里一定要選擇no,否則會導致之前的顯卡驅動被覆蓋。
安裝完成后注意看提示,有問題可以參考這里。(我沒遇到)
在終端配置環境變量:
nano ~/.bashrc在最后增加以下兩行:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}Ctrl+X 保存并離開,回到終端,讓環境變量馬上生效:
source ~/.bashrc3.2?cuDNN
先到官網下載cuDNN v5.1,需要先注冊并做問卷調查,下載中選擇cuDNN v5.1 Library for Linux。
下載完成后,打開終端,先進入cuDNN文件所在的目錄(cd命令可以跳轉目錄),然后執行:
終端回到根目錄,輸入命令檢查顯卡配置是否正常:
nvidia-smi
4 Tensorflow源碼安裝
4.1 Bazel安裝配置
由于Tensorflow采取源碼安裝的方式,所以需要Bazel進行編譯,官方教程可以看這里。執行順序如下:
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list curl https://bazel.io/bazel-release.pub.gpg | sudo apt-key add - sudo apt-get update && sudo apt-get install bazel在“curl https://bazel.io/bazel-release.pub.gpg | sudo apt-key add -”步驟中,可能會由于網絡原因下載較慢,可以直接用瀏覽器打開“https://bazel.io/bazel-release.pub.gpg”進行下載,隨后進入該文件目錄執行“sudo apt-key add bazel-release.pub.gpg”。
4.2 Tensorflow源碼配置及編譯
在python2.7下,先要安裝環境依賴包:
sudo apt-get install python-numpy swig python-dev python-wheel python-pip git從github上克隆Tensorflow源碼到本地:
git clone https://github.com/tensorflow/tensorflow切換到最新的r0.11版本(需要先進入保存Tensorflow源碼的目錄):
git checkout r0.11開始配置(同樣需要先進入保存Tensorflow源碼的目錄):
./configure Please specify the location of python. [Default is /usr/bin/python]: Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N No Google Cloud Platform support will be enabled for TensorFlow Do you wish to build TensorFlow with Hadoop File System support? [y/N] N No Hadoop File System support will be enabled for TensorFlow Found possible Python library paths:/usr/local/lib/python2.7/dist-packages/usr/lib/python2.7/dist-packages Please input the desired Python library path to use. Default is [/usr/local/lib/python2.7/dist-packages]/usr/local/lib/python2.7/dist-packages Do you wish to build TensorFlow with GPU support? [y/N] y GPU support will be enabled for TensorFlow Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 8.0 Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: Please specify the Cudnn version you want to use. [Leave empty to use system default]: 5 Please specify the location where cuDNN 5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: Please specify a list of comma-separated Cuda compute capabilities you want to build with. You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus. Please note that each additional compute capability significantly increases your build time and binary size. [Default is: "3.5,5.2"]: 6.1注意:最后的“6.1”計算能力是根據自身顯卡決定的,可以到這里查看。
開始配置后,首先會自動下載一些環境依賴的包,然后開始配置。
另外,在配置這個步驟,很多教程都說“一定要顯示成功,不能出現error”。我的機器在Tensorflow配置時一些環境依賴的包無法下載,導致后面Bazel編譯出現問題,所以我決定使用別人編譯好的whl安裝Tensorflow。這里有人可能會有疑惑,解釋一下這個Bazel編譯Tensorflow源碼的意義,編譯源碼成功后,是會生成一個“tensorflow-0.11.0rc0-py2-none-any.whl”的文件,然后通過“sudo pip install tensorflow-0.11.0rc0-py2-none-any.whl”安裝才算完成。
這里有人可能又會問,為什么要這么麻煩編譯源碼生成一個whl去安裝呢?的確,在Tensorflow官方安裝教程里的Pip Installation方式,下載支持GPU的whl然后通過pip安裝就行了,步驟如下:
# Ubuntu/Linux 64-bit sudo apt-get install python-pip python-dev # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 # <strong>Requires CUDA toolkit 7.5 and CuDNN v5. For other versions, see "Install from sources" below.</strong> export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0rc0-cp27-none-linux_x86_64.whl # Python 2 sudo pip install --upgrade $TF_BINARY_URL可以看到,官方解釋說,這個whl支持的CUDA是7.5版本,而當前CUDA最新版本是8.0才支持10系GPU(也有說法CUDA 7.5也可以支持10系GPU不過需要調整,這個大家自行搜索),因此,通過Bazel編譯Tensorflow源碼生成的whl才可以在安裝后支持10系GPU。
那么回過頭來,別人編譯好的whl安裝Tensorflow,在哪里可以找到呢?可以看這里。在這里要感謝這位博主的分享!
如果你配置成功選擇自行編譯并安裝,可以接下去看4.3;如果想選擇利用別人編譯好的whl安裝Tensorflow,可以跳過4.3從4.4開始。
4.3?編譯Tensorflow源碼并安裝
Tensorflow配置完成后,開始編譯源碼并安裝(注意文件的保存目錄):
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0rc0-py2-none-any.whl至此,整個Tensorflow環境搭建就已經完成,可以跑一下Tensorflow官方的測試代碼。
4.4 使用編譯好的whl安裝Tensorflow
下載whl好后,因為該whl的編譯是在Ubuntu16.04下進行,所以先要將Ubuntu系統升級,這里升級是必須的,如果直接安裝該whl,會報關于“GLib”的錯誤,這是由于編譯環境造成的。Ubuntu14.04系統升級至Ubuntu16.04命令如下:
sudo update-manager -d一般來說,該命令需要執行兩次,因為第一次執行,系統會更新當前14.04版本內的軟件,然后重啟后仍然是14.04版本,這時再次執行該命令,就會進行Ubuntu16.04升級。
系統升級完成后,終端執行安裝(先進入該whl的保存目錄):
sudo pip install tensorflow-0.11.0rc0-py2-none-any.whl至此,整個Tensorflow環境搭建就已經完成,可以跑一下Tensorflow官方的測試代碼。
4.5 在Pycharm中使用Tensorflow
由于個人習慣在Pycharm中寫Python代碼,下面說說Tensorflow在Pycharm的配置,終端執行:
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig sudo cp /usr/local/cuda-8.0/lib64/libcufft.so.8.0 /usr/local/lib/libcufft.so.8.0 && sudo ldconfig sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig然后以運行/tensorflow/models/image/mnist/convolutional.py為例,顯示下圖說明Tensorflow以GPU的方式運行代碼:
參考教程:
http://jingyan.baidu.com/article/e3c78d6460e6893c4c85f5b1.html
http://www.tensordata.cn/t/ubuntu16-0-4-tensorflow0-11/63
?
總結
以上是生活随笔為你收集整理的Win10下双系统Ubuntu14.04+GTX1070+CUDAcuDNN+Tensorflow环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java多线程学习笔记。
- 下一篇: OSM数据分析及图形化显示以及各组员之间