Fortran的多任务处理

Sas*_*sha 4 fortran

如何在Fortran中进行多任务和进程间通信?

rob*_*nce 12

要读取的主要标准是OpenMP(共享内存多线程)和MPI(消息传递).两者都适用于Fortran(以及其他语言),你会在网上找到很多信息.

OpenMP定义了一种在Fortran/C/C++中编程并发(并行)处理的简单方法.该进程必须位于同一台计算机(节点)中.

OpenMP 3.0最近引入了$ OMP TASK指令,该指令原则上应该允许多任务通常完成多线程的方式(即每个线程都有自己的任务).对于OpenMP,请参阅本教程:

https://computing.llnl.gov/tutorials/openMP/

http://www.openmp.org/中的规范

我不会解决进程间通信(IPC),因为我不熟悉它.我相信你可以做你想要的POSIX函数调用.如果您的编译器支持某些Fortran 2003构造(例如gfortran> = 4.4),那么您可以使用ISO_C_BINDING标准模块提供的漂亮的C-Fortran互操作性.然后在适当的注意下,您可以调用可以提供IPC功能的posix函数.那是我的2c.


Jon*_*rsi 8

Fortran2008还具有coarray,它允许在语言本身内部进行分布式内存计算,并且do concurrent允许类似于OpenMP并行do循环的功能.现在,只有最新的intel编译器完全支持这些,而g95有部分支持; 但是,它们正在积极地被其他编译器供应商所采用,包括gfortran.