49152 バイト/ブロックの共有メモリを持つ GTX Titan があります。~9000 の結合 ODE を解こうとしており、各濃度の変化率を計算するために、これらの ~9000 の濃度 (倍精度) を共有メモリに格納したいと考えています。
double は 8 バイトであり、49152/8 = 6144 であるため、これは不可能であることを断言したいと思います。
49152 バイト/ブロックの共有メモリを持つ GTX Titan があります。~9000 の結合 ODE を解こうとしており、各濃度の変化率を計算するために、これらの ~9000 の濃度 (倍精度) を共有メモリに格納したいと考えています。
double は 8 バイトであり、49152/8 = 6144 であるため、これは不可能であることを断言したいと思います。
あなたの理解は正しいです。double
単一のスレッドブロック (つまり、単一の SM) からアクセスできる共有メモリに9000 個の数量を同時に格納することはできません。
レジスタファイルも使える!その部分は、SM ごとの共有メモリの重要な部分を持つことができます。コア/ストリーミング ユニットのレジスタ空間にあるプライベート変数は、「ローカル メモリでのスワップ」方式で使用して、同じブロック内の他のコアと通信できます。レジスタ スワッピングは、titan の sm あたり 48kB の共有メモリを補うことができます。