目前编写的C++程序如何在多核中运行?

用户您好,请详细描述您所遇到的问题:

  1. 系统软件版本: Ubuntu 20.04.5 LTS (GNU/Linux 4.14.87 aarch64

  2. 问题涉及的技术领域:多核,多线程

  3. 问题描述: 目前编写的程序,仅能在一个核中运行,因为有数字信号处理相关算法,导致实时的音频播放断断续续的。使用top命令查看,进程占用CPU几乎100%,希望调动多核cpu,不知道如何实现,请问是否有例程?谢谢。希望可以在做数字信号处理的同时流畅播放音乐。

  4. 复现概率:必现

  5. 已进行的排查措施、分析及结果: 单独播放音乐流畅,加入数字信号处理部分后播放断断续续。

这个是编程开发者的问题,要自己做多核支持,简单点可以用OpenMP

复杂一点可以用pthread

您好:

X3芯片是4核的,所以默认程序运行环境就是多核上进行调度的;你如果未做亲核性绑定,是默认会在多个核上工作;

从你的描述来看,加入数字信号处理之后才会断断续续,所以是不是数字信号处理占CPU loading高,导致不能及时完成,所以才会断断续续;

您好,

多核调动是通过软件实现的,如果你的软件是单进程的,他就只能单核实现,所以先检查下软件实现是否是多线程的,因为系统本身是支持多进程的

您好,感谢您的回答,是这样的(占用CPU过高)。

在运行程序的时候我使用top命令查看,进程占用CPU几乎100%

但是,按理来说,作为四核CPU,默认会在多个核上工作的话,是不是最高可以到400%呢?

是不是说,我要在编写的代码中加入多线程,才可以调用多核呢?

还是自动开启调度呢?

谢谢

1.直接用top,显示的CPU占用是指总CPU资源的占用率,你再按’1’,就能看到每个CPU的占用率;

2.多核调度默认就是打开的

谢谢您,我看到了。确实是多核同时工作达到了100%。目前还是卡顿,我就是希望多核可以共同达到400%,这样会不会就不卡顿了。我是应该在代码中做优化吗?还是由于主频限制,无法达到呢?

1.主频没有限制;

2.每个核都能达到100%的,个人觉得就算每个核达到100%,还是会有卡顿的,所以建议你在数字信号处理上优化一下;

感谢感谢!