fortran中怎么实现多线程编程

fortran中怎么实现多线程编程,第1张

方法一,使用 obj创建两个工程其中一个 C ,其中一个 Fortran把被调用的工程编译(但不链接哪码),得到一个 obj 文件把 obj 文件添加到需调用的工程中。空缓滚链接。方法二,使用 lib创建两个工程。其中一个 C ,其中一个 Fortran(被调用的创建为静态库 lib)把被调用的工程编译,斗余链接,得到一个 lib 文件把 lib 文件添加到需调用的工程中。再次链接。

方法一,使用 obj创建两个工程。其中一个 C ,其中一个 Fortran把被调用的工程编译(但不链接哪码),得到一个 obj 文件把 obj 文件添加到需调用的工程中。空缓滚链接。方法二,使用 lib创建两个工程。其中一个 C ,其中一个 Fortran(被调用的创建为静态库 lib)把被调用的工程编译,斗余链接,得到一个 lib 文件把 lib 文件添加到需调用的工程中。再次链接。

2)Fortran77、6个空格的是fixed格式,不是Free格式。

强烈推荐你使用fortran90 free格式,并行效率更高。fortran77 fixed格式已是old-fashion。你可以在这方面做些功课。

每行限度为72列,一般都不够用的,不过在编译时加上,-extend-source选项就可以把72列的限制扩展到132列,你查查看。非并行的程序使用使用普通的编译器如ifort、gfortran等,不过既然是使用OMP,编译时就应该用mpiifort。

程序中声明private变量迟指手时,应该是用到时再声明,一般不会太长吧。

!$OMP PARALLEL DO PRIVATE (K,J,I)

DO K = 1,KM

DO J = 1,JMT

DO I = 1,IMT

variables (I,J,K)= 0.0

END DO

END DO

END DO

3)linux下,你这是一个主程序调用多个F90程序,推荐你使用make编译、链逗游接,这里是一个例子,比如你有main.F90 其中使用MOD模块mymod,并调用了test1.F90和 test2.F90,那么你的make文件(Makefile)可以这样写:

INCLDIR = -I. -I/usr/include -I/码嫌your/mpi/include

CPPFLAGS = -P -traditional

CPP = /usr/bin/cpp $(CPPFLAGS) $(INCLDIR)

NLIB = -L/your/mpi/bin64

###your mpi compile options

FFLAGS = -O2 -no-vec -r8 -i4 -convert big_endian -assume byterecl -save

FC = /your/mpi/bin64/mpiifort $(FFLAGS)

OBJS = mymod.o test1.o test2.o main.o

##########################################################################

###the executive file---run.exe will be created

run.exe: $(OBJS)

$(FC) -o ./run.exe $(OBJS) $(NLIB)

.SUFFIXES : .F90

.F90.o:

$(CPP) $<>$*.f90 $(FC) -c $*.f90

clean:

rm -f *.o *.il *.f90 *.f *.mod *.d run.exe

依次执行

$ make clean

$ make

即可编译成可执行文件run.exe,运行之即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12445756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存