主要内容

parallel.pool.Constant

从数据或函数句柄构建parallel.pool.Constant

语法

C = parallel.pool.Constant(X)
C = parallel.pool.Constant(FH)
C = parallel.pool.Constant(FH,CLEANUP)
C = parallel.pool.Constant(COMP)

描述

C = parallel.pool.Constant(X)复制值X并返回一个parallel.pool.Constant对象,C,允许每个worker访问该值X在并行语言结构中(parforspmdparfeval)使用物业C.Value.当您有多个parfor循环访问相同的常量数据集时,这可以提高性能,因为X只转移给工人一次。

C = parallel.pool.Constant(FH)计算函数句柄跳频并将结果存储在C.Value.这对于在worker上创建和使用任何句柄类型的资源也很有用,比如文件句柄和数据库连接。

C = parallel.pool.Constant(FH,CLEANUP)计算函数句柄跳频并将结果存储在C.Value.当C是否清除,函数句柄清理是否使用单个参数求值C.Value每个工人身上。

C = parallel.pool.Constant(COMP)使用存储在组合中的值电脑及相关知识,并将它们储存起来C.Value每个工人身上。当您需要在parfor-loop中使用的数据只能在worker上构造时,例如当数据太大而无法方便地放入客户机时,或者当它是从只有worker才能访问的文件中加载时,这尤其有用。如果电脑及相关知识在每个worker上没有定义值,则会导致错误。

提示

parallel.pool.Constant必须在MATLAB客户端会话中调用。

你可以使用parallel.pool.Constant已经运行的并行池或后续的并行池。

例子

从客户端数组中创建parallel.pool.Constant

这个例子展示了如何创建一个数字的parallel.pool。常数,用在倍数上parfor-loops在同一个池上。

首先,在客户机上创建一些大数据,然后构建一个parallel.pool。常量,仅将数据传输到池一次。

数据= rand(1000);c = parallel.pool.Constant(data);Ii = 1:10运行多个PARFOR循环访问数据。parforjj = 1:10 x(ii,jj) = c.Value(ii,jj);结束结束

将parallel.pool.Constant从函数句柄中移除

这个例子展示了如何创建一个带有函数句柄和清理函数的parallel.pool.Constant。

为每个worker创建一个临时文件。通过@fclose作为第二个参数,当c超出了范围。

c = parallel.pool.Constant(@() fopen(tempname(pwd),“wt”), @fclose);spmddisp (fopen (c.Value));%显示临时文件名。结束parforIdx = 1:1000 fprintf(c。值,“迭代:% d \ n”, idx);结束清晰的c关闭临时文件。

从Composite中创建parallel.pool.Constant

实例中的池工作者上构建大型数据集作为Compositespmd块,然后使用该数据作为parallel.pool.Constant在parfor循环。

spmd如果spmdIndex == 1 x = spmdBroadcast(1,rand(5000));其他的x = spmdBroadcast(1);结束结束xc = parallel.pool.Constant(x);parforidx = 1:10 s(idx) = sum(x . value (:,idx));结束年代
S = 1.0e+03 * 2.5108 2.5031 2.5123 2.4909 2.4957 2.5462 2.4859 2.5320 2.5076 2.5432

版本历史

在R2015b中引入

Baidu
map