3

次のスニペットでは、DoをParallelDoに置き換えると、2つのカーネルのうち1つだけでループが中断されるため、3倍遅く評価されます。

ParallelEvaluate[NN = 10070];
SetSharedVariable[res]
Module[{a, b, c},
  Do[
   c = NN - a - b;  
   If[a a + b b == c c, res = a b c; Break[]]
   , {a, 1, NN}, {b, a + 1, NN}
   ];
  res
  ] // AbsoluteTiming

ParallelAbortを呼び出すと問題は解決しますが、禁止されています。他には何があるの?

4

1 に答える 1