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
在并行语言结构中(parfor
,spmd
,parfeval
)使用物业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中引入