加治/日誌/2014-01-29
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[加治/日誌]]
*ろんぶん [#f751c1e6]
**構成 [#c954e4ae]
***Chapter 2 [#b8ea4630]
+アルゴリズムの説明
+その問題点と、だから並列化するなりして高速化が必要です
+並列化出来るポイント
+過去の研究でマルチコアCPUやCellを使用した結果がこれです。まだリアルタイム処理には届かないです
***Chapter 3 [#l02477d6]
+そこでCUDAです。速くていろいろすごいですが、同時にデータ転送など重要な問題もあります。
+本章からはCUDAの並列化による高速化手法について述べ、プロファイリングをします
+CUDAによる並列化では、その演算コアの多さを活かすために、ある(m,n)一点における全(i,j)での累積値計算部分の独立性を利用する。
+入力画像平面を32x32ピクセルで区切り、1ピクセルにおける計算をCUDAコアの一つに割り当てて並列計算させる
+CUDAによる処理フローは以下のようになる
+そして以下がマルチコアプロセッサとの実行時間の比較である。
+あまり実行時間が変わらないのは、マルチコアによる並列化が(m,n)平面における同ランクでの並列化、CUDAによる並列化は(i,j)平面における並列化と、並列化箇所が異なるためである。さらに、CUDA版の全体実行時間の内訳には、ホストメモリとデバイスメモリ間での大きなデータ転送時間が存在するため、ボトルネックとなってしまっているためである。
***Chapter 4 [#j21a3e27]
+この章では、前章で述べたボトルネックを排除するためのメソッドと、データ転送やメモリアロケーションの最適化について述べる
+デバイスメモリ、GPU間のデータアクセスの最適化
++累積値計算をする際に、GPUはデバイスメモリにアクセスする必要がある。ただし、デバイスメモリはチップ外にあるためにボトルネックとなりやすい。そのため、CUDAのコアレッシングを用いてデータ転送の効率化を図るため、累積値計算に必要な変数のデータ配列を改良した。
+ホスト、デバイス間のデータ転送量の削減
++CUDAによる累積値計算の高速化のため、入力データをホストメモリからデバイスメモリに転送し、累積計算を行う。その後、全てのD(i,j,m,n)、つまりN^4分のデータをもとに、バックトラッキング処理を通して2DCDPとしての最適解(N^2)が求められる。現在の実装では、バックトラッキング処理を行うために、GPU上で計算されたN^4分の累積値データをホストメモリに転送しなくてはならない。
++そこで、バックトラッキングを累積値計算に引き続きGPU上で行わせることにより、N^4分のデータを転送する必要性をなくした。
++これにより、バックトラッキング終了後、N^2分だけのデータをホストメモリに転送するだけで済み、現在多くの割合を占めているデータ転送時間を大幅に減せることが期待できる。
終了行:
[[加治/日誌]]
*ろんぶん [#f751c1e6]
**構成 [#c954e4ae]
***Chapter 2 [#b8ea4630]
+アルゴリズムの説明
+その問題点と、だから並列化するなりして高速化が必要です
+並列化出来るポイント
+過去の研究でマルチコアCPUやCellを使用した結果がこれです。まだリアルタイム処理には届かないです
***Chapter 3 [#l02477d6]
+そこでCUDAです。速くていろいろすごいですが、同時にデータ転送など重要な問題もあります。
+本章からはCUDAの並列化による高速化手法について述べ、プロファイリングをします
+CUDAによる並列化では、その演算コアの多さを活かすために、ある(m,n)一点における全(i,j)での累積値計算部分の独立性を利用する。
+入力画像平面を32x32ピクセルで区切り、1ピクセルにおける計算をCUDAコアの一つに割り当てて並列計算させる
+CUDAによる処理フローは以下のようになる
+そして以下がマルチコアプロセッサとの実行時間の比較である。
+あまり実行時間が変わらないのは、マルチコアによる並列化が(m,n)平面における同ランクでの並列化、CUDAによる並列化は(i,j)平面における並列化と、並列化箇所が異なるためである。さらに、CUDA版の全体実行時間の内訳には、ホストメモリとデバイスメモリ間での大きなデータ転送時間が存在するため、ボトルネックとなってしまっているためである。
***Chapter 4 [#j21a3e27]
+この章では、前章で述べたボトルネックを排除するためのメソッドと、データ転送やメモリアロケーションの最適化について述べる
+デバイスメモリ、GPU間のデータアクセスの最適化
++累積値計算をする際に、GPUはデバイスメモリにアクセスする必要がある。ただし、デバイスメモリはチップ外にあるためにボトルネックとなりやすい。そのため、CUDAのコアレッシングを用いてデータ転送の効率化を図るため、累積値計算に必要な変数のデータ配列を改良した。
+ホスト、デバイス間のデータ転送量の削減
++CUDAによる累積値計算の高速化のため、入力データをホストメモリからデバイスメモリに転送し、累積計算を行う。その後、全てのD(i,j,m,n)、つまりN^4分のデータをもとに、バックトラッキング処理を通して2DCDPとしての最適解(N^2)が求められる。現在の実装では、バックトラッキング処理を行うために、GPU上で計算されたN^4分の累積値データをホストメモリに転送しなくてはならない。
++そこで、バックトラッキングを累積値計算に引き続きGPU上で行わせることにより、N^4分のデータを転送する必要性をなくした。
++これにより、バックトラッキング終了後、N^2分だけのデータをホストメモリに転送するだけで済み、現在多くの割合を占めているデータ転送時間を大幅に減せることが期待できる。
ページ名: