适用于异构芯片(CPU,ASIC,DSP,FPGA,GPU/GPGPU)的软件并行技术

2023-12-14 05:40

本文主要是介绍适用于异构芯片(CPU,ASIC,DSP,FPGA,GPU/GPGPU)的软件并行技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近些年,CPU等通用处理器的性能提升速度放缓,为了继续满足各行各业对高能效计算日益增长的需求,以FPGA,GPU,DSP,NPU等为代表的异构算例,一夜之间在众多的新型热点领域受到广泛关注。

首先结合市面上能够看到的具体的产品来分析这些异构核之间的差异。

多元化算力

除了上述比较通用的命名,还有一些公司为了强调某些方面的差异性,提出了不同的命名,比如VIP的PPU(Parallel Processing Unit)。条条大路通罗马,最终这些命名都强调了异构计算的一个明显特点----并行处理的特性,这一点和GPU,FPGA等类似的。

当前几种典型的计算机体系结构

以计算为中心还是以数据为中心。传统CPU是计算为中心,CPU是由指令流(程序)来驱动运行的,然后CPU作为一切的“主管”再驱动外围的GPU、其他加速模块、IO模块运行。而在超异构的DPU系统中,由于数据处理带宽性能的影响,必须是以数据为中心,靠数据驱动计算。

DSA的难以落地,使得行业不得不进行回调,GPGPU越来越多的受到重视。GPGPU的性能,比CPU好,比DSA差;其灵活可编程能力,比DSA好,比CPU差。GPGPU能平衡好性能和灵活性,是一个相对均衡的处理器平台。但是,选择GPGPU只是逃避的问题,并没有本质的解决问题。GPGPU虽然相比CPU性能要好,但受限于架构的原因,也即将在未来3-5年达到性能瓶颈。而上层软件对算力的需求永无止境,这个问题如何本质解决。

从冯诺依曼机以来,计算机体系结构设计重点关注在两个方面,能效和通用性,能效是指单位功耗内能做多少运算,通用性是指能覆盖多大的应用面。

体系结构研究有两个极端,专门定制的芯片ASIC和通用处理器CPU,ASIC的能效非常高,超过通用CPU多个数量级,但ASIC芯片通常只能支持一个特定的算法,而通用CPU理论上能够完成所有可计算的任务,但是能效非常小。这里面的主要原因是,CPU为了满足通用性,采用了非常繁重复杂的指令流水线,功能部件和缓存,运算器只占不到%10的芯片面积。而GPU的能效比比CPU高10-100倍,同时具有一定的通用性,CPU和GPU的算力可驾驭能力要强于ASIC。

NPU牺牲一定的灵活性,换来了对比GPU和CPU更高的性能比。

软件代表灵活性和低性能,硬件代表死板和高性能,矛盾双方互补,对立统一。

CPU,GPU,FPGA可以做成图灵完备的,自身具备取指执行的功能,可以作为系统的调度中心。

CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存。冯氏结构中,由于执行单元(如 CPU 核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此 GPU 使用 SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU 也支持 SIMD 指令,但SIMD指令的支持只能算是CPU的一个锦上添花的功能,不构成CPU的主要功能,比如X86的SSE,MIPS/RISCV的向量指令,以及ARM 的NEON,都是CPU的可配置功能。

FPGA 之所以比 CPU 甚至 GPU 能效高,本质上是无指令、无需共享内存的体系结构带来的福利, FPGA 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。

谷歌发布的人工智能芯片:Tensor Processing Unit(TPU),TPU的tensor cores在执行张量,矩阵运算时,更快更有效,因为在机器、深度学习中所处理的数据类型就是张量。TPU兼具了CPU与ASIC的特点,可编程,高效率,低能耗,还有多种多样的各类用于CNN深度学习的NPU,它们也都可以归为ASIC的一种。

虽然有专用的TPU,但一些最新的GPU也包含了许多张量核。

DSP有些类似于CPU,但是它拥有更强的并行计算能力,支持多发射,VLIW指令以及单精度,双精度浮点运算和专门用于SIMD加速的MAC阵列等,使其能耗比远高于CPU。 

GPU的峰值性能要高于FPGA,PPA,性能功耗比也要更优一些,FPGA基本单元的计算能力有限。为了实现可重构特性,FPGA 内部有大量极细粒度的基本单元,但是每个单元的计算能力&

这篇关于适用于异构芯片(CPU,ASIC,DSP,FPGA,GPU/GPGPU)的软件并行技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491322

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技