Loading article…
マップは並列コンピューティングにおけるイディオムであり、単純な操作がシーケンスのすべての要素に並列で適用される可能性があります。[1]これは、独立したサブタスクに分解でき、最後の結合またはバリアを除いてサブタスク間の通信/同期を必要としない問題である、恥ずかしいほど並列な問題を解決するために使用されます。
マップ パターンを適用する場合、問題の一部を表すデータ項目に対して実行される操作をキャプチャする基本関数を作成し、この基本関数を 1 つ以上の実行スレッド、ハイパースレッド、SIMD レーン、または複数のコンピューターに適用します。
OpenMPやCilkなどの並列プログラミングシステムでは、並列forループの形式でマップパターンを言語でサポートしています。[2] OpenCLやCUDAなどの言語では、要素関数(「カーネル」)を言語レベルでサポートしています。マップパターンは通常、他の並列設計パターンと組み合わせて使用されます。たとえば、マップとカテゴリ削減を組み合わせると、MapReduceパターンになります。[3] : 106–107
参照
参考文献
- ^ Samadi, Mehrzad; Jamshidi, Davoud Anoushe; Lee, Janghaeng; Mahlke, Scott (2014). Paraprox: データ並列アプリケーションのためのパターンベースの近似(PDF)。プログラミング言語およびオペレーティングシステムのアーキテクチャサポートに関する第 19 回国際会議会議論文集。doi : 10.1145 /2541940.2541948。
- ^ Wolfe, Michael (2015 年 4 月 6 日)。「コンパイラとその他: 並列ループの過去、現在、未来」。HPCwire。
- ^ Michael McCool、James Reinders、Arch Robison (2013)。構造化並列プログラミング:効率的な計算のためのパターン。Elsevier。ISBN 978-0124159938。
