抄録/ポイント:
抄録/ポイント
文献の概要を数百字程度の日本語でまとめたものです。
部分表示の続きは、JDreamⅢ(有料)でご覧頂けます。
J-GLOBALでは書誌(タイトル、著者名等)登載から半年以上経過後に表示されますが、医療系文献の場合はMyJ-GLOBALでのログインが必要です。
並列コレクションを利用したステンシル計算に対して,領域毎に異なる計算や走査順序をユーザが柔軟に定義する為のJava言語拡張を提案する。JavaやScalaに導入された並列コレクションはステンシル計算と相性が良い。ステンシル計算のプログラムは格子空間上のセルを配列として表現し,その各セル上で周囲のセルの値を使って同一計算を反復処理するものである。並列コレクションを利用した反復処理は,低レベルなループ文ではなく,各セルでの計算がリスト内包表記で記述されラムダメソッドのようなコードブロックとして分離されるため処理順序が隠蔽される。そのため,プログラマは実行スケジューリングの最適化を意識せずにステンシル計算を並列分散化することができる。しかし,処理順序の隠蔽された素朴な並列コレクションでは,セル間に依存関係を持ったステンシル計算の実装は難しい。並列分散化されたステンシル計算では全ての配列要素で同じ処理が行われるのではなく,各計算ノードが担当する領域境界点では隣接ノードとの間の袖領域のデータ送受信や同期を実装する必要が出てくる。また,ノード間通信をバックグラウンド化する通信オーバーラップや,通信回数を削減する時間ブロッキング手法のような最適化を施すためには,コレクション要素間の細やかな実行順序制御も必要となってくる。本研究では部分処理と部分順序を定義するための部分メソッドディスパッチ(partial method dispatch)をJava言語に導入する。部分メソッドディスパッチは,データ範囲や実行順序を条件にメソッドを上書きできる言語機構である。これによりユーザは,袖領域での部分処理や,中心領域など他の部分領域との実行順序を,メソッド上書き条件として明示的に与えられる。これらは,上書きされるデータ範囲を付加する範囲指定構文と,上書きした部分メソッド間での実行順序を定義するためのprecedes構文を用いて記述される。また,同名メソッドの上書きによって走査順序を定義するため,既存の並列コレクションをそのまま再利用することができ,かつ別の上書き条件が実装されたクラスヘ容易に切り替えられるようになる。(著者抄録)