0%

Fortran风扇优化代码从Intel Fortran2015迁移到GNU Fortran

代码迁移
将利用Visual Studio13和Intel Fortran2015可编译运行的优化代码迁移到Code::Blocks和GNU Fortran平台上。期间出现的问题及解决方案如下:
1、 原先的优化代码利用了Intel Fortran2015中IFPORT模块的SYSTEMQQ()函数改用为SYSTEM()函数。

2、 Fortran语法中FREE FORMAT 格式下每行可以有132个字符,对超出限制的代码进行拆分,如kriging_train函数。

3、 subs_kriging.f子程序中利用了dtime和etime函数,在当前平台上函数要求变量为单精度类型,将tarry变量改成real(4)型。

4、 原先的代码利用了Intel Fortran中MKL数学库,现在将直接链接BLAS和LAPACK库。必须下载mingw32-gfortran.exe支持的库文件,在当前平台上只能实现动态链接。

5、 甲方使用的Code::Blocks17.12中MINGW5.10版本存在缺陷,语法正确的前提下,编译后的程序不能读入已经存在的文件。可以尝试升级MINGW版本,当前使用了旧版本Code::Blocks12.11,MINGW版本为4.7.1。

6、 不支持在function函数中调用Result=SYSTEM()函数,使用的SYSTEM()函数的function函数调整为subroutine子程序。

7、 原先predict_x子程序未包含变量iregress等,对变量定义进行调整,在predict_x子程序中调用Proxyparameter模块。

8、 编译后的程序在运行时会提示计算机中丢失libgfortran-3.dll等文件,将
该文件所在的路径(如“D:\codeblocks\MinGW\bin”)添加到环境变量中。

9、 当找不到编译器时,可以在setting—compiler—Global compiler settings中设置Toolchain executables