OpenCLメモリアーキテクチャ間に直接的な関係はありますか?
ローカル/グローバル/コンスタント/プライベートメモリ
そして、物理GPUのメモリとキャッシュ。たとえば、1GBのメモリ/L1キャッシュ/L2キャッシュを備えたGPUカード。これらはローカル/グローバル..メモリに関連していますか?
または、ローカル/コンスタント/プライベートメモリがグローバルメモリから割り当てられていますか?-ありがとう
OpenCLは、メモリのキャッシュについては実際には説明していません。最近のほとんどのグラフィックカードには、グローバルメモリ用のある種のキャッシュプロトコルがありますが、これらは古いカードでは保証されていません。ただし、ここにさまざまな思い出の概要があります。
プライベートメモリ-このメモリは、作業項目ごとにレジスタとして保持されます。GPUには、計算ユニットごとに非常に大きなレジスタファイルがあります。ただし、このメモリは必要に応じてローカルメモリに流出する可能性があります。変数を作成すると、デフォルトでプライベートメモリが割り当てられます。
ローカルメモリ-ワークグループにローカルで共有されるメモリ。このメモリシステムは通常、コンピューティングユニット自体にあり、他のワークグループによる読み取りまたは書き込みはできません。このメモリは通常、GPUアーキテクチャではレイテンシが非常に低くなります(CPUアーキテクチャでは、このメモリは単にシステムメモリの一部です)。このメモリは通常、グローバルメモリの手動キャッシュとして使用されます。ローカルメモリは__local
属性で指定されます。
コンスタントメモリ-グローバルメモリの一部ですが、読み取り専用であるため、積極的にキャッシュできます。 __constant
このタイプのメモリを定義するために使用されます。
グローバルメモリ-これはGPUのメインメモリです。 __global
グローバルメモリ空間にメモリを配置するために使用されます。