シェアードメモリ
をテンプレートにして作成
[
トップ
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
シェアードメモリについて
-----
#contents
-----
*シェアードメモリとは [#qa0c288c]
シェアードメモリ(shared memory)はブロック内のスレッドが共...
グローバルメモリに比べて非常に高速です.シェアードメモリ...
スレッド間のバンク・コンフリクトがなければレジスタアクセ...
*確保方法 [#l98926d2]
シェアードメモリ変数,配列はCUDAカーネル上で宣言します.~
静的な確保(コンパイル時に配列の長さが決まる)の場合,
#code(C){{
__shared__ float x[16];
}}
動的な確保(実行時に配列の長さが決まる)の場合は,カーネル...
#code(C){{
__global__
void KernelFunc()
{
extern __shared__ float x[];
// 処理
...
}
__host__
void HostFunc(int shared_size)
{
...
KernelFunc<<< grid, block, sizeof(float)*shared_size ...
...
}
}}
*シェアードメモリの大きさ [#b9a1ae3b]
デバイスプロパティを取得し,sharedMemPerBlockで確認できま...
#code(C){{
cudaDeviceProp dev;
cutilSafeCall(cudaGetDeviceProperties(&dev, 0));
printf(" shared memory / block : %d (KB)\n", dev.sharedM...
}}
*バンク・コンフリクト(Programing guide 5.1.2.5節参照) [#r...
広いメモリバンド幅を達成するためにシェアードメモリはバン...
これらのバンクは同時並列にアクセスすることができ,例えば,
n回のメモリアクセス場所が全て異なるバンクであり,これらが...
単一メモリモジュールの場合と比べてn倍広いバンド幅となりま...
しかし,もしもリクエストしたメモリアドレスが同じバンク上...
バンク・コンフリクトが発生し,そのアクセスは直列に実行さ...
終了行:
シェアードメモリについて
-----
#contents
-----
*シェアードメモリとは [#qa0c288c]
シェアードメモリ(shared memory)はブロック内のスレッドが共...
グローバルメモリに比べて非常に高速です.シェアードメモリ...
スレッド間のバンク・コンフリクトがなければレジスタアクセ...
*確保方法 [#l98926d2]
シェアードメモリ変数,配列はCUDAカーネル上で宣言します.~
静的な確保(コンパイル時に配列の長さが決まる)の場合,
#code(C){{
__shared__ float x[16];
}}
動的な確保(実行時に配列の長さが決まる)の場合は,カーネル...
#code(C){{
__global__
void KernelFunc()
{
extern __shared__ float x[];
// 処理
...
}
__host__
void HostFunc(int shared_size)
{
...
KernelFunc<<< grid, block, sizeof(float)*shared_size ...
...
}
}}
*シェアードメモリの大きさ [#b9a1ae3b]
デバイスプロパティを取得し,sharedMemPerBlockで確認できま...
#code(C){{
cudaDeviceProp dev;
cutilSafeCall(cudaGetDeviceProperties(&dev, 0));
printf(" shared memory / block : %d (KB)\n", dev.sharedM...
}}
*バンク・コンフリクト(Programing guide 5.1.2.5節参照) [#r...
広いメモリバンド幅を達成するためにシェアードメモリはバン...
これらのバンクは同時並列にアクセスすることができ,例えば,
n回のメモリアクセス場所が全て異なるバンクであり,これらが...
単一メモリモジュールの場合と比べてn倍広いバンド幅となりま...
しかし,もしもリクエストしたメモリアドレスが同じバンク上...
バンク・コンフリクトが発生し,そのアクセスは直列に実行さ...
ページ名: