GPU和CPU芯片区别:为何要用GPU挖矿?

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

这个视频,非常具象的表述了CPU和GPU在图像处理时的不同的原理和方法。看到GPU的模型喷射出的一瞬间,你就秒懂了。

根据上面视频中的比喻,你应该很清楚CPU和GPU就呈现出非常不同的架构:

绿色的是计算单元

橙红色的是存储单元

橙黄色的是控制单元

GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。

GPU 如何加快软件应用程序的运行速度GPU 加速计算可以提供非凡的应用程序性能,能将应用程序计算密集部分的工作负载转移到 GPU,同时仍由 CPU 运行其余程序代码。从用户的角度来看,应用程序的运行速度明显加快.

GPU 与 CPU 性能比较理解 GPU 和 CPU 之间区别的一种简单方式是比较它们如何处理任务。CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。

从上图可以看出:

Cache, local memory:CPU > GPU

Threads(线程数): GPU > CPU

Registers: GPU > CPU

SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU。

CPU 基于低延时的设计:

CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。

当今的CPU可以达到64bit 双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。

CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方).

大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。

复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。

数据转发。当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。

GPU是基于大的吞吐量设计

GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。

GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。

GPU的虽然有dram延时,却有非常多的ALU和非常多的thread. 为啦平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads.通常来看GPU ALU会有非常重的pipeline就是因为这样。

所以与CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。

总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。

什么类型的程序适合在GPU上运行?

(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。

(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。

CPU会利用较高的主频、cache、分支预测等技术,使处理每条指令所需的时间尽可能少,从而减低具有复杂跳转分支程序执行所需的时间。GPU则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量。

举个GPU通用计算教材上比较常见的例子,一个向量相加的程序,你可以让CPU跑一个循环,每个循环对一个分量做加法,也可以让GPU同时开大量线程,每个并行的线程对应一个分量的相加。CPU跑循环的时候每条指令所需时间一般低于GPU,但GPU因为可以开大量的线程并行地跑,具有SIMD(准确地说是SIMT)的优势。

再以挖BIT币举例:

比特币的挖矿和节点软件是基于P2P网络、数字签名、密码学证据来发起和验证交易的。节点向网络广播交易,这些广播出来的交易在经过矿工的验证后,矿工用自己的工作证明结果来表达确认,确认后的交易会被打包到数据块中,数据块会串起来形成连续的数据块链。

每一个比特币的节点都会收集所有尚未确认的交易,并将其归集到一个数据块中,这个数据块会和前面一个数据块集成在一起。矿工节点会附加一个随机调整数,并计算前一个数据块的SHA-256哈希运算值。挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。

如果希望判定一个人提供的的信息是本着正常使用,具备一定价值的。那么我们倾向认为提供这个信息的人,愿意为此付出一定工作量来证明他的诚实。假如有一种机制,能够容易的证明提供信息的人为此付出了一定工作量,那么此信息是可以接受,并被认为合理的。

比如,我收邮件的时候,做了一个规定:“把邮件内容数据,加入一个随机数,求一个sha256散列数值。这个散列值一共256bit 。前20bit 必须都为0”.

这样,要给我发信的人,就必须反复尝试一个随机数,以保证邮件内容数据加上这个随机数,能够产生sha256 的结果------前20bit 都是0.(这个计算过程本身毫无意义)。如何产生出指定要求的整数?完全靠运气和CPU 运算时间。这就是一个工作量。工作本身毫无意义。但是如果谁愿意付出这个工作量,就意味着他给我的邮件多半是有意义的。这就叫“工作量证明”。也就是意味着这个人很有可能是诚实的。这里把邮件换成Block也是等效的。这个机制被广泛用于防止垃圾邮件等。因为群发垃圾邮件的人,不可能有那么多时间去给每个人算一个毫无意义的数字,浪费时间,降低发垃圾邮件的效率。挖矿的目的是确认交易。寻找随机数的过程是为了保证每一个挖矿节点不会往外发送垃圾block。发送的BlockId是这个Block的Hash,它必然是首20bit为0的。

可以预见的是对于比特币的Hash计算而言,它几乎都是独立并发的整数计算,GPU简直就是为了这个而设计生产出来的。相比较CPU可怜的2-8线程和长度惊人的控制判断和调度分支,GPU可以轻易的进行数百个线程的整数计算并发(无需任何判断的无脑暴力破解乃是A卡的强项)。

OpenCL可以利用GPU在片的大量unified shader都可以用来作为整数计算的资源。而A卡的shader(流处理器)资源又是N的数倍(同等级别的卡)。

比特币早期通过CPU来获取,而随着GPU通用计算的优势不断显现以及GPU速度的不断发展,矿工们逐渐开始使用GPU取代CPU进行挖矿。前面我们已经介绍,比特币挖矿采用的是SHA-256哈希值运算,这种算法会进行大量的32位整数循环右移运算。有趣的是,这种算法操作在AMD GPU里可以通过单一硬件指令实现,而在NVIDIA GPU里则需要三次硬件指令来模拟,仅这一条就为AMD GPU带来额外的1.7倍的运算效率优势。凭借这种优势,AMD GPU因此深受广大矿工青睐。

现在你知道为什么AMD搞得跟蓝翔技校似得了吧?

来源:硬件十万个为什么

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52574.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023全云在线联合微软AIGC专场沙龙:人工智能与企业创新,促进创造力的数字化转型

6月29日,由全云在线平台和微软联合主办的人工智能与企业创新:促进创造力的数字化转型——2023AIGC微软专场沙龙在广州天河区正佳万豪酒店举行。 关于2023AIGC微软专场沙龙 GPT翻开了AGI新的一页,也翻开了各行各业的新篇章。 2022年11月30日…

呼吁暂停 GPT-5 研发的马斯克,转身抢购 1 万个 GPU,为 Twitter 大模型做准备!...

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 曾不止一次地支持 AI 威胁论、曾与 OpenAI 分道扬镳、曾怒批 ChatGPT 唤醒人工智能、曾联合发起公开信,呼吁全球实验室应停止训练比 GPT-4 更强大的模型...... 毫无疑问,曾被 Fa…

个人掏5000万美元、获2.3亿美金认购,造中国版OpenAI,45岁前美团联合创始人王慧文再创业!...

整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 「即便只有一个人,我也要出发」,2023 年 2 月 13 日,原美团联合创始人王慧文在社交媒体平台郑重地说道。 这一次他的目光不再是聚焦在社交关系网络平台、二手房网站、…

微软:多模态大模型GPT-4就在下周,撞车百度?

欢迎关注“ 计算机视觉研究院 ” 计算机视觉研究院专栏 作者:Edison_G 扫描二维码 关注我们 大家都在猜 GPT-4 发布时间,现在有人提前公布答案了,还是微软自己的 CTO。 转自《机器之心》 我们知道,引爆如今科技界军备竞赛的 ChatG…

【全栈】vue3.0 + golang + mysql + gorm + jwt + M5stack + Chatgpt集成【博客系统2.1】版本

2.1版本release 修复博客2.0bug&#xff08;我的-切换后-博客不能刷新&#xff09; 增加了远程灯控 chatGpt3.0集成 项目结构 <template><div id"app"><!-- 表单处理 ------------------><!-- <MyHeader :addTodo"addTodo"/…

【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版)

ChatGLM-6B模型结构代码解析(单机版) ​ 本文介绍ChatGLM-6B的模型结构&#xff0c;代码来自https://huggingface.co/THUDM/chatglm-6b/blob/main/modeling_chatglm.py。 相关博客 【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版) 【自然语言处理】【大模型】BL…

【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版)

BLOOM模型结构源码解析(单机版) ​ 本文基于transformers中BLOOM模型代码来解析BLOOM的原理及实现。 相关博客 【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版) 【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版) 【自然语言处理】【大模型】极低资源微…

最新发布!面向开发者的 ChatGPT Prompt Engineering 免费教程,吴恩达与OpenAI合作打造!...

就在几小时之前&#xff0c;吴恩达在Twitter上宣布了与OpenAI合作的最新免费教程&#xff1a;《ChatGPT Prompt Engineering for Developers》 我们可以通过下面的链接&#xff0c;直达官网网站&#xff1a; https://www.deeplearning.ai/short-courses/chatgpt-prompt-enginee…

Datawhale-基于向量检索减少chatGPT的幻觉

AI的幻觉 可以使用CVP技术栈解决上述问题 CVP技术栈 ossChat Application 向量数据库 Zilliz Cloud是Milvus的托管服务。 基于Langchain搭建问答系统

chatgpt赋能python:Python中连接数据库的方式

Python中连接数据库的方式 数据库是现代Web应用程序中必不可少的组成部分之一。Python是一个功能丰富的编程语言&#xff0c;为我们提供了许多连接数据库的选项。在本文中&#xff0c;我们将介绍Python中的一些最受欢迎的数据库连接选项&#xff0c;并帮助您选择最适合您项目的…

chatgpt赋能python:Python如何添加数据库

Python如何添加数据库 介绍 Python是一种高级的、通用的、解释型的编程语言&#xff0c;因其简单易学、可读性强而被广泛应用在各种领域&#xff0c;尤其是数据处理、Web开发等方面。随着Web应用越来越流行&#xff0c;数据库的使用也变得越来越普遍&#xff0c;因此&#xf…

chatgpt赋能Python-python怎么装数据库

介绍 Python 是一种强大的编程语言&#xff0c;能够让程序员轻松地编写高效的代码来解决各种问题。Python 也被广泛用于 web 应用程序的开发。这些应用程序通常需要与数据库进行交互。本文将介绍如何在 Python 中安装数据库以便进行数据操作。 步骤 第一步&#xff1a;选择一…

机械臂全面学习---moveit和gazebo联合仿真

1、修改XXX.moveit_config/config/ros_controllers.yaml # MoveIt-specific simulation settings moveit_sim_hw_interface:joint_model_group: controllers_initial_group_joint_model_group_pose: controllers_initial_pose_ # Settings for ros_control control loop gener…

机械原理课程设计 洗瓶机机构设计(设计说明书+3张CAD图纸+连杆机构设计软件)

目 录 一 前 言 1 二 设计任务书 1 1、设计题目 1 2、设计任务 2 三 工艺动作分解和工作原理 2 1、工艺动作分解 2 2、原始数据 3 四 机械运动方案设计 3 1、分析设计要求 3 2、推瓶机构方案的设计 4 &#xff08;1&#xff09; 推瓶机构方案的选择 4 &#xff08;2&#xff09…

机械搬运手结构设计

目录…1 文摘…3 Abstract…3 第一章 绪论 1.1机械手概述…4 1.2机械手的组成和分类…4 1.2.1机械手的组成. 1.2.2机械手的分类 1.3国内外发展状况… …7 1.4课题的提出及主要任务………………………………………………8 1.4.1课题的提出 1.4.2课题的主要任务 第二章 机械手的设…

测试底妆的软件,一天一款粉底液,实测7款“网红”粉底液的妆感、遮瑕、持妆效果...

每次在入手粉底液前&#xff0c;各位会关注她的什么效果呢&#xff1f;是持妆度&#xff1f;还是妆感&#xff1f;还是遮瑕效果&#xff1f;其实&#xff0c;一款粉底液不可能兼顾我们的所有皮肤需求&#xff0c;有的粉底可能侧重遮瑕&#xff0c;有个侧重保湿&#xff0c;有的…

测试底妆的软件,你最想看的粉底液测评,我一次性测了12款!!

正文开始前&#xff0c;提醒大家不要忘记我们的【为你老公/老婆打call】征集还在 进行中哦 &#xff0c;每天抽2个留言幸运鹅送现金红包也在火热开展中哟~ 仙女萌好呀~这里是放假超开心哒狗砸&#xff01; 十一的第三天&#xff0c;没想到我就勤勤恳恳来更文啦&#xff0c;毕竟…

ChatGPT爆火!“风险”还是“风口”?数据分析师会被取代吗?

近日&#xff0c;据财联社报道&#xff0c;ChatGPT背后的开发商OpenAI发话&#xff0c;该公司首席技术官Mira Murati在采访中警告道&#xff1a;现在需要监管机构进行介入&#xff0c;以防止ChatGPT等生成式AI系统对社会产生潜在负面影响。 当问及监管机构现在介入是否为时过早…

【支付】第三方支付收单机构

简要概述 现在&#xff0c;在银行卡收单市场里&#xff0c;第三方收单机构在全国范围类极速发展。 收单牌照的第三方支付机构&#xff0c;即通过线下布放POS&#xff0c;替商户收单&#xff0c;第三方支付机构一般是找一个合作的收单银行&#xff0c;对于收单银行自己的持卡人…

使用银联商务实现微信小程序支付

最近公司的小程序需要使用到支付功能&#xff0c;我们使用的是银联商务的支付&#xff0c;那么如何在微信小程序中对接银联商务的微信小程序支付呢&#xff1f;这里我记录下我在微信小程序中实现银联商务的微信小程序支付流程 一&#xff1a;接口部分&#xff1a; 这里注意银…