XcalableMP / Specification

Specification of XcalableMP
0 stars 0 forks source link

配列処理関数 #20

Closed mnakao closed 5 years ago

mnakao commented 8 years ago

報告者:村井

(xmp-wg 610) を元に、以下を提案。

x = xmp_scatter(x, a, idx1, idx2, ...)
x = xmp_gather(x, a, idx1, idx2, ...)

v = xmp_pack(v, a, mask)
a = xmp_unpack(a, v, mask)

x = xmp_sort_up(a)
x = xmp_sort_down(a)

x = xmp_cshift(a, shift, dim)
x = xmp_eoshift(a, shift, b, dim)

m = xmp_transpose(m)

例: [F] xmp_sort_up(a) a と同じ型、形状、分散を持つグローバル配列のローカルセクションを返す。

[C] void *xmp_sort_up(xmp_desc_t desc_a) desc_a と同じ型、形状、分散を持つグローバル配列のローカルセクションへのポインタを返す。

要検討:

[F] x = xmp_sort_up(a)
[C] x = xmp_sort_up(desc_a)

という式は、Fortran では配列代入文、C ではポインタ代入文と解釈される。すなわち、Fortran では array 指示文が必要だが、C では不要。

mnakao commented 8 years ago

報告者: 村井

部会向け資料を追加。 配列処理関数.pdf

mnakao commented 8 years ago

報告者: 村井

1/25 の議論を踏まえて、提案資料を更新。

配列処理関数2.pptx

mnakao commented 8 years ago

報告者: 村井

よく考えると、array構文内のシャドウの扱いを決めるために、elemental という概念を無理に持ち出す必要はなかったので、再提案。 配列処理関数2.pptx

mnakao commented 8 years ago

報告者:坂上

よく考えると、array構文内のシャドウの扱いを決めるために、 elemental という概念を無理に持ち出す必要はなかったので、 再提案。

さて,これは,基本的にグローバル変数を素で関数に書くときには,必ず配列代入文になるということが前提ですね? つまり,elementalという概念を定義しなくても,array構文でカバーできる.

私は,その前提にはずれるケースを思いつきませんが,本当に大丈夫でしょうか??

mnakao commented 8 years ago

報告者:村井

次回までに

次回提案前に持っていきたい

mnakao commented 8 years ago

報告者:村井

配列処理関数について、過去の議論と要検討事項をまとめました。仕様として新しい概念を導入することになり、検討しなければならない点がまだ多いので、「提案前」の段階には至っていません。

配列処理関数3.pptx

mnakao commented 8 years ago

報告者:岩下

参考のため、Fortranの組込み関数の分類をEXCELにしました。添付します。

これを見ながら、村井さんの6/7付資料「配列処理関数」へのコメントです。

F2008 Intrinsics3.xlsx

mnakao commented 8 years ago

報告者:村井

以下の章を追加。ただし、7.8 の各関数の説明は未稿。

Fortran の集計関数(MAXVAL や SUM)は、loop の reduction 節で容易に代替できるので、除外した。

5.3 Built-in Functions for Array Section 7.6 [F] Array Intrinsic Functions of the Base Language 7.7 [C] Built-in Elemental Functions 7.8 Intrinsic/Built-in Transformational Procedures 7.8.1 xmp_scatter 7.8.2 xmp_gather 7.8.3 xmp_pack 7.8.4 xmp_unpack 7.8.5 xmp_transpose 7.8.6 xmp_matmul 7.8.7 xmp_sort_up 7.8.8 xmp_sort_down main.pdf

mnakao commented 8 years ago

報告者: 村井

Intel C/C++ における配列値関数について調査した。

__attribute__((vector (clauses))) return_type elemental_function_name(arguments)

つまり、XMP では elemental function はビルトインのみで、仕様でそのリストを示す予定であるのに対し、Intel ではユーザが elemental function を定義することができる。

参考:

mnakao commented 8 years ago

報告者: 村井

7.8 の各関数の説明は追加。 main.pdf