Maxwell (GM107) の命令スループット

CUDAのドキュメントが更新されて、GM107ことGeForce GTX 750 / GeForce GTX 750Tiの命令スループットが追加されていたのでまとめました。

【重要】情報の正確性は保障しません。

■命令スループット

CUDA C Programming Guide, Low Level Optimizations for AMD GCN, A look at instruction issue rates in graphics contexts, etc

1コアが1cycleあたりに演算できる回数の逆数を示しています(小さいほど高速)。

表がうまく描けないので図にしました。PDF版はこちら

201405_1_GM107_1

注釈:(**)GeForceは”below 20 instructions”との記述あり、おそらく100cycle前後。(***)意味なし。ごめんなさい。

F32超越関数のスループットも調べたので記載しておきます。

201405_1_GM107_2

■感想

FermiからKepler(GK104)のときは、F32以外のスループットが極端にごっそりと落とされてしまいました。GK110ことGeForce GTX Titanでは、シフト演算のみ2倍速くなりました。

Keplerでは1SMXあたり192 CUDA Coreです。推測ですが、内部的には32 CUDA Coreが6セットになっており、遅い命令は6セットのうち1セットでしか動作できず、スループット6の命令が多かったのだと思われます。

Maxwellでは、全体的にF32以外のスループットが改善しています。1SMMあたり128 CUDA Coreで、NVIDIAの図を見て分かるように32 CUDA Coreが4セットになっているので、最低スループットが4になりました。この恩恵を最も受けた命令は、シフト演算32bit同士の型変換一部のビット操作です。超越関数も入れていいかもしれません。特にシフトはスループット2なので、初代Fermi並の速さを取り戻したことになります。

一方で、Keplerでのスループット8/7の命令のほとんどがスループット2まで遅くなりました。SAD、比較、最大・最小が該当します。また、8/16bitから32bitへの変換は6倍遅くなり、整数乗算ビットスキャン(BSF/BSR)、16bit SADはソフトウェアエミュレーションになってしまいました。特に痛いのは整数乗算でしょう。ドキュメントには「複数命令」としか書かれておらず、どんな実装になっているか全くわかりません。Compute Shaderでは整数乗算が頻発することも多いので、整数乗算重視のアルゴリズムの場合、シフト演算をうまく使うなど再設計する必要があるかもしれません。

64bit演算はKepler以上に捨てています。スループット128なので、これ以上できないほどに性能を切り捨てた命令になっています。

■まとめ

MaxwellではKeplerで必要以上に切り捨てられた性能を取り戻したように見えます。整数演算の速度には要注意です。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中