BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 並列処理に対応したプログラミング – 並列階層のパターン

並列処理に対応したプログラミング – 並列階層のパターン

マルチコアプロセッサの登場によって、新しいパフォーマンスのチャンスが生まれる。しかし、Ina Fried氏によると(source)、「現在のソフトウェアの大半はそのような進歩に対応できるようになっていない」ため、このハードウェアの動向はソフトウェア業界に とって大きな課題であるとのことである。Intel 社の Shekhar Borkar氏も、「大手のソフトウェアメーカーは対応が不十分であり」、ソフトウェアにムーアの法則が適用される時代が来たと論じている(source)。つまり、「ソフトウェアが対応できる並列処理の量は2年間で倍増する」ということである(ムーアの法則とは、半導体の性能はおよそ2年で倍増するというもの)。Borklar氏は、ソフトウェアの開発慣習を一新して、潜在的な性能向上を増大する必要があると考えている。

このような状況下で、メキシコ国立自治大学数学部の Jorge L. Ortega-Arjona教授によって、並列プログラミングに対応した新しい設計パターンが導入された(PDF・英語)。このパターンは、以下の場合に実行パフォーマンスの向上を試みるものである。
順序が付けられたデータの集まりに対して、順序が付けられた一連の演算で構成された計算を繰り返し行なう必要があるとします。さまざまなレベルで、値を求めるためでなく効果を得るために実行される、概念的に順序付けされた一連の単純な演算で構成された、単なる1つの複合計算の結果を出力するようなプログラムについて考えてみます。上位の演算は、1つまたは複数の下位の演算の実行を必要とします。このプログラムを逐次実行することは、次々と評価される一連のサブルーチンを呼び出すことであると考えることができます。
Jorge L. Ortega-Arjona 教授の並列階層パターンは「層パターンを拡張したもの」であり、問題を層コンポーネントに分割し、それらの層コンポーネントが「さらに複雑なレベルの層に演算や機能を与え、複雑さがより少ないレベルの層にさらに単純なサブタスクを任せる」役割を果たすものである。機能的な並列処理の要素は、「1つの層の複数のコンポーネントが同時に存在することを可能にすることによって取り入れられ、通常は同じ演算を行なう」。
各層で演算が実行されている間、通常は上位の層は下位の層の結果を待たなければなりません。しかし、各層が複数のコンポーネントで構成されていると、演算を並列実行することができ、新しい要求に応じることができます。これは、順序が付けられた演算の複数の集まりを同じシステムで実行することができるという ことでもあります。複数の計算は、時間的に重なってもかまいません。
Ortega教授が提唱するパターンの利用方法として知られているものに、「ノードごとに検索プロセスが作成される検索ツリーに似た、ツリー構造の演算」がある。制約事項としては、「すべてのシステムの計算が階層として効率的に構築できるわけではない」、つまり、上位の層が下位の層にあまりにも大きく依存している場合(一般的なWebベースのアプリケーションなど)は、パターンがうまく機能しないということ、そして層のレベルを正しく設計することは相当困難な場合があるというこ とである。

「同時処理は、すべての開発担当者や設計担当者が視野に入れるべき最も重要な項目である」という Jon Erickson氏の見解に同意する人(source)は、この分野の新しい研究から目を離さないようにしてほしい。

原文はこちらです: http://www.infoq.com/news/2007/08/parallel-hierarchies-pattern

この記事に星をつける

おすすめ度
スタイル

BT