2017-05-26 4 views
0

大規模な配列の複雑なデータを利用している従来のFortranコードを定期的にデバッグする必要があります。利用できる最適なオプションはTotalViewです。私は自分のビジュアライザを作成して、(TotalViewの指示通りに)うまく動作するデータを表示しました。これは、デフォルトのものよりも柔軟性があり、複雑なデータを取り込み表示する機能を備えていますが、視覚化パイプを通じて複雑な配列を送信することはありません。TotalViewでビジュアライザーに複雑なデータを送信するにはどうすればよいですか?

絶対値をとるだけの追加のデバッグアレイでコードを再コンパイルせずに、複雑なデータを表示できるようにする方法はありますか?

など。以下の短い例のようなコードのために、私 Fortranで別の配列を作ることができますが、私は実際には停止して、変数my_arr検討したいと思います。私のようなもので逃げることができ、小さなアレイの場合

program main 

implicit none 

integer N, M, i, j 
parameter (N=100, M=30) 
complex my_arr(N, M) 
real pi 

pi = ACOS(-1.0) 

do j = 1, M 
    do i = 1, N 
     my_arr(i,j) = cmplx(i*cos(j/pi), i*sin(j/pi)) 
    end do 
end do 

return 

end 

をこれは式として:

my_arr%Real_Part**2 + my_arr%Imaginary_Part**2 

が、それは非常に大規模な何のために動作しません、TotalViewのはメモリ文句を言います。

私はTotalView 8.13を使用しています。

答えて

0

配列がメモリ内で連続している場合は、を使用して、実数部と虚数部を含む実数配列として複素数データを入力するようにビジュアライザを調整できます。上記のあなたの例では

は、あなたの変数my_arrに「ダイブ」ならば、それはタイプ

COMPLEX(4)(100,30) 

として表示されますこれは実際にビルトイン$complex_8 TotalViewのと同じです。あなたができるようになります次に、実部と虚部は、最初の(最も速い-反復)の寸法とのTotalViewに存在します

$real_4(2,100,30) 

:フィールド:あなたは、単に「タイプ」に次のように再入力型と大きさを作り直すことができます3Dフロート配列をビジュアライザーに渡します。注:デフォルトでは、TotalViewは2D配列を視覚化することに専念しているため、「ビジュアライザーの起動を有効にする」ボックスの「Preferences-> Launch Strings」の3D(またはビジュアライザーで処理できるもの)に変更する必要がありますアレイランク "

割り付け配列:

動的サイズの配列は、同じように扱うが、カップルの余分なステップを必要とすることができます。

  1. 通常配列への参照のアドレスは、メモリ内の実際の配列のアドレスではないので、手動でダイビングウィンドウのアドレスを調整する必要があります。

    右側のダイビングウィンドウには、スクロールバーのすぐ上にあるオプションボタンがあり、ウィンドウに表示されている列を表示します。「アドレス」をオンにし、配列の最初の要素の16進アドレスを書き留めます。タイプ文字列を変更してリキャストした後、その16進アドレスを一番上の「Address」フィールドに入力すると、データが正しく表示されます。「実際の型」の文字列があなたに寸法が表示されます一方

    TotalView variable window with button circled

  2. タイプの文字列は、COMPLEX(4),allocatable::(:,:)の線に沿って何かが含まれています。リキャストを行うときは、,allocatable::を削除して(:,:)を実際のサイズ(たとえば(100,30))に変更してください。

関連する問題