【CUDA】CUDAプログラミングするなら必須!GPUのスペックの見方を知ろう

CUDA入門
マウスコンピューター/G-Tune

GPUのスペック表には様々な項目がありますが、

・どういう意味なのか?
・どれを意識していおいたほうが良いのはどれ?
・プログラミングをする上でどのように効いてくるのか?

よくわからなかったりするので、解説をしていきます。

スペック一覧

プログラミング するときにとりあえず意識しておいたほうが良いGPUのスペックとして、以下のようなものがあります。

プログラミングに直接関係がなさそうなものは省いています。いきなりすべて把握しておく必要はないので、頭の片隅に置いておく程度でかまいません。

項目名GeForce RTX2080Ti GeForce RTX2080 GeForce GTX1080
アーキテクチャTuring Turing Pascal
CUDAコア数 435229442560
定格クロック1350 MHz1515 MHz1607 MHz
メモリ帯域幅616 GB/s448 GB/s320 GB/s
メモリ容量11 GB8 GB8 GB

アーキテクチャ

アーキテクチャはGPUのシリーズ(RTX 2xxx、GTX 1xxx、GTX 9xx、など)が変わるのにあわせて名称や特性が変わります。

それぞれ、32bit整数演算が得意だったり、単精度浮動小数点の演算が得意だったり、スケジューリングが違ったりします。

極限まで最適化したいときには意識する必要がありますが、1、2年で更新されるアーキテクチャに合わせて最適化していくのは非常に過酷です。
そんなことをしなくても十分高速化は可能なので、なんとなく意識しておけば良いでしょう。

なお、過去のアーキテクチャ向けに作成したコードが、最新のアーキテクチャで動かなくなるといったことは基本的にありません。

CUDAコア数

処理性能に影響するスペックの一つです。コア数が多いほど並列度が上がり、処理も高速化します。

ただ、過去のアーキテクチャでは、「コア数が減ったけど全体の性能は上がった」ということがあったので、一概にコア数が多いからと言って性能が高いと言えない場合があるので注意しましょう。

定格クロック

処理性能に影響するスペックの一つです。 クロックが高いほど、処理速度が速くなります。

逐次的な処理ほど、影響を受けやすいです。

メモリ帯域幅

処理性能に影響するスペックの一つです。 GPUメモリのデータ転送速度を示します。

GPUメモリ(グローバルメモリ)からデータを読み出す処理は、様々な演算処理と比べてかなり遅いほうで、ボトルネックとなりやすいので、処理速度に直結する箇所といえるでしょう。

メモリ容量

GPUメモリ(グローバルメモリ) の容量です。この容量が大きいほど、あらかじめ大きなメモリ領域を確保しておくことができます。

画像といった大きなデータを扱ったり、複雑なシステムを組む機会があれば実感できるのですが、容量が大きいほど柔軟にシステムが組みやすくなります。

GPUの世代交代があったときに、私はコア数などよりも、メモリ容量がどうなったかを一番に気にします。

さいごに

あっさりとした説明でしたがいかがだったでしょうか?

もし「よくわからん」といったときは、身も蓋もありませんが、とりあえず「新しい世代」の「大きい番号」のものを買えば間違いはありません。
そのうえで、自分の作成した処理の特性に応じて、各スペックを意識していけばよいかと思います。

神経質になって、細かいスペックを意識しておく必要はあまりありません。

マウスコンピューター/G-Tune