【发布时间】:2016-06-27 22:53:05
【问题描述】:
这是一个说明我的问题的示例代码:
for(i in 1:100) {
for(j in 1:100)
{
if (A[i] < A[j]) {
tempMatrix[i, j] <- foo(val_1[i], val_2[j])
} else {
tempMatrix[i, j] <- foo(val_2[j], val_1[i])
}
}
}
上面这段代码计算时间太长,有没有办法并行化上面的代码?
val_1、val_2 和 A 是大约 50k 个元素的向量
【问题讨论】:
-
查看
plyr包,语法比使用标准apply系列函数要容易一些。 -
如果在并行
for循环上死机,请查看foreach包。您也可以用并行应用函数替换外部循环,有关这些的详细信息,请参阅parallel包。 -
请考虑向我们提供一些示例数据,以使您的问题可重现。例如,为
A、val_1和val_2中的每一个提供 10 个值。另外,代替foo;min、max或mean合适吗? -
这是一个复杂的函数。让我们说一下 O(N^2)。
标签: r parallel-processing vectorization parallel-foreach