竞天问 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%),这种情况检查调用的函数是否不允许重入或者加锁同步不当。
    首先定位程序热区,也就是调用的时候在调用前后输出下日志,看哪个函数频繁调用,并且调用的时间是互斥的。

    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功