Mathematica > 系统界面与配置 > 并行计算 > 并行计算中的资源共享 > SetSharedFunction >
Mathematica > 核心语言 > 调整和调试 > 并行计算 > 并行计算中的资源共享 > SetSharedFunction >

SetSharedFunction

SetSharedFunction
声明符号 作为一个共享函数,它的下值在所有并行内核中是同步的.
  • 定义在任何内核上的共享函数的主值可以通过主核以及每次通过主核的同步并行子核得到.
  • 形式 并保持不计算的表达式给出 Null.
fs 为一个(全局)共享函数:
每个子内核对同样的共享变量给出一个定义:
不共享的话,每个子内核都有自己的函数(本地)备份:
fs 为一个(全局)共享函数:
In[1]:=
Click for copyable input
每个子内核对同样的共享变量给出一个定义:
In[2]:=
Click for copyable input
Out[2]=
In[3]:=
Click for copyable input
Out[3]=
不共享的话,每个子内核都有自己的函数(本地)备份:
In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=
定义并且共享一个函数:
当从每个子内核调用时,函数在主内核更新 next
使用一个默认规则建立一个共享函数:
在子内核上给出额外的定义:
由于函数被共享,主内核了解额外的规则:
维持具有默认值的带索引的共享变量:
定义一个共享函数,来在主内核上对局部变量 results 进行操作:
从子内核调用函数:
在主内核上的变量已经被修改:
在主内核上给出共享函数的延迟定义:
在主内核上总是对这样的定义进行计算,不论是哪个内核进行计算:
在并行内核之一上给出共享函数的定义:
这样的定义总是在要求值的内核上计算:
共享函数可以用于同步化:
一个共享变量和临界区的使用效率很低:
一个简单的队数据类型的构造:
创建两个共享队:
填入输入队:
并行地在输入队的元素上操作,并且把结果放入输出队:
使用一个简单的共享函数来在输入和结果上进行通讯:
建立一个搜索,并且显示它的进程,直到手动退出为止:
目前求得的结果是 的因子数目的一个列表:
共享函数对于代码的分配效率很低,并且会导致串行计算:
简单地把并行内核上任意函数的定义进行分配:
在一个共享变量上分别进行读写操作对于线程不是安全的:
使用一个共享函数来同步访问一个(未共享的)变量:
或者,使用 CriticalSection 使整个代码段作为一个原子:
并行动态规划:
一个并行的 Sow
版本 7 的新功能
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
格式:   HTML  |  CDF