スレッド数決定問題16
あらゆる処理には前提と順序が存在します。並列処理システムの設計に不慣れな人は、順序があるから並列化出来ないと考えてしまいます。しかし、どんな処理でも順序があるのにも関わらず、現実には並列化されている処理は色々あります。もし順序があれば並列処理が出来ないのであれば、あらゆる処理は並列化出来ない事になります。従って、見方を変えれば並列化できると結論付けられます。
具体的には、情報の抽象度を変える事により処理を並列化できます。例えば、厳密な順序が決まっている処理Aがあるとします。この処理Aだけを見れば並列化できないかもしれません。しかしながら、処理Aを包含する処理Bに視点を移せば話しは変わってきます。処理B内で処理Aを複数同時実行できるかもしれません。
この例から分かると思いますが、並列処理化の対象はできるだけ抽象度が高い処理にします。インテル社のCPUが良い例です。プロセッサ内の処理をユニットに分け、パイプライン処理などの高度な並列処理をしています。つまり、抽象度が高いオブジェクトを定義しておけば、内部の処理を並列化する事が可能となるという事です。
総括します。システムを並列化するには、従来の直列的なアルゴリズムの発想で設計してはなりません。並列特有の問題点を知り、今までとは違う視点でシステムを設計せねばなりません。もちろんこれは分析段階にも言えます。システムのどの部分を並列化するのかを決めるには、並列処理で必要となる情報を収集せねばなりません。これらの事柄を面倒に感じる人がいるでしょう。
しかしながら、現在に於いて並列処理は必要不可欠な技術であり、その効果も高いので避けては通れません。並列処理はパフォーマンスを向上させますが、システムの構成も変化するので、新しい発想のシステムが実現できます。苦労は多いですが、その分見返りも大きいのです。並列処理を学習し、お客様が喜ぶシステムを構築しましょう。