ConcurrentとParallel
来週のTech Days 09 で並列化の話をするので、PDCのコンテンツを日本語化したりしていました。この世界はスパコンの時代から産学ともに長く研究されているので、訳語もそれなりに標準化されているようです。面白いなと思ったのはConcurrentとParallelです。
Wikiによると、Concurrentには「並行」(Concurrencyは「並列性」)、Parallelには「並列」という用語が使われるようです。PDC 08のスライドによると、Concurrentは独立した要求を同時に実行することで、Parallel(あるいはParallelism)は一つのタスクを複数に分解D(Decompose)してConcurrentに実行できるようにすることとなっています。MSDNのParallel関連のドキュメントの日本語訳にはConcurrentに「同時実行」が当てられています。「並行」は幾何学では交わらない直線のことなので、雰囲気はあってるような気もしますが、「並行」だけだと(専門家以外には)分かりにくいので「同時実行」のような用語が必要なこともあるんでしょうね。
Visual Studio 2010の並列化機能では、Concurrentはランタイムの用語で、Paralellはプログラミングモデルの用語になっています。つまりプログラミング時に分解してランタイムに渡し(並列化)、ランタイムはそれを平行に実行するということなんでしょうね。Concurrent Runtimeは「並行ランタイム」で分かってもらえるかな?
後記:交わらない直線は「平行」でした、すいません。