2012-11-25 86 views
0

我有一個問題,我不知道它是什麼。我有一個MPI_INIT和MPI_FINALIZE的測試程序。我有一個包含5個子例程的模塊:3個子例程是相關的,獨立於2個其他子例程。我想將測試程序中的MPI代碼放入此模塊中。我將MPI_INIT放入聲明變量的模塊中,並放在子例程之前。我得到一個具有相同錯誤消息的一系列錯誤:我應該在哪裏將MPI_INIT放入Fortran模塊中?

This statement must not appear in the specification part of a module 

如何「MPI_INIT和MPI_FINALIZE應該被稱爲一次」影響Fortran程序,模塊和子程序?如果有多個獨立程序,我應該在哪裏放置MPI函數和變量,每個程序都調用這個模塊的子程序多次?

+1

可能的重複[更新:我應該把MPI放在模塊還是模塊的子例程?](http://stackoverflow.com/questions/13437672/updated-should-i-put-mpi-in-a-module -or-A-模塊-子程序) –

回答

1

您需要在模塊的子例程部分調用MPI子例程。

通常我定義一個init_mpi子程序,它調用MPI_INIT並最終調用MPI_COMM_RANK和MPI_COMM_SIZE。您也可以在此init_mpi子例程中使用MPI_INITIALIZED以避免多次初始化。