一文看懂GPU和GPGPU的区别和联系

adf881dd00239939abb00fd3a5639262.jpeg 

GPU 和 GPGPU 有啥区别?

   


5f4d764548f752f3dfb6233c248bd1fa.jpeg

1、GPU

随着图形处理相关计算需求的不断增加,CPU本身在浮点计算能力上的限制,对于需要高密度计算的图像处理操作,过去传统的在CPU上实现的方法,并没有在处理性能与效率上有很大进步。因此,为了提高了显示能力和显示速度,业界专门针对图形处理相关计算需求开发了GPU(Graphics Processing Unit),即完成图像运算工作的微处理器。

GPU并行计算是一种高效的计算和图像处理技术,它利用了GPU (图形处理单元) 的并行处理能力,以提高计算速度和处理能力。 GPU并行计算在图像处理、机器学习、深度学习等领域具有广泛的应用 。

- GPU用于处理什么任务

a. 计算密集型的程序

计算密集型程序主要在寄存器中进行运算,这使得寄存器与处理器之间的速度相当。因此,从寄存器读写数据几乎没有延迟。然而,访问内存和硬盘的速度相对较慢,如读取SSD时可能需要几百个时钟周期。

b. 易于并行的程序

GPU,一种具有成百上千核心的SIMD架构,能在同一时刻让每个核执行相似任务,从而实现高性能并行计算。

- GPU和CPU的区别

CPU需具备强大的通用性以处理各种数据类型及逻辑判断,从而引入大量分支跳转和中断处理,导致内部结构异常复杂。相反,GPU面临类型高度统一、相互无依赖的大规模数据以及无需中断的纯净计算环境。

GPU以众多计算单元和超长流水线为特色,但控制逻辑简单且省去Cache。相较之下,CPU的Cache占据了大量空间,复杂的控制逻辑和优化电路使其计算能力仅占一小部分。

- 下图来自 NVidia CUDA 文档:

d8ce25e3ca5f3273deaf3d9e8b310611.jpeg
70de3d56f2880d2208b6f2f4270486f4.jpeg

2、GPGPU

GPGPU,全称通用计算图形处理器(General Purpose GPU),是一种强大的计算工具,能够协助CPU进行非图形相关的复杂运算。它的名字由“通用目的”和“图形处理”两个词组成,寓意着它的多功能性和广泛应用。GPGPU的主要作用在于提升计算效率,使CPU能够更专注于处理复杂的、需要大量计算的任务,从而提高整体的系统性能。

在GPGPU架构设计中,我们摒弃了针对图形处理的专用加速硬件单元,但保留了SIMT架构和通用计算单元。因此,当前基于GPU的图形任务尚无法直接在GPGPU上运行(未来或许可行)。然而,对于科学计算、AI训练与推理任务(主要涉及矩阵运算)等通用计算类型,GPGPU仍能发挥GPU的优势,即高效地搬运、运算和处理海量数据的任务。

GPGPU是一种通用图形处理器,用于非图形计算任务,如物理计算和AI训练。GPGPU常集成到CPU中,而GPU作为独立模块。

GPGPU主要用于例如物理计算、加密解密、科学计算以及比特币等加密货币的生成。

- GPGPU 与 GPU 的区别

a. 任务不同
GPGPU负责的是一些非图形相关程序的运算,如加密、解密;

而GPU负责的是图形渲染、图形计算的任务;

b. 存在形式不同
GPGPU通常被集成到CPU中;

而GPU则是作为一个单独的模块,也就是独立显卡核心或者主板集成显卡核心。


-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

### GPU 架构与工作原理 GPU(Graphics Processing Unit),即图形处理单元,最初专为加速计算机图形渲染而设计。随着时间的发展,其强大的并行计算能力被发现可用于更广泛的任务。现代GPU采用了高度并行化的架构,能够同时执行大量简单指令[^2]。 #### 并行编程模型 不同于CPU的串行编程模型,GPU基于完全不同的并行编程范式运作。这使得许多原本针对CPU优化良好的算法难以直接移植至GPU平台。然而,在特定类型的密集型数据操作方面,比如矩阵乘法、图像滤波等任务中,GPU展现出了远超传统CPU的优势性能。 ### GPGPU 技术及其发展 GPGPU指的是利用GPU来进行非图形学领域的科学技术计算活动。自2009年起,借助于诸如CUDA这样的高级API的支持,通过编写专门适配于GPU硬件特性的程序代码,研究人员可以充分利用GPU内部众多的小核心来完成复杂的数值模拟其他高性能计算需求[^1]。 #### 编程模型 在典型的GPGPU应用程序开发过程中,开发者会区分出两部分逻辑:一部分是在标准CPU上运行的应用控制流程;另一部分则是由GPU负责的具体大规模并行化运算过程。后者往往会被封装成所谓的“内核函数”,并通过调用相应的库接口传递给底层驱动去调度执行[^4]。 ```cpp // Host code (runs on CPU) __global__ void vectorAdd(float* A, float* B, float* C, int N){ int index = threadIdx.x + blockIdx.x * blockDim.x; if(index < N) { C[index] = A[index] + B[index]; } } ``` 这段简单的C++ CUDA例子展示了如何定义一个可以在NVIDIA GPU上并发执行加法操作的kernel function。 ### 应用场景 由于具备出色的浮点数运算能力高效的内存带宽利用率,GPGPU非常适合应用于以下几个主要领域: - **机器学习**:训练神经网络模型时涉及大量的向量/张量运算; - **物理仿真**:如分子动力学研究中的粒子间相互作用力场求解; - **视频编码解码**:实时流媒体服务背后的高效压缩算法实现; - **金融建模**:风险评估以及期权定价等领域内的蒙特卡洛方法应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技互联人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值