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