とらりもん - CUDA Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
基本的に「CUDA Cプロフェッショナルプログラミング,2015, John Cheng他,インプレス」より引用.
! 用語
*ホスト:CPU側.
*デバイス:GPU側.
*ワープ:32個のスレッドからなるグループ
*ワープダイバージェンス:同じワープ内のスレッドが異なる命令を実行すること
*スループット:単位時間あたりに処理されるあらゆる種類の情報または演算の速度
*帯域幅:単位時間あたりに転送可能なデータの最大量
*ストール:パイプライン処理の動作が停止すること。
*達成占有率(achived_occupancy):SMでサポートされるワープの最大数に対するサイクルあたりのアクティブワープの平均数の比率.
*ループアンローリング(=ループ展開):分岐やループ管理命令の頻度を減らすことでループ実行の最適化を試みる手法.
**ループ展開係数:ループの本体がコピーされる回数.
*ダイナミックパラレリズム:GPUで実行しているカーネルから子供のカーネルを起動することができるという機能([[参考|http://news.mynavi.jp/series/kepler_gpu/006/]])
*コンスタントメモリ:全てのスレッドからアクセス可能なリードオンリーのメモリ.
*テクスチャメモリ:グローバルメモリの一種.
*シェアードメモリ:同じスレッドブロック内の全てのスレッドから参照可能なメモリ.
*グローバルメモリ:
*レジスタスピル:カーネルが使用するレジスタの数がハードウェア制限を超える場合,超えた分のレジスタがローカルメモリに退避される現象.パフォーマンスに悪影響を及ぼす可能性がある.
*ゼロコピーメモリ:ホストとデバイスの両方からアクセス出来るメモリ.
*UVA
*ユニファイドメモリ:
*マネージドメモリ:システムによって自動的に管理されるユニファイドメモリのこと.
!デバイスの構造
スレッド⊂ブロック⊂グリッド
*グリッド:ブロックによって構成される.
*ブロック:スレッドによって構成される.
*スレッド:計算するやつ.
スレッドブロック
*ブロックに属するスレッド間の同期
*ブロック内で共有されるメモリ
! テクニック
!! ページング可能なメモリ vs ピンメモリ
ホスト側のメモリ(ページング可能なメモリ)は通常malloc()で確保するが,cudaMallocHost()を使うとピンメモリに置き換えることが出来る.
ピンメモリは確保と開放にコストがかかるが,データ転送のサイズが大きい場合に高いスループットを達成する.
基本的に「CUDA Cプロフェッショナルプログラミング,2015, John Cheng他,インプレス」より引用.
! 用語
*ホスト:CPU側.
*デバイス:GPU側.
*ワープ:32個のスレッドからなるグループ
*ワープダイバージェンス:同じワープ内のスレッドが異なる命令を実行すること
*スループット:単位時間あたりに処理されるあらゆる種類の情報または演算の速度
*帯域幅:単位時間あたりに転送可能なデータの最大量
*ストール:パイプライン処理の動作が停止すること。
*達成占有率(achived_occupancy):SMでサポートされるワープの最大数に対するサイクルあたりのアクティブワープの平均数の比率.
*ループアンローリング(=ループ展開):分岐やループ管理命令の頻度を減らすことでループ実行の最適化を試みる手法.
**ループ展開係数:ループの本体がコピーされる回数.
*ダイナミックパラレリズム:GPUで実行しているカーネルから子供のカーネルを起動することができるという機能([[参考|http://news.mynavi.jp/series/kepler_gpu/006/]])
*コンスタントメモリ:全てのスレッドからアクセス可能なリードオンリーのメモリ.
*テクスチャメモリ:グローバルメモリの一種.
*シェアードメモリ:同じスレッドブロック内の全てのスレッドから参照可能なメモリ.
*グローバルメモリ:
*レジスタスピル:カーネルが使用するレジスタの数がハードウェア制限を超える場合,超えた分のレジスタがローカルメモリに退避される現象.パフォーマンスに悪影響を及ぼす可能性がある.
*ゼロコピーメモリ:ホストとデバイスの両方からアクセス出来るメモリ.
*UVA
*ユニファイドメモリ:
*マネージドメモリ:システムによって自動的に管理されるユニファイドメモリのこと.
!デバイスの構造
スレッド⊂ブロック⊂グリッド
*グリッド:ブロックによって構成される.
*ブロック:スレッドによって構成される.
*スレッド:計算するやつ.
スレッドブロック
*ブロックに属するスレッド間の同期
*ブロック内で共有されるメモリ
! テクニック
!! ページング可能なメモリ vs ピンメモリ
ホスト側のメモリ(ページング可能なメモリ)は通常malloc()で確保するが,cudaMallocHost()を使うとピンメモリに置き換えることが出来る.
ピンメモリは確保と開放にコストがかかるが,データ転送のサイズが大きい場合に高いスループットを達成する.