Build 使用“英特尔Fortran Linux版”进行多核编译

Build 使用“英特尔Fortran Linux版”进行多核编译,build,compilation,parallel-processing,makefile,fortran,Build,Compilation,Parallel Processing,Makefile,Fortran,那里, 我在编译Fortran程序时遇到了麻烦。我花了40多分钟在研究所的计算机上建立这个程序。我使用以下规范使用“英特尔Fortran编译器Linux版”编译当前程序。是否有人愿意让我知道如何修改我的命令,以便在多核(在我的情况下,每个CPU 8核)的完全支持下完成编译 谢谢 李 FC=mpiFort FCFLAGS=-g-O3-openmp-xSSE4.2-axAVX-mt_mpi-I$(MKLROOT)/include/intel64/lp64-I$(MKLROOT)/include LD

那里,

我在编译Fortran程序时遇到了麻烦。我花了40多分钟在研究所的计算机上建立这个程序。我使用以下规范使用“英特尔Fortran编译器Linux版”编译当前程序。是否有人愿意让我知道如何修改我的命令,以便在多核(在我的情况下,每个CPU 8核)的完全支持下完成编译

谢谢

FC=mpiFort
FCFLAGS=-g-O3-openmp-xSSE4.2-axAVX-mt_mpi-I$(MKLROOT)/include/intel64/lp64-I$(MKLROOT)/include
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl\u blas95\u lp64.a\
$(MKLROOT)/lib/intel64/libmkl\u lapack95\u lp64.a\
$(MKLROOT)/lib/intel64/libmkl\u scalapack\u lp64.a\
-Wl,--启动组\
$(MKLROOT)/lib/intel64/libmkl\u cdft\u core.a\
$(MKLROOT)/lib/intel64/libmkl_intel_lp64.a\
$(MKLROOT)/lib/intel64/libmkl_core.a\
$(MKLROOT)/lib/intel64/libmkl_intel_thread.a\
-Wl,端基\
$(MKLROOT)/lib/intel64/libmkl_blacs_intelmpi_lp64.a\
-lpthread-lm
程序=主
全部:${PROGRAM}
主:universe.o model.o variable.o toolbox.o
main.o:宇宙
宇宙o:模型o
model.o:variable.o
变量o:toolbox.o
%:%
$(FC)$(FCFLAGS)-o$@$^$(LDFLAGS)
%.o:%.f90
$(FC)$(FCFLAGS)-c$<$(LDFLAGS)
.假冒:干净
清洁:
找到-maxdepth 1-类型f-名称“*.txt”-名称“*.txt”-exec rm'{}'\;
rm-f*.o
rm-f*.mod
rm-f*~
rm-f*.gz

您要查找的命令是
make-jn
,其中N是要同时运行的并行make作业的数量。在你的例子中,有8个核,那就是8个左右


请注意,源文件的数量以及它们之间的依赖关系也会限制make能够并发运行的作业数量。在您的情况下,对象文件之间似乎有一个线性依赖链,不允许并发,因此您可能希望将代码拆分为更多的源文件。

您要查找的命令是
make-j N
,其中N是要并发运行的并行make作业数。在你的例子中,有8个核,那就是8个左右


请注意,源文件的数量以及它们之间的依赖关系也会限制make能够并发运行的作业数量。在您的情况下,对象文件之间似乎有一个线性依赖链,不允许并发,因此您可能希望将代码拆分为更多的源文件。

您要查找的命令是
make-j N
,其中N是要并发运行的并行make作业数。在你的例子中,有8个核,那就是8个左右


请注意,源文件的数量以及它们之间的依赖关系也会限制make能够并发运行的作业数量。在您的情况下,对象文件之间似乎有一个线性依赖链,不允许并发,因此您可能希望将代码拆分为更多的源文件。

您要查找的命令是
make-j N
,其中N是要并发运行的并行make作业数。在你的例子中,有8个核,那就是8个左右


请注意,源文件的数量以及它们之间的依赖关系也会限制make能够并发运行的作业数量。在您的情况下,您的目标文件之间似乎有一个线性依赖链,不允许并发,因此您可能希望将代码拆分为更多的源文件。

您在文档中找到了什么,然后如何尝试应用它,等等……您在文档中找到了什么,然后如何尝试应用它,等等…你在文档中发现了什么,你是如何尝试应用它的,等等…你在文档中发现了什么,你是如何尝试应用它的,等等。。。
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 $@ $^ $(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