メモリよりも非常に速くアクセスできます。プログラミング可能なキャッシュです。キャッシュは、自動的かつ透過的に管理されるため、あらゆるパフォーマンス上のメリットを自動的に手にすることができます。キャッシュは、データを内外にコピーしながら自分で管理しなければならないため、自動的にはパフォーマンス上のメリットが得られません。(後ほど詳しく扱います)。モデルを照らし合わせます。呼び出しでは、同じデータで演算できます。レジスタ値にはスレッドからのみアクセスでき、有効期間はスレッドと同じです。すべてのスレッドのサブセットによって共有されます。これをスレッドのタイルと呼び、有効期間はタイルと同じです。計算をタイルに分割する必要がある理由が、明らかになり始めたのではないでしょうか。メモリを使うことができません。されると考えることができます。メモリの所有権があるように見えます。制約で、今月号の別の記事で扱っています)。関数でしか使用できません。タイル化されている場合に限るうえ、関数ブロック内で宣言された変数にしか使うことができません。変数の暗黙のコンストラクターとデストラクターを呼び出しません。サイズと釣り合います。メモリ領域を特定することです。(繰り返し、高速にアクセスできるようになります)。変数にコピーすることはできません。サイズに相当するデータのみをコピーして対処しなければならないため、一般により複雑になります。使用している、単純で不自然なバグのある例を示します。この例では、行列のすべての要素を合計しようとしています。tile_originsこのコードは、技術的にはとにかくひどいものです。サイズやエクステント全体が変わってもコードが変更する必要がない場合です。パフォーマンスも最悪です。言うのも、アルゴリズムが単純で、その分岐はデータの並列処理に適していません。メモリを使用すること自体意味がありません。後で指摘しますが、正確さに関するエラーもあります。ストレージの初心者がコードについて理解できる程度にはシンプルです。重要なのはそれだけです。メモリにデータをコピーしています。メモリの最初の位置に集計します。