加治/日誌/2012-10-05
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[加治/日誌]]
*けんきゅ [#p7608c16]
**ばぐとりつづき [#x400faee]
***なんかbackTrace()内のpickup[a].x,yの値がrlaと異なっていたので確認したらInitがうまく行けてない様子だった。 [#p2356dd3]
-Initを1スレッドで実行し、rlaと同じような値が入るように設定。
--これは並列化が可能っぽいので、動作確認したあと並列化する予定
-しかしこれはバグとは関係無さそう。だけど一応。
***printfによるRLAバージョンとの比較 [#n4194d12]
-途中からログなのではしょる
-ホストに転送したあとpickup_h[].x,yは0,0だったので、デバイス上の処理が終わった直後はどうなのか調べる
--backTraceの最後でpickupの値を全部出してみようとしてみたが、表示されない。クラッシュもしない。
-途中でおかしくなっているかもしれないので、backTraceCalcを3回コールしているので、1回コールするたびにその時のpickup.x,yの値を表示して比べようとした
--rlaの方はまだ埋まってない値はinitしてある
-まだ何も手を付けてないpickupの値を見てみてもなんかrlaの方より全然少ないんだが・・・あ、要素の数が
-下記を実行するとrlaバージョンがloop2=0から83(なんの数?)まで表示されるのに対しcudaバックトレースバージョンはloop2=48から92まで表示される。。。
--要素数45?
for(loop2=0; loop2 <=rh; loop2 ++)
{
for(loop1=0; loop1 <= rw; loop1++)
{
printf("(%d, %d)\n",pickup[a].x, pickup[a].y);
}
printf("loop2=%d\n", loop2);
}
-pickupInitの時点で出力させても足りない。ていうか配列の数また違うんだけど。
--loop=39から83
---要素数=45?
---要素数同じじゃんインデックス違うけど。
---つまり配列の確保してある数が足りないってこと?いや、ちゃんと確認したし・・・
---cudaMallocをCUDA_SAFE_CALLで囲ってみても特別エラーは返さない・・・
---GPUメモリがなんかおかしくなってるのかと思って再起動してみるも変わらず・・・
---バグじゃねぇの?CUDA自体の。。。僕悪くないもん!
-自宅マシンにpickupInit部分を局所的に同様な実装をして試してみたらこっちでも同じような出力になった。
--loop=39から83
-printfで何も出力されないのはcudaFree()してなかったからっぽい・・?
--cudaFree(pickup)したらprintfの内容が出力された。
-実は値が入っているけど出力されないだけかもしれないと思ってhostに転送してみる
--するとloop=0,1まできたところで以降セグフォった。
-メモリアロケーションに問題があるのかと思い、cudaMallocHostからmallocに変更
--実行するとセグフォの代わりにメモリ領域の二重開放エラーが出た。おそらくこれが原因
**なんだかんだで解決 [#re8294b2]
***原因 [#wbf343d4]
-ループ回数がおかしい=rw, rh, dmの数は合っているか確認したら違ってた
-結局引数の順序が逆だったとか最悪
**それから [#q9c587aa]
***並列化 [#a8550ccb]
-resbufInit(), pickupInit()をCUDA1スレッド処理だったものを並列化
***またわけのわからん [#d323d20f]
-なんかまた結果がおかしくなって、PC再起動してrla実行したあとにbacktrace実行したら直った。
--コンパイルしなおしてない
-グラボ故障してんじゃねぇの?
-もしくはCUDAのバグかなんか?
-でもRLAの方は特に時々崩れたりシないけどなぁ
-あとどっちの環境でもダメだったprintfのすべての要素を出せないのはどうしてなんだろうね・・・
--こっちは計算自体はちゃんとされていたけど、表示されないだけだったが
-printfの非出力、再現性の確立できない出力画像とか色々重なって無駄に多くの時間を消費してしまったよ
終了行:
[[加治/日誌]]
*けんきゅ [#p7608c16]
**ばぐとりつづき [#x400faee]
***なんかbackTrace()内のpickup[a].x,yの値がrlaと異なっていたので確認したらInitがうまく行けてない様子だった。 [#p2356dd3]
-Initを1スレッドで実行し、rlaと同じような値が入るように設定。
--これは並列化が可能っぽいので、動作確認したあと並列化する予定
-しかしこれはバグとは関係無さそう。だけど一応。
***printfによるRLAバージョンとの比較 [#n4194d12]
-途中からログなのではしょる
-ホストに転送したあとpickup_h[].x,yは0,0だったので、デバイス上の処理が終わった直後はどうなのか調べる
--backTraceの最後でpickupの値を全部出してみようとしてみたが、表示されない。クラッシュもしない。
-途中でおかしくなっているかもしれないので、backTraceCalcを3回コールしているので、1回コールするたびにその時のpickup.x,yの値を表示して比べようとした
--rlaの方はまだ埋まってない値はinitしてある
-まだ何も手を付けてないpickupの値を見てみてもなんかrlaの方より全然少ないんだが・・・あ、要素の数が
-下記を実行するとrlaバージョンがloop2=0から83(なんの数?)まで表示されるのに対しcudaバックトレースバージョンはloop2=48から92まで表示される。。。
--要素数45?
for(loop2=0; loop2 <=rh; loop2 ++)
{
for(loop1=0; loop1 <= rw; loop1++)
{
printf("(%d, %d)\n",pickup[a].x, pickup[a].y);
}
printf("loop2=%d\n", loop2);
}
-pickupInitの時点で出力させても足りない。ていうか配列の数また違うんだけど。
--loop=39から83
---要素数=45?
---要素数同じじゃんインデックス違うけど。
---つまり配列の確保してある数が足りないってこと?いや、ちゃんと確認したし・・・
---cudaMallocをCUDA_SAFE_CALLで囲ってみても特別エラーは返さない・・・
---GPUメモリがなんかおかしくなってるのかと思って再起動してみるも変わらず・・・
---バグじゃねぇの?CUDA自体の。。。僕悪くないもん!
-自宅マシンにpickupInit部分を局所的に同様な実装をして試してみたらこっちでも同じような出力になった。
--loop=39から83
-printfで何も出力されないのはcudaFree()してなかったからっぽい・・?
--cudaFree(pickup)したらprintfの内容が出力された。
-実は値が入っているけど出力されないだけかもしれないと思ってhostに転送してみる
--するとloop=0,1まできたところで以降セグフォった。
-メモリアロケーションに問題があるのかと思い、cudaMallocHostからmallocに変更
--実行するとセグフォの代わりにメモリ領域の二重開放エラーが出た。おそらくこれが原因
**なんだかんだで解決 [#re8294b2]
***原因 [#wbf343d4]
-ループ回数がおかしい=rw, rh, dmの数は合っているか確認したら違ってた
-結局引数の順序が逆だったとか最悪
**それから [#q9c587aa]
***並列化 [#a8550ccb]
-resbufInit(), pickupInit()をCUDA1スレッド処理だったものを並列化
***またわけのわからん [#d323d20f]
-なんかまた結果がおかしくなって、PC再起動してrla実行したあとにbacktrace実行したら直った。
--コンパイルしなおしてない
-グラボ故障してんじゃねぇの?
-もしくはCUDAのバグかなんか?
-でもRLAの方は特に時々崩れたりシないけどなぁ
-あとどっちの環境でもダメだったprintfのすべての要素を出せないのはどうしてなんだろうね・・・
--こっちは計算自体はちゃんとされていたけど、表示されないだけだったが
-printfの非出力、再現性の確立できない出力画像とか色々重なって無駄に多くの時間を消費してしまったよ
ページ名: