XcalableMP / Specification

Specification of XcalableMP
0 stars 0 forks source link

loop指示文の拡張 #53

Closed h-murai closed 7 years ago

h-murai commented 8 years ago

分割されたループの本来の上下限を拡大または縮小するolap節(仮称)と、境界面のみを指定するedge節(仮称)があれば、テンポラルブロッキング、内点に対する演算と通信のオーバラップを書ける。

以下は、演算と通信のオーバラップの例。

!$xmp reflect (a) async(10)

!$xmp loop on t(i) olap(-1:-1)
do i = 1, 100
  a(i) = ...
end do

!$xmp wait_async(10)

!$xmp loop on t(i) edge(1:1)
do i = 1, 100
  a(i) = ...
end do
mnakao commented 8 years ago

コメントですが、ループ文を2回書くのは面倒なので、糖衣構文もあってもよいと思いました。

!$xmp reflect (a) async(10)
!$xmp loop on t(i) olap(-1:-1) wait_async(10) edge(1:1)
do i = 1, 100
  a(i) = ...
end do
h-murai commented 7 years ago
!$xmp reflect (a) async(10)

!$xmp loop on t(i) peel_and_wait(1:1, 10)
do i = 1, 100
  a(i) = ...
end do

!$xmp reflect (a) async(10)

!$xmp loop on t(i) expand(-1:-1)
do i = 1, 100
  a(i) = ...
end do

!$xmp wait_async(10)

!$xmp loop on t(i) margin(1:1)
do i = 1, 100
  a(i) = ...
end do
h-murai commented 7 years ago

margin節でも負の値を指定できるようにする。

正の場合、領域の外側(シャドウ)の境界部分 → シャドウの初期化に使える。 負の場合、内側の境界部分。 上のサンプルコードの指定方法とは逆。

h-murai commented 7 years ago

元のループ範囲の外側まで拡張することを示す修飾子として、unboundはどうか?

!$xmp loop on t(i) expand(/unbound/1:1)
do i = 1, 100
  a(i) = ...
end do