🌊

CUDA用語"warp"について

2023/11/24に公開

CUDAの複数スレッドをまとめる単位としてwarpという用語があります。
https://yusuke-ujitoko.hatenablog.com/entry/2016/01/27/210415

プログラマーから見えるGPUのハードウェア全体がdevice,並列演算の単位となっているのがcoreでその中間がwarpです。

ハード ソフト(CUDA)
core thread
warp thread block
device grid

CUDAのアーキテクチャに関する用語は独特で「コンピュータアーキテクチャ ー 定量的アプローチ」(ヘネパタ本)でも巻末でベクトルプロセッサ、SIMD、OpenCLとの用語の比較表が作られています。

warpは日本語にも入り普通は遠隔地に瞬間移動するような動作を意味します。「並列コンピュータ 非定量的アプローチ」ではwarpはもともとは「波面」という意味で「宇宙戦艦ヤマト」でオシロのような波形の頂点が重なったときに”ワープ”することがワープが瞬間移動の意味を持つようになった原因としています。
しかし実際にはwarpとは縦糸という意味でthreadを束ねるものという意味から名付けられたと思われます(図4.18のスレッドブロックがそのまま織物のような図になっています)。

https://ejje.weblio.jp/content/warp

ヘネパタ本ではCUDAのワープに対応するAMDの用語としてウェーブフロントが書かれている(図4.24)のでこれに引っ張られたと思われます。

参考

https://www.am.ics.keio.ac.jp/wp/caqa6thproblem/
膨大かつ詳細なコンピューターアーキテクチャの説明がされるヘネパタ本の中での天野先生が批判されている点です。個人的には第4章でベクトルプロセッサを持ち上げ、CUDA/NVIDIA GPUを過小評価しているように思えます。

https://tatsu-zine.com/books/computer-architecture-6ed

https://www.am.ics.keio.ac.jp/wp/caqa6th/

http://natu.txt-nifty.com/natsutan/2008/01/post_0982.html

またパタヘネは、サブタイトルにハードウエアとソフトウエアのインタフェースとあるとおり、プログラマから見て知っておきたいことが丁寧に解説されています。パタヘネには、プロセッサ内部の浮動小数点の表現方法や、ハードウェアによる割り算のアルゴリズム等が詳しく書いてありますが、コンピュータアーキテクチャの方は、あまりそういうことは書いてありません。バイナリアン的面白さを求めるならパタヘネだけ読めば十分です。コンピュータアーキテクチャは、自分でプロセッサを設計して性能を評価したいとかそういう人向けです。日立のSHプロセッサを開発するときに、開発陣でコンピュータアーキテクチャを輪講したのは有名な話。

マルチスレッド織機が産業革命のはじまり

https://www.youtube.com/watch?v=YEZeihxRvsw
https://www.youtube.com/watch?v=r7fWH2jzkrQ&ab_channel=TheSilkyWeavestudio

https://www.youtube.com/watch?v=KtHbARRzMMU&ab_channel=avllooms

Discussion