起因

从日本耍完回来也有好多天了,是时候该收心干活了。

由于本人电脑原先都是A卡,非常蛋疼,故准备配一台N卡主机,并且最好扩展性强一些,以后好搞个SLI,提高一下性能 在二手东上面比对了半天,决定了一个配置均衡并且有扩展空间的配置,如下:

CPU: intel i7 6700k
motherboard: ASUS z170 a
RAM: 16G × 2
ssd: 500G
HDD: 3T
GPU: MSI DUKE GTX1080

理论上讲,gtx1080性价比非常高(本来想选技嘉的GAMING系列,不过没有现货,所以选择了疯狂堆料的微星,DUKE是黑龙系列,性价比也不错)。 之后如果有钱,就再买一个组SLI。微星的GPU散热非常霸道,所以只给CPU加了水冷,可以选择tt或者酷冷至尊。 至于机箱,我选了贼船的一个中塔(回头想想,机箱有些小,不过双显卡应该问题不大)。 由于这次显卡功率优化幅度很大,gtx1080只需180w(公版)。所以机箱应该500w就足够了,为了今后的扩展,大一些应该 更好,配件都选择硬通货,最后确定为贼船的金牌650w电源。

机箱安装

这个不是重点,累了一天反正终于是拼好了,成功点亮的瞬间还是非常激动的。 之后也是顺利的安装win10,测试了下性能,非常满意。

环境配置

最重要的事情就要开始了,安装Ubuntu。这里先说一个坑,Ubuntu 14 版本对于最新的6XXX系列CPU支持不是特别好, 我原来认为老一点的版本会不会比较稳定,事实是我想多了,经常发生CPU进程死锁(当然也有可能我是个例)。 所以我非常不情愿的删除了这个系统。如果是4XXX或者更老的CPU,那么就可以无视这一点了。

最终确定搭建的环境为:

Ubuntu 16.04 LST
CUDA 8.0 + caffe

安装步骤如下:

1. 刻录ISO。

这里可以是U盘(推荐)或者是光盘,然后利用刻录软件进行刻录即可,注意的是 U盘刻录的过程中首先会被格式化,所以请先进行备份。我比较喜欢用UltraISO(中文名叫碟软通), 因为可以一直试用,是一款相当好用的软件。使用方法非常简单,首先文件->打卡->选择刻录的光驱, 然后启动->写入硬盘镜像,选择自己插入的那个U盘然后点写入就可以了。

2. 为新系统在硬盘上留下空间

这一点也非常重要,因为我选择将windows和Ubuntu完全隔离,所以我需要在硬盘上面弄一块完全独立的空间。 我比较喜欢用diskgenius这个软件。 对于我而言,安装windows的时候我就已经在HDD上面分出了一块未定义的空间。 注意的是,如果要想将一个已经在安装win10时分配好了的空间进行重新分割,你需要删除这个分配好了的空间, 使其变成未定义的空间再重新划分。 当然,在以后的扩展中,我们也可以加装一块新的SSD,然后直接在新盘上面安装系统。

3. 安装Ubuntu

首先重启进入EFI(老的主板为BOIS,我们不关心,不同的主板进入方式不同,ASUS的你只需要狂按F2,如果安装完windows 应该很熟练)。然后在BOOT选项中选择你刻录好的U盘即可,然后如果你进入了grub并且出现了几个选项 (包括install Ubuntu之类的),那么就说明你选对了。然而这并没有什么卵用,当你开心的选择install Ubuntu之后, 你会发现,显示器变黑,啥也没有发生(如果出现安装界面就无视我这句话)。 卡在这里的主要原因是因为安装程序并不能从显卡中得到图像输出,有两种解决方式:

  • (1). 禁用独立显卡。你可以拔掉显卡,或者是在主板选项上面禁用。
  • (2). (推荐) 在进入grub之后,按e进入编辑模式,找到有
quiet splash ---

那一行,将其修改为(nvidia 显卡):

quiet splash nomodeset ---

然后按F10,就可以进入安装界面了。

之后选择语言,键盘啥的都不是重点,重点是空间分配,可以参考网上的方式。重点如下:

  • (1). 最好单独建立/boot分区,并且最好在连续块的开始,系统加载的分区也选择这个分区。
  • (2). swap 分区为内存大小的1到2倍。
  • (3). /boot 为主分区,其他为逻辑分区即可,除了swap,其他都为ext4文件格式。

本人比较懒,所以只设立了/boot, swap, /home 和 / 这几个分区,当然其实可以设置的更加细致。 然后有一点,最好断网安装,并且不需要更新任何驱动和软件,这样系统安装速度能快一些。 但是仍然不要高兴太早,因为英伟达的驱动没有安装,所以安装完系统重新启动之后,我们仍然会发现很多问题。 这是直接进入系统,会发现闪屏,任务栏不见了等等现象。这个时候,我们需要安装显卡驱动来解决:

  • (1). 在系统登陆界面,按ctrl + alt + F1,进入命令行界面,用账户名和密码登陆。
  • (2). 添加nvidia源,更新Ubuntu软件源。这个期间,一定要有网络连接,最方便的方法就是网线直连。
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get upgrade
  • (3). 安装nvidia驱动
sudo apt-get install nvidia-367 
sudo apt-get install mesa-common-dev 
sudo apt-get install freeglut3-dev

安装完毕之后,重启系统就可以正常进入ubuntu系统了。

4. 安装CUDA

由于CUDA 8.0之后的版本才支持GTX1080,所以我们直接选择最新的版本。 在nvidia的官网上面需要注册一下。选择runfile文件进行下载安装比较方便。安装过程中, 它会提示你是否安装361这个低版本的驱动,我们显然要选择no!!!其他的就按照默认设置就可以了。 安装完毕之后执行如下命令:

nvidia-smi

你可以看到如下显示:

Mon Aug  1 17:24:36 2016       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.35                 Driver Version: 367.35                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Off  | 0000:01:00.0      On |                  N/A |
|  0%   43C    P8    13W / 240W |    539MiB /  8110MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      3542    G   /usr/lib/xorg/Xorg                             246MiB |
|    0      4827    G   compiz                                         153MiB |
|    0      5969    G   ...ow<PasswordSeparatedSigninFlow --disable-    91MiB |
|    0      9426    G   /proc/self/exe                                  45MiB |
+-----------------------------------------------------------------------------+

那么就说明安装成功了! 然后我们去CUDA的example目录上面编译一个最常用的测试实例看一下:

cd 1_Utilities/deviceQuery
make
./deviceQuery

正常情况下,会有类似于如下输出:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 1080"
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    6.1
  Total amount of global memory:                 8110 MBytes (8504279040 bytes)
  (20) Multiprocessors, (128) CUDA Cores/MP:     2560 CUDA Cores
  GPU Max Clock rate:                            1848 MHz (1.85 GHz)
  Memory Clock rate:                             5055 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 2097152 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 1080
Result = PASS

caffe的安装我们之后再说,因为是Ubuntu 16.04这个系统,所以又有很多需要特别注意的地方!!!

update: caffe 安装点击这里