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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    各位好,刚接触MATLAB并行一天,现在有个问题,不知道应该怎么做并行优化。
    ) h9 v2 a+ K- e  ]
    9 R) u: `) X* ]# H" G1.  有Num_C 个数据集,每个数据集都是行数相同但列数不同的矩阵。6 A) G, u( C1 t4 [3 a# b! X
    2,分别对每个数据集做处理,调用同一个函数。& r( O% u' ~! a5 }( R- L) Q

    ; n0 [! W# p3 k2 W+ m" W0 M' M问题:但是用paRFor的时间还不如直接用用for。(for耗时105s,parfor耗时118s)。感觉跟spmd模式比较像 但不太会用,不知道哪位大侠能发现问题,小女子先谢过。- P/ O4 }1 l4 U4 b* ?  Y
    代码如下:
    " @1 z- E4 E: A/ K, j(YT 是个cell结构,已知。0 s: q( h4 c' D2 {- b. l/ g- T  O
       A 为矩阵,已知。functionimage为图像处理操作,并非简单的运算)
    5 k, X' A2 m2 J; W# `8 F6 bmatlabpool open 42 H  n+ B2 p) b
    Num_C = 8;
    , a/ K3 {. E" K4 _, i. [X_hat = cell(Num_C,1);
    - E, d/ r% H! ^3 g9 ytic;
    ) A: p3 U3 L# X: _0 q( Z; Y  dfor m=1:Num_C+ u- v+ \% J3 c. e% _, g$ l/ `( E
       [X_hat{m}] = functionimage(A,YT{m},0.05,1e-2,200);
      Y+ C! K9 ]1 Y0 r# }3 Gend" D* }+ W: Y! G3 t  X
    %end8 i- Y% A5 ?/ F! ]$ g2 ^
    toc;
    ' a9 `  s- x/ B; h5 J$ o( D% d) i5 g; @/ W& O5 {5 c3 s0 S
    tic;0 v/ z! K2 a& C* ^* m
    parfor m=1:Num_C* a, T- X2 C6 C) h. u& @
    [X_hat{m}] = functionimage(A,YT{m},0.05,1e-2,200);: k' t9 Z- w1 H+ K+ C
    end
      D7 P" ?4 u: |+ S! Q1 T* `toc;
    ( K" }# {! \' R% n" ~' \5 n0 fmatlabpool close
    : W% b+ W# p" k* P
    2 n6 w" D8 S* G8 Q( qCPU是AMD的四核。
    - a$ z& d* _4 ]0 h1 I4 h. `+ m
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-1 12:53 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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