インテル® 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)。
共有ローカルメモリーを使用するには、次のことを理解する必要があります。
プログラミング・モデル拡張
インテル® Cilk™ Plus で共有ローカルメモリーを使用するための構文
インテル® Cilk™ Plus は、インテル® C++ コンパイラー 18.0 では非推奨の古い機能です。プロセッサー・グラフィックスへオフロードする代替手段は、将来のリリースで提供される予定です。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」を参照してください。
セマンティクスと制約事項