问题 - 多核并行化

  如果你的电脑是16核心的话,可以开16个 goroutine 共同计算一列数的的综合,就会发现总的执行时间没有明显缩短。再去观察 CPU 运行状态,你会发现尽管我们有16个 CPU 核心,但在计算过程中其实只有一个 CPU 核心处于繁忙状态,这是会让很多 Go 语言初学者迷惑的问题。

  官方的答案是,这是当前版本的 Go 编译器还不能很智能地去发现和利用多核的优势。虽然确实创建了个 goroutine,并且从运行状态看这些 goroutine 也都在并行运行,但实际上所有这些 goroutine 都运行在同一个 CPU 核心上在一个 goroutine 得到时间片执行的时候,其他 goroutine 都会处于等待状态。从这一点可以看出,虽然 goroutine 简化了写并行代码的过程,但实际上整体运行效率并不真正高于单线程程序。

  在 Go 语言升级到默认支持多 CPU 的某个版本之前,可以先通过设置环境变量 GOMAXPROCS 的值来控制使用多少个 CPU 核心。具体操作方法是通过直接设置环境变量 GOMAXPROCS 的值,或者在代码中启动 goroutine 之前先调用以下这个语句以设置使用16个CPU核心:

runtime.GOMAXPROCS(16)

  到底应该设置多少个 CPU 核心呢,其实 runtime 包中还提供了另外一个函数 NumCPU() 来获取核心数。可以看到,Go 语言其实已经感知到所有的环境信息,下一版本中完全可以利用这些信息将 goroutine 调度到所有 CPU 核心上,从而最大化地利用服务器的多核计算能力。抛弃 GOMAXPROCS 只是个时间问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DSP图像处理系统整体结构包括以下几个主要部分: 1. DSP芯片:使用DSP-6678芯片作为主要处理器。DSP-6678是德州仪器(Texas Instruments)推出的一款高性能多DSP芯片,具有多个DSP心和硬件加速器,适用于图像处理等计算密集型应用。 2. 存储器:系统需要包括内存和存储设备,用于存储输入图像数据、中间结果和输出结果。通常会使用高速的DDR内存作为主要存储器,以及闪存或硬盘作为持久存储。 3. 图像输入/输出接口:用于将图像数据输入到系统或将处理结果输出。可以使用各种接口标准,如HDMI、USB、Ethernet等,根据具体需求选择合适的接口。 4. 通信接口:用于与其他设备或系统进行通信。可以使用以太网、串口等通信接口,实现与外部设备的数据交换和控制。 5. DSP心:DSP-6678芯片上集成了多个DSP心,每个心都可以独立执行指令。这些心可以并行处理图像数据,提高系统的处理能力。 6. 硬件加速器:DSP-6678芯片还提供了一些硬件加速器,用于加速特定的图像处理算法,如图像滤波、边缘检测等。通过使用这些硬件加速器,可以进一步提高系统的处理性能。 7. 软件开发工具:为了方便系统的开发和调试,需要使用适当的软件开发工具。例如,可以使用CCS(Code Composer Studio)作为开发环境,使用C语言或DSP专用的编程语言进行开发。 整体来说,多DSP图像处理系统利用DSP-6678芯片的多心和硬件加速器,通过合理的系统架构和软件开发,实现高效的图像处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值