{"action":"created","issue":{"url":"https://api.github.com/repos/XcalableMP/Specification/issues/20","repository_url":"https://api.github.com/repos/XcalableMP/Specification","labels_url":"https://api.github.com/repos/XcalableMP/Specification/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/XcalableMP/Specification/issues/20/comments","events_url":"https://api.github.com/repos/XcalableMP/Specification/issues/20/events","html_url":"https://github.com/XcalableMP/Specification/issues/20","id":155894010,"number":20,"title":"配列処理関数","user":{"login":"mnakao","id":6206109,"avatar_url":"https://avatars.githubusercontent.com/u/6206109?v=3","gravatar_id":"","url":"https://api.github.com/users/mnakao","html_url":"https://github.com/mnakao","followers_url":"https://api.github.com/users/mnakao/followers","following_url":"https://api.github.com/users/mnakao/following{/other_user}","gists_url":"https://api.github.com/users/mnakao/gists{/gist_id}","starred_url":"https://api.github.com/users/mnakao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mnakao/subscriptions","organizations_url":"https://api.github.com/users/mnakao/orgs","repos_url":"https://api.github.com/users/mnakao/repos","events_url":"https://api.github.com/users/mnakao/events{/privacy}","received_events_url":"https://api.github.com/users/mnakao/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/XcalableMP/Specification/labels/3.%E6%89%BF%E8%AA%8D","name":"3.承認","color":"fbca04"},{"url":"https://api.github.com/repos/XcalableMP/Specification/labels/%E5%84%AA%E5%85%88%E5%BA%A6%EF%BC%9A%E9%AB%98","name":"優先度：高","color":"ff0000"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2016-05-20T06:11:24Z","updated_at":"2016-05-20T06:15:13Z","closed_at":null,"body":"報告者：村井\r\n\r\n(xmp-wg 610) を元に、以下を提案。\r\n\r\n- Fortran の組込み関数は、(当然)そのままの名前で利用することが可能で、通常の手続き呼び出しのルールに従ってローカルセクションに対する処理として解釈される。つまり、elemental な関数なら、実質的に逐次互換性を保ったまま用いることができるし、elemental でない関数なら、実質的な意味を持たない(かもしれない)。言い換えると、Fortran の組込み関数は、XMP の組込み関数では**ない**。\r\n- それとは別に、xmp_ 接頭辞を持つ、XMP 組込み関数を提供する。XMP組込み関数はグローバル配列全体に対する処理であり、C 版では配列記述子を渡すことになるのが特徴。\r\n- XMP 組込み関数はグローバルな処理である(実行ノード集合全体によって、実行されなければならない)。指示行等は不要。\r\n- XMP 組込み関数としては、例えば以下のようなものが考えられる。\r\n\r\n```\r\nx = xmp_scatter(x, a, idx1, idx2, ...)\r\nx = xmp_gather(x, a, idx1, idx2, ...)\r\n\r\nv = xmp_pack(v, a, mask)\r\na = xmp_unpack(a, v, mask)\r\n\r\nx = xmp_sort_up(a)\r\nx = xmp_sort_down(a)\r\n\r\nx = xmp_cshift(a, shift, dim)\r\nx = xmp_eoshift(a, shift, b, dim)\r\n\r\nm = xmp_transpose(m)\r\n```\r\n\r\n 例：\r\n`[F] xmp_sort_up(a)`\r\na と同じ型、形状、分散を持つグローバル配列のローカルセクションを返す。\r\n\r\n`[C] void *xmp_sort_up(xmp_desc_t desc_a)`\r\ndesc_a と同じ型、形状、分散を持つグローバル配列のローカルセクションへのポインタを返す。\r\n\r\n要検討：\r\n```\r\n[F] x = xmp_sort_up(a)\r\n[C] x = xmp_sort_up(desc_a)\r\n```\r\nという式は、Fortran では配列代入文、C ではポインタ代入文と解釈される。すなわち、Fortran では array 指示文が必要だが、C では不要。"},"comment":{"url":"https://api.github.com/repos/XcalableMP/Specification/issues/comments/220525923","html_url":"https://github.com/XcalableMP/Specification/issues/20#issuecomment-220525923","issue_url":"https://api.github.com/repos/XcalableMP/Specification/issues/20","id":220525923,"user":{"login":"mnakao","id":6206109,"avatar_url":"https://avatars.githubusercontent.com/u/6206109?v=3","gravatar_id":"","url":"https://api.github.com/users/mnakao","html_url":"https://github.com/mnakao","followers_url":"https://api.github.com/users/mnakao/followers","following_url":"https://api.github.com/users/mnakao/following{/other_user}","gists_url":"https://api.github.com/users/mnakao/gists{/gist_id}","starred_url":"https://api.github.com/users/mnakao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mnakao/subscriptions","organizations_url":"https://api.github.com/users/mnakao/orgs","repos_url":"https://api.github.com/users/mnakao/repos","events_url":"https://api.github.com/users/mnakao/events{/privacy}","received_events_url":"https://api.github.com/users/mnakao/received_events","type":"User","site_admin":false},"created_at":"2016-05-20T06:15:13Z","updated_at":"2016-05-20T06:15:13Z","body":"報告者：岩下\r\n\r\n参考のため、Fortranの組込み関数の分類をEXCELにしました。添付します。\r\n\r\nこれを見ながら、村井さんの6/7付資料「配列処理関数」へのコメントです。\r\n- p.2 elementalとそれ以外に分けて議論していますが、それ以外には問合せ関数が数多くあり、ここの各論の議論が必要だと思います。\r\n- 変形関数のうち半分近くがreduction関数であり、reduction関数は重要だと思います。何か考えましょう。\r\n- また、reductionは計算方向によってはelemental関数と同様通信なしでできます。elementalでないからといって諦めるのは惜しいです。ノード間reductionとは分けてうまく処理できないでしょうか。\r\n- reduction以外の変形関数は各論になってしまいますが、どこまでやるか。逆に、Fortranの組込みにもないようなsortなどは要るんでしょうか。\r\n\r\n[F2008 Intrinsics3.xlsx](https://github.com/XcalableMP/Specification/files/273976/F2008.Intrinsics3.xlsx)\r\n\r\n"}}
{"actor":{"display_login":"mnakao"}}