GPU 不能完全取代 CPU 的4个CPU最大能开多少进程原因是什么?

GPGPU 的出现把 CPU 和 GPU 的区别正在逐渐缩小,但现在 GPU 还不能完全取代 CPU,最大的原因是什么?在未来,GPU 可能完全取代 CPU 吗?GPU 控制部件面积比较小,为了节约控制器,32 个 CUDA Core 必须时刻执行同样的指令。也就是说,一个 Warp 内部的所有 CUDA Core 的 PC(程序计数器)一直是同步的,gpu的优势是大规模并行运算。GPU单个运算单元频率比CPU单个核心差不多低一半,一个线程碰到内存访问立马抓瞎,起码要等几十个时钟周期——CPU处理的应用,通常可没有GPU应用那样有成千上万个线程等着跑的,一个线程要等几十个时钟周期没关系,线程调度可以先切换过去,运算单元先跑其它线程不耽误。只有一两个线程的结果就是一个运算单元有一大半时间在等内存(显存)数据。cpu属于逻辑主义,擅长用判断if和循环for描述问题,现在绝大多数的计算机系统和应用,都是基于逻辑设计,GPU属于连接主义,擅长用投影和映射描述问题,机器学习算法如神经网络,就属于连接主义。电脑其他组建都是按照冯诺依曼结构来设计的,都期待一个中央处理器,而GPU没法单独提供同样的地位,除非你所有硬件都自己重新设计。GPU单核单线程的性能远远低于CPU,要获得GPU带来的性能提升,就必须把程序优化成并行计算,这不但是指令集的不兼容了,连算法都不兼容了。发布于 2022-07-28 09:56
GPU和CPU分别是什么?GPU可以完全取代CPU吗?_科极网
时间:2023-01-13 15:37:34 来源:迪族网
CPU和GPU是什么意思?那么,GPU可以完全取代CPU吗?可能还有同学不清楚,小编整理了相关内容,接下来一起随小编来看看吧!
GPU和CPU分别是什么?
1、CPU(Central Processing Unit)是指中央处理器,决定着手机的运行速度。一般来说芯片数字越大代表着型号越新,因此我们在选择CPU的时候应该选择名称中所带数字较大的。
2、GPU(Graphics Processing Unit)是指图像处理器,在手机上用于游戏画面的渲染,通常GPU的型号越新,频率越高,意味着游戏的画面展示速度越快。
3、CPU和GPU二者对于用户来说是缺一不可,前者负责计算数据,后者负责显示内容,构造后端运算,前端显示的前后搭配。
GPU可以完全取代CPU吗?
GPU 控制部件面积比较小,为了节约控制器,32 个 CUDA Core 必须时刻执行同样的指令。也就是说,一个 Warp 内部的所有 CUDA Core 的 PC(程序计数器)一直是同步的,gpu的优势是大规模并行运算。GPU单个运算单元频率比CPU单个核心差不多低一半,一个线程碰到内存访问立马抓瞎,起码要等几十个时钟周期——CPU处理的应用,通常可没有GPU应用那样有成千上万个线程等着跑的,一个线程要等几十个时钟周期没关系,线程调度可以先切换过去,运算单元先跑其它线程不耽误。只有一两个线程的结果就是一个运算单元有一大半时间在等内存(显存)数据。
cpu属于逻辑主义,擅长用判断if和循环for描述问题,现在绝大多数的计算机系统和应用,都是基于逻辑设计,GPU属于连接主义,擅长用投影和映射描述问题,机器学习算法如神经网络,就属于连接主义。
电脑其他组建都是按照冯诺依曼结构来设计的,都期待一个中央处理器,而GPU没法单独提供同样的地位,除非你所有硬件都自己重新设计。GPU单核单线程的性能远远低于CPU,要获得GPU带来的性能提升,就必须把程序优化成并行计算,这不但是指令集的不兼容了,连算法都不兼容了。
推荐内容
前面的大佬们已经把这个问题解释得很清楚了,我好像真的没什么可说的了。并且在专业程度上我连前面那些大佬们的十分之一都比不上,让我来回答这个问题的话多少都有点“关二爷面前耍大刀”那种意味了……不过既然有网友邀请了,那我还是硬着头皮来答一波吧!考虑到计算机专业只是我的兴趣专业,它并非我的第一专业,因此在相关的话术和用语上我肯定就没有大佬们那么专业,如果有网友觉得我的内容太烂了,千万不要来喷我,要喷的话就去喷邀请我回答这个的问题的那位网友吧(卖队友我最在行了,手动狗头)!……通常我们对于GPU和CPU的定义是这样的:GPU:图形显示卡,就是专门负责输出图形信息的,比如图片、视频、色彩、特效、渲染等等一类图形信息处理和输出。GPGPU:本质上还是图形显示卡,只不过它比我们通常所定义的GPU在计算能力上要更加的强大。2006年,英伟达 CUDA(Compute Unified Device Architecture,统一计算设备架构),及对应工业标准的OpenCL的出现,让GPU实现更广泛的通用计算功能,GPGPU的概念才算真正落地。 CUDA的学名叫“统一计算架构”,是一种接口编程平台,CUDA存在的目的就是为了提高GPU内核的工作效率从而迅速提升GPU的计算能力。从软件/硬件的层面上去定义CUDA它属于是一种介乎于软件和硬件之间的联结技术(CUDA的雏形始于2007年,在2010年迎来第一次算力大爆发,可能很多人都没有想到原来CUDA的“年龄”已经这么大了!)。当CUDA指硬件时它取代的是流处理器的位置,所谓的CUDA数量实际上指的就是流处理器的数量。当CUDA是软件时它指的就是一种并行设计平台,CUDA的底层编程语言是对C语言的一种拓展和延续。比如我们可以先看一个简短的内核程序,它的作用是把线程块、线程、线程束、和线程全局标号输出到屏幕上:__g1oba1__ void what_is_my_id(unsigned int * const block,unsigned int * const thread, unsigned int * const warp,unsigned int * const calc_thread){/* Thread id is block index * block size + thread offset into the block * const unsigned int thread_idx = (blockIdx.x * blockDim.x) + threadIdx.x;block[thread_idx] = blockIdx.x; thread[thread_idx] = threadIdx.x;/* Calculate warp using built in variable warpSize */ warp[thread_idx] = threadIdx.x / warpSize;calc_thread[thread_idx] = thread_idx;CPU:中央处理器,系统和应用程序(软件)的运行都得依靠它,它干的活儿主要体现在指令运行、算术运行、逻辑运行以及数据处理。从以上三组硬件定义的对比中可以看出GPU(包括GPGPU)它的用途主要还是体现在图形处理上,而CPU从诞生至今它的主要用途还是指挥和调动所有的硬件和软件(接受信息和发出指令)。虽然现阶段的GPGPU已经拥有了强大的计算能力,但是GPGPU的计算能力是十分“偏科”的,它更适用于进行大量且重复的简单运算,一旦遇到复杂的科学运算与逻辑运算GPGPU根本应付不过来或者运算效率极低,而CPU却可以很好的应对更复杂的科学运算和逻辑运算。这里就要区分一下“大量且重复的简单运算”以及“复杂的科学运算与逻辑运算”这两个概念之间的运行逻辑。大量且重复的简单运算这里有一项非常庞大的计算任务,它的运算逻辑非常简单,并且它还可以被随意拆分成很多项小任务,对于这样的计算任务我们就可以把它定义为“大量且重复的简单运算”。一个人完成一项非常庞大的计算任务是需要花费很多时间的,但如果参与这个计算任务的人数够多,那么我们就可以把一个非常庞大的计算任务拆分为若干个小任务,如此便可化繁为简最大限度的缩短完成这项任务所需要的时间,这就是GPU(包括GPGPU)对大量且重复的简单运算它的解决逻辑。复杂的科学运算与逻辑运算这里有一项从表面上看起来不那么庞大的计算任务,但是这项计算任务的前后逻辑与关联性非常强(整个计算任务的框架不可拆分或者不易拆分),并且它在任何一个环节中的计算结果也不是唯一的、固定的(存在多种结果的可能,在CPU的运行逻辑中可以理解为分支),任何一个细微的计算逻辑的变化都有可能会影响到最终结果的准确性。像这一类的计算任务如果强行去做拆分的话极有可能会使计算任务变得更为复杂且不可控,要想完美的解决它必须依照它的前后逻辑一步一步的去做具体的分析和运算,很显然在GPU的运算逻辑下对这种计算任务的完成效率是比较低的,因为它无法发挥出GPU拆解计算任务的优势,这个时候CPU的优势就得到了展现,CPU可以利用它的分支预测能力以及旁路优势(也可以理解为流水线跳跃)在最短的时间内计算出最精准的结果。现阶段的GPU在计算能力上越来越强大,但是GPU发展算力的目的并不是为了去取代CPU,而是为了避开CPU在算力发展上的弊端。我们不能只是看到GPU在算计层面上彻底甩开了CPU就臆想着要想GPU马上要成功取代CPU了,实际上CPU在日常使用的过程中它在绝大部分时间里并没有做与计算相关的任务,而是在处理各种数据。如果你想让GPU成功取代CPU那么你就得把原本属于CPU干的活儿全部都丢给GPU,但是你要想这么做有意义吗?很显然是没有意义的,把CPU与GPU分开和做一个G-CPU(处理器与显卡的结合体)这二者之间并没有本质上的区别,不管是分开还是合并在一起CPU该有的功能单元你得有,GPU该有的功能单元你还是得有,无非就是两个鸡蛋分开煎与放在一起煎的区别而已。最后还是得回到计算能力这一块儿。因为这个问题始于计算能力,最后它还是得“终结”于计算能力。截取来自于《CUDA并行程序设计—GPU编程指南》一书中的一张图片。注:《CUDA并行程序设计—GPU编程指南》这本书是CUDA开发者社区总监Shane Cook(美籍)亲自撰写,由英伟达中国首批CUDA官方认证工程师翻译,它全面而详实地讲解了CUDA并行程序设计的技术知识点和编程方法,包含大量实用代码示例,是目前学习CUDA编程最权威的著作之一。从图片中可以看出早在2006年前后GPU的计算能力就已经是CPU的十倍了,而在2009年GPU的计算能力又顺利的突破了一万亿次每秒的最高峰值,而彼时的CPU在算力方面落后太远根本无法和GPU相提并论。

我要回帖

更多关于 4个CPU最大能开多少进程 的文章