Parallel.pool.constant
从数据或函数句柄构建Parallel.Pool.constant
句法
c = parallel.pool.constant(x)
C = Parallel.Pool.Constant(FH)
c = parallel.pool.constant(FH,清理)
c = Parallel.pool.constant(Comp)
描述
c = parallel.pool.constant(x)
复制值X
每个工人并返回一个Parallel.pool.constant对象,C
,这允许每个工人访问该值X
在平行语言构造中(parfor
,,,,SPMD
,,,,帕菲瓦尔
)使用该属性C.Value
。当您拥有多个parfor-loops访问相同常数数据时,这可以提高性能,因为X
is transferred only once to the workers.
C = Parallel.Pool.Constant(FH)
评估功能句柄FH
在每个工人上并存储结果C.Value
。这对于创建和使用工人(例如文件手柄和数据库连接)上的任何句柄类型资源也很有用。
c = parallel.pool.constant(FH,清理)
评估功能句柄FH
在每个工人上并存储结果C.Value
。什么时候C
已清除,功能手柄清理
用一个参数评估C.Value
在每个工人上。
c = Parallel.pool.constant(Comp)
使用存储在复合材料中的值comp
并将它们存储在C.Value
在每个工人上。当您需要在parfor-loop内使用的数据只能在工人上构造时,例如当数据太大而无法方便地适合客户端时,或者是从文件加载的文件时,这一点尤其有用。只有工人才能访问。如果comp
does not have a defined value on every worker, an error results.
提示
Parallel.pool.constant
必须在MATLAB客户端会话中调用。
您可以使用Parallel.pool.constant
具有已运行的并行池或后续平行池。
例子
从客户端中的数组中进行并行。
此示例显示了如何创建数字Parallel.pool.constant,并将其用于多个parfor
- 在同一游泳池上的环。
首先,在客户端上创建一些大数据,然后构建一个Parallel.pool.constant,将数据仅传输到池中一次。
data = rand(1000);c = Parallel.pool.constant(data);为了II = 1:10%运行多个PARFOR循环访问数据。parforjj = 1:10 x(ii,jj)= c.value(ii,jj);结尾结尾
并行。
此示例显示了如何使用功能句柄和清理功能创建Parallel.Pool.constant。
在每个工人上创建一个临时文件。通过传递@fclose
作为第二个参数,该文件将自动关闭C
脱离范围。
c = parallel.pool.constant(@()fopen(tempname(pwd),'wt'),@fclose);SPMDdisp(fopen(c.value));%显示临时文件名。结尾parforidx = 1:1000 fprintf(C.Value,'迭代:%d \ n',idx);结尾ClearC;%关闭颞颥ry files.
并行制作复合材料
此示例显示了如何将大型数据集构建为在泳池工人中的复合材料SPMD
块,然后将该数据用作平行。parfor
-环形。
SPMD如果labindex == 1 x = labBroadcast(1,rand(5000));别的x = labBroadcast(1);结尾结尾xc = Parallel.pool.constant(x);parforidx = 1:10 s(idx)= sum(xc.value(:,idx));结尾s
S = 1.0E+03 * 2.5108 2.5031 2.5123 2.4909 2.4957 2.5462 2.4859 2.5320 2.5320 2.5076 2.5432