2012-11-11 16 views
0

我想要編譯一塊叫做DLPOLY(多核處理的支持),科學的代碼。有關如何做到這一點的說明似乎已過時,並且makefile僅包含大型計算羣集的示例,而不包含家庭計算機。定製的OS X的通用生成文件(使用自制/ gfortran /開放MPI)

說明如下:

Generic target template

unknown_platform:

$(MAKE) LD="path to FORTRAN90 Linker-loaDer" \ 
    LDFLAGS="appropriate flags for LD (MPI libraries)" \ 
    FC="path to FORTRAN90 compiler" \ 
    FCFLAGS="appropriate flags for FC (MPI include)" \ 
    EX=$(EX) BINROOT=$(BINROOT) $(TYPE) 

我已經gfortran和開放MPI通過自制安裝,使用Xcode的CLTS一起。如果它更簡單,我不介意使用例如macports。

編輯:例如我嘗試這樣做:

LD="ld" 
    LDFLAGS="-L/usr/local/lib" 
    FC="gfortran" 
    FCFLAGS="-I/usr/local/include/" 

但後來得到這個錯誤:

'Use mpi_module' must change to 'Use mpi' in 'comms_module.f90' 

    gfortran -I/usr/local/include/ kinds_f90.f90 
    Undefined symbols for architecture x86_64: 
    "_MAIN__", referenced from: 
     _main in libgfortranbegin.a(fmain.o) 
    ld: symbol(s) not found for architecture x86_64 
    collect2: ld returned 1 exit status 
    make[1]: *** [kinds_f90.o] Error 1 

,所以我不知道我需要做的。進一步谷歌搜索後,我又試圖:

LD="mpif90" 
    LDFLAGS="-m64" 
    FC="mpif90" 
    FCFLAGS="-m64" 

,但我已經取得了進展類似的錯誤消息...

+0

你的問題是下溢的那種結果?你有什麼嘗試? –

+0

我編輯了我的問題以包含更多信息。 – Matthew

回答

1

。它開始使用這些設置進行編譯,雖然我不正確理解他們:

$(MAKE) FC="mpif90" LD="mpif90 -o" \ 
LDFLAGS="-O2 -ffast-math" \ 
FFLAGS="-c -O2 -ffast-math"\ 
EX=$(EX) BINROOT=$(BINROOT) $(TYPE) 

但最終錯誤出有:

mpif90 -c -02 -ffast,數學set_bounds.f90 set_bounds.f90 :36.23:

zero_plus =最近的(0.0_wp,1.0_wp)錯誤:最接近於(1)

+0

通過在我的FFFLAGS中包含「-fno-range-check」來修正最後的錯誤。不知道爲什麼這是必要的。 – Matthew

+0

如果有人發現這種嘗試編譯DLPOLY的問題,那麼我在這裏輸入的唯一東西就是使用自制軟件將gfortran和open-mpi安裝到默認位置。我也修改了「comms_module.f90」來表示「Include'mpif.h'」而不是「Use mpi」 – Matthew

+1

你不應該使用'include'mpif.h'',而是按照指示使用'mpi'。舊版的F77綁定只能用於Fortran 90之前的編譯器。 'mpi_module'是一個存根MPI庫,與'DL_POLY'源一起提供,因此它也可以編譯爲一個串行可執行文件。 –

相關問題