問題タブ [totalview]
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.
arrays - OpenMP を有効にするとインテル Fortran の文字ポインターが破損する
かなり大きなコード (天気予報モデル) の Intel Fortran 互換性に取り組んでいます。インテル Fortran (およびインテル Fortranのみ) では、一部の文字データがスクランブルされてループし、文字ポインターがそれを指しているように見えます。最終的な文字には 0 と 9 しか含まれていません。文字列の内容c
は単純"00:00:00:16 (whitespace padding....)"
です。
(デッド) OpenMP コードをインクルードし、コンパイラ フラグを使用するたびに発生する問題を再現することができました。-fopenmp
私はここで何が起こっているのか少し迷っています。次の最小再現器でプログラミング エラーを検出できますか? そうでない場合は、コンパイラのバグを報告すると思います。
再生器
ミニマル.f90
メイクファイル
フォート版
コンパイルして実行
..
..
以前の分析、この質問のコメント チェーンを理解するためだけにここに
問題のループ
モジュールでのptr_cの指定
デバッガーに表示されるデータ (TotalView)
コンパイラ コマンド
アップデート
最新の Intel コンパイラ バージョンで同じことを試しました。
結果はまだ間違っていますが、違います! 今回はすべての文字をゼロにします。
更新 2
最小限の再現ツール (以下を参照) を使用して問題を再現しようとしましたが、これまでのところうまくいきません。つまり、この方法で実行してもエラーは表示されません。ただし、興味深い点が 1 つあります。TotalView では、配列の最初のアドレスがわずかに異なって表示されます。
c
が入力された時点でデバッガーに正しく表示されますが、入力に問題があるに違いないと思いますgrpcast_set_c
。
sample.conf
fortran - TotalView のビジュアライザーに複雑なデータを送信するにはどうすればよいですか?
複雑なデータの大規模な配列を利用している従来の Fortran コードを定期的にデバッグする必要があり、利用可能な最良のオプションは TotalView です。うまく機能するデータを表示するための独自のビジュアライザーを作成しました (ここの TotalView の指示に従って)。デフォルトのものよりも柔軟で、複雑なデータを取り込んで表示する機能がありますが、TotalView は視覚化パイプを介して複雑な配列を送信しません。
絶対値を取得するためだけに追加のデバッグ配列を使用してコードを再コンパイルすることなく、TotalView で複雑なデータを表示できるようにする方法はありますか?
たとえば、次の短い例のようなコードの場合、 Fortran で別の配列を作成することもできますが、実際には停止して変数を調べたいだけですmy_arr
。
小さな配列の場合、式として次のようなものを使用できます。
しかし、それは非常に大きなものでは機能しません.TotalViewはメモリについて不平を言います.
TotalView 8.13 を使用しています。