使用英特尔编译器

时间:2016-06-12 05:27:59

标签: makefile intel fortran90

我的代码大约有8,000行,并且包含在同一个bigcode.f90文件中。它使用带有选项的英特尔编译器从命令行编译没有问题:

mpif90  bigcode.f90 -r8 -O2 -xHost -override-limits -o output.out

我想将这个大文件拆分成模块并使用makefile链接它们。下面我列出了makefile。 (所以这里我有main.f90,还有8个模块链接到它,比如modparams.o和其他7)。所以我把bigcode.f90分成了9个文件。问题是,当我使用makefile编译时,它会抱怨像

这样的东西
  1. 子程序以“end”语句而不是“end subroutine”
  2. 结束
  3. 传递给实数的整数
  4. 变量名和子例程名之间存在一些名称冲突。
  5. 所有这些都可能是糟糕的风格。然而原始的bigcode.f90拥有所有这些,并没有阻止它编译。我想首先在bigcode.f90和拆分版本之间复制结果 - 然后我将进行其他更改。

    我还制作了这个makefile的副本,没有任何OBJECTS链接(只有单个bigcode.f90),而且编译时没有任何抱怨。有人可以帮助我理解为什么有一个文件时编译器抱怨的内容与有多个链接文件时有什么不一致?

    # DEFAULT FLAGS
    CFLAGS := -I$(CPATH) -I$(F90_MODULES_PATH) 
    F90 := mpif90
    
    # ADD ALL LIBRARIES HERE (with -l$LIBRARY_NAME)
    LDFLAGS :=  -llapack -v 
    
    
    # ADD ALL SOURCE FILES HERE (with .o extension)
    OBJECTS := modparams.o 
    OBJECTS += modleeplex.o 
    OBJECTS += modutilsmain.o
    OBJECTS += modecon.o
    OBJECTS += modindirect.o
    OBJECTS += modijutils.o
    OBJECTS += modselectstata.o
    OBJECTS += modfcn.o
    
    
    # ADD ADDITIONAL COMPILER FLAGS HERE
    CFLAGS += -fbounds-check
    CFLAGS += -ffree-line-length-350
    CFLAGS += -r8 
    CFLAGS += -O2 
    CFLAGS += -xHost 
    CFLAGS += -override-limits
    
    # ADD ADDITIONAL MODULE FOLDERS HERE (with -I$PATH_TO_FOLDER)
    F90_MODULES += -I.
    
    all: main
    
    main: main.f90 $(OBJECTS)
        $(F90) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $< -o $@ 
    
    %.o : %.f90
        $(F90) -c $< $(CFLAGS) $(F90_MODULES) $(LDFLAGS) -o $@
    
    clean:
        rm -rf $(OBJECTS) *.mod
    

    当我编译时,我得到以下内容,然后是一长串错误。

          mpif90 -c modfcn.f90 -I/opt/intel/composer_xe_2013.5.192/mkl/include:/opt/intel/composer_xe_2013.5.192/tbb/include:/opt/intel/composer_xe_20                                     13.5.192/mkl/include:/opt/intel/composer_xe_2013.5.192/tbb/include -I  -fbounds-check -ffree-line-length-350 -r8  -O2  -xHost  -override-lim                                     its -I. -llapack -v  -o modfcn.o
    ifort: command line warning #10006: ignoring unknown option '-ffree-line-length-350'
    ifort: command line remark #10010: option '-pthread' is deprecated and will be removed in a future release. See '-help deprecated'
    ifort version 13.1.3
    

0 个答案:

没有答案