产品
产品概览
Mathematica
Mathematica 学生版
Mathematica Home Edition
Wolfram
CDF Player
(免费下载)
可计算文档格式(CDF)
web
Mathematica
grid
Mathematica
Wolfram
Workbench
Mathematica
附加程序包
Wolfram|Alpha 产品
解决方案
解决方案概览
工程
航空航天与国防
化学工程
控制系统
电气工程
图像处理
工业工程
材料科学
机械工程
运筹学
光学
石油工程
生物技术与医药
生物信息学
医学影像
金融、统计、商业分析
精算科学
数据分析与挖掘
计量经济学
经济学
金融工程与数学
金融风险管理
统计
软件工程、内容传递
创作与出版
界面开发
软件工程
网页开发
科学
天文学
生物科学
化学
环境科学
地球科学
社会与行为科学
设计、艺术以及娱乐
游戏设计、特殊效果及衍生艺术
教育
STEM 教育倡议
高等教育
高职高专院校
中小学教育
学生
科技
可计算文档格式(CDF)
高性能并行计算(HPC)
参见:技术指南
购买
网上商店
其它购买方式
批量许可及站点许可证
联络销售部
软件
服务
升级
培训
书籍
技术支持
技术支持概览
知识库
学习中心
社区与论坛
培训
确认授权
Wolfram 用户门户
公司概况
关于 Wolfram Research
新闻与活动
Wolfram 博客
合作伙伴
工作机会
Mathematica
的历史
Stephen Wolfram 主页
联系我们
公司网站
全部站点
Wolfram|Alpha
演示项目
MathWorld
Integrator
Wolfram Functions Site
Mathematica Journal
Wolfram Media
Wolfram
Tones
Wolfram Science
Stephen Wolfram
DOCUMENTATION CENTER SEARCH
New to
Mathematica
?
Find your learning path
»
Mathematica
>
系统界面与配置
>
并行计算
>
并行计算中的资源共享
>
SetSharedFunction
>
Mathematica
>
核心语言
>
调整和调试
>
并行计算
>
并行计算中的资源共享
>
SetSharedFunction
>
MATHEMATICA 内置符号
$SharedFunctions
UnsetShared
SetSharedVariable
DistributeDefinitions
DownValues
参见 »
|
并行性
并行计算安装和配置
并行计算
并行计算中的资源共享
7.0版本的新功能概要
7.0的新功能: 字母列表
更多关于 »
SetSharedFunction
SetSharedFunction
声明符号
作为一个共享函数,它的下值在所有并行内核中是同步的.
更多信息
定义在任何内核上的共享函数的主值可以通过主核以及每次通过主核的同步并行子核得到.
形式
并保持不计算的表达式给出
Null
.
范例
关闭所有单元
例
(1)
令
fs
为一个(全局)共享函数:
每个子内核对同样的共享变量给出一个定义:
不共享的话,每个子内核都有自己的函数(本地)备份:
令
fs
为一个(全局)共享函数:
In[1]:=
每个子内核对同样的共享变量给出一个定义:
In[2]:=
Out[2]=
In[3]:=
Out[3]=
不共享的话,每个子内核都有自己的函数(本地)备份:
In[4]:=
Out[4]=
In[5]:=
Out[5]=
In[6]:=
范围
(4)
定义并且共享一个函数:
当从每个子内核调用时,函数在主内核更新
next
:
使用一个默认规则建立一个共享函数:
在子内核上给出额外的定义:
由于函数被共享,主内核了解额外的规则:
维持具有默认值的带索引的共享变量:
定义一个共享函数,来在主内核上对局部变量
results
进行操作:
从子内核调用函数:
在主内核上的变量已经被修改:
推广和延伸
(1)
在主内核上给出共享函数的延迟定义:
在主内核上总是对这样的定义进行计算,不论是哪个内核进行计算:
在并行内核之一上给出共享函数的定义:
这样的定义总是在要求值的内核上计算:
应用
(3)
共享函数可以用于同步化:
一个共享变量和临界区的使用效率很低:
一个简单的队数据类型的构造:
创建两个共享队:
填入输入队:
并行地在输入队的元素上操作,并且把结果放入输出队:
使用一个简单的共享函数来在输入和结果上进行通讯:
建立一个搜索,并且显示它的进程,直到手动退出为止:
目前求得的结果是
的因子数目的一个列表:
可能存在的问题
(3)
共享函数对于代码的分配效率很低,并且会导致串行计算:
简单地把并行内核上任意函数的定义进行分配:
在一个共享变量上分别进行读写操作对于线程不是安全的:
使用一个共享函数来同步访问一个(未共享的)变量:
或者,使用
CriticalSection
使整个代码段作为一个原子:
并行动态规划:
巧妙范例
(1)
一个并行的
Sow
:
参见
$SharedFunctions
UnsetShared
SetSharedVariable
DistributeDefinitions
DownValues
更多关于
并行性
并行计算安装和配置
并行计算
并行计算中的资源共享
7.0版本的新功能概要
7.0的新功能: 字母列表
版本 7 的新功能