-qalign

类别

可移植性和迁移

用途

指定存储器中数据对象的对齐方式,以避免因未对齐的数据导致的性能问题。

格式

读取语法图跳过可视语法图 -qalign= :no4k4kbindc=powerbit_packedfullmac68knaturalpackedtwobytestruct=naturalpackedport

@PROCESS:

@PROCESS ALIGN({[NO]4K|STRUCT{(suboption)}|BINDC{(suboption)}})

缺省值

-qalign=no4k:struct=natural:bindc=power.

参数

可以指定 [no]4kbindcstruct 选项,并且这些选项不是互斥的。 [no]4k 选项主要与逻辑卷 I/O 和磁盘条带分割结合使用。

[no]4k
指定是否在页面 (4 KB) 边界上对齐大型数据对象,以提高数据条带化 I/O 的性能。 对象会受到影响,具体取决于它们在对象文件中的表示方式。 受影响的对象是 4 KB 或更大的数组和结构,它们位于静态存储器或 Bss 存储器中,也包括 8 KB 或更大的 CSECT (通常为 COMMON 块)。 大 COMMON 块,包含数组的等价组或结构在页边界上对齐,因此数组的对齐取决于它们在包含对象中的位置。 在非序列派生类型的结构内,编译器添加补足内容以对齐页面边界上的大型数组。
bindc={suboption}
指定具有 BIND (C) 属性的 IBM Open XL Fortran 派生类型的对齐和填充与使用相应的 XL C 对齐选项编译的 C 结构类型兼容。 兼容的对齐选项包括:

XL Fortran 选项
相应的
XL C 选项
-qalign=bindc=bit_packed -qalign=bit_packed
-qalign=bindc=full | power -qalign=full | power
-qalign=bindc=mac68k | twobyte -qalign=mac68k | twobyte
-qalign=bindc=natural -qalign=natural
-qalign=bindc=packed -qalign=packed
struct={suboption}
struct 选项指定如何存储使用记录结构声明的派生类型的对象或数组,以及是否在组件之间使用补足内容。 必须使用 -qalign=struct 选项的相同设置来编译所有程序单元。 可用的三个子选项为:
packed
如果指定了 struct 选项的 packed 子选项,那么除了由 %FILL 组件表示的任何填充之外,派生类型的对象不会在组件之间进行任何填充。 存储格式与使用标准派生类型声明声明派生类型的序列结构的结果相同。
自然
如果指定了 struct 选项的 natural 子选项,那么将使用足够的填充来存储派生类型的对象,除非存储关联另有要求,否则组件将存储在其自然对齐边界上。 下表左侧列中出现的类型对象的自然对齐边界以表格右侧列中相应条目中某些字节数的倍数显示。
类型 自然对齐(字节的倍数)
INTEGER(1), LOGICAL(1), BYTE, CHARACTER 1
INTEGER(2), LOGICAL(2) 2
INTEGER(4), LOGICAL(4), REAL(4) 4
INTEGER(8), LOGICAL(8), REAL(8), COMPLEX(4) 8
REAL(16), COMPLEX(8), COMPLEX(16) 16
已派生 其组件的最大对齐

如果指定了 struct 选项的 natural 子选项,那么将存储派生类型的数组,以便每个元素的每个组件都存储在其自然对齐边界上,除非存储关联另有要求。

port
如果指定了 struct 选项的 port 子选项,
  • 对于 natural 子选项,存储器填充与上面描述的相同,但类型为复杂的组件的对齐方式与类型为相同类型的实际组件的对齐方式相同。
  • 紧跟在 union 后的对象填充将插入在 union 中 每个映射的第一个映射组件的开头。

限制

port 子选项不会影响任何具有 AUTOMATIC 属性的数组或结构或动态分配的数组。 由于此选项可能会更改非序列派生类型的布局,因此在编译使用无格式文件读取或写入此类对象的程序时,请对所有源文件使用此选项的相同设置。

如果您使用 《通过逻辑卷I/O和数据条带化提高吞吐量 》中介绍的I/O技术,则必须使用 -qalign=4k

如果在 -qattr列表中查找关键字 AUTOMATICCONTROLLED  AUTOMATIC ,那么可以确定数组是否具有 AUTOMATIC 属性,因此不受 -qalign=4k 影响。 此列表还显示数据对象的偏移量。