下面是一个例子的定时并行自举对串行。的示例由两个高斯混合生成数据,构建所得到的数据的非参数的估计,并使用自举,以获得抽样变异的感觉。
生成的数据:
%来自两个高斯分布X = [randn(700,1)的混合物中生成大小1000,%的随机样本;4 + 2 * randn(300,1)];
构建从数据密度的非参数估计:
LATT = -4:0.01:12;myfun = @(X)ksdensity(X,LATT);pdfestimate = myfun(X);
引导估计以获取其抽样变异感。运行定时比较在串行自举。
抽动; B = bootstrp(200,myfun,X); TOC经过时间10.878654秒。
运行在定时比较并行自举:
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