インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

共有ローカルメモリーについて

インテル® グラフィックス・テクノロジーは、L3 キャッシュの一部を分離し、プログラムコードで指定可能な高帯域メモリーとして使用できるようにします。このようなメモリーを共有ローカルメモリー (SLM) と呼びます。SLM は、グループ内の複数のスレッドによって頻繁に利用されるデータを保持するのに便利です。SLM に割り当てられたデータは、L3 キャッシュミスから完全に守られます。各スレッドグループには SLM の個別の領域が割り当てられます。プログラムから SLM にアクセスし、同じスレッドグループ内のスレッド間で共有できます。ここで、スレッドグループとは、ハードウェア・スレッド・グループ ID やスレッド・グループ・バリアの同期ドメインが同じなど、共通のハードウェア特性を持つスレッドのセットを指します。

メインメモリーと比べると、SLM は帯域幅が広く、低レイテンシーで、集約 (Gather) と分散 (Scatter) 操作において優れたパフォーマンスを発揮します。SLM はハーフスライスあたり最大 64KB で、L3 キャッシュサイズの半分です。内 16 バイトはコンパイラーにより予約されているため、実際に利用可能な SLM の量は 64KB よりも小さくなります。

ハーフスライスとは、基本的なハードウェア・ビルディング・ブロックで、HD グラフィックス構成ごとにハーフスライスの数は異なります (GT1 は 1、GT2 は 2、GT3 4)。

共有ローカルメモリーを使用するには、次のことを理解する必要があります。