2012-02-27 95 views
0

我想在我的fortran程序中使用pthreads,但我甚至无法编译它。我在C程序中使用的并行线程,需要它为我的Fortran程序,而是use f_pthread导致以下错误的电话:在fortran中使用pthreads

Fatal Error: Can't open module file 'f_pthread.mod' for reading at (1): No such file or directory

所以很明显我没有f_pthread.mod链接。 f_pthread.mod在哪里和/或如何去做或下载它?我查过的每一个东西都会讨论如何在fortran中使用pthreads,并在示例程序开始处使用'f_pthread',但我似乎无法弄清楚它们如何正确链接该模块。

回答

4

我只在IBM/AIX安装中遇到过模块f_pthread。如果您有这样的安装,那么大量的IBM文档应该指向您。如果你没有,那你认为你有这个模块的原因是什么?你的平台上的编译器(你告诉我们都不知道)把模块文件放在哪里?你在那里找f_pthread.mod吗?

为什么你需要用于你的Fortran程序的pthreads?使用OpenMP会容易得多,pthread只能执行一些OpenMP无法执行的操作,以及大多数Fortran程序可能需要执行的操作。

+0

我“需要”openmp,因为在pthreads中创建线程池更容易。我有一个小的(〜800)for循环,这是成千上万次的蒸发。我想线程,因为使用openmp可能会启动新线程每次我呼吁循环,这将是低效的。 – drjrm3 2012-02-27 18:01:01

+9

您可能只想在这一点上信任您的OpenMP实现;在实践中,当前的OpenMP实现确实创建了一个线程池并重用它,而不是不断创建和删除线程。然后,您最终得到一个符合标准的程序,并且可以在任何地方使用几乎任何Fortran编译器。 – 2012-02-27 18:29:18

+0

@JonathanDursi和HighPerformanceMark,如果fortran程序需要两个单独的功能线程来执行单独的任务,而不仅仅是并行化呢? – patrickvacek 2014-06-27 15:54:55