Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica > 系统界面与配置 > 并行计算 > Parallelize >
Mathematica > 核心语言 > 调整和调试 > 并行计算 > Parallelize >

Parallelize

Updated In 8 Graphic
Parallelize[expr]
自动并行计算 expr.
  • Parallelize[expr] 在不同的内核和处理器之间分配不同的 expr 计算部分.
  • Parallelize[expr] 通常给出计算 expr 相同的结果,除了在计算中产生副作用外.
"CoarsestGrained"按照现有内核,将计算分成相同数量的段
"FinestGrained"将计算分成最小的子单元
"EvaluationsPerKernel"->e将计算分成每个内核最多 e
"ItemsPerEvaluation"->m将计算分成每个内核最多 m 个子单元
Automatic在总开销和负载平衡之间的折中
  • Method 适用于涉及多个子单元的计算,所有子单元采用相同的时间计算. 将总开销降到最低,不提供任何负载均衡.
  • Method 适用于少量子单元的计算,子单元采用不同的时间计算. 它提高总开销,但最大化了负载均衡.
  • 默认值为 DistributedContexts:>$Context,分配当前上下文的所有符号的定义,但是不分配来自于程序包的符号定义.
并行对一个函数进行映射:
并行地产生一个表格:
交互式定义的函数可以立即被并行使用:
并行对一个函数进行映射:
In[1]:=
Click for copyable input
Out[1]=
 
并行地产生一个表格:
In[1]:=
Click for copyable input
Out[1]=
 
交互式定义的函数可以立即被并行使用:
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
当应用到一个列表时,所有具有一个变量的可列表函数将自动地并行化:
隐式定义列表:
许多保存列表结构的函数型程序结构并行处理:
结果不一定有和输入相同的长度:
没有函数,Parallelize 仅简单并行计算元素:
统计直到一百万的素数的数量:
检测93是否出现在前100个素数的列表中:
检查一个列表是否不含有5:
该变量不一定是一个显式的 List
内积自动地并行化:
外积自动地并行化:
并行计算一个表,在迭代变量和无迭代变量下:
并行产生一个数组:
并行计算和与积:
函数的计算并行出现:
具有属性 Flat 的函数自动并行化:
由一些变量组成的可列表函数:
只有赋值的右边被并行化:
一个复合表达式的并行是一个接一个:
把计算分成最小可能的子单元:
把计算分成与可利用内核相同数目的块:
对于整个任务,把计算分成每个内核最多两次计算:
把计算分成每次计算最多含有5个元素:
默认选项设置在计算规模和计算次数之间取折中:
具有很大差异的运行时间的计算应该被尽可能精细地并行化:
大量简单计算应该被分成尽可能少的批次:
默认情况下,当前上下文的定义会自动分配:
没有分配任何函数的定义:
分配出现在并行计算中的所有上下文中的符号定义:
只分配给定上下文的定义:
恢复 DistributedContexts 选项的值为默认值:
搜索 Mersenne 素数:
观测求得的结果的出现:
计算视觉化的整个表格:
并行搜索整个区域,以求得局部最小值:
选择最佳结果:
使用一个共享函数来记录产生的计时结果:
建立带有计时结果的动态柱状图:
运行一系列具有很大差异的运行时间的计算:
对于数据并行函数,Parallelize 关于 ParallelCombine 实现:
并行加速可用花费已知数目的时间的计算来测量:
定义大量具有已知运行时间的任务:
一个串行执行的时间是所有单个时间的和:
测量并行计算的加速:
最细颗粒度调度(Finest-grained scheduling)产生更好的负载平衡和更高的加速:
首先调用大型任务产生更好的结果:
关于从 中选择的 ,形成算术表达式
每个算术运算的列表产生一个简单的计算:
计算它是简单的:
求所有产生0的算术运算的序列:
显示相应的表达式:
当需要时,互动式定义的函数自动分配到所有内核:
手动分配定义且禁止自动分配:
对于来自于程序包的函数,使用 ParallelNeeds 而不是 DistributeDefinitions
设置一个随机数生成元,适于并行使用和初始化每个内核:
不能并行化的表达式则进行通常计算:
副作用(Side effects)不能用于并行映射的函数中:
使用一个共享变量来支持副作用:
如果没有子内核,则在主内核中计算结果:
如果所用的函数没有先被分配,则结果可能仍然看起来是正确的:
仅当函数被分配,结果才能真正地在可用的内核上计算:
在当前上下文的函数定义自动分配:
不是来自于默认上下文的定义不会自动分配:
使用 DistributeDefinitions 分配这样的定义:
或者,设置 DistributedContexts 选项包括所有的上下文:
显式分配函数的定义:
修改定义:
修改的定义是自动分配的:
禁止定义的自动分配:
只在子内核中定义的符号不会自动分配:
$DistributedContexts 的值没有用在 Parallelize
设置 ParallelizeDistributedContexts 选项:
恢复所有的设置为默认值:
当并行处理时,平凡操作可能需要更长的时间:
显示求得的非平凡自动机:
版本 7 的新功能 | 版本 8 修改功能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
格式:   HTML  |  CDF