脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

gpgpuその1(開発環境/ハード/スレッドとか)

ハード

NVIDIA

GeForce
  • NVIDIAのチップを使っているが、設計・製造はOEMメーカが行っている
  • 問題が発生したときにソフトかハードかの切り分けが難しい
Quadro
  • 設計はNVIDIAが行い、それをもとにNVIDIAが認めた業者によって製造が行われる
  • 業者が違うだけで全く同じものが作成される
  • NVIDA側のサポートが充実している
◎Tesla
  • GPUでありながら映像出力機能をカットしたgpgpu専門のGPU
  • 演算処理で使用することがメインとなるので、演算に失敗がおきないかNVIDIA側で精査している
    • GeForceではまれに演算間違いが起きることがあるらしい
  • GeForceよりもたくさんメモリが積まれている
  • 世代によりfermiやkeplerなどと呼ばれる

GPU上のユニット

SP(スカラプロセッサ)
  • CUDAのハードウェアの中で、一番小さい単位
  • CPUに比べて算術計算やロジックの処理など非常に限られた性能しか持たない
    • データ処理用途には十分な性能
  • ひとつのGPUにいっぱい搭載されている
  • プログラミングをデコードする機能はついていない
  • SP一つ一つに対してプログラミングすることは出来ない
SM(ストリーミングマルチプロセッサ)
  • SPの一つ上の単位
  • 以下をまとめた単位
    • 複数のSP
      • 昔は8つで固定だったが、今は一定ではない?
    • 2基のSpecial Function Unit
    • SPからアクセス可能なShared memory
    • Constantsメモリ(only Read)
    • Texture Cacheメモリ(only Read)
  • プログラミングのデコードを行い、SPに送る
    • 送られる命令は全SPで同じものになる

プログラム上のユニット

スレッド
  • カーネルで動作するプログラムの最小単位
  • スカラプロセッサの上で動いている
ワープ(Warp)
  • 1ワープ = 32スレッド
  • 前半部と後半部に分けてハーフワープという単位を使う場合もある
  • スレッドの処理は32ずつだと区切りがいい
    • 1SMにつきSPが8つ搭載されている場合
    • 1SM * 8SP * 4(SPの最低クロック数) = 32
ブロック
  • スレッドをまとめたもの
  • 1ブロック=最大512スレッド
  • 最大3次元まで表現できる
    • 1ブロック = 512スレッド
    • 1ブロック = 16 * 16スレッド
    • 1ブロック = 8 * 8 * 8スレッド
グリッド
  • ブロックをさらにまとめたもの
  • 1グリッド内の最大ブロック数は65535
デバイス
  • グリッドの上位にある
  • GPU本体のこと
  • 明確な定義がないので現在は1グリッド=1デバイス

参照