首页 > 编程语言 >为什么 GPU 更适用于时域算法,而 CPU 更适用于频域算法?

为什么 GPU 更适用于时域算法,而 CPU 更适用于频域算法?

时间:2023-05-19 11:36:54浏览次数:58  
标签:适用 并行 算法 指令 处理器 GPU 数据 CPU

对于懂电脑的人来讲,他们可以简单地区分出电脑的GPU和CPU的应用范畴及其优势,而今天我们要讨论的问题是“为什么 GPU 更适用于时域算法,而 CPU 更适用于频域算法?”在讨论这个问题之前,我先带大家来了解一下计算中 GPU 与 CPU 架构的区别及并行的处理方式。

 

1. CPU GPU 架构的区别

CPU 和 GPU 在基本架构层面上存在巨大的差异,CPU 有庞大而广泛的指令集,可与更多的计算机组件(例如内存、输入和输出)交互以执行复杂的指令;而 GPU 是一种专门的协处理器,只有在高数据吞吐量的任务上表现出色,而在其他任务上的表现则不尽如人意。

 

 

CPU 更强调指定运行的低延迟,其处理方式主要为串行,如果遇到多任务并发需求,则只能通过切换进行,切换时 CPU 必须重置寄存器和状态变量、刷新缓存等等。不过 CPU 经过延迟优化,在多个任务之间的切换速度非常快,让人感觉它在并行处理任务,但本质上,它仍为一次运行一项任务。因此 CPU 可迅速处理各种不同难度的任务,但面对源源不断的重复性任务也会力不从心。

因此想要提高 CPU 的性能,需要靠不断提高主频来实现,比如常见的 CPU 主频为 2~4GHz。

 相比之下,GPU 更强调高数据吞吐量,其核心的主频通常为 1GHz 左右,提高处理速度除了提高主频和架构,也常常通过“堆料”的方式进行,即增加流处理器的数量。因此相对于 CPU, GPU更适合于重复性和高度并行的计算任务,最常规也是最初始的应用便是图形渲染和显示。后来人们发现它对多组数据执行并行操作的能力,也非常适合于某些非图形任务,例如机器学习、金融、模拟、科学计算等大规模且反复运行相同数学函数的活动。

 

 

2. 并行处理

并行处理有三个分类:数据并行、指令并行和线程并行。线程是一串串行执行的指令,每条指令操作一个或多个数据。在此基础上,实现并行的方式有三种,一种是多个这样的串行指令序列同时执行,就是 Hydra 为代表的多线程并行模式;第二种数据并行是同一条指令应用在并行的数据上。

比如本来是一条加法指令计算 C=A+B,同时将加法应用到一组 A 和一组 B 上得到一组 C 上就是数据并行。这就是典型的单指令多数据 SIMD(Single Instruction Multiple Data)架构。

 第三种是指令并行,也就是说在同一时间发射多条指令,同时计算不同数据多个不同运算,这是典型的VLIW(Very Long Instruction Word)架构。但是由于实现 VLIW 的编译器难度太高,使得直接实现大规模可扩展的指令并行比较困难。

 

 

Imagine 是斯坦福的一个数据并行的多核处理器。Imagine 有 8 个 ALU 单元被同一个控制器所控制,同时对大量的并行数据进行同样的操作。这种处理器的模式后来被称为流处理器,也是现今 Nvidia 采用的架构,如 Fermi 系列,就是这种数据并行流处理器的一种实现实例。

下图即是Imagine 的结构框图,可以看到它犹如一个大型 SIMD 单元簇。不可否认的是,就这样一个看似简单的设计架构却能极大地提高数据运算的并行度,使得它在处理 SIMD 数据时,如 FDTD/FITD 这样对同一数据地址上的数进行完全相同的简单 ALU(算术逻辑单元 - Arithmetic Logic Unit)操作具有极高的并行效率。

 

 

 

接下来我们来考察一下 GPU 处理器的结构,如 Nvidia Fermi 系列,不难发现他们和 Imagine 有着惊人的相似之处,即每个处理器核是一个简单的 ALU 阵列。在 Nvidia 的名词里,处理器核叫Streaming Multiprocessor(SM),每个 Fermi 的 SM 里有 32 个 32 位的 ALU、32 个单精度的浮点运算单元还有一些特殊运算单元。

SM 相当于 Imagine 中的 ALU Cluster,能够执行 SIMD 的操作,但是绝对和 Intel 以及 AMD 中的处理器核相距甚远。通用处理器中的每个核拥有庞大的指令池 Pool和寄存器堆 Stack,可执行繁杂的指令预取、分支预测、条件跳转等操作,虽然计算单元不如 SM多。换句话说,如果你的程序没有那么宽的单指令多数据并行,就不要指望 SM 比传统处理器核快。

了解了 CPU 和 GPU 的架构后,不难得出如下结论:当程序或算法中存在大量规则数据并行的操作或运算时,GPU 将是最佳选择;相反地,当程序中有大量的分支或跳转或对不同数据源需要进行操作时,CPU 的效率更高。即 SIMD 部分占整个运算的百分比,此百分比越大,则采用 GPU的效果将越好,否则,采用 CPU 会更好。

所以并不是一般人所理解的,GPU 就适用于 FDTD,而不适用于 FEM,只是 FEM 中能够进行 SIMD 的部分太小,所以 CPU 对其更有效而已。

 

推荐文章:

《CST使用教程》
《Abaqus初级基础教程》

标签:适用,并行,算法,指令,处理器,GPU,数据,CPU
From: https://www.cnblogs.com/gzsm/p/17414385.html

相关文章

  • m基于MSER最大稳定极值区域和SVM的交通标志检测识别算法的matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要        在计算机视觉领域,最大稳定极值区域(MSER)(MaximallyStableExtremalRegions)是一种用于在图像中进行斑点检测的方法。这个方法由Matas等人提出,用于在两个不同视角的......
  • m基于MIMO通信系统的半盲信道估计算法matlab仿真,包括QPSK,ML检测,Turbo编译码等
    1.算法仿真效果matlab2022a仿真结果如下:         2.算法涉及理论知识概要        所谓信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道......
  • GPU 相关配置和使用建议
    基本信息和配置方法显卡,驱动,CUDA,cuDNN显卡显卡又称图形处理器(graphprocessingunit,GPU),是一个硬件,主要功能是图形显示和处理,现在也是深度学习里面主流的并行计算硬件。常见的有NVIDIA的显卡(N卡)和AMD的显卡(A卡)GPU和CPU(中央处理器,CentralProcessingUnit)在设计上的主要......
  • 每天打卡一小时 第三十天 贪心算法
     #include<bits/stdc++.h>usingnamespacestd;intfindContentChildren(vector<int>&children,vector<int>&cookies);intmain(){intn;cin>>n;vector<int>children(n);for(inti=0;i<n;i++)......
  • 邻接表的建立算法
    StatusCreate(ALGraph*G){ inti,j,k; charv1[20],v2[20]; ArcNode*p,*q; printf("请输入顶点数和边数:"); scanf("%d%d",&G->vertices,&G->arcnum); for(i=0;i<G->vexnum;i++) { scanf("%s",G->vertices[i].data)......
  • 数据结构-基本算法复习
    数据结构-基本算法复习第八章排序插入排序直接插入排序:\(O(n^2)\)稳定排序将一条记录插入到已经排序好的有序表中:voidinsertSort(intr[],intlen){for(inti=2;i<=len;i++){if(r[i]<r[i-1]){ intx=r[i];for(in......
  • 排序算法(一):插入排序
    #author:闫振兴#datetime:2020/5/2018:14#software:PyCharm"""文件说明:"""#encoding:utf-8#插入排序:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。#从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序......
  • Java实现输出九九乘法表—for循环和递归算法
    Java实现输出99乘法表for循环publicclassninenine{publicstaticvoidmain(String[]args){for(inti=1;i<10;i++){for(intj=1;j<=i;j++){System.out.printf("%d*%d=%d\t",j,i,j*i);}......
  • python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法
    前言排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。本文主要讲述python中经常用的三种排序算法,选择排序法,冒泡排序法和插入排序法及其区别。通过对列表里的元素大小排序进行阐述。一、选择排序法选择......
  • [SEO知识讲解] 百度推出惊雷算法SEO大神100条实战经验(二)!(完结)
    本文转载自:[SEO知识讲解]百度推出惊雷算法SEO大神100条实战经验(二)!(完结)更多内容请访问钻芒博客:https://www.zuanmang.net[SEO知识讲解]百度推出惊雷算法SEO大神100条实战经验(一)接后续:四、关键词研究57、关键字是你的指南针——如果你不了解你的关键词,你不知道你的关键词......