我如何了解我是否在最高级别使用我的所有内核
How can i learn if am using all of my cores in the maximum level
我有一个时间关键型应用程序,可以处理来自相机的图像序列。它是用C++编写的,它使用Qt,OpenCV和boost库。它将在专用PC上运行。
目前,gui 在主线程中起作用,我打开一个新线程进行图像处理。我没有费心将流程部分划分为线程,因为我认为 OpenCV 已经在这样做了。但是,我无法保持最大可容忍的延迟。
我的问题是,我如何了解我的应用程序是否使用了最高级别的所有内核?当我查看性能监视器时,我看到的模式真的很奇怪。CPU 使用率可能为 %35-40,所有内核都在工作,但未满负荷运行。
我做错了什么吗?
您没有做错任何事,但是您可以通过以下方式更改代码以充分利用 CPU 内核:
1 - 设置核心关联,以便线程不会从一个核心更改为另一个核心,这可以提高缓存使用率(L1 和 L2)
2 - 将线程调度设置为 FIFO,以便在完成处理之前不会进行上下文切换
3 - 在更高优先级的进程上运行该线程(这将需要进程的root权限)
干杯
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 无法在 cuda 内核中使用我的模板类
- 如何在我的进程中运行的二进制文件中注册操作和内核
- 为什么 Tensorflow 找不到我的自定义操作的 GPU 内核?
- 分析我的CUDA内核的内存访问合并
- 为什么我的CUDA内核返回旧值
- 我如何了解我是否在最高级别使用我的所有内核
- 简单的Thrust代码的执行速度大约是我的cuda内核的一半.我用Thrust错了吗
- 在我的Linux中调用了哪个版本的close(),来自posix lib或内核
- 将我的应用程序与内核连接的最佳方式是什么
- 我的iOS金属计算内核是否存在编译器错误,或者我遗漏了什么
- 我需要移植std::移动到我的内核吗
- 什么会导致我的程序在一段时间后不使用所有的内核
- 如何启用IRQ8在我的操作系统内核
- 我是否应该使用"if"语句统一两个相似的内核,冒着性能损失的风险?