主要内容

parallel.pool.Constant

构建和使用常数的数据或函数处理

    描述

    使用一个常数对象,以避免不必要的多次复制数据从你当前的MATLAB®会议,工人在一个平行的池。你可以建立一个常数对象一旦客户端和不断转移到工人。访问常数在多个parfor循环,spmd块,或parfeval调用。你获得的价值常数对象是恒定的。你可以分享你的并行代码使用常数对象与MATLAB的用户没有并行计算工具箱™。有关更多信息,请参见parallel.pool.Constant

    创建

    使用parallel.pool.Constant创建一个常数对象的一个数组,一个函数处理,或一个复合对象。使用价值属性访问底层数据。

    描述

    例子

    C= parallel.pool.Constant (X)复制数组X每个工人和返回常数对象。

    每个工人可以访问数组X在一个并行语言结构(parfor,spmd,parfeval)使用价值属性读取数据。

    例子

    C= parallel.pool.Constant (跳频)评估函数处理跳频在每一个工人和商店中的结果常数对象C。使用价值属性来访问运行的结果跳频()一个输出。

    使用这种语法来创建和使用任何在平行句柄类型资源池,如文件句柄和数据库连接。如果你想要评估函数对每个工人建立工人在计算之前,使用parfevalOnAll代替。

    例子

    C= parallel.pool.Constant (跳频,cleanupFH)评估cleanupFH (C.Value)在每个工人C清除。

    例子

    C= parallel.pool.Constant (电脑及相关知识)存储值的条目复合对象电脑及相关知识常数对象C在每一个工人。

    当你想使用这个语法构造数据只有在工人,例如当数据太大了,方便与客户端,或者从文件加载数据时,只有工人们可以访问。访问使用的值价值财产。

    输入参数

    全部展开

    输入数据,指定为任何MATLAB变量可以保存和加载。

    函数处理为构建函数,指定为一个函数处理。

    MATLAB计算构建函数得到价值财产的常数对象。函数必须采取任何输入参数,必须返回一个输出参数。

    • 当你阅读价值房地产首次在MATLAB会话或平行池工人,MATLAB商店运行的结果fcn ()在这种环境下的价值财产。

    • MATLAB的函数只运行一次会话或工人在一个平行的池。当你阅读价值财产后第一次,你读存储结果。

    • 如果你读了价值属性在不同的平行池工人,从运行MATLAB返回结果fcn ()工人。

    例子:@ ()fopen (tempname (pwd)、wt)

    函数处理为清理函数,指定为一个函数处理。函数必须接受一个输入参数,价值财产的常数对象。

    MATLAB运行时清理功能C清除。的常数对象C清除时:

    • 创建C在一个函数中,不返回C从这个函数。

    • 清除常数从您的工作区对象。

    例子:@fclose

    复合对象构建常数对象,指定为一个复合对象。

    电脑及相关知识定义对象必须有一个值在每个工人否则你会收到一个错误。

    例子:spmd COMP =兰德(3);结束;C

    属性

    全部展开

    独立基础数据的副本或句柄类型资源,指定为任何MATLAB变量可以保存和加载或处理变量。

    使用价值财产的常数访问底层数据或处理变量。

    例子

    全部折叠

    创建一个数字常数从数组在客户端,并使用它在多个parfor循环在同一池。

    在客户机上创建一些大型数据,然后建立一个常数对象,C把数据传送给池只有一次。

    data =兰德(1000);C = parallel.pool.Constant(数据);

    运行多个parfor -循环访问数据。为了提高效率,preallocate结果数组中。

    x =眼睛(5);2 = 1:5parforjj = 1:5 x (ii, jj) = C.Value (ii, jj);结束结束x
    x =5×50.0016 0.5273 0.3794 0.9148 0.2620 0.1965 0.8118 0.7953 0.5239 0.4186 0.3482 0.5745 0.6334 0.1987 0.5588 0.2405 0.6587 0.4238 0.0736 0.6463 0.8566 0.5241 0.0332 0.7331 0.9080

    创建一个常数对象与一个函数处理和清除功能。

    使用parallel.pool.Constanttempname创建一个临时文件在每个工人。当你通过文件关闭函数的清理函数处理,文件时自动关闭C清除。

    C = parallel.pool.Constant (@ () fopen (tempname (pwd),“wt”),@fclose);

    显示临时文件名。

    spmddisp (fopen (C.Value));结束
    工作1:C: \ myTemporaryFiles \ tpb2d60042_d684_4705_b084_63496d07b936工人2:C: \ myTemporaryFiles \ tpc6bef84f_bebe_44fc_acb2_ddd2fcba5026工人3:C: \ myTemporaryFiles \ tpf6775778_b06a_46ba_b502_27e2c253c66f工人4:C: \ myTemporaryFiles \ tp4dc6e57a_6b65_437a_8eb7_82877403eee3工人5:C: \ myTemporaryFiles \ tpd0e279ac_a141_49f0_a0b6_90c4cad137a4工人6:C: \ myTemporaryFiles \ tpf02acaad_60a5_441a_b1a1_46e4c66f33a1

    在每个工人向文件写入数据。

    parforidx = 1:1000流(C.Value“迭代:% d \ n”,idx);结束

    清晰的C关闭临时文件。

    清晰的C;

    构建常数工人在一个对象从复合对象池spmd块。

    创建一个复合对象的使用spmdBroadcast发送一些大数据在一个所有工人spmd

    spmd如果spmdIndex = = 1 x = spmdBroadcast(1,兰德(5000));其他的x = spmdBroadcast (1);结束结束
    开始平行池(parpool)使用过程的概要文件…连接到平行池6工人。

    建立一个常数对象的复合在一个对象,并使用它parfor循环。

    xc = parallel.pool.Constant (x);parforidx = 1:10年代(idx) =总和(xc.Value (:, idx));结束年代
    s =1×10103×2.5110 2.5256 2.5060 2.4909 2.5078 2.5187 2.4791 2.4842 2.4926 2.4903

    提示

    你必须使用parallel.pool.Constant函数在MATLAB客户端会话。

    您可以使用一个常数对象与一个已经平行池或随后的平行池。

    版本历史

    介绍了R2015b

    全部展开