找回密码
 注册
关于网站域名变更的通知
查看: 406|回复: 2
打印 上一主题 下一主题

求教一个用parfor还是spmd的并行问题

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-10-31 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    各位好,刚接触MATLAB并行一天,现在有个问题,不知道应该怎么做并行优化。
      k$ u; e; s2 O# }7 ]( B  p2 W$ c( S6 z  e
    1.  有Num_C 个数据集,每个数据集都是行数相同但列数不同的矩阵。
    0 Z$ s  a) v0 C! x4 q2,分别对每个数据集做处理,调用同一个函数。
    , a& D- E# W/ _' i6 v4 O- @/ Y8 v) U8 T; R  ?& k2 j
    问题:但是用paRFor的时间还不如直接用用for。(for耗时105s,parfor耗时118s)。感觉跟spmd模式比较像 但不太会用,不知道哪位大侠能发现问题,小女子先谢过。
    0 F' C' p. K* q* ~代码如下:
    3 ?( K+ P( }1 {) ^" F(YT 是个cell结构,已知。- N7 f! m5 Y0 x5 Y% }3 [/ c, a
       A 为矩阵,已知。functionimage为图像处理操作,并非简单的运算)
    , Z$ f/ u0 }& p4 E; ]& O1 {' vmatlabpool open 4
    ' A! V! r8 u6 e; e8 b7 Q0 TNum_C = 8;5 R( q7 ?) K7 M/ _% X
    X_hat = cell(Num_C,1);8 X/ P' p+ _# I3 G* W  G
    tic;7 o! o8 D) u- N  o
    for m=1:Num_C0 w+ j& A, @9 i
       [X_hat{m}] = functionimage(A,YT{m},0.05,1e-2,200);2 a  k/ `- O$ ]- M3 V) O
    end
    & v/ j9 G$ z+ E5 |. r9 i" i& y%end- t/ R4 m/ E6 N) O& ]; _
    toc;
    3 a1 ?  F; C5 B& U, \3 D/ }% }" E5 K/ w* E$ D# g# X3 ^. y
    tic;
    , v6 S9 c1 S/ P3 X+ u( a3 a# Vparfor m=1:Num_C
    : ?5 C8 T2 l9 ]% A% |3 z; c+ ~[X_hat{m}] = functionimage(A,YT{m},0.05,1e-2,200);  x* d) i7 a4 H; q8 Z1 y9 Z6 I
    end# |" @: ~9 |! I" s8 O
    toc;8 f0 P& D6 T1 v! x8 b& Q  Z
    matlabpool close0 Q; I, T# x2 w7 ?$ k

    : a6 C8 b: n8 T3 u4 F4 XCPU是AMD的四核。7 u6 G4 V, m8 U9 D; d+ V
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-10-31 15:10 | 只看该作者
    Num_c在比较大的时候parfor的威力才能显现出来。 parfor是这样的,分别分几个m取不同值,在不同核里运行,当然核与核之间有信息交互的时间。 所以当循环次数较小时,信息交互的时间占了大头
    . c" n( w6 M) N& F' A% ?
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-10-31 15:17 | 只看该作者
    看你不开并行105S开了118S,应该是开启worker花了较多时间,如果正常应用也只有100S左右的话真的不必非要用并行。
    ! O$ C8 q: Z& g' B9 [; \% P$ z我自己试过,光开启多个work那个matlabpool open就花费大概40S的时间,你可以试试先开worker,然后使用parfor命令单独测试仅仅并行计算而不带有开关worker命令所用时间,应该是挺短的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-17 13:16 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表