MATLAB实现并行计算来缩短执行时间

**

MATLAB实现并行计算来缩短执行时间

**

本文采用 MATLAB 内附样例
”802.11be Packet Error Rate Simulation for an EHT MU Single-User Packet Format“ 为基础,将其改造为 并行计算,看看 并行计算是否有效率方面的优势。

结论:
1)多重循环:当存在多重循环时,不能多重循环同时采用并发。也就是说只能有一层为并行计算;
2) GPU 调用:不采用并行计算时, 若循环体中存在 GPU 调用(每次生成、释放GPU对象),则有可能反而降低效率:因为 GPU 对象的生成与释放很耗时间。采用并行计算时,采用 CPU 的效率也是高于 GPU ( 代码中仅有 agwn 一处涉及 GPU/CPU 的选择,其他代码默认都是 CPU) ;
3)并发轮次: 尽可能让每次并发的轮次等于 CPU 的核数;如果小于 CPU核数,则未充分发挥并发潜力;
4) 单轮次时间: 串行用时大约只有并行用时的 一半左右。 也就是说,并行计算同一组代码用时,大约是串行计算的两倍。 可见:并行计算代价也很高;也就是说,并发至少3 轮次以上才会有效率上的提升;
5)并行预热 : 并行预热一般需要 30 秒以上。 所以同样代码一次跑并行 , 比后面跑并行要多花 30 秒以上的时间; 一般需要跑个两三次才能达到性能巅峰;

1.串行运行每轮时间 5~7 秒 (CPU)
共 外循环 13 轮, 内循环 5 轮, 每轮 5~7 秒 。整个程序 共计 4 分钟 8 秒 运行完毕;
在这里插入图片描述

2 串行运行每轮时间 7~10 秒 (GPU)

在这里插入图片描述

3… 外循环用并行计算,每轮时间 一般 15 秒左右。
共计用时 2 分5 秒左右 . 可以看到每次 6 轮并发(CPU 6 核)
在这里插入图片描述

  1. 内循环用并行计算,每轮时间一般 15 秒左右。 共计用时 2 分28秒左右。 每次 5 轮并发 (内循环总共只有 5 轮,所有 CPU核数并未充分利用)

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值