0

新しいライブラリを含めるために変更しなければならなかった Fortran コードがあります。最初のコードでは、配列のサイズが Makefile で渡されました。つまり、配列のサイズを変更するたびに、コードを再コンパイルする必要がありました。これを変更して、毎回再コンパイルする必要がないように、「入力パラメーター ファイル」から入力配列のサイズを読み取るようにしました。ただし、さまざまな理由により、私のコードは以前よりもはるかに遅くなります。

上司と話したところ、コンパイル時に配列のサイズを渡していないため、コードが十分に最適化されていない可能性があるという意見でした。もしかして本当ですか?

ありがとう

- - - - - - - -編集 - - - - - - - - - - -

最初は、メイクファイルにこれらの行がありました

NL    = 8
@echo Making $(SIZE_FILE) .....
echo "      integer, parameter( nl = " $(NL) " )" > $(SIZE_FILE)

これにより、値が「NL」の「sizefile」が作成されました。このファイルは、ヘッダーとしてメインプログラムに「インクルード」され、配列は fortran ファイルで次のように宣言されました。

 include "sizefile"
 real*8, dimension   ur(nl)

これで、"Nl" の値を持つテキスト ファイルを読み取るプログラムによって呼び出される "read_input_parameters" というサブルーチンが宣言されました。そして、次のように配列を割り当てます。

  program   test

  integer n
  allocatable :: ur(:)

  call  read_input_parameters(n)

  allocate(ur(n))

  *operations*

  deallocate(ur)
  stop
  end
4

1 に答える 1