問題タブ [pgi]
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.
floating-point - IEEE 浮動小数点演算の計算時間は値に依存しますか?
CFD ソルバーで IEEE の厳密な浮動小数点演算を使用しています。私のアルゴリズムは明示的かつ決定論的です (時間ステップごとにまったく同じ数の計算を実行します)。しかし、私は、ソリューションが複雑な時期 (グリッド全体で多くのことが起こっている) に、ソルバーが「行き詰まり」、速度が低下することを観察しています。
私は FP 演算に非常に苦手なので、FP 演算は計算時間において決定論的であると想定していました。ここで、特定の FP 計算に必要な実際の CPU 操作の数が値に依存する可能性があるかどうか疑問に思い始めています (たとえば、乗算または除算の指数が大幅に異なる)。
IEEE 厳密な浮動小数点のパフォーマンスは値に依存しますか?
gcc - PGI 14.6 OpenSuse 13.1 x_64 gcc 4.8 c++11 コンパイル エラー
OpenSuse で PGI 14.6 を使用して、C++11 機能を備えた C++ プログラムをコンパイルしようとしています。残念ながら、次のエラーが表示されます
私の構成は次のとおりです。
どんな助けでも大歓迎です。
よろしく
fortran - Fortran : すべての変数を特定のデフォルト値に初期化する
私は、暗黙的に宣言された多くの変数を使用して、約 40 年前の Fortran スパゲッティ コードに取り組んでいます。そのため、値を初期化するためにコード内に存在する変数を知る簡単な方法はありません。さて、コード内のすべての変数をゼロまたは非常に大きな数値以外の特定のデフォルト値 (-999 など) に初期化するようにコンパイラー (インテル Fortran など) に指示する方法はありますか?
c++ - デバイスメモリ内の変数は外部関数でどのように使用されますか?
このコードでは:
のデバイスメモリ上にあるとどのようにint value
認識されintfun
ますか? present(variable[:1])
プラグマでbypresent(variable[:1],value)
に置き換えるintfun
と、次のランタイム エラーが発生します。
value
それを指定するとpresent
上記の失敗につながる理由がわかりません。value
ディレクティブで一度だけコピーされたNVVP で確認しました。つまり、ディレクティブでenter data
再度コピーされていません。OpenACC はどのようにその魔法を働かせるのですか?parallel
intfun
c++ - CUDA および C++ での名前マングリング
from PGI でmain.cpp
コンパイルされた私の C++ プロジェクトは、 でコンパイルされた別のファイルに CUDA コードを含む関数を呼び出します。関数宣言と共通ヘッダー ファイルで関数をラップしないと、リンク エラー (未定義の参照) が発生します。pgcpp
cuda()
cuda.cu
nvcc
cuda()
extern "C"
なしextern "C"
(シンボル名の不一致 => 未定義参照):
extern "C"
(シンボル名の一致 => リンクは正常に動作します) :
nvcc
ホスト コードにホスト C++ コンパイラを使用したため、C++ のようにシンボル名をマングルするというのが私の印象でした。私は何を間違っていますか?
編集:これは、ホスト コードにnvcc
GNU コンパイラgcc
を実際に使用し、このコンパイラが名前を異なる方法でマングルするという事実によるものpgcpp
でしょうか?
EDIT2:私のシステムにはpgcpp 14.9、gcc 4.4.7、nvcc/CUDA 6.5があります
thrust - コンパイラは #pragma once をサポートしていません
サポートしていないコンパイラ (PGI) を使用しています。
しかし、私が含めたいライブラリ(スラスト)はそれらを使用しています。
この問題の回避策はありますか?
c - OpenACC を使用してネストされたループを並列化する
私はopenaccに非常に慣れておらず、高レベルの知識しか持っていないので、私が間違っていることについての助けと説明をいただければ幸いです。
openacc ディレクティブを使用してフラット化された (3D から 1D へ) 配列を更新する、それほど単純ではないネストされたループを高速化 (並列化) しようとしています。を使用してコンパイルしたときの簡略化されたサンプルコードを以下に投稿しました
pgcc -acc -Minfo=accel test.c
次のエラーが発生します。
call to cuStreamSynchronize returned error 700: Illegal address during kernel execution
コード:
region
andloop
ディレクティブを使用する代わりに、
次のエラーが発生します。
私はこのコードを実行しています