2014-10-31 100 views
0

那裏,使用英特爾Fortran for Linux編譯多核心

編譯我的Fortran程序時遇到了麻煩。我花了40多分鐘在我研究所的計算機上建立這個項目。我使用以下規範來編譯我的當前程序,並使用適用於Linux的英特爾Fortran編譯器。任何人都會好心地讓我知道如何修改我的命令,以便編譯完全支持多個內核(在我的情況下是每個CPU 8個內核)?

感謝,

FC= mpiifort 
FCFLAGS = -g -O3 -openmp -xSSE4.2 -axAVX -mt_mpi -I$(MKLROOT)/include/intel64/lp64 -I$(MKLROOT)/include  
LDFLAGS = $(MKLROOT)/lib/intel64/libmkl_blas95_lp64.a \ 
     $(MKLROOT)/lib/intel64/libmkl_lapack95_lp64.a \ 
     $(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \ 
     -Wl,--start-group \ 
     $(MKLROOT)/lib/intel64/libmkl_cdft_core.a \ 
     $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \ 
     $(MKLROOT)/lib/intel64/libmkl_core.a \ 
     $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \ 
     -Wl,--end-group \ 
     $(MKLROOT)/lib/intel64/libmkl_blacs_intelmpi_lp64.a \ 
     -lpthread -lm 

PROGRAM = main   
all: ${PROGRAM} 
main: universe.o model.o variable.o toolbox.o 
main.o: universe.o 
universe.o: model.o 
model.o: variable.o 
variable.o: toolbox.o 
%: %.o 
    $(FC) $(FCFLAGS) -o [email protected] $^ $(LDFLAGS) 
%.o: %.f90 
    $(FC) $(FCFLAGS) -c $< $(LDFLAGS) 
.PHONY: clean 
clean: 
    find . -maxdepth 1 -type f -name "*.txt" ! -name "_*.txt" -exec rm '{}' \; 
    rm -f *.o 
rm -f *.mod 
rm -f *~ 
rm -f *.gz 
+0

你在文檔中找到了什麼,你是如何嘗試應用它等的...... – steabert 2014-11-01 01:47:41

回答

3

你要找的命令是make -j N,其中N是平行的數量讓你想並行運行的作業。在你的情況下,與8核心,這將是8或左右。

請注意,源文件的數量以及它們之間的依賴關係也可以限制make能夠併發運行的數量。在你的情況下,似乎你的目標文件之間有一個線性依賴鏈,不允許併發,所以你可能想把你的代碼分割成更多的源文件。

相關問題