labs.beatcraft.com

CUDA5/CentOS6.4

This article explains how to install CentOS 6.4 and CUDA5 on a PC, which is equipped with Tesla K20.

CUDA_Tesla.jpg


Hardware Specification

The specification of hardware is shown below

Since ETSK20-5GER does not have terminals of display outputs, such as D-SUB, DVI, HDMI, and so on, use the terminals of the mother board are used. To use the terminals, at the configuration of UEFI, the Primary Display is On Board.

To Install CentOS 6.4 (64bit)

The settings of installing CentOS 6.4 are shown below.

本稿では個別のパッケージのカスタマイズ設定は行っていません。
またFirewall、SELinuxは共にDisableに設定しています。

CentOS インストール後設定

CentOS 6.4(64bit版)インストール後の設定について記載します。

CentOSのアップデート

インストール直後のKernelバージョンは以下のとおりです。

$ uname -a
Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

yum コマンドでアップデートを実行します。

# yum update

アップデート完了後再起動を実行しアップデートしたKernelで起動することを確認します。

# reboot

再起動後のKernelバージョンは以下のとおりです。

$ uname -a
Linux localhost.localdomain 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

beatユーザを作成し、sudoにbeatユーザを追加します。

# useradd beat
# passwd beat
# /usr/sbin/visudo

 ...<&#30053;>
 ##      user    MACHINE=COMMANDS
 ##
 ## The COMMANDS section may have other options added to it.
 ##
 ## Allow root to run any commands anywhere
 root    ALL=(ALL)       ALL
 beat    ALL=(ALL)       ALL

パッケージ追加と設定

CUDAのインストールには直接関係はありませんが、作業をしやすくするため
ntpdとopensshをインストールします。

ntpdをインストールします。

# yum install ntp

ntpサーバを追加します。

# vi /etc/ntp/step-tickers

  # List of servers used for initial synchronization.
  ntp.nict.jp
  ntp.jst.mfeed.ad.jp
  ntp.ring.gr.jp

ntpdを起動します。

# /etc/init.d/ntpd start

ntpdをサービスに追加します。

# chkconfig --level 3 ntpd on
# chkconfig --level 5 ntpd on

opensshをインストールします。
既にインストールされている場合はこの手順はとばしてください。

# yum install openssh

/etc/ssh/sshd_config内のPermitRootLoginと
PermitEmptyPasswordsをnoに設定します。

# vi /etc/ssh/sshd_config

  ... <&#30053;>
  # Authentication:
 
  #LoginGraceTime 2m
  PermitRootLogin no
  #StrictModes yes
  #MaxAuthTries 6
  #MaxSessions 10
  ... <&#30053;>
  # To disable tunneled clear text passwords, change to no here!
  #PasswordAuthentication yes
  PermitEmptyPasswords no
  PasswordAuthentication yes
  ...

sshdを起動します。

# /etc/init.d/sshd start

sshdをサービスに追加します。

# chkconfig --level 5 sshd on
# chkconfig --level 3 sshd on

Tesla K20cドライバインストール

Tesla K20cドライバインストールについて記載します。

Tesla K20cドライバインストール準備

Tesla K20cドライバインストールのためにパッケージの追加、設定を行います。
開発用パッケージ、ライブラリ群(Development tools)をインストールします。

# yum groupinstall 'Development tools'

Tesla K20cのドライバ、CUDA5のインストール時にXが起動していると
エラーが起こるため、runlevel 3に変更し再起動を行います。

# vi /etc/inittab

  ...<&#30053;>
  # Default runlevel. The runlevels used are:
  #   0 - halt (Do NOT set initdefault to this)
  #   1 - Single user mode
  #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
  #   3 - Full multiuser mode
  #   4 - unused
  #   5 - X11
  #   6 - reboot (Do NOT set initdefault to this)
  #
  id:3:initdefault:

# reboot

Tesla K20cドライバのダウンロード

再起動後、以下のURLよりNVIDIA-Linux-x86_64-319.23.runをダウンロードします。
http://www.nvidia.co.jp/object/linux-display-amd64-319.23-driver-jp.html

NVIDIA-Linux-x86_64-319.23.runを実行し、ライセンスに同意後インストールが完了します。
インストール完了後/proc/driver/nvidia/にversionファイルが作成されます。

# chmod +x NVIDIA-Linux-x86_64-319.23.run
# ./NVIDIA-Linux-x86_64-319.23.run

# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  304.54  Sat Sep 29 00:05:49 PDT 2012
GCC version:  gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)

以下のURLに記載のあるように起動時ドライバを読み込むためのファイル(/etc/init.d/nvidia)を作成し、
runlevel3,5の起動時に実行するよう設定します。
http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#install-cuda-software

# vi /etc/init.d/nvidia

  #!/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

# cd /etc/rc5.d/
# ln -s S99nvidia ../init.d/nvidia
# cd /etc/rc3.d/
# ln -s S99nvidia ../init.d/nvidia

CUDA5のインストールとSampleの実行

CUDA5のインストールとCUDA5のSamplesについて記載します。

CUDA5のダウンロード

CentOS6 64bit版CUDA(cuda_5.0.35_linux_64_rhel6.x-1.run)を以下のURLから
ダウンロードします。
https://developer.nvidia.com/cuda-downloads

CUDA5のSampleインストール時にPATHが見つからずSampleがインストールされないのを防ぐため、
.bashrcに予めPATHを追加します。

$ cd /home/beat
$ vi .bashrc

  # .bashrc
 
  # Source global definitions
  if [ -f /etc/bashrc ]; then
          . /etc/bashrc
  fi
 
  # User specific aliases and functions
  export PATH=/usr/local/cuda-5.0/bin:$PATH
  export LD_LIBRARY_PATH=/usr/local/cuda-5.0/lib64:/usr/local/cuda-5.0/lib:$LD_LIBRARY_PATH

# source .bashrc

パッケージのインストール

Samplesのビルドで必要な以下のパッケージを予めインストールします。

# yum install freeglut-devel.x86_64 libXi-devel.x86_64 mpich2-devel.x86_64 libXmu-devel.x86_64

cuda_5.0.35_linux_64_rhel6.x-1.run を実行します。
インストール先ディレクトリはデフォルトの/usr/local/cuda-5.0を指定します。

# chmod +x cuda_5.0.35_linux_64_rhel6.x-1.run
# ./cuda_5.0.35_linux_64_rhel6.x-1.run

Samplesはデフォルトで/usr/local/cuda-5.0/samplesと/root/NVIDIA_CUDA-5.0_Samplesに
インストールされます。

rootユーザでビルドできるようにld.so.conf.d/cuda.confを追加しldconfigを実行します。

# cat /etc/ld.so.conf.d/cuda.conf

  /usr/local/cuda-5.0/lib
  /usr/local/cuda-5.0/lib64
# ldconfig

CUDA5 Samplesのビルドと実行

NVIDIA_CUDA-5.0_Samplesをbeatユーザでビルド、実行できるようにします。
/root/NVIDIA_CUDA-5.0_Samplesからコピーし、オーナーをbeatに変更しmakeを実行します。

# cp -afr /root/NVIDIA_CUDA-5.0_Samples /home/beat/.
# cd /home/beat
# chown -R beat.beat NVIDIA_CUDA-5.0_Samples
$ cd ~/NVIDIA_CUDA-5.0_Samples
$ make

ビルド完了後 NVIDIA_CUDA-5.0_Samples/bin/linux/release/に移動し、
NVIDIA CUDA Getting Started Guide for Linuxのページ内Running the Binariesに
記載されているdeviceQuery、bandwidthTestを実行します。
deviceQuery、bandwidthTest共にTesla K20cを用いていることが確認できます。

http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#running-binaries

$ cd ~/NVIDIA_CUDA-5.0_Samples/bin/linux/release/
$ ./deviceQuery
./deviceQuery Starting...
 
   CUDA Device Query (Runtime API) version (CUDART static linking)
  
   Detected 1 CUDA Capable device(s)
  
   Device 0: "Tesla K20c"
    CUDA Driver Version / Runtime Version          5.0 / 5.0
    CUDA Capability Major/Minor version number:    3.5
    Total amount of global memory:                 4800 MBytes (5032706048 bytes)
    (13) Multiprocessors x (192) CUDA Cores/MP:    2496 CUDA Cores
    GPU Clock rate:                                706 MHz (0.71 GHz)
    Memory Clock rate:                             2600 Mhz
    Memory Bus Width:                              320-bit
    L2 Cache Size:                                 1310720 bytes
    Max Texture Dimension Size (x,y,z)             1D=(65536), 2D=(65536,65536), 3D=(4096,4096,4096)
    Max Layered Texture Size (dim) x layers        1D=(16384) x 2048, 2D=(16384,16384) x 2048
    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
    Maximum sizes of each dimension of a block:    1024 x 1024 x 64
    Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 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:                     No
    Integrated GPU sharing Host Memory:            No
    Support host page-locked memory mapping:       Yes
    Alignment requirement for Surfaces:            Yes
    Device has ECC support:                        Enabled
    Device supports Unified Addressing (UVA):      Yes
    Device PCI Bus ID / PCI location ID:           1 / 0
    Compute Mode:
      < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
 
  deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 5.0, CUDA Runtime Version = 5.0, NumDevs = 1, Device0 = Tesla  K20c
$ ./bandwidthTest
[CUDA Bandwidth Test] - Starting...
Running on...
 
   Device 0: Tesla K20c
   Quick Mode
 
   Host to Device Bandwidth, 1 Device(s)
   PINNED Memory Transfers
     Transfer Size (Bytes)        Bandwidth(MB/s)
     33554432                     6431.7
 
   Device to Host Bandwidth, 1 Device(s)
   PINNED Memory Transfers
     Transfer Size (Bytes)        Bandwidth(MB/s)
     33554432                     6396.1
 
   Device to Device Bandwidth, 1 Device(s)
   PINNED Memory Transfers
     Transfer Size (Bytes)        Bandwidth(MB/s)
     33554432                     143752.5

設定完了後のHDD使用容量

設定完了後のHDDの使用容量は以下のとおりです。

# df -h
Filesystem            Size  Used Avail Use% &#12510;&#12454;&#12531;&#12488;&#20301;&#32622;
/dev/mapper/vg_beattesla-lv_root
                        50G  4.3G   45G   9% /
tmpfs                  16G     0   16G   0% /dev/shm
/dev/sda1             485M   66M  394M  15% /boot
/dev/mapper/vg_beattesla-lv_home
                       852G  1.4G  808G   1% /home

更新履歴

2013/05/31 初稿掲載
2013/06/01 文言修正


Front page   New List of pages Search Recent changes   RSS of recent changes