新しいライブラリを含めるために変更しなければならなかった 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