ParallelMap
ParallelMap[f,expr]
将 f 并行作用在 expr 第一层的元素上.
ParallelMap[f,expr,levelspec]
将 f 并行作用在 levelspec 指定 expr 的部分元素上.
更多信息和选项
- ParallelMap 是一个并行的 Map,将 f 作用在不同的内核和处理器之间.
- ParallelMap 将给出和 Map 相同的结果,除了计算过程中的副作用.
- ParallelMap 用和 Map 相同的层指定,并非所有指定可以并行化.
- Parallelize[Map[f,expr]] 等价于 ParallelMap[f,expr].
- 对于不能并行的 ParallelMap,用 Map 执行计算.
- 可以给出下列选项:
-
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.
范例
打开所有单元关闭所有单元基本范例 (4)
ParallelMap 与 Map 工作方式相似,不同之处在于并行:
ParallelMap 对于任何函数都适用:
范围 (6)
推广和延伸 (2)
选项 (13)
应用 (2)
一旦使用 ParallelTry 找到一个非平凡解,搜索也可以停止:
属性和关系 (10)
Map 实际使用 ParallelMap,可以被自动并行化:
最精颗粒度的调用(Finest-grained scheduling)给出更好的负载平衡和更高的加速:
关于一些变量的函数可以使用 MapThread 映射:
通过使用 Parallelize 获取一个并行版本:
MapIndexed 把一个元素的索引传递给被映射的函数:
通过使用 Parallelize 获取一个并行版本:
对于来自程序包的函数,使用 ParallelNeeds 而不是 DistributeDefinitions:
可能存在的问题 (7)
如果一个层次指定阻止了并行化的运行,ParallelMap 的计算类似 Map:
使用 DistributeDefinitions 分配该类定义:
或者,设置 DistributedContexts 选项包括所有上下文:
文本
Wolfram Research (2008),ParallelMap,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ParallelMap.html (更新于 2021 年).
CMS
Wolfram 语言. 2008. "ParallelMap." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/ParallelMap.html.
APA
Wolfram 语言. (2008). ParallelMap. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ParallelMap.html 年