並列化して何か得るものがあるというとき、相手はそうとうの仕事でなければなりません。
飯を炊くとか、カレーを作るとか、の程度であれば、並列化することによるオーバーヘッドが看過できないのです。
とまぁ、私のような半プータローが偉そうに書いても説得力がないので、記事紹介でお茶を濁すとしましょう。
What Makes Parallel Programming Hard?
何がパラレルプログラミングを難しくしているのか?
といっても、若い兄さんのエントリですから、インテル研究所のブログも紹介です。
What Makes Parallel Programming Hard?
ちなみに、流し読みしかしてないので、中身のことは知らん。読みたきゃ辞書片手に必死こいて読みなはれ。
並列化についての議論を眺めるときの注意点があります。
それは並列化の目的です。たとえばインテルのおっさんの目的は、クロック頭打ちの21世紀を生き残るための、トランジスタ数で時間を買う方法の模索です。製造業を見ればわかりますが、ある製品をひとつ組み立てるのにかかる時間は、加工や組み立て技術の向上でいくらでも短縮できそうなものなのですが、実際には投入コストとのトレードオフになります。ある程度こなれてくると、頭打ちになります。そうなったらあとはパイプライン化(工程分割)と、複数ライン化しかないのです。
パフォーマンスのために並列化を求めるのは実際Fortranプログラマぐらいじゃないですか?
普通のアプリプログラマは、並列処理でバグだらけになるのを避ける方法が第一でしょう。
たいていは、一塊の処理を別々の会社に丸投げして実装させて、動作するのは1台のマシンあるいは1枚のボード、という開発体制の維持が主目的なんです。
なので、立派なRTOSや高価なミドルウェアを使っていても、ただの共有メモリのポインタが出てきたり、volatile変数満載だったりするわけです。
そういう3者のどれに属するかの自己紹介なしで議論をすると、まさに議論の空回りで絡まりんぐなのです。
コメント