2017-04-09 6 views
0

私は現在、AMD Hawaii GPUを使用していますが、何か質問があります。 AMDハワイの明細書においてOpenCL Comptuing UnitとProcessing Element

、それは

2816 Processing Element 
44 Computing Units 

私はそれは2816件のスレッドと44個のワークグループを有していることが理解している。(各群64スレッド)

それが正しいですか?

私は、コア、スレッド、コンピューティングユニット、ワークグループ、および処理要素の概念について混乱しています。

答えて

0

いいえ1つのCUに複数のワークグループがあり、1つの処理要素に複数のスレッドがあります。各CUは64スレッドの波面を最大40個まで保持できるため、並列スレッドの最大数は44 * 40 * 64 = 112640です。ただし、これらのスレッドをすべて使用することはできません。他のリソースは、CUあたりの最大スレッド数を制限することがあります。 CU当たりのレジスタ数は限られており、各波面は多すぎるので、平行波面の最大数は少なくなります。

各ワークグループは同じCUで実行されるため、共有メモリ(LDS)へのアクセスと各ワークグループの異なる波面間の簡単な同期が可能です。特定の範囲内で作業グループのサイズを選択できます。ワークグループごとに256スレッドのハード制限(より多くの機能はありません)と、ワークグループあたり64スレッドの波面サイズのソフトリミット(少ない場合はパフォーマンスの低下)があります。あなたのワークグループのサイズも波面サイズの倍数でなければならないので、64,128,192および256はワークグループサイズの最も一般的な選択肢です。他のすべてが潜在的なピーク性能を低下させますが、問題によっては問題を選択肢の1つに強制するよりも、作業グループのサイズが異なる場合があります。

各ワークグループはそれぞれ最大256個のスレッドしか使用できないため、複数のワークグループを各CUで並列に実行できます。 256スレッドの最大ワークグループサイズを使用する場合、GPUのすべてのスレッドを使用するには、少なくとも112640/256 = 440のワークグループが必要です。より多くのワークグループがある場合は、それらのうち最大440個が並行して実行され、古いグループの1つが終了すると残りのグループが実行されます。ワークグループが少ない場合、すべてのスレッドが占有されるわけではなく、パフォーマンスが低下する可能性があります。小規模な作業グループを選ぶ場合は、それらをさらに必要とします。例:作業グループサイズが64の1760作業グループ 共有メモリ(LDS)の使用量が多すぎると、作業グループ数CUあたり。

命令を実行します。最適条件の下では、サイクルごとに1つの命令を開始することができます。

+0

44 * 40 * 64 = 112640 – BlueWanderer

+0

ありがとうございました!しかし、私は理解できません "各ワークグループは最大256のスレッドしか使用できません。複数のワークグループを各CUで並列に実行できます。"あなたは、GPUは最大112640のスレッドを持つことができると言った。次に、作業グループのサイズは112640/256 = 440ですか?まだ混乱している。 –

+0

はい@ BlueWandererと私は仕事のグループの選択をより詳しく説明するために私の答えを更新しました。ワークグループのサイズは固定されていませんが、プログラマが特定の範囲内で選択することができます。 –