Parallelize
Parallelize[expr]
自动并行计算 expr.
更多信息和选项
- Parallelize[expr] 在不同的内核和处理器之间分配不同的 expr 计算部分.
- Parallelize[expr] 通常给出计算 expr 相同的结果,除了在计算中产生副作用外.
- Parallelize 有属性 HoldFirst,这样在并行之前不会计算表达式.
- 可以给出下列选项:
-
Method Automatic 并行化粒度 DistributedContexts $DistributedContexts 用于将符号分配到并行计算的上下文 ProgressReporting $ProgressReporting 是否报告计算进度 - Method 选项指定要使用的并行化方法. 可能的设置包括:
-
"CoarsestGrained" 将计算分成与可用内核数量相同的段 "FinestGrained" 将计算分成最小的子单元 "EvaluationsPerKernel"->e 将计算分成每个内核最多 e 段 "ItemsPerEvaluation"->m 将计算分成每个内核最多 m 个子单元 Automatic 在总开销和负载平衡之间的折中 - Method->"CoarsestGrained" 适用于涉及多个子单元的计算,所有子单元采用相同的时间计算. 将总开销降到最低,不提供任何负载均衡.
- Method->"FinestGrained" 适用于少量子单元的计算,子单元采用不同的时间计算. 它提高总开销,但最大化了负载均衡.
- DistributedContexts 选项指定出现在 expr 中的哪些符号在计算之前将其定义自动分发到所有可用内核.
- 设置 $DistributedContexts:=$Context,默认值为 DistributedContexts:>$DistributedContexts,该值分发当前上下文中所有符号的定义,但不分发程序包中的符号定义.
- ProgressReporting 选项指定是否报告并行计算的进度.
- 默认值为 ProgressReporting:>$ProgressReporting.
- Parallelize[f[…]] 并行运行这些对列表逐个元素进行运算的函数:Apply、AssociationMap、Cases、Count、FreeQ、KeyMap、KeySelect、KeyValueMap、Map、MapApply、MapIndexed、MapThread、Comap、ComapApply、MemberQ、Pick、Scan、Select、Through.
- Parallelize[iter] 并行运行迭代器 Array、Do、Product、Sum、Table.
- Parallelize[list] 并行运行 list 中的元素.
- Parallelize[f[…]] 可以并行处理可列表函数和关联函数以及内积和外积. »
- Parallelize[cmd1;cmd2;…] 将 Parallelize 包装在每个 cmdi 周围,并依次计算它们. »
- Parallelize[s=expr] 转换为 s=Parallelize[expr].
- Parallelize[expr] 如果 expr 不属于 Parallelize 所识别的情况,则按顺序对 expr 进行计算.
并行选项
并行范围
范例
打开所有单元关闭所有单元范围 (23)
选项 (13)
应用 (4)
属性和关系 (7)
对于数据并行函数,Parallelize 关于 ParallelCombine 实现:
最细颗粒度调度(Finest-grained scheduling)产生更好的负载平衡和更高的加速:
关于从 +、–、*、/ 中选择的 ⊗,形成算术表达式 1⊗2⊗3⊗4⊗5⊗6⊗7⊗8⊗9:
对于来自于程序包的函数,使用 ParallelNeeds 而不是 DistributeDefinitions:
可能存在的问题 (8)
副作用(Side effects)不能用于并行映射的函数中:
使用 DistributeDefinitions 分配这样的定义:
或者,设置 DistributedContexts 选项包括所有的上下文:
$DistributedContexts 的值没有用在 Parallelize:
设置 Parallelize 的 DistributedContexts 选项:
文本
Wolfram Research (2008),Parallelize,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Parallelize.html (更新于 2021 年).
CMS
Wolfram 语言. 2008. "Parallelize." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/Parallelize.html.
APA
Wolfram 语言. (2008). Parallelize. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Parallelize.html 年