竞天问 2020-07-01 17:12 采纳率: 0%
浏览 296
已结题

Windows上的多线程程序,并发度上不去,占不满CPU,有什么方法可以查瓶颈在哪儿吗?

我是用OpenMP做的多线程,各种schedule模式也都试过了,我也用PPL试过了,瓶颈并不在并发手段上

各个线程共用的数据结构也都复制了多份,各用个的,结果也是先各写各的,然后再合并

实在是找不到我写的代码里有哪里存在并发瓶颈了,但是我不排除使用的第三方库有锁之类的东西,但是我也没办法挨个去看代码查这些啊

有什么方法可以帮助我查这个问题吗?

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-07-02 12:06
    关注

    看看你的cpu占用率,如果小于1/cpu个数,那么说明根本没有并发(比如说8核上小于等于12.5%),这种情况检查调用的函数是否不允许重入或者加锁同步不当。
    首先定位程序热区,也就是调用的时候在调用前后输出下日志,看哪个函数频繁调用,并且调用的时间是互斥的。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器