Tahiti のアーキテクチャ変更によるGPGPUへの影響

先日の記事に続きまして、3回連続でN-Bodyのネタです。

N-Bodyは、GPUアーキテクチャ毎にチューニングされたカーネルを切り替えて実行していた様で、カーネルを切り替えられるコマンドラインオプションが有る事を作者に伝授して頂きました。
(ていうか、インストールフォルダに有るマニュアルに記載が有りました)
※OpenCLでカーネルと言うと、GPU側で実行されるプログラムの事です。

ですが、Radeon HD7970(Tahiti)は発売されたばかりのGPUですから、未だ専用チューニングはされていません。

そこで、既存の6種類有るカーネルを実行して比較してみようと思います。

コマンドラインオプション: -kernel loop
 処理が重すぎてOSがフリーズしますので注意が必要なオプションです。
 並列処理の代わりにループ処理という事だと思われGPGPUには不向きのアルゴリズムです。
 このカーネルはシングルスレッド能力の測定目的で作られたもので、
 CU(Compute Unit:計算ユニット)の並列化しない場合の性能を測定出来ます。
 フリーズ回避はCPUのスケジューリングをバックグラウンドタスク優先にして下さい。
 ベンチマークモードで重たい画面を表示せずに実行しますと、下記のメッセージが表示されました。
 Device(s) :
 Advanced Micro Devices, Inc. Tahiti
 65536 bodies, total time for 3 iterations: 146484.250 ms
 = 0.088 billion interactions per second
 = 1.759 GFLOP/s at 20 flops per interaction


コマンドラインオプション: -kernel loop4way
 上記オプションを4Wayベクタライズしたものです。
 つまり4並列ループと言う事で、多少マシになりました。
 こちらもベンチマークモードで実行してみました。
 Device(s) :
 Advanced Micro Devices, Inc. Tahiti
 65536 bodies, total time for 3 iterations: 48750.082 ms
 = 0.264 billion interactions per second
 = 5.286 GFLOP/s at 20 flops per interaction


コマンドラインオプション: -kernel naive
 通常のカーネルだそうです。
 先日の結果よりも2割程良いスコアなので、Tahitiは前世代のAMD GPUと同じチューニングでは性能発揮出来ないと言う事なのかもしれません。逆に、普通に組めばチューニングせずとも早い様に作られているのかもしれません。
 Tahiti-naive.jpg

コマンドラインオプション: -kernel naive4way
 通常のカーネルを4Wayベクタライズしたものです。
 Tahiti-naive4way.jpg

コマンドラインオプション: -kernel local
 ローカルメモリを利用したものです。
 Tahiti-local.jpg
 ちょっとのチューニングや、ブロック数/質点数変更すれば、簡単に2TFLOPSを超えそうですね。
 試しにブロック数64でコマンドラインオプションを -b 64 -kernel local にした結果
 N-Body-Tahiti-b64-local.jpg
 あっさり2TFLOPSを超えました。
 (但しfpsが極端に落ちました -> GPUがフル稼働している証でもありますが)

コマンドラインオプション: -kernel local4way
 ローカルメモリを利用して4Wayベクタライズしたものです。
 Tahiti-local4way.jpg

Tahitiの場合は4Wayベクタライズが逆効果と言う事が判ります。
(前世代のCaymanなどは4Wayベクタライズしないと半分くらいのスコアに落ちてしまいます)


ところで余談ですが、TahitiコアではECCメモリのサポートやキャッシュSRAMのECC対応等もされているらしく、FirePro/FireStreamでは本気モードのAMD GPUが見られるかもしれません。
※もちろんコンシューマ向けモデルのRadeon HDシリーズではROM改造でもしないかぎりECCは機能しないと思いますが。

PCI-Express 3.0対応もありますのでホスト・デバイス間帯域も今迄のGPU製品と比較して高速です(実測して実際に高速でした)。

N-Bodyでの計測値がチューニングしない状態でさえ既存のどのハイエンドGPUに対しても2倍近いスコアを叩き出しているって凄い事ですよね。

それに加え、他のOpenCL系ベンチでも圧倒的に高速です。

これらの事から、Tahitiは既存のGPU製品とは明らかに世代・次元の異なるGPUと言えるのではないでしょうか?
Fermi 世代の Tesla フルスペック M2090 でさえ Tahiti によって完璧に凌駕されてしまうでしょう。
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR