ParallelEvaluate

ParallelEvaluate[expr]

在所有并行内核上计算表达式 expr,并返回得到结果的列表.

ParallelEvaluate[expr,kernel]

在指定的并行内核上计算 expr.

ParallelEvaluate[expr,{ker1,ker2,}]

在并行内核 keri 上计算 expr.

ParallelEvaluate[expr,kernels,h]

在返回结果之前将标头 h 封装在结果周围.

更多信息和选项

  • ParallelEvaluate 有属性 HoldFirst.
  • 可用 KernelObject(由 Kernels[] 返回)或内核的整数 ID(由 $KernelID 返回)指定内核. 也可以使用 All.
  • 以下属性也可用于选择所有运行内核的一个子集:
  • All所有内核
    "CloudKernels"所有云内核
    "LinkKernels"所有链接的内核
    "LocalKernels"本地运行的所有内核
    "LWGKernels"所有 LightweightGrid 内核
    "OneKernelPerMachine"每个不同的机器都有一个内核
    "RemoteKernels"远程机器上的所有内核
    "SshKernels"所有 SSH 内核
    "WSTPServerKernels"所有 WSTPServer 内核
  • ParallelEvaluateDistributedContexts 选项指定在开始计算之前,自动将哪些出现在 expr 中的符号的定义分配到所有可用的内核上.
  • 默认情况下,DistributedContexts:>$DistributedContexts,同时 $DistributedContexts:=$Context,会将所有符号按当前情形下的定义进行分配,但不会分配从程序包中来的符号的定义.

范例

打开所有单元关闭所有单元

基本范例  (1)

获取每个并行内核唯一的 ID 号:

获取每个并行内核的系统进程 ID:

范围  (9)

使用 ParallelEvaluate 在所有并行内核上执行初始化:

在所有并行内核上,产生局部函数的定义:

获取所有并行内核的局部属性:

从单个内核获取一个局部属性:

从源访问对于并行内核局部的数据:

把在并行内核上计算得到的结果分别保存在本地的唯一的文件中:

证明文件已经被写入:

防止对子内核返回的结果在本地重新进行运算:

在每台机器上只在一个内核上进行计算:

只在所有本地内核上进行运算:

仅在所有 LightweightGrid 内核上进行计算:

推广和延伸  (2)

指定一个内核对象或者内核 ID 查询的内核:

查询一些内核:

All 可用来指定所有可用内核:

All 相当于 Kernels[]

选项  (5)

DistributedContexts  (5)

缺省情况下,自动分配当前情形下的定义:

不要分配函数的任何定义:

对出现在并行计算中所有情形下的所有符号分配定义:

只分配在给定情形下的定义:

DistributedContexts 选项的值恢复到缺省值:

应用  (4)

把所有并行内核的属性列表:

通过在所有并行内核上运行相同的代码,并行化一个蒙特卡罗模拟:

把所有的单个平均值组合起来,以得到一个更准确的整体结果:

把大的中间结果保存在本地的每个并行内核上:

使用本地保存的数据工作:

检查是否所有的多项式都是不可约的:

用于同步化的共享变量:

在每个内核上运行一个搜索循环,直到计算退出:

属性和关系  (5)

ParallelEvaluate 在每个子内核上执行相同的计算:

Parallelize 把一个计算的每个部分分配到每个子内核:

确定性的计算在每个并行内核上给出同样的结果:

涉及随机性的计算在每个并行内核上给出独立的结果:

通过设置 SeedRandom,产生相同的结果:

每个并行内核具有不同的 ID,它可以用来使得表达式唯一:

DistributeDefinitions 使用 ParallelEvaluate 把定义传输给所有内核:

一个显式的 ParallelEvaluate 执行同样的操作:

对于新的内核记录分配好的定义:

不记录 ParallelEvaluate 的效果:

ParallelNeeds 使用 ParallelEvaluate 在所有并行内核上运行 Needs

另外,记录所有的使用,以使得新的内核也加载必须的程序包:

ParallelEvaluate 自动分配使用的函数定义:

可能存在的问题  (2)

副作用不能在不同的并行内核之间使用:

使用一个共享变量来支持副作用:

在用 ParallelEvaluate 进行定义时抑制定义的自动分配:

巧妙范例  (2)

使得 是素数,直到计算手动退出:

考虑到在许多不同的机器上有多个运行的内核:

在每台机器上将一个资源函数仅在缓存中加载一次:

在所有内核中使用资源函数:

Wolfram Research (2008),ParallelEvaluate,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ParallelEvaluate.html (更新于 2020 年).

文本

Wolfram Research (2008),ParallelEvaluate,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ParallelEvaluate.html (更新于 2020 年).

CMS

Wolfram 语言. 2008. "ParallelEvaluate." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/ParallelEvaluate.html.

APA

Wolfram 语言. (2008). ParallelEvaluate. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ParallelEvaluate.html 年

BibTeX

@misc{reference.wolfram_2024_parallelevaluate, author="Wolfram Research", title="{ParallelEvaluate}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/ParallelEvaluate.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_parallelevaluate, organization={Wolfram Research}, title={ParallelEvaluate}, year={2020}, url={https://reference.wolfram.com/language/ref/ParallelEvaluate.html}, note=[Accessed: 17-November-2024 ]}