我需要执行几项操作,每次操作一次需要几个小时才能完成。由于我有8个核心,我应该能够一次性运行它们而不是一个接一个地运行它们。但是,我找不到一种方法来指示mathematica自动单独运行它们或者在核心X上运行它们,我手动设置它们去哪里它们不重叠。这些是完全独立的函数,恰好需要一次运行,而不是任何类型的类似操作组,如在并行性的文档示例中所见(在这种情况下,函数是一堆复杂的无关符号积分,但是如果答案是非特定的,那么答案将更具普遍性。)
答案 0 :(得分:0)
这在某种程度上取决于你在做什么,但通常你可以使用Parallelize
,ParallelTable
,ParallelEvaluate
等命令。在ParallelEvaluate
命令中,你有指定内核的选项。
您可以用非常基本的方式比较这三个:
Clear[a]
a[n_] := a[n] = RandomInteger[10^75]; (*Adjust exponent at your discretion*)
Timing[FactorInteger /@ Table[a[n], {n, 1, 4}]]
Timing[Parallelize[FactorInteger /@ Table[a[n], {n, 1, 4}]]]
%[[2]]==%%[[2]]
如果您要使用ParallelEvaluate
,那么您将启动独立运行的内核(这会使上述的头对头比较有点棘手)。
因此,对于您的应用程序,您可能会遇到以下情况:
h[n_][x_] := Integrate[E^t*t^n, {t, 0, n x}]
Timing[Table[FullSimplify[h[n][x]], {n, 1, 10}]]
Timing[ParallelTable[FullSimplify[h[n][x]], {n, 1, 10}]]
即使在这个简单的例子中,你也可以看到相当快的速度。