7.4 REALIGN指令 |
REALIGN指令类似于ALIGN指令但是被认为是可执行的。如果一个数组(或模板)被定义为DYNAMIC(见7.5节),则可以在任意时刻对它进行重对准。与重分配不同(见7.3节),重对准一个数据对象不会导致任何其它的对象被重映射。(可是,即使对一个对象进行重对准,如果它很大的话,也可能在运行时需要大量的计算和通信;程序员在使用这一特征时必须考虑到这一点。)
ALIGN指令仅能出现在作用域单元的说明部分。REALIGN指令与其类似,但仅能出现在作用域单元的执行部分。ALIGN和REALIGN的主要不同是在ALIGN中必须仅能以说明表达式作为下标或下标三元组,而在REALIGN中这种下标可以是任意整数表达式。另一个不同是ALIGN是一个属性,因此可以与其它属性组合在一起作为合成指令的一部分,而REALIGN不是属性(虽然REALIGN语句可以以属性语法的风格书写,使用“::”)
REALIGN的形式化语法如下所示:
H703 realign-directive is REALIGN alignee align-directive-stuff
or REALIGN align-attribute-stuff :: alignee-list
约束:
出现在REALIGN指令中的任何对准子必须具有DYNAMIC属性(见7.5节)
约束:
如果align-with-clause中指定的对准目标具有DYNAMIC属性,则每一个对准子必须也具有DYNAMIC属性。
约束:
一个对象不能同时具有由INHERIT属性和ALIGN属性。(但是,一个具有INHERIT属性的对象可以作为对准子出现在REALIGN指令中,前提是它没有作为分配子出现在DISTRIBUTE或REDISTRIBUTE指令中)
如果使用一个范围指令(见7.11节)来限制一个对准子所允许的分配格式的集合,则新映射应匹配范围指令中所指定的格式之一。
Copyright: NPACT |