加治/引き継ぎ資料
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[加治/研究室関連]]
#contents
*クラスタ [#a20b9ae1]
**クラスタの構成 [#aa0ece5f]
-マスターノード
--zxv002
-処理用(GTX480)
--zxg001
--zxg002
--zxg003
--zxg004
**電源の付け方 [#af9b79d0]
-基本的に5つのマシンの電源を順不同で入れればいい
**電源の消し方 [#wa970d3b]
-電源ボタンを押せばそのマシンはシャットダウンシーケンスに入る。順不同。
**接続方法 [#tdeb31a4]
$ ssh asl@zxv002.u-aizu.ac.jp
-パスワードはこのwikiのユーザー名
-これでマスターノードに入れる
-処理用ノードには
**root関係 [#k2dfdb48]
-rootは基本的に使用しなくてもいい。アップデートや実験に必要なアプリケーションやライブラリをインストールするのに使用するくらい。
-パスワードはラボで引き継ぐ人に直接教えることにする
**MPI使用時のログインパスワード入力省略 [#w4286b7a]
-こちらを参照
--[[加治/オープンラボ#odcb3690]]
*2DCDP [#d01b52c3]
**GPGPU静止画バージョン(矢口版) [#wb5a527e]
***ソースコード [#c51d3e01]
-GT&MT2013/m5161150_Kaji/2DCDP_picture/src/cdpv42c
--cdpv402_x64
---2DCDPのはじめのコード。CPU版。VSのビルドオプションでOpenMPを有効にすることでマルチスレッド対応。シングルは無効化すればいい。
--cdpv402_cuda
---2DCDPのCUDA用のコード。CPU版から最低限CUDAで実行するのに書き換えたもの
--(cdpv402_cuda_cache)
---CUDA用コードにシェアードメモリを使うようにしたもの。今は使っていない
--2dcdp_rla
---CUDAコードの累積値用変数dxx,dxy,dyx,dyy、パディング用変数rlaの配列をCUDAのコアレッシングを用いるためにデータ構造を変えたもの。ノーマルCUDAよりちょいと累積値計算が速い
--2dcdp_continuous_input
---2dcdp_rlaを元に、バックトレースをCUDAでやるようにしてデータ転送量の削減を図ったもの。さらにCUDA用初期化処理を並列化した。さらに、FTVを想定した連続的な2DCDP処理に対応させるため、メモリ確保の部分とデータ初期化の部分を分断した。自分の持つプロジェクトの中では一番速いバージョン(ちゃんと動けば)
***プロジェクトファイル [#j1ef49aa]
-上のソースコードに該当する名前のフォルダがドキュメントのVS2010/Projectsフォルダ内にあるはず。
-GT&MT2013\m5161150_Kaji\2DCDP_picture\VS2010用プロジェクトファイルにもおいとく
***ビルド方法 [#pe6cb7d2]
-プロジェクトをバックアップとった上でそのままビルドすれば通るはず
--ソースコードの置く位置によってはそのままではビルドできない可能性もあるので、参考までにソースコードとプロジェクトのディレクトリの位置関係は、zxp094上において
---ソースコード:デスクトップ/cdpv42c/ソースコードディレクトリ/
---プロジェクト:ドキュメント/Visual Studio2010/Projects/プロジェクト名/
***実行方法 [#e15d261f]
-VS上でexeを呼び出すと処理終了後画面も消えてしまうので、cmdを起動してからexeのあるディレクトリにcdして、そこから各々のプロジェクトフォルダにあるeval.bat及びeval2.batを実行すれば良い。中身は引数を入れた実行ファイルの呼び出しで、入力画像と参照画像のファイル名の部分を変えることで評価が行える。
***問題 [#sd7b50df]
-タイマーが正常に動かない
--合計タイムは恐らく妥当だが、その中でそれぞれの処理にかかる時間については正常でないと思われる。そのため、NVIDIA Nsightを使ったプロファイリング結果から時間を読み取って評価をとっている。Nsightの簡単な使い方は後に記す。
-結果画像が正しく現れない
--実行するたびに結果が変わったりして、最近ではめっきり正しい画像を拝めなくなってしまった。どこが原因なのか未だにわからないが、2dcdp_rlaまでは正しい結果が出る。そのためバックトレースのCUDA化に伴い追加された初期化部分、メモリ確保開放部分にバグが有る可能性が大きい。
***Nsightによる評価 [#xa27a8f3]
-Nsightとは?
--NVIDIA提供のCUDA用プロファイリングツール。GPUの性能をどれ位使えているかとか、どこにどれだけ時間がかかっているかとかを視覚的に表示したり出来る。が、このプロファイリングを行うと実際の実行時間より若干パフォーマンスが落ちる。
-使い方
--VS2010にてNsightがインストールされていると上のメニューバーにNsightの項目が増える。
--2DCDPの処理のどの部分にどれぐらい時間がかかっているかを見たいということであれば、「Nsight」->「Start Performance Analysis」で、「Connect unsecurely」を選択。
--Arguments:の部分に実行時の引数をはりつける。ここで注意すべきは、ディレクトリ名などはダブルクオーテーションで囲むこと。
--「Activity Type」で「Trace Application」にチェックを入れる
--下の方にある「Trace Settings」からプロファイリングを行いたい項目にチェックを入れる
--チェックを入れると下の丸いアイコンの「Application Control」のLaunchが選択できるようになるため、ここをクリックするとプロファイリングが開始される
--正常にプロファイリングが行われるとメニューが出てくる。選択メニューから「Timeline」を選ぶと各処理の実行時間がグラフで表される
**FTV [#k870d177]
-基本的には静止画のGPGPU版をFTVのcuファイルに適用させていきFTVをCUDAで実行できるようにする方針
***プロジェクトファイル [#p35962f2]
-実験用マシンのデスクトップにおいてあるが、バックアップしておく
--GT&MT2013\m5161150_Kaji\2DCDP_FTV\Project_and_src\_FTV_ASL2\FreeviewpointTV\FreeviewpointTV.sln
***ソースコード [#d7c219ea]
-GT&MT2013/m5161150_Kaji/2DCDP_FTV/Project_and_src/_FTV_ASL2/FreeviewpointTV/Creater/2DCDP
-2DCDP4_FTV化作業直前.cu
--2DCDP4.cuのCUDA化する前のもの。バックアップ
-2DCDP4_FTV化作業直前.h
--2DCDP4.hのCUDA化する前のもの。バックアップ
-2DCDP4.cu
--2DCDP4.cppをCUDA化して、単純にcpp用ではなくnvccでコンパイル出来るようにしたもの。コメント化してあるところはデバッグ中だからです。何が問題かは後述。とりあえず今のままでもビルドは通るけど処理自体はCPUで行われます。
-こっちは静止画バージョンと異なりプロジェクトフォルダにソースファイルも入っている。
***ビルド方法 [#kde1a32c]
-プロジェクトファイル
--_FTV_ASL2\FreeviewpointTV\FreeviewpointTV.sln
-そのままプロジェクトをビルド。作業をする前にプロジェクト一式バックアップしておくのおすすめ
***実行方法 [#z690c242]
-実験用マシンzxv094
+cmd起動して、cd C:\Users\ASL\Desktop\_FTV_ASL2\FreeviewpointTV\x64\Release
+FreeviewpointTV.exe
+Use Camera? -> n
+Load capture file? -> y
+Please input capture root folder name -> ../../Capture
***現在の進捗と問題 [#i343ddae]
-元々はCPUで実行されるプログラムだが、これをCUDAにより実行できるようにする。
-2DCDPの処理の部分は静止画の部分とほとんど同じ
-既存の2DCDP.cppを2DCDP.cuとしてそのままnvccコンパイラでコンパイル出来るようにした
-動作を確かめながら徐々にCUDA化していけるように、「メモリ確保」「メモリ解放」を先に静止画の方から移植。ここまではうまく行っているように見える
-つづいてデバイスメモリ内のデータの「初期化」を行う処理の部分で問題が発生。CUDAによる初期化ルーチン、cu_rankBufInit、cu_rlabufInitが実行されるとその後に入れたcudaのエラーをチェックするためのAPI、checkCudaErrors()でunknown errorがでる。
--試しに一番関数の中身が短いcu_rlabufInitを見てみると、値への代入がうまくできていないようである。
---for(int i=0; i<pdji*(ref_height+1); i++)の部分のせいか、実行時画面が出てきた瞬間に強制終了される。
---この部分を、たとえばi<2とかにして少ない要素にすると実行できた。要素数が多すぎる??
--静止画の方もこちらもデータ初期化の部分でおかしくなっている気がする。。。が結局未解決ですみません
*セントリーナゲット [#saaab30d]
**カメラマウント [#y5c34c8b]
**RBIO-5Pの使い方 [#x25c4774]
-PDFにまとめた
--GT&MT2013/m5161150_Kaji/gakusai.pdf
終了行:
[[加治/研究室関連]]
#contents
*クラスタ [#a20b9ae1]
**クラスタの構成 [#aa0ece5f]
-マスターノード
--zxv002
-処理用(GTX480)
--zxg001
--zxg002
--zxg003
--zxg004
**電源の付け方 [#af9b79d0]
-基本的に5つのマシンの電源を順不同で入れればいい
**電源の消し方 [#wa970d3b]
-電源ボタンを押せばそのマシンはシャットダウンシーケンスに入る。順不同。
**接続方法 [#tdeb31a4]
$ ssh asl@zxv002.u-aizu.ac.jp
-パスワードはこのwikiのユーザー名
-これでマスターノードに入れる
-処理用ノードには
**root関係 [#k2dfdb48]
-rootは基本的に使用しなくてもいい。アップデートや実験に必要なアプリケーションやライブラリをインストールするのに使用するくらい。
-パスワードはラボで引き継ぐ人に直接教えることにする
**MPI使用時のログインパスワード入力省略 [#w4286b7a]
-こちらを参照
--[[加治/オープンラボ#odcb3690]]
*2DCDP [#d01b52c3]
**GPGPU静止画バージョン(矢口版) [#wb5a527e]
***ソースコード [#c51d3e01]
-GT&MT2013/m5161150_Kaji/2DCDP_picture/src/cdpv42c
--cdpv402_x64
---2DCDPのはじめのコード。CPU版。VSのビルドオプションでOpenMPを有効にすることでマルチスレッド対応。シングルは無効化すればいい。
--cdpv402_cuda
---2DCDPのCUDA用のコード。CPU版から最低限CUDAで実行するのに書き換えたもの
--(cdpv402_cuda_cache)
---CUDA用コードにシェアードメモリを使うようにしたもの。今は使っていない
--2dcdp_rla
---CUDAコードの累積値用変数dxx,dxy,dyx,dyy、パディング用変数rlaの配列をCUDAのコアレッシングを用いるためにデータ構造を変えたもの。ノーマルCUDAよりちょいと累積値計算が速い
--2dcdp_continuous_input
---2dcdp_rlaを元に、バックトレースをCUDAでやるようにしてデータ転送量の削減を図ったもの。さらにCUDA用初期化処理を並列化した。さらに、FTVを想定した連続的な2DCDP処理に対応させるため、メモリ確保の部分とデータ初期化の部分を分断した。自分の持つプロジェクトの中では一番速いバージョン(ちゃんと動けば)
***プロジェクトファイル [#j1ef49aa]
-上のソースコードに該当する名前のフォルダがドキュメントのVS2010/Projectsフォルダ内にあるはず。
-GT&MT2013\m5161150_Kaji\2DCDP_picture\VS2010用プロジェクトファイルにもおいとく
***ビルド方法 [#pe6cb7d2]
-プロジェクトをバックアップとった上でそのままビルドすれば通るはず
--ソースコードの置く位置によってはそのままではビルドできない可能性もあるので、参考までにソースコードとプロジェクトのディレクトリの位置関係は、zxp094上において
---ソースコード:デスクトップ/cdpv42c/ソースコードディレクトリ/
---プロジェクト:ドキュメント/Visual Studio2010/Projects/プロジェクト名/
***実行方法 [#e15d261f]
-VS上でexeを呼び出すと処理終了後画面も消えてしまうので、cmdを起動してからexeのあるディレクトリにcdして、そこから各々のプロジェクトフォルダにあるeval.bat及びeval2.batを実行すれば良い。中身は引数を入れた実行ファイルの呼び出しで、入力画像と参照画像のファイル名の部分を変えることで評価が行える。
***問題 [#sd7b50df]
-タイマーが正常に動かない
--合計タイムは恐らく妥当だが、その中でそれぞれの処理にかかる時間については正常でないと思われる。そのため、NVIDIA Nsightを使ったプロファイリング結果から時間を読み取って評価をとっている。Nsightの簡単な使い方は後に記す。
-結果画像が正しく現れない
--実行するたびに結果が変わったりして、最近ではめっきり正しい画像を拝めなくなってしまった。どこが原因なのか未だにわからないが、2dcdp_rlaまでは正しい結果が出る。そのためバックトレースのCUDA化に伴い追加された初期化部分、メモリ確保開放部分にバグが有る可能性が大きい。
***Nsightによる評価 [#xa27a8f3]
-Nsightとは?
--NVIDIA提供のCUDA用プロファイリングツール。GPUの性能をどれ位使えているかとか、どこにどれだけ時間がかかっているかとかを視覚的に表示したり出来る。が、このプロファイリングを行うと実際の実行時間より若干パフォーマンスが落ちる。
-使い方
--VS2010にてNsightがインストールされていると上のメニューバーにNsightの項目が増える。
--2DCDPの処理のどの部分にどれぐらい時間がかかっているかを見たいということであれば、「Nsight」->「Start Performance Analysis」で、「Connect unsecurely」を選択。
--Arguments:の部分に実行時の引数をはりつける。ここで注意すべきは、ディレクトリ名などはダブルクオーテーションで囲むこと。
--「Activity Type」で「Trace Application」にチェックを入れる
--下の方にある「Trace Settings」からプロファイリングを行いたい項目にチェックを入れる
--チェックを入れると下の丸いアイコンの「Application Control」のLaunchが選択できるようになるため、ここをクリックするとプロファイリングが開始される
--正常にプロファイリングが行われるとメニューが出てくる。選択メニューから「Timeline」を選ぶと各処理の実行時間がグラフで表される
**FTV [#k870d177]
-基本的には静止画のGPGPU版をFTVのcuファイルに適用させていきFTVをCUDAで実行できるようにする方針
***プロジェクトファイル [#p35962f2]
-実験用マシンのデスクトップにおいてあるが、バックアップしておく
--GT&MT2013\m5161150_Kaji\2DCDP_FTV\Project_and_src\_FTV_ASL2\FreeviewpointTV\FreeviewpointTV.sln
***ソースコード [#d7c219ea]
-GT&MT2013/m5161150_Kaji/2DCDP_FTV/Project_and_src/_FTV_ASL2/FreeviewpointTV/Creater/2DCDP
-2DCDP4_FTV化作業直前.cu
--2DCDP4.cuのCUDA化する前のもの。バックアップ
-2DCDP4_FTV化作業直前.h
--2DCDP4.hのCUDA化する前のもの。バックアップ
-2DCDP4.cu
--2DCDP4.cppをCUDA化して、単純にcpp用ではなくnvccでコンパイル出来るようにしたもの。コメント化してあるところはデバッグ中だからです。何が問題かは後述。とりあえず今のままでもビルドは通るけど処理自体はCPUで行われます。
-こっちは静止画バージョンと異なりプロジェクトフォルダにソースファイルも入っている。
***ビルド方法 [#kde1a32c]
-プロジェクトファイル
--_FTV_ASL2\FreeviewpointTV\FreeviewpointTV.sln
-そのままプロジェクトをビルド。作業をする前にプロジェクト一式バックアップしておくのおすすめ
***実行方法 [#z690c242]
-実験用マシンzxv094
+cmd起動して、cd C:\Users\ASL\Desktop\_FTV_ASL2\FreeviewpointTV\x64\Release
+FreeviewpointTV.exe
+Use Camera? -> n
+Load capture file? -> y
+Please input capture root folder name -> ../../Capture
***現在の進捗と問題 [#i343ddae]
-元々はCPUで実行されるプログラムだが、これをCUDAにより実行できるようにする。
-2DCDPの処理の部分は静止画の部分とほとんど同じ
-既存の2DCDP.cppを2DCDP.cuとしてそのままnvccコンパイラでコンパイル出来るようにした
-動作を確かめながら徐々にCUDA化していけるように、「メモリ確保」「メモリ解放」を先に静止画の方から移植。ここまではうまく行っているように見える
-つづいてデバイスメモリ内のデータの「初期化」を行う処理の部分で問題が発生。CUDAによる初期化ルーチン、cu_rankBufInit、cu_rlabufInitが実行されるとその後に入れたcudaのエラーをチェックするためのAPI、checkCudaErrors()でunknown errorがでる。
--試しに一番関数の中身が短いcu_rlabufInitを見てみると、値への代入がうまくできていないようである。
---for(int i=0; i<pdji*(ref_height+1); i++)の部分のせいか、実行時画面が出てきた瞬間に強制終了される。
---この部分を、たとえばi<2とかにして少ない要素にすると実行できた。要素数が多すぎる??
--静止画の方もこちらもデータ初期化の部分でおかしくなっている気がする。。。が結局未解決ですみません
*セントリーナゲット [#saaab30d]
**カメラマウント [#y5c34c8b]
**RBIO-5Pの使い方 [#x25c4774]
-PDFにまとめた
--GT&MT2013/m5161150_Kaji/gakusai.pdf
ページ名: