主要内容

使用并行计算实现引导程序

串行和平行的引导程序

这是一个示例定时在串行中与平行与串行中的自举。该示例从两个高斯人的混合物中生成数据,构建了结果数据的非参数估计,并使用引导程序来了解采样可变性。

  1. 生成数据:

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

    latt = -4:0.01:12;myfun = @(x)ksdentens(x,latt);pdfestimate = myFun(x);
  3. 引导估算值以了解其采样可变性。在串行中运行bootstrap以进行定时比较。

    tic; b = bootstrp(200,myfun,x); toc经过的时间为10.878654秒。
  4. 并行运行引导程序以进行计时比较:

    mypool = parpool()使用“本地”配置文件...连接到2位工人。mypool =带有属性的池:actactedfiles:{0x1 cell} numworkers:2 idletimeout:30 cluster:[1x1 Parallel.Cluster.Cluster.local] requestSuequequequequequequequequequequequequequeue:[1x1 Parallel.RequeStequeue] spmenabled:1
    opt = statset('useparallel',true);tic; b = bootstrp(200,myfun,x,'options',opt); TOC经过的时间为6.304077秒。

    在此示例中,并行计算的速度几乎是串行中计算的两倍。

覆盖ksdensity密度估计值,在平行引导程序中获得的200个自举估计值。您可以了解如何评估该图的密度估计的准确性。

保留i = 1:size(b,1),情节(latt,b(i,:),'c:')结束图(latt,pdfestimate);Xlabel('X'); Ylabel(“密度估计”)

可重复的平行引导程序

要以可重复的方式并行运行示例,请适当设置选项(请参阅运行可重现的并行计算)。首先设置问题和平行环境串行和平行的引导程序。然后设置使用子流的选项以及支持基因的流。金宝app

S = RandStream('MLFG6331_64');%具有substreams opts = statset('useparallel',true,...'streams',s,'useubstreams',true);b2 = bootstrp(200,myfun,x,'options',opts);

重新运行引导程序并获得相同的结果:

重置(S)%将流设置为初始状态B3 = Bootstrp(200,MyFun,x,'options',opts);iSequal(b2,b3)%检查是否相同结果ANS = 1