2011-06-22 71 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的任務時,程序運行完成。 –