2017-05-07 12 views
0

OpenCLが私のNvidia Geforce GTX 970に最大13個の計算ユニットしか持たない理由を教えてもらえますか?また、実行単位(EU)に等しい最大計算単位はありますか?私のIris 6100ラップトップでは、device.max_compute_unitsは48です。グラフィックカードのEUと同じです。OpenCL、PyopenCL、なぜGTX970には13個の計算ユニットしかないのですか?並列処理量を調べる方法

誰かがこの問題について何か光を当てることができますか?私は、ここで並列に実行できるプロセスの数を把握しようとしています。だから、私は間違ったパラメータを見ていますか?

千のおかげで...

+0

GPUには13個の計算ユニット(NVIDIAの用語でストリーミングマルチプロセッサ)が搭載されているためです。 – talonmies

+0

[ワークグループの数に対応する計算ユニットの数]の可能な複製(http://stackoverflow.com/questions/9326430/number-of-compute-units-corresponding-to-number-of-work-グループ) – talonmies

答えて

1

あなたは、コアの数、計算ユニットの数だけを照会することはできません。インテルの統合GPUは、一般的に計算ユニットあたり8コアしかなく、Nvidiaは計算ユニットあたり192コアまたは128コアを搭載しています。 Max_compute_unitsは計算単位の数であり、パーティションを見つける(そして制限する)ためにデバイスパーティションで使用できるはずですが、通常はデバイスパーティショニングにはCPUだけがサポートされています。

パラレルで実行できるプロセス(作業項目)の数は、ハードウェアの能力によって異なります。 AMDグラフィックスカードの場合、コアの数の40倍(計算ユニットの数の64倍)があります。たとえば、8つのコンピューティングユニットAMD GPUは、飛行中に20k(8 * 64 * 40)スレッドを持つことができ、さらに多くのキューを1つのキューに入れることができます。

最大計算ユニット数はドライバから変更することができますが、ベータドライバで12個にもかかわらず8個のコンピューティングユニットしか表示されていないインテルGPUが搭載されています。また、AMD GPUは、一部のアプリケーションではオーディオコンピューティングを使用するため、汎用コンピューティングカーネルでは、それらのアプリ内の残りの計算ユニットのみが表示されることがあります。

Nvidia GPUには13個の計算ユニットしかなく、ドライバが計算に13個しか使用できない場合は、OpenCLでは13個すべてを使用できます。 GTX970には、Intel Iris GPUよりも多くのコアが搭載されています。

エンキューされたOpenCLカーネルのワークグループは、計算単位ごとに実行されるため、各ワークグループのワークアイテムは、同じワークグループ内の他のワークアイテムと計算ユニットの同じメモリを共有します。しかし、一部のベンダーは規則を少しでも拡張することができます。単一のワークグループに対してComputeユニットを共同で使用することができます。インテルigpuなど。

+0

インテルGPUには実行ユニット(EU)があります。それぞれ7つのSIMDスレッド(ウェーブ/ワープ)の中から選択できます。インテルのドライバは、これらをOpenCL API for "Compute Unit"にマップしますが、それはせいぜい不正確なマッピングです。ワークグループは、複数のEUで実行できます(通常は実行します)。したがって、アーキテクチャ間でリンゴを比較することは、まったく公正なリンゴではありません。 5.3のhttps://software.intel.com/sites/default/files/managed/c5/9a/The-Compute-Architecture-of-Intel-Processor-Graphics-Gen9-v1d0.pdf – Tim

+0

を参照してください。それで複数のユー? L3のスライス? –

+0

共有ローカルメモリはいくつかのEUによって共有されています(24、私は思っています)。はい、それはL3から出ています(5.5節、同じ文書の図を参照してください; SLMはL3ボックスに表示されています)。 – Tim

関連する問題