スレッド数決定問題15
これまでの記事の内容を前提とした上で、高度な並列処理技術を使用するシステムの設計について述べていきます。並列処理システムを設計するには、先ず並列処理はどのような分類があるのかを知らねばなりません。並列処理を大別すると、データの並列化とタスクの並列化の2つです。
データの並列化は、対象のデータを並列的に処理する事を指します。企業における情報処理システムは、データが増える事はあっても減る事はありません。その大量のデータを並列的に処理するのは自然な考え方です。
タスクの並列化は、データではなく処理そのものを並列化する方法です。タスクの並列化は、仕事の現場において多々見受けられる光景です。殆どの仕事は、複数の人が同じ内容の仕事をしています。それがタスクの並列化と考えると分かりやすいかと思います。タスクの並列化もまた、自然な考え方だと言えます。
現実をモデル化する上で、データの並列化とタスクの並列化は容易に見出す事が出来ます。コンピュータの世界とは違い、現実はあらゆる出来事が並列的に起こっています。それ故、初めて並列処理システムを設計する人は、簡単な事だと思うでしょう。しかし、現実とコンピュータの世界のギャップがシステム設計を困難にします。その困難さについては、今で述べてきたので、改めてこの連載を読むと分かるかと思います。
現実とコンピュータのギャップを埋める並列処理システムの設計に於いて重要なのは、依存性を明らかにする事です。普段我々人間は、日常では依存性を気にしませんが、コンピュータ上では意識しなくてはなりません。全ての処理には何らかの前提と順序的な依存性があります。それを明確にしないと、並列処理システムの設計は行えません。続く...