2011-06-22 37 views
0

我有一个现有的fortran代码,它是使用mpif90编译的。它编译并运行成功。但是当我引入-fopenmp选项时,mpif90编译器会成功编译代码,但程序无法运行至完成。它在进入子程序之前突然退出。似乎堆栈已满,程序突然退出。 manpages说,-fopenmp会在堆栈上分配数组,就像使用-frecursive标志一样。我该如何处理这个问题以及什么是-frecursive标志?移植一个现有的Fortran代码与mpi混合mpi openmp

回答

0

您需要增加主线程的堆栈(在linux上可能会使用limit或ulimit命令)以及从线程(如果您使用的是OpenMP V3.0,那将通过环境变量OMP_STACKSIZE)。

+0

我试着设置堆栈大小,但没有帮助。我去了最多500MB –

+0

我发现另一个奇怪的问题是,当我运行程序使用1 mpi任务程序失败。但是当我试图使用2 mpi的任务时,程序运行完成。 –