前提・実現したいこと
運動シミュレーションをOpenACCで並列化を試みています.
単純な並列化
c++
1 2double p=0; 3for(lon long i=0;i<10000000000;i++){ 4p+=1; 5} 6cout<<p;
では処理時間短縮が確認され動作環境には問題ないようですが,csvから作った2次元ベクトルの成分や構造体配列参照しようとするとエラーを返されてしまいます.
例として以下のようなコードを考えます.
構造体配列のa[0]の成分p.vxに並列化してひたすらBr[4][4]を足し続けるだけの至ってシンプルな内容です.
データ移動ができていないのかなと思い,こちらの記事を参考にcopyinやpresentなどいろいろ試しましたが結果は変わりませんでしたし,そもそもGenerating implicit copy(Br,a)と書かれているのでそれも関係なさそうです.
ご教示よろしくお願いします.
補足情報(FW/ツールのバージョンなど)
GPUはnvidiaのtesla,nvc++は最新版にしてあります.
コンプラ絡みの諸事情で解決後に質問文は大幅編集しました。ご容赦ください。
回答2件
あなたの回答
tips
プレビュー