Wolfram mathematica 在Mathematica中并行计算单元

Wolfram mathematica 在Mathematica中并行计算单元,wolfram-mathematica,parallel-processing,evaluate,Wolfram Mathematica,Parallel Processing,Evaluate,我有数百个单元格长的Mathematica文件,我想使用并行计算。我有一个2处理器x 4核,每台机器有16 Gb内存。我的Mathematica许可证允许我运行最多2个主内核,其中一个主内核可以有4个从内核(这是我玩了一段时间后的解释) 我曾经在两个不同的笔记本电脑上用两个主内核运行我的代码。为了进一步加快速度,我尝试用paralleleevaluate[]封装了几个单元格,结果似乎奏效了。然后,我还有4个代码副本,通过一个主内核彼此不知情地运行,这很好。(我基本上是在尽可能多地并行运行我的代码

我有数百个单元格长的Mathematica文件,我想使用并行计算。我有一个2处理器x 4核,每台机器有16 Gb内存。我的Mathematica许可证允许我运行最多2个主内核,其中一个主内核可以有4个从内核(这是我玩了一段时间后的解释)

我曾经在两个不同的笔记本电脑上用两个主内核运行我的代码。为了进一步加快速度,我尝试用
paralleleevaluate[]
封装了几个单元格,结果似乎奏效了。然后,我还有4个代码副本,通过一个主内核彼此不知情地运行,这很好。(我基本上是在尽可能多地并行运行我的代码/数学内核的副本。我还没有尝试任何真正的并行)


由于我的代码太长太复杂,我不想再次编辑每个单元格,使它们并行计算。有什么神奇的东西我可以放在笔记本的开头,这样在那之后计算的每个单元格都会默认为
paralleleevaluate[…单元格内容…]

正如belisarius建议的那样,$Pre=paralleleevaluate完全符合我的要求。一个问题是,当我关闭$Pre=Identity以返回主内核时,mathematica仍然试图在从内核而不是主内核中对其进行评估,但失败了。我最终解决它如下:SetSharedVariable[parallelcontrol];并行控制=并行评估$Pre:=并行控制。。。这里的一切都是在奴隶中评估的;parallelcontrol=Identity。。。。所有的一切都会回到主界面上进行评估。。。以下是在我的笔记本电脑上运行的示例,它有两个核心:

LaunchKernels[]
{KernelObject[1,“local”],KernelObject[2,“local”]}

0

{1,2}

SetSharedVariable[parcontrol]; $Pre := parcontrol; parcontrol = ParallelEvaluate
parcontrol = Identity
空[并行计算]

$KernelID
{1,2}

SetSharedVariable[parcontrol]; $Pre := parcontrol; parcontrol = ParallelEvaluate
parcontrol = Identity
{身份,身份}

0

平行评估

$KernelID

{1,2}

您真的确定要
并行计算[]
所有单元格吗?你已经在你的代码上用它做过实验了吗?提示:您可能会得到列表,其中您现在得到的是一个单一的结果…是的,我得到的是表的列表,这是确定的。我将在主内核中手动组合这些表并分析结果。我只是想找出使用所有MathKernel来加速计算的最简单的方法。我试着用$Pre=ParallelEvaluate;,但是我现在不能使用Mma(硬件问题)也许你想试试你可以试试
$Pre=If[Head@#=!=Unset,ParallelEvaluate@#,#,#]&然后
取消设置[$Pre]
以重置。。。对不起,我不能测试它$Pre=ParallelEvaluate完全符合我的要求,这是我一直在寻找的神奇的东西。现在,当我关闭$Pre=Identity以返回主内核时,mathematica仍然试图在从内核而不是主内核中计算它,但失败了。我最终解决它如下:SetSharedVariable[parallelcontrol];并行控制=并行评估$Pre:=并行控制。。。这里的一切都是在奴隶中评估的;parallelcontrol=Identity。。。。所有的一切都会回到主界面上进行评估。。。再次感谢你的帮助。我已经编辑了我之前的评论。
SetSharedVariable[parcontrol]; $Pre := parcontrol; parcontrol = ParallelEvaluate
parcontrol = Identity