「並列処理レベルの実用的な分類」を書いていたり
個別に扱われることはあるのですが、なかなか同時に扱われることがないのでまとめてみようかな〜と思って書きかけています。本当はBlogの記事ではなくWebページのコンテンツにしたいのですが。
ちなみに並列処理レベルの分類はILP(Instruction-Level Parallelism)、TLP(Thread-Level Parallelism)、PLP(Process-Level Parallelism)の3つを考えています。最近はDLP(Data-Level Parallelism)なんていう言葉を聞くこともありますが、ここでは扱いません。DLPの有無でプログラムから見た並列処理のインターフェースが変わったりはしないですし、そもそもデータの並列性が全く存在しなかったら完全な並行処理になるのでマーケティング用語なんじゃないかと疑っています。スレッドの話ではなくなってしまいますが、データフロー型プロセッサ上の並列処理の話ならDLPと言ってもいいかもしれません(/ヮ\)
ちなみにわたしが並列処理レベルの中で主眼を置いているのはTLPです。ILPはAsm分を栄養として摂取するという、まさに息を吸うようにプログラミングをしている方がいたりするのでとてもわたしが適当に何かをする余地はありません。PLPはあまり使われない言葉なのでおもしろくなさそう?と思われるかもしれませんが、実は歴史が古く、今でもTLPより一般的な並列処理技術です。PLPはカーネルスレッドライブラリが整備される以前のUNIX上の並列処理の唯一の選択肢でしたし、コンピュータ・クラスター上やグリッドコンピューティングなどでネットワーク越しに行われる並列処理も該当します。ILPに同じくこれもまた既に高みに昇っている人が多いのと、実行環境の入手と維持のコストが高いので手が出ません。TLPは未だにわたしでも書けそうなことがまとめられていないので何か書こうと思いました(*ノノ)
他にも並列処理関連の話題を書こうかと思っていますが、他人の役に立つかどうかは分かりません(そもそもわたしはプログラマーとは言えないので下手の横好きです)。