实现引导使用并行计算

自举在串行和并行

下面是一个例子的定时并行自举对串行。的示例由两个高斯混合生成数据,构建所得到的数据的非参数的估计,并使用自举,以获得抽样变异的感觉。

  1. 生成的数据:

    %来自两个高斯分布X = [randn(700,1)的混合物中生成大小1000,%的随机样本;4 + 2 * randn(300,1)];
  2. 构建从数据密度的非参数估计:

    LATT = -4:0.01:12;myfun = @(X)ksdensity(X,LATT);pdfestimate = myfun(X);
  3. 引导估计以获取其抽样变异感。运行定时比较在串行自举。

    抽动; B = bootstrp(200,myfun,X); TOC经过时间10.878654秒。
  4. 运行在定时比较并行自举:

    myPool的= parpool()开始使用 '本地' 的个人资料...连接到2名工人parpool。myPool的=池与属性:AttachedFiles:{为0x1细胞} NumWorkers:2的IdleTimeout:30集群:[1x1的parallel.cluster.Local]请求队列:[1x1的parallel.RequestQueue] SpmdEnabled:1
    选择= statset( 'UseParallel',TRUE);抽动; B = bootstrp(200,myfun,X, '选项',选择); TOC经过时间6.304077秒。

    并行计算是接近两倍的速度在串行计算的这个例子。

叠加的ksdensity密度估计值与所述并行自举得到的200个自举估计。你可以得到如何评价从该地块的密度估计的准确度感。

保持在对于i = 1:尺寸(B,1),图(LATT,B(I,:), 'C:')端情节(LATT,pdfestimate);xlabel( 'X'); ylabel( '密度估计值')

可重复的并行自举

为了以可再现的方式运行该示例并联,适当地设定选项(见运行重现并行计算)。首先设置问题,并行环境中自举在串行和并行。然后设置选项来使用子与流支持子一起。万博1manbetx

S = RandStream( 'mlfg6331_64');%具有子OPTS = statset( 'UseParallel',真,... '流',S 'UseSubstreams',TRUE);B2 = bootstrp(200,myfun,X, '选项',OPTS);

重新运行引导,并得到相同的结果:

复位(S)%设置流至初始状态B3 = bootstrp(200,myfun,X, '选项',OPTS);ISEQUAL(B2,B3)%检查,如果相同的结果ANS = 1