XcalableMP / Specification

Specification of XcalableMP
0 stars 0 forks source link

XMP/Cにおけるローカルエイリアス #16

Open mnakao opened 8 years ago

mnakao commented 8 years ago

報告者:村井

XMP/F では、以下のようにローカルエイリアスを coarray として宣言することにより、a の領域をcoarray として割付けることができる (4.8.1 の Example 3)。

 real a(100)
 !$xmp align (i) with t(i) :: a
 real :: b(:)[*]
 !$xmp local_alias b => a

一方、XMP/C では、アドレス演算子を用いて実行文においてローカルエイリアスを取得するため、a の領域を coarray として割付けることができない。

 float a[100];
 #pragma xmp align a[i] with t(i)
 float *b;
 b = &b;
mnakao commented 8 years ago

報告者:村井

XMP/C でも、local_alias 指示文を導入する。

ただし、XMP/F とは少し構文が異なり、以下のように、type * const 型を持ち、初期値を持つポインタに対して指定する。多次元の分散配列に対しては指定できない。

float a[100];

pragma xmp align a[i] with t(i)

float * const b = &a;

pragma xmp local_alias b

h-murai commented 7 years ago

以下のようにlocal_alias指示文を導入する。ローカルエイリアスである配列は一次元でなければならない。

float a[100][100];
#pragma xmp align a[i][j] with t(i,j)
float b[]:[*];
#pragma xmp local_alias b => a