-2

我在集群中进行图像处理,但未能达到最佳性能,我有一个复制边缘的函数和另一个应用过滤器或掩码的函数,但是当使用 MATLAB SPMD 的执行时间时,程序并没有满足每个时间随着时间的增加工人的增加。

enter code here
      p1=parpool('local',4);
      addAttachedFiles(p1,{'Max_Duplicado_pixel.m',
      'funcion_Aplicacion_mascaras.m'});
      tic
      spmd
      d1=codistributor1d(2);
      c = codistributed(imA, d1);  
      som=funcion_Aplicacion_mascaras(
      Max_Duplicado_pixel(getLocalPart(c),sombrero),sombrero);     
      salida=gcat(som);
       end
      imshow(salida{1});
       end
       delete(gcp);   

enter code here

这是涂抹睫毛膏的功能

enter code here
     x=ceil(R1/2):R-floor(R1/2); 
     y=ceil(R1/2):C-floor(R1/2); 
     for b=-floor(R1/2):floor(R1/2)
         for a=-floor(R1/2):floor(R1/2)
             salida(x,y)=salida(x,y)+single(imagen(x+b,y+a))
            *sombrero(b+ceil(R1/2),a+ceil(R1/2));        
         end

     end
     temp=salida(ceil(R1/2):R-floor(R1/2),ceil(R1/2):C-floor(R1/2));
     image_procesada=uint8(temp);
4

1 回答 1

0

据我了解,您只是在做类似的事情,spmd,x=somefunction(),end而从未使用过labindex. 这不会加速你的计算,每个工作人员都会做完全相同的事情,评估x=somefunction(). 如果有 5 个工作人员,该功能将被评估 5 次。看一下parfor,它通常是编写并行代码最简单的概念。

于 2016-02-17T02:23:33.013 回答