4/25/2013

Geforce GT520 nvidia-smi 限定サポート


内蔵GPUの状態監視が外部から可能かどうかを確認。
nvidia-smiでは、Geforceシリーズについては限定的なサポートのみとの記載あり。

どんな情報が拾えるのかを確認。
搭載されているGPUが廉価版(GT520)なので、冷却FAN、メモリのECCはそもそも存在しません。

ログを残して面白そうなのは、温度ぐらいか。


watanabebashi@i35G:~/NVIDIA_CUDA-5.0_Samples/bin/linux/release$ nvidia-smi
Thu Apr 25 20:15:01 2013
+------------------------------------------------------+
| NVIDIA-SMI 4.310.44   Driver Version: 310.44         |
|-------------------------------+----------------------+----------------------+
| GPU  Name                     | Bus-Id        Disp.  | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap| Memory-Usage         | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 520           | 0000:04:00.0     N/A |                  N/A |
|  0%   50C  N/A     N/A /  N/A |   1%    2MB /  511MB |     N/A      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Compute processes:                                               GPU Memory |
|  GPU       PID  Process name                                     Usage      |
|=============================================================================|
|    0            Not Supported                                               |
+-----------------------------------------------------------------------------+



4/20/2013

Giada i35G メモリ追加(自己責任)

CUDAのお勉強用として用意した、MINI PCのメモリを2GB->4GBへ換装。

部品点数は少ないのですが、無線LANやBluetoothのアンテナとマザーボードとがケーブルで直接接続されているため、力任せに作業をするとケーブルや接点を破壊する可能性があります。

(筐体を開いてしまうと、メーカーや販売店さんからの1年間無償保障が得られなくなります。)
※全て自己責任で行って下さい。こちらの掲載情報により破損、故障等発生しても、私は一切責任を取れません。予めご了承下さい。


・筐体の上下をとめているネジ(2つ)を外す。(ネジのうちひとつには、シールが張られています。)
このシールを外すと、1年間の無償保障サービスが得られなくなります。
・カバーを外す
(正面側にプラスチックのツメ(5つほど)で引っかかっています。写真に写っているように、無線LANのアンテナがカバーについており、マザーボードとの間でケーブル接続があります。)
・マザーボードを固定しているネジ(4,5つほど)を外す。

・筐体の上下をふさいでいるプラスチックのふたを外す。
(写真では、左右に分かれている2つの部品です。)
・マザーボードを慎重に裏返す。
(マザーの裏側も、Bluetooth(?)アンテナとマザーとがケーブルでつながっています。)

・メモリに張られている断熱(?)シールを慎重に外す。
・メモリを交換する
・断熱(?)シールを慎重に外す
・マザーボードを元の位置に戻す。
冷却ファンの位置が正しいか、確認する。
・筐体上下を塞ぐふた(写真では左右に分かれています)を戻す
・最初に外したふたを戻す
・ネジ(2箇所)でとめる

(4/26修正)表題の製品名が間違っていたのです修正。正しくは、"Giada i35G"

4/07/2013

OpenFaom導入で躓く ”libfiniteVolume.so: cannot open shared object file: No such file or directory”


すぐに使う予定もないのに、OpenFoamをインストール。
Ubuntu用にインストール手順まで公開されているので、数分で導入完了。
導入がうまく行ったことを確認したところ、以下のエラーが表示。


watanabebashi@i35g:~$ icoFoam -help
icoFoam: error while loading shared libraries: libfiniteVolume.so: cannot open shared object file: No such file or directory

ご指定のライブラリファイルが、"/opt/openfoam220/platforms/linuxGccDPOpt/lib"に存在することを確認しました。
パス設定が正しくされていないのかと考え、.bashrcでの呼び出し位置を変更することで問題回避。この変更点を、一旦元に戻すと現象が再発するので、原因はここにあるのは確かだと思われます。(根本原因を追求するスキルも無いので、記録だけ残しておきます。)

/home/hogehoge/.bashrc 変更前
*********************************************************************************************
(抜粋)
#                                                                               
#OPENFOAM                                                                       
#                                                                               
source /opt/openfoam220/etc/bashrc                                             

#                                                                               
#CUDA                                                                           
#                                                                               
export CUDA_HOME=/usr/local/cuda-5.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib

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

export PATH
*********************************************************************************************


/home/hogehoge/.bashrc 変更後
*********************************************************************************************
(抜粋)
#                                                                               
#OPENFOAM                                                                       
#                                                                               
#source /opt/openfoam220/etc/bashrc                                             

#                                                                               
#CUDA                                                                           
#                                                                               
export CUDA_HOME=/usr/local/cuda-5.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib

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

export PATH
#                                                                               
#                                                                               
#                                                                               
source /opt/openfoam220/etc/bashrc
*********************************************************************************************


cudaGetDeviceCount returned 38

i35Gの少ない資源(48コア)でより多くの結果を残そうと、CUIでの運用へと変更しました。
具体的な作業は、以下の通り。
sudo gedit /etc/default/grub
変更前:GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"

変更後:GRUB_CMDLINE_LINUX_DEFAULT="text"

若干の性能向上も見られました。(OSを11.10から12.04へと変更した影響もあるかもしれません。)



[Matrix Multiply CUBLAS] - Starting...
GPU Device 0: "GeForce GT 520" with compute capability 2.1

MatrixA(320,640), MatrixB(320,640), MatrixC(320,640)
Computing result using CUBLAS...done.
Performance= 63.83 GFlop/s, Time= 2.054 msec, Size= 131072000 Ops
Computing result using host CPU...done.
Comparing CUBLAS Matrix Multiply with CPU results: OK

上記の変更以降、OS再起動などを行うと、"cudaGetDeviceCount returned 38"と表示されてサンプルアプリが動作しなくなりました。
先人のお知恵を拝借して、以下のスクリプトを利用してデバイスファイル作成することで解決。


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



ベアメタルバックアップ 準備

会社の検証機を使う場合に備え、ベアメタルバックアップツールを探して、たどり着いた。”Clonezillaを使ってハードディスクを丸々バックアップ
GPUの検証では、物理OSの利用したいので保険を用意。

4/06/2013

ATOM D2700 Linpack result

Intelから公開されている、linpack benchmark toolを使って、Gianda i35G(ATOM D2700)の計算能力を測定しました。
Intel benchmarkのうち、runme_xeon32を利用しています。(CPUが、D2700なのでソースからATOMにあわせてコンパイルしたほうが良いのかもしれません。面倒なので、公開されているバイナリをそのまま使いました。)
その結果、D2700は約1GFlopsの計算能力をお持ちだそうです。

実行時間が約4時間強。

4/05/2013

Ubuntu 12.04 LTSへアップグレード

Ubuntu 11.10が2013年4月でサポート終了とのことなので、12.04へアップグレードしました。
同時にNvidia Driverも310.44へ更新。cudaのサンプルも、正常に動いています。

4/03/2013

55GFlops!

どうにかこうにかCUDAが動く状態に持ち込めたので、
Sampleをいくつか動かして見ました。


[Matrix Multiply CUBLAS] - Starting...
GPU Device 0: "GeForce GT 520" with compute capability 2.1

MatrixA(320,640), MatrixB(320,640), MatrixC(320,640)
Computing result using CUBLAS...done.
Performance= 55.37 GFlop/s, Time= 2.367 msec, Size= 131072000 Ops
Computing result using host CPU...done.
Comparing CUBLAS Matrix Multiply with CPU results: OK


Wikiによると、IBM Deepblueが11GFlopsだから、Giada i35G(GT520)はそのおよそ5倍。
(PS3は、200GFlops越えてますけど)

同じ土俵で比べていない事は理解していますが、雑誌やニュースでしか知らない(昔の)スーパーコンピュータを、数値で越えていることはうれしく感じています。


TFlopsを目指すと電気代もバカにならないので、しばらくは、これでCUDAを勉強していきます。

4/01/2013

Ubuntu11.0へのCUDA 5.0導入手順


(Ubuntu 11.0)OSの初期導入から始める場合、こちらの情報が頼りになりました。
ここの手順のままで、CUDA5.0の導入とサンプルのコンパイル(すべて)と実行(oceanFFT,smokeParticles)まで、エラーなく進めることができました。
GPUカードのドライバとしてCUDAToolKit添付のものを導入することが、導入に失敗しない勘どころと思われます。


./deviceQuery Starting...

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

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 520"
  CUDA Driver Version / Runtime Version          5.0 / 5.0
  CUDA Capability Major/Minor version number:    2.1
  Total amount of global memory:                 512 MBytes (536412160 bytes)
  ( 1) Multiprocessors x ( 48) CUDA Cores/MP:    48 CUDA Cores
  GPU Clock rate:                                1480 MHz (1.48 GHz)
  Memory Clock rate:                             800 Mhz
  Memory Bus Width:                              64-bit
  L2 Cache Size:                                 65536 bytes
  Max Texture Dimension Size (x,y,z)             1D=(65536), 2D=(65536,65535), 3D=(2048,2048,2048)
  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: 32768
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  1536
  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:     65535 x 65535 x 65535
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 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):      No
  Device PCI Bus ID / PCI location ID:           4 / 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 = GeForce GT 520