【问题标题】:Compile with multiple cores with Intel Fortran for Linux使用 Intel Fortran for Linux 编译多核
【发布时间】:2014-12-28 09:10:36
【问题描述】:

那里,

我在编译我的 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 $@ $^ $(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

【问题讨论】:

  • 你在文档中找到了什么,你是如何尝试应用它的,等等......

标签: build compilation parallel-processing makefile fortran


【解决方案1】:

您要查找的命令是make -j N,其中 N 是您要同时运行的并行 make 作业的数量。在你的情况下,有 8 个核心,这将是 8 个左右。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多