unparallelizedfnc という関数を並列化したい。この関数は、(計算に時間がかかる) 他の 4 つの関数を呼び出し、結果を格納します。最後に、結果が結合されます。私の関数のおもちゃの例を考えてみましょう (もちろん、これらは私が呼び出す 4 つの実際の関数ではなく、デモンストレーションのみを目的としています)。
複数のコアを持つコンピューターで、result1、result2、result3、result4 の計算を並列化するにはどうすればよいですか? Windows、Linux、Mac OSX で動作するようにしたいと考えています。この場合、並列化されたバージョンをベンチマークする必要はありません (オーバーヘッドのために遅くなりますが、私の実際のコードでは速くなります)。
4 つの結果が同じ関数 (ただしデータが異なる) である場合、並列 for ループ (foreach) または並列適用を使用できますが、この場合は関数が異なります。
unparallelizedfnc <- function(x) {
result1 <- sum(x)
result2 <- median(x)
result3 <- min(x)
result4 <- max(x)
result <- mean(c(result1,result2,result3, result4))
result
}
unparallelizedfnc(rnorm(100000))