plattojpさんのブログ

NVIDIA JetsonTK1 計算性能実測

ふぅ〜。昨年末に買ったNEWアイテム「NVIDIA Jetson TK1」で年明けからずーっと遊んでます!

”組み込みスーパーコンピューター ”というふれこみにうっかり釣られて入手してしまったのですが、cudaコア192個搭載でGPUのクロックがピーク0.852GHz、1クロックで積和計算1回とのことで、単精度浮動小数点数(以下 単精度 倍精度)計算理論値性能 326Gflops (192*0.852*2、そしてもしや倍精度でも100G超???)。それが127mm四方の基板に乗ったシングルボードコンピュータでのご提供ときたら、わくわくする人はワクワクしますよね〜。何台か買ってクラスタ構築!!と夢はひろがるばかりです。が、はたしてその実際の性能は夢の大きさに相応しいものなのかどうか? ここ数日は計算能力の計測にはまっていました。

いくつかの条件で計測してみました(共通:Xのデスクトップ環境が動作したまま)。

1.Octaveで行列計算

・CPU: ”通常パッケージ”版のOctaveで単精度、倍精度行列計算

・GPU: cuBLAS acceleratedな Octaveをビルドし、単精度、倍精度行列計算

2.Rで行列計算

・CPU: ”通常パッケージ”版のRで単精度、倍精度行列計算

・GPU: cuBLAS acceleratedな Rをビルドし、単精度、倍精度行列計算

3.C/C++で行列計算

・CPU: ふつーに forループで単精度、倍精度行列計算

・GPU: cuBLAS関数をつかって、単精度、倍精度行列計算

結果:

1.Octave-3.8.2

N="mat size"; A=double(randn(N)); B=double(randn(N));
start=clock(); C=A*B; elapsedTime=etime(clock(),start);
disp(2*N*N*N/(elapsedTime*1e+9));
※単精度のときは、single()としました。
mat size Gflops
double precision single precision
CPU GPU CPU GPU
32 0.19 0.04 0.19 0.03
64 0.84 0.20 1.00 0.28
128 2.22 1.30 2.60 1.45
256 2.95 4.40 3.65 9.00
512 3.23 8.30 3.83 30.00
1024 3.32 10.70 3.89 76.00
2048 3.37 11.60 3.93 121.00
4096 3.37 11.20 3.97 145.00
8192 3.13 *1
3.98 62.00

2.R-3.1.2

N="mat size";
A<-matrix(0.01*1:0.01*N*N, N, N); B<-matrix(0.01*1:0.01*N*N, N, N);
startT<-proc.time()[3]; C<-A%*%B; endT<-proc.time()[3];
2*N*N*N/((endT-startT)*1e+9);
※Rはデータはすべて倍精度で持つらしいです。
mat size Gflops
double precision single precision
CPU GPU CPU GPU
32 0.07 0.03 - -
64 0.52 0.17 - -
128 0.83 1.00 - -
256 0.86 3.40 - -
512 0.81 6.60 - -
1024 0.74 7.50 - -
2048 0.73 10.80 - -
4096 0.66 10.80 - -
8192 0.62 *1 - -

3.C / C++

倍精度版:cublasDgemm使用 testdgemm.cpp
単精度版:cublasSgemm使用 testsgemm.cpp
mat size Gflops
double precision single precision
CPU GPU CPU GPU
32 0.20 2.02 0.21 1.96
64 0.17 9.76 0.19 15.78
128 0.14 11.29 0.14 66.30
256 0.12 11.97 0.13 104.17
512 0.06 12.29 0.11 180.44
1024 0.03 12.65 *2 204.72
2048 0.03 12.81 - 209.88
4096 *2 11.77 - 204.35
8192 - *1 - 150.87

*1 cudaMalloc()が allocation errorとなって計算できませんでした。

*2 計算に時間がかかりすぎてプログラムがなかなか終了しないのでもうヤメw

参考
インテル® Core™ i7-3770 3.4GHz Ubuntu12.04LTS Octaveで D.P.12Gflops S.P.15Gflopsほど。
インテル® Core™ i7-4790 3.6GHz Ubuntu14.04LTS Octaveで D.P.15Gflops S.P.30Gflops ほど。

C/C++でのCPUのflops値が低いような気がしますが、プログラムが間違っているとか時間の測り方が間違っているとか原因があるのかもしれません。

 

結論:"スーパーコンピュータ"というキーワードと理論値性能に過度な期待を寄せてはいけません。スーパーコンピュータのテクノロジーに触れることもできる楽しい電子工作アイテム、といったところが実際ではないでしょうか。倍精度計算が予想を完全に裏切る結果となりましたが、そもそも車載組み込みやモバイル端末で厳密な科学計算する必要なんかあまりないだろうし、画像処理やゲームするぐらいなら単精度で十分なんでしょうね。さて、小規模クラスタ組んでOpenMPIとかもいじってみる予定もあって楽しみなんですが、さしあたり次はOpenCVにいってみようかな。OpenCVはオプションでcuBLASサポートしていて、WITH_CUBLAS:ONにして既にビルド済となってはいます。どんな変化があらわれるのか? っていうか、すでにXiaomiがTegraK1SOC搭載したMiPadての販売中だけどw

 

週1向き変え

ビカクハンガーです。休日の朝はA面B面(死語)の向きを変えることからはじまります。
ちなみにこちらはA面です。向きを90度変えたところで写真撮影。この後さらに90度回転しました。

ビカクハンガー

部屋の内側を向いている面にはほとんど日が当たりません。なので定期的にハンガーの向きを変え、ビカクシダに平等に日が当たるよう注意しています。本当は毎日向きを変えてあげたいんですが、ハンガーが重くて大変なので、向き変えは週に一度です。

毎日観察していると、やっぱり日に当たるほうが葉の張りや色がいいような気がします。週1じゃなくて、3日に1回ぐらいにしてあげようかな?もっと手軽に向きを変えられれば、、、。

左上:アンディヌムは胞子葉の成長が完了し、一休みしているところです。今年は秋口からも水を少し多めに与えましたが、わりとしっかりと胞子葉が伸びてくれたのではないかと思います。一昨年、昨年と胞子葉がいじけてしまっていたのは水不足だった可能性あり、です。今年は貯水葉が小さめになってしまったのが少し残念です。

右上:コロナリウムは成長が続いています。いま4枚目の貯水葉が成長中で直径10cmぐらいになったところです。3枚目の貯水葉はすでに固まっていますが、水不足のため小さな葉になってしまいました。

右中:ヘナヘナ~っと脱力系ビカクシダのアフリカン・オディッティはお休み中です。記憶が確かなら、アフリカン・オディティはしっかり休憩しますね。芽がふっくらしていても動き出しそうで動かない。きっとあと4,5ヶ月はお休みなさるんではないでしょうか。

右下:アンゴレンセは胞子葉展開シーズンが終わり、貯水葉が伸び始めています。ビヨ~ンと急速に伸びてきていて、無事大きく展開してくれたらいいんですが。昨年の古い胞子葉は縁から枯れこみが入ってきています。これはおそらく病気で、何かの菌が原因でしょうね。枯れこみは乾燥しながら輪紋状に広がってきます。以前に「空気が乾燥して枯れ込んできてるのかな?」と思って葉水したところ、輪紋の浸潤が加速したことがあって(コワッ)それ以来うちではどのビカクにも葉水はしないようになりました。 そろそろ薬かけようかな、、。

 

Platycerium veitchii 'Lemoinei'

レモイネイです。先週の土曜日に部屋に取り込みました。秋口からの成長サイクルで出てきた貯水葉が大きくなりつつあります。きれいなツンツン貯水葉を期待。

Platycerum 'Lemoinei'

この茶色に枯れた貯水葉は、昨冬シーズンに室内で成長したもの。今年の4月下旬頃に屋外に出したときにはまだ緑色でしたが、いきなり強い光線にあてて葉焼けさせてしまいました。先端が”よれっ”としているのが葉焼けした跡です。が、枯れてしまえば葉焼けも何も分からなくなってしまいますね〜

Platycerum 'Lemoinei'

貯水葉展開時は水を十分に与えると、先端の裂片がスッと長く伸び、切れ込みを深く仕上げられると思います。日照量によって、先端が鋭くなったり丸くなったり変化するかもしれませんが、これは試したことがないのでなんとも。うちでは午前中の数時間、ガラス越し&ビニール越しの日光が当たる状況でこんなかんじです。でも、まぁ、徒長といってしまえば徒長かもw

レモイネイの胞子葉はちょっと長めに伸びているのを見かけることが多いですが、胞子葉展開時は気持ち水を控えめにして(ミズゴケカラカラ乾燥にはあまりしない)風通し良く午前中無遮光(午後遮光)で育てると多少短くなります。群生株になってくると貯水量が増えて水持ちが良くなるので、そのへんも考慮しながら水やりします。あとは、雨に当てっぱにすると白い毛が落ちてしまうので注意したいです。この株は今年は台風の風雨にちょっと当ててしまい、白っぽさ加減が弱めとなってしまっています。

 

とりあえずリドレイ

写真が撮りたまっていて、このまま掲載しないのももったいないので。でもリドレイ掲載多めで、困ったときのリドレイ頼み、、みたいな感じが否めませんね。。。

↓リドレイ1号 向こう側に2枚目の貯水葉が動き出しています。そういえば、もう何年も1シーズンに出る貯水葉は2枚となっていて、3枚目を見かけないような気がします。じゃぁ、以前は3枚以上出たことがあったか?というと、これまであまり気にしたことがなく記憶もとくに無し。どうなんでしょうね。3枚目、4枚目の貯水葉ってあるんでしょうか。 うーん、きっとあるんでしょうねぇ。

Platycerium ridleyi 1号

↓リドレイ2号 Wide葉タイプ。ビカ森様からやってきました。5号素焼きにミズゴケ植え。(ホントは3号。3,4年前だったか、ほんとの2号は水をやらずに枯らしたorz)

Platycerium ridleyi 2号

鉢を持って軽くなったら、上からシャワーでやさしく、そして念入りに水かけてます。貯水葉が鉢の表面を覆ってからは水やりの頻度が低くなって、とくに今の時期では3週間に1度ぐらいの水やりとなっています。水やり3回のうち1回ぐらいはバケツに浸けます。

入手後すぐに植え替えたときに芽の方向を見誤り、期待していた芽の方向と実際の芽の方向が30度ぐらいズレてしまっていて微妙なところです。小さい株の芽の方向を見極めるの、ちょっと難しいですね。 

バナナワニ園のリドレイ

これはバナナワニ園の鉢植えリドレイ。先月行ったときに撮ったもの。すごく活き活きとしていて力強いですねぇ。こういうビカクシダをみると、なんとなくワクワクして胸の高鳴りを覚えます。おそらく、とくに左の株は2006年頃のこの株が成長したもののように思えます。貯水葉がすっかり鉢を包んでしまっていますが、どうやって水やりしてるんでしょうか。写真拡大してみると芽の数cm下辺りに水垢(?)の跡っぽいラインが有るように見えるのは気のせいでしょうか。うーん、でもやっぱ気のせいだろうなぁ。手間を考えたらやっぱり上からシャワーかな。飼育員さんに尋ねてみればよかったなぁ。後悔。

はぁ・・・

P.hilliiのトレイ

ヒリーのトレイ。板につけてもいいサイズだけど、鉢植えのほうが葉っぱが綺麗に育つのでこのままでいこうかな。とくに葉っぱが”しこる”系のヒリーは鉢植えのほうが確実に成績が良い。根部の水分がある程度安定している方がいいみたい。

カトレア畑の惨状。今シーズン、鉢数倍増。年に2鉢増が私的理想の増加率なんだけど(笑)。。。 ここで抑えるか、それとも突き抜けるか。といっても、スペースの物理的制約があるからやっぱり突き抜けはない方向で。

カトレア畑

うーん、それにしてもビニールハウス欲しい(借りたい)。でもそうすると”with”じゃなくなってしまうのが悩ましいところ。でも現在が通常の”with”じゃないからどうしてもそういう方に意識が向いてしまうんだろうなぁ。てことは自分はわりと常識人?(笑) そういう矛盾していることを・・・云々 はぁ、例年、年末はちょっとお疲れ気味です。気疲れですが。温室超隣接住居がほしいです。以上

 

コンテンツの配信