問題タブ [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.

0 投票する
3 に答える
5647 参照

c++ - #ifdef でコンパイラを検出する

複数のプラットフォームとコンパイラで動作する小さなコードを作成しようとしています。私はアサーションを使用しており、そのほとんどはオフにできますが、PGI のOpenMP サポートpgicppを使用してコンパイルすると、オプションが自動的に使用されます。コード内のどこでも「throw」ステートメントを使用すると、致命的なコンパイラ エラーが発生します。(「例外処理のサポートが無効になっています」)-mp--no_exceptions

PGIdefineのステートメントを非表示にするためにテストできる d マクロはありますか? throw私は通常、gcc などを使用して作業しGCC_VERSIONます。これらのマクロを PGI で説明しているドキュメントが見つかりません。

0 投票する
2 に答える
1348 参照

fortran - Windows PGI Visual Fortran で netcdf.lib をリンクする際の問題

(Windows OS) で PGI Visual Fortran を使用して、fortran (f90) ライブラリと実行可能ファイルで構成されるプロジェクト/ソリューションを構築しています。f90 ライブラリは netcdf.lib にリンクしています。f90 は正常にコンパイルおよびビルドされますが、実行可能ファイルにリンクしようとすると、次のエラーが発生します。

Compiling Project ...
Linking...
error LNK2019: unresolved external symbol nf_ _inq_varid_ referenced in function interpnwptools_checkcldliq_
error LNK2001: unresolved external symbol nf__inq varid
error LNK2019: unresolved external symbol nf_ strerror_ referenced in function エラー
エラー LNK2019: unresolved external symbol nf_ get_ att_関数
エラー LNK2001 で参照されている real_: 未解決の外部シンボル nf_ get_ att_ real_
エラー LNK2019: 関数 ncdf_module_openfile_ エラーで参照されている未解決の外部シンボル nf_ create_エラー LNK2019
: 未解決の外部シンボル nf_def_dim_ が関数 ncdf_module_openfile_ で参照されています

.
.
および nf_ 未解決のシンボルの他のすべての束。netcdf ライブラリが正しくリンクされているとは思えません。誰でも助けることができますか?私が使用しているプロジェクトには、MS VStudio 2003 を使用して自分で構築した netcdf 3.6.0-p1 が必要です。また、gfortran と eclipse を使用してプロジェクトを構築しようとしましたが、同じリンクの問題があります。以前に netcdf や fortran を使用したことがありません...何か提案はありますか?

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

c++ - ofstream オブジェクトのインスタンス化中に C++ アプリケーションがクラッシュします。

C++ アプリケーションの実行中に非常にイライラする問題が発生しました。Windows XP の Interix サブシステムで pgcpp コンパイラを使用しています。私の問題は基本的にここで説明されています:

ヘッダー ファイルにクラス定義があります。このヘッダー ファイルは、1 つのソース ファイルに含まれています。このクラスには 2 つのコンストラクターがあり、基本的にロガーの実装に使用されます。最初のコンストラクターは引数として ostream *out を取り、2 番目のオーバーロードされたコンストラクターはファイル名とデフォルトのブール値 false を取ります。この 2 番目のコンストラクターの目的は、渡すファイル名のストリームを取得し、メッセージのログ記録を開始することです。コンストラクタ内のコードは次のとおりです。

p_out と p_ofstream の宣言は次のとおりです。

上記の 3 つはすべてプライベート メンバーです。MessageLogger クラスのインスタンス化は次のように行われます。

append_to_file のデフォルト値は false であることに注意してください。PGDBG挙動不審でもあります。p_ofstream = new std::ofstream (filename);コントロールが にあり、ランダムな場所にステップインしてアプリケーションがクラッシュしたときに、不可解にステップインでき ます。

また、PGDBG で混合コードまたは逆アセンブリ コードのいずれかを表示しようとすると、デバッガーがクラッシュして次のメッセージが表示されます。

上記とまったく同じことを行ったサンプル プログラムでこれを再現することはできませんが、すべて正常に動作します。誰かが何が起こっているのか、これに修正があるかどうかを説明できますか?

ありがとう、アディティア。

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

optimization - ポートランドグループのFORTRANpgf90プログラムは、-fastでコンパイルすると失敗し、-fast-Mnounrollで成功します。

このコードは、最近、サイレントに失敗するエッジケースを発見するまで、長い間陽気にハミングしました。エラーは返されませんでした。失敗は見たところかなり微妙です。エッジケースでは、次の方法でコードを問題なく実行できます。

-traceback1)デバッグ(-gまたは-gopt) を含むまたはデバッグするオプションのセットを使用してコンパイルする。

-fast -Mnounroll2) ; でコンパイルする

3)最適化<2でコンパイルします。

4)コードにWRITEステートメントを追加して、失敗の場所を特定します。

言い換えれば、障害のデバッグに役立つツールのほとんどは、実際には障害が消えることになります。

ループの展開やその他の最適化に関連する障害とその解決策に関する情報を調べています。

よろしくお願いします。

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

visual-studio - PGI ビジュアル Fortran の ACCESS_VIOLATION

PGI ビジュアル Fortran を使用して Fortran プログラムを作成しています。このコードは、かなり長い 2 つのモジュールとメインのプログラムで構成されています。プログラムのコンパイルとビルドは、警告やエラーなしで成功しています。ただし、実行時またはデバッグ モードでエラーが発生します。

このエラーの後、プログラムの実行が停止します。この問題を克服するために、推測できるあらゆる方法を試しました。ただし、問題は解決しません。変数は適切に定義されているようです。デバッグ モードでは、すべての変数は問題ないようです。変数 x、y、および z はモジュール内の関数によって適切に評価されますが、次のコードが示すように、メイン PROGRAM では評価できません (ファイル mainser.f90 のプログラム main の 14 行目のブレークポイントによって取得されます)。 ):

エラーやアクセス違反の原因がわかりません。これは私がよく知らない既知の問題ですか? それともバグですか?私はあなたからの助けに感謝します。前もって感謝します。Fortran 言語のコードは次のように添付されています。mainser.f90 :

ChainConfModule.f90 :

rand.f90 :

0 投票する
2 に答える
166 参照

fortran - アクセラレータディレクティブが機能しない

これは行列乗算のコードです

これを実行すると、アクセラレータディレクティブとPGIコンパイラを使用した場合の実行時間は75ミリ秒になります。しかし、「cuda fortran」実装で同じ行列乗算を実行すると、実行時間はわずか5ミリ秒です。したがって、アクセラレータディレクティブを使用したとしても、大きな違いがあります。したがって、アクセラレータディレクティブが正しく機能しているとは思えません。

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

c++ - C/C++ および GNU/PGI: `__pgio_ini' への未定義の参照

PGI Compiler バイナリを既存の GNU バイナリにリンクする方法はありますか? リンクしようとすると、次のエラーが表示されます。

詳細:

gcc と g++ でいくつかのファイルをコンパイルしました。Cmain関数はこれらのファイルに含まれています。ここで、OpenACC 関数をプロジェクトに追加する必要があります。これは、PGI C コンパイラ ( pgcc) によってコンパイルする必要があります。コンパイル後、上記のリンク エラーが発生します (エラーは両方pgCCまたはg++リンカーと同じです)。

おそらく、OpenACC 関数をダミー ライブラリに統合し、それをプロジェクトにインクルード/リンクする必要があります。しかし、私はそれを行う方法がわかりません。

残念ながら、一部の関数は GNU Compiler に依存しているため、プロジェクト全体を PGI Compiler でコンパイルすることはできません。

前もって感謝します。

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

fortran - PGIがこのモジュールのパブリック属性を取得しないのはなぜですか?

ここで他の誰かのコードを操作します。gfortranで問題なくコンパイルされます。ただし、Portland Groupでは、次のエラーが発生します。

問題のある行は次のようになります。

(ここでは明らかに多くのMPIが行われていますが、それがポイントだとは思いません。)そこで、のソースコードでModMpiあるModMpi.f90に移動します。ここでは、への参照はありませんMPI_WTIMEが、次のように表示されます。

最後に、のソースに移動すると、ModMpiInterface次の行が見つかります。

OK、ModMpi.f90を編集しmpi_wtime、公開を宣言することで、PGIからコンパイルを取得することができました。しかし、それでも、私は疑問に思います。なぜgfortranは(明らかに)それmpi_wtimeが公開されていると想定したのに、PGIはこれを明示的に伝えなければならなかったのでしょうか。なぜPGIは、元の公開宣言が「使用チェーン」全体に当てはまると想定しないのですか?

どちらか一方の動作がFortran標準に近いと思います。それはどちらでしょうか?

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

fortran - POS=... pgi コンパイラを使用する場合

すべての主要な fortran コンパイラでコンパイルできるはずの一連のコードを更新/再作成しようとしています。ifortgfortranおよび、比較的古い (?) バージョンの pgi コンパイラ (バージョン 7.2.5)にアクセスできます。コードは gfortran と ifort で正常にコンパイルされますが、portland グループのコンパイラは次のような行でエラーを出します。

私は実際にこれを使用しmpif90ていますが、それはpgf90違いはありません。(iheaderは単純に 20 個の要素を持つ整数配列です)。ポートランドグループコンパイラはこれをサポートしていますか?