Sun Studio 12:Fortran 编程指南

7.6.2.2 随 Cray 指针带来的别名使用

本例仅在使用 -xalias=craypointer(此为缺省设置)编译时才适用:


parameter (n=20)
integer a(n)
integer v1(*), v2(*)
pointer (p1,v1)
pointer (p2,v2)
p1 = loc(a)
p2 = loc(a)
a = (/ (i,i=1,n) /)
...
v1(2:n) = v2(1:n-1)
编译器必须假设这些位置可以重叠。

下面给出了一个 Cray 指针不重叠的例子。此时,用 -xalias=no%craypointer 进行编译可能会获得更佳的性能:


parameter (n=10)
integer a(n+n)
integer v1(n), v2(n)
pointer (p1,v1)
pointer (p2,v2)
p1 = loc(a(1))
p2 = loc(a(n+1))
...
v1(:) = v2(:)
Cray 指针不指向重叠内存区。