concurrentとparallelの違い説明会

いくつか例を挙げながらよく話題になるconcurrent(並行)とparallel(並列)の違いをn_sodaさんと話し合いました。 concurrentとparallelの違いが掘り下げられて改めて勉強になりました。
27
くまぎ @kumagi

@n_soda ですが、parallelはconcurrentの部分集合だと言うのなら、Hadoopをconcurrent computingと呼ぶ事を是とすることになりませんか。

2012-03-02 20:24:18
SODA Noriyuki @n_soda

@kumagi もし仮に「concurrentは目的が複数あること」だとすると、ユニプロセッサ上で、単一目的の処理をmap reduce的に動かす(そうする理由は、たとえばデータが複数ディスクに分散していて、I/O待ちの時に別のスレッドが動かせるから)場合もそれを(続く)

2012-03-02 20:29:51
SODA Noriyuki @n_soda

@kumagi (続き)それを「concurrent動作している」と呼べない…ということになると思います。それがconcurrent programmingの研究対象になるかというと(自明なので)ならないと思いますが、concurernt動作しているとは呼べると思うんですが。

2012-03-02 20:31:40
SODA Noriyuki @n_soda

@kumagi hadoopやMPIの焦点はparallelに動かすことにあり、concurrent programming的な意味では自明な処理だけしてますから、concurrent computingとは普通言わないとは思います。でもconcurerntではあるんじゃないかと

2012-03-02 20:34:53
くまぎ @kumagi

@n_soda なるほど。確かにそれはconcurrentな動作ですが、concurrent computingのトピックではないですね。僕の最初の発言のconcurrentとparallelのそれぞれの後に「-computing」とつけた場合はどうでしょうか?

2012-03-02 20:36:13
SODA Noriyuki @n_soda

@kumagi 「研究分野としての concurrent computing と parallel comuting が、集合の包含関係にはない」という意味でしたら、それは全く賛成です。でもcomputingがconcurrentかparallelかという点は包含関係で良いような

2012-03-02 20:39:52
くまぎ @kumagi

@n_soda なるほど、良かったです。そして英語的な意味のconcurrentなら仰る通りかも知れません。同時刻に物理的に並列して動いてる物は必ず何かしら多少違う目的の動作を行っているので、どこで切り分けるかの切り分け方次第で大抵はconcurrentと呼べます。

2012-03-02 20:43:10
SODA Noriyuki @n_soda

@kumagi 僕は、concurrentに「複数の目的の」というニュアンスがあるって点が、まだ良くわかってないです。どちらかというと「共同して作用する」とか「同意見の」から来てるような気がしてて。英語だと「同時の」というニュアンスもあるようですが、これは捨てられてますよね。

2012-03-02 20:50:52
くまぎ @kumagi

@n_soda 複数の目的というのは、マルチタスクとか、もしくは一つのstackに2つのスレッドがpushとpopを行いたがってるとか、まずお互いの事を意識してない前提から始まって、必要ならば協同する必要が有りますし、必要ないなら無視するだけで、必ずしも協同ではないよなぁと。

2012-03-02 20:56:16
SODA Noriyuki @n_soda

@kumagi 「concurrent programming」は協同処理が対象になりますが、「concurrent動作」には「協同」のニュアンスはないですね。でもこちらは、「別の目的」というニュアンスがなくても、(論理的に)「同時」で説明できるので、「複数の目的」は不要かなと。

2012-03-02 21:02:03
くまぎ @kumagi

@n_soda んー、オッカムの剃刀ではその通りですね。ですが「Parallelは同時刻です」「Concurrentは同時です」だとあまりにも説明として乱暴なので、イメージしやすいように言い分けてるつもりです。

2012-03-02 21:05:57
SODA Noriyuki @n_soda

@kumagi 「Parallelは同時刻です」「Concurrentは同時です」は確かに意味不明ですねw でも僕はやはり、物理並列vs論理並行で明確に判断できる派です。 https://t.co/zgpcBgdZ の件を「目的が複数」で説明するのは(可能ですが)辛いと思いますし

2012-03-02 21:12:00
くまぎ @kumagi

@n_soda その例は研究トピックとしてならHadoopと同様に「concurrent動作してるんだけどconcurrent-computingではない」例だと思います。ですからその例に対して「目的が複数」とは言い張らないので矛盾してるつもりはないです。

2012-03-02 21:18:50
SODA Noriyuki @n_soda

@kumagi ふむー。「目的が複数」説と「物理vs論理」説で、どちらが説明が簡単か?という点ではどうでしょうか?

2012-03-02 21:21:21
くまぎ @kumagi

@n_soda うーん、そうですね。「物理的に同時」「論理的に同時」の違いで納得の行く人はその説明でも良いと思います。

2012-03-02 21:28:34