24小时热门版块排行榜    

CyRhmU.jpeg
查看: 770  |  回复: 0

A宝禄计算

银虫 (初入文坛)

[交流] 编译器选项

编译器选项
编译器选项由设置编译器和编译器标志的编译器变量指定。Fortran 编译器将被调用为:
$(FC) $(FREE) $(FFLAGS) $(OFLAG) $(INCS)

内容
1个编译器变量
1.1FC
1.2FCL
1.3OFLAG
1.4FFLAGS
1.5OFLAG_IN
1.6DEBUG
1.7INCS
1.8FREE
1.9MPI + OpenMP 并行化
2个特殊规则
2.1FFLAGS_x
2.2OFLAG_x
2.3INCS_x
2.4相关文章
编译器变量
FC
调用 Fortran 编译器的命令(例如gfortran, ifort, mpif90, mpiifort, ... )。
FCL
调用链接器的命令。在多数情况下:
FCL=$(FC) [+ 一些选项]
OFLAG
一般优化级别(默认值OFLAG=-O2:)。
FFLAGS
额外的编译器标志。例如,要启用调试,可以添加以下行:
FFLAGS+=-g
OFLAG_IN
(默认值:)-O2在绝大多数makefile.include文件中设置了这个变量:
OFLAG_IN=$(OFLAG)
DEBUG
编译主程序 (main.F) 的优化级别,通常为:
DEBUG=-O0
INCS
使用此变量指定要包含在以下意义上的对象:
INCS=-I/path/to/directory-with-files-to-be-included
FREE
指定您的 Fortran 编译器接受自由格式源代码布局所需的选项,而没有行长度限制。例如:
使用英特尔的 Fortran 编译器:
FREE=-free -names 小写
使用 gfortran:
FREE=-ffree-form -ffree-line-length-none
MPI + OpenMP 并行化
要编译支持 OpenMP 的 VASP,请将以下内容添加到文件中的预编译器标志列表中makefile.include:
CPP_OPTIONS += -D_OPENMP
此外,您必须将一些特定于编译器的选项添加到调用 Fortran 编译器的命令(有时还添加到链接器)。
例如,使用英特尔工具链(ifort + 英特尔 MPI)时:
FC = mpiifort -qopenmp
特殊规则
当前src/makefile包含一组配方,以允许在不同优化级别编译对象,而不是 指定的一般级别OFLAG。在这些秘籍中,编译器将被调用为:
$(FC) $(FREE) $(FFLAGS_x) $(OFLAG_x) $(INCS_x)
其中x代表:1、2、3 或 IN。
FFLAGS_x
默认值:FFLAGS_x=$(FFLAGS)对于 x=1、2、3 和 IN。
OFLAG_x
默认值:(OFLAG_x=-Ox对于 x=1、2、3)和OFLAG_IN=-O2
INCS_x
默认值:INCS_x=$(INCS)对于 x=1、2、3 和 IN。
根据这些配方编译的对象必须通过变量指定:OBJECTS_O1, OBJECTS_O2, OBJECTS_O3,OBJECTS_IN
-O1默认情况下会编译多个对象-O2。这些对象列表在/path/to/vasp.XXX/src/.objects文件中通过变量指定:SOURCE_O1, SOURCE_O2, SOURCE_IN。
要完全否决默认设置(例如特殊-O1规则),您可以使用以下结构:
SOURCE_O1 =
OBJECTS_O1 = ..你的对象列表..
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 A宝禄计算 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见