我是用OpenMP做的多线程,各种schedule模式也都试过了,我也用PPL试过了,瓶颈并不在并发手段上
各个线程共用的数据结构也都复制了多份,各用个的,结果也是先各写各的,然后再合并
实在是找不到我写的代码里有哪里存在并发瓶颈了,但是我不排除使用的第三方库有锁之类的东西,但是我也没办法挨个去看代码查这些啊
有什么方法可以帮助我查这个问题吗?
我是用OpenMP做的多线程,各种schedule模式也都试过了,我也用PPL试过了,瓶颈并不在并发手段上
各个线程共用的数据结构也都复制了多份,各用个的,结果也是先各写各的,然后再合并
实在是找不到我写的代码里有哪里存在并发瓶颈了,但是我不排除使用的第三方库有锁之类的东西,但是我也没办法挨个去看代码查这些啊
有什么方法可以帮助我查这个问题吗?
看看你的cpu占用率,如果小于1/cpu个数,那么说明根本没有并发(比如说8核上小于等于12.5%),这种情况检查调用的函数是否不允许重入或者加锁同步不当。
首先定位程序热区,也就是调用的时候在调用前后输出下日志,看哪个函数频繁调用,并且调用的时间是互斥的。