主要内容

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访问相同常数数据时,这可以提高性能,因为Xis 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内使用的数据只能在工人上构造时,例如当数据太大而无法方便地适合客户端时,或者是从文件加载的文件时,这一点尤其有用。只有工人才能访问。如果compdoes 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

版本历史记录

Introduced in R2015b