Closed mnakao closed 5 years ago
C言語のように記述するには、下記のような記述方法が考えられる。 前スレッドに記述したXMP/Fの記法をそのまま利用したXMP/Cの記法と比較して冗長な面もあるが、C言語のユーザにとってはよりわかりやすいと考えられる。
double a[100], b[100], c[100];
#pragma xmp align a[i], b[i], c[i] with t[i]
また、この記法では、前スレッドの記法では不可能な、異なる形状を持つ分散配列を1行で定義できる。 下記の例では、配列a[]の形状は他の2つと異なっている。
double a[100][100], b[100], c[100];
#pragma xmp align a[i][*], b[i], c[i] with t[i]
また、本提案は#52にも関係していて、shadowも定義する場合は、下記のようになる。
double a[100], b[100], c[100];
#pragma xmp align a[i], b[i], c[i] with t[i]; shadow a[1], b[1], c[1]
double a[100], b[100], c[100];
#pragma xmp align [i] with t[i] :: a, b, c
で仕様案を考える。
XMP/Fでは下記のように、複数の配列に対して一行でalignすることが可能である(他にもnodesなども可能。詳しくは仕様書v1.2.1の3.1.2節(p15)を参照)
これを、例えば下記のようにXMP/Cでも適用したい。
XMP/Fのような記法である必要はないが、XMP/Cにおいても一行で複数の配列に対して設定が行えると、コードが簡潔になり、またコード量も減るため、便利であると考える。
また、XMP/Fではshadowを追加することもできている。