問題タブ [openacc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
284 参照

makefile - PGI コンパイラを使用して Armadillo ライブラリとリンクするための Makefile

Makefile で PGI コンパイラの -U__GNUG__ フラグを使用しようとしています。フォルダー内のすべての .cpp ファイルをコンパイルしようとしています。以下のとおりであります:

オブジェクト ファイルのコンパイルは機能しているようですが、最終的な実行可能ファイルのコンパイルに失敗しています。この Makefile の何が問題になっていますか?

以下を使用してコードをコンパイルします。

次のエラーが表示されます。

これは、フラグ -U__GNUG__ を含めることで修正されるはずです。

どんな提案でも大歓迎です。

0 投票する
1 に答える
113 参照

cuda - OpenACC 計算領域から CUDA 関数に入るスレッドを制御する

OpenACC計算領域からcuda関数を呼び出しており、cuda関数に入るスレッドの数を指定したいのですが、それを制御する方法がわからなかったようです。

コンパイルは問題ありません。しかし、使用するベクトルの長さに関係なく、cuda 関数に入るスレッドの数は常に 32 です。それを指定する方法はありますか?

「cuda/7.0.28」と「pgi/15.10」を使用しています

ありがとう

0 投票する
1 に答える
853 参照

cuda - OpenACC の削減

以下は、行列とベクトルの乗算の Fortran サブルーチンです。おそらく時代遅れで、多くの点で非効率的ですが、今は OpenACC ディレクティブで動作するようにしようとしており、リダクションがどのように機能するかを理解しようとしています:

このコードは実際には正しい結果をもたらします。しかし、最後のループでギャング/ベクトルの組み合わせを試すと、次のようになります。

結果はすべて間違って返されます。の要素のすべてではありませんが、ほとんどの合計が不完全であるように見えますoutvecreductionこれは、ギャングであろうとベクトルであろうと、どこに句を入れても当てはまります。場所を変更すると結果は変わりますが、正しい結果が得られることはありません。

簡単なテストで得た結果は次のようなものです。 matrixは 10x10 ですべて 1 で、invec1,2,3,...10 です。したがって、 のoutvec各要素は , 55 の要素の合計になるはずですinvec。コードのギャング/ベクトル バージョンを実行すると、 の各要素はoutvec55 ではなく 1 になります。正解は 55 です。これは、要素数が 90 を超えるまで機能し続けます。91 になると、 のすべての要素はoutvec4186 に等しくなるはずです。ただし、最後の 1 つだけで、残りはすべて 4095 (1 から 90 の合計) に等しくなります。要素数が多くなるほど値のばらつきが大きくなり、正解との乖離が大きくなります。

削減の仕組みがよくわかりません。誰でも説明できますか?

0 投票する
0 に答える
556 参照

openacc - 無効なアクセラレータ データ領域: 領域への分岐または領域外への分岐は許可されていませんか?

pgcc は、acc プラグマを配置した行に対して「無効なアクセラレータ データ領域: 領域への分岐または領域外への分岐は許可されていません」と表示していますが、その理由がわかりません。

ループが使用するすべての配列に対して、copy、copyin、および create を使用しています。

私は何が欠けていますか?ありがとう!

0 投票する
1 に答える
179 参照

cublas - OpenAcc での cuBLAS の使用

「cblas_dgemm()」の呼び出しを cublasDgemm() に置き換えたいと考えています。Shark 機械学習ライブラリの元のラッパーは次のとおりです。

OpenAcc プラグマを使用して変更されたコードは次のとおりです。

問題は、OpenAcc フラグを使用してコードをコンパイルすると、結果行列の要素、つまり C がカーネル実行の前後ですべてゼロになることです。ここで何が欠けているのかわかりません。助けていただければ幸いです。

0 投票する
1 に答える
312 参照

compilation - Cray コンパイラで OpenACC Fortran コードをコンパイルする

Cray Fortran コンパイラで OpenACC Fortan コードをコンパイルしようとしています ...

エラーメッセージで失敗します

どうやら、ターゲット アクセラレータを指定する必要があります。問題は、これを行う方法に関するドキュメントがどこにも見つからないことです。Bing 検索ではなく、特に crayftn のマニュアル ページではありません。誰がどのフラグを使用するか知っていますか?

ところで、nvidia Tesla K40 用にコンパイルしようとしています。そして、私は今のところ Cray コンパイラーに固執しています。現時点で別のコンパイラを使用できたとしても、最終的にはこれを crayftn で解決する必要があります。ありがとう。