GPU-CPU-ARM-X86-RISC-CUDA

CPU更适合处理复杂逻辑运算和单线程任务,而GPU则更适合处理大规模并行计算任务。

CPU(中央处理器)通常具有较少的核心数量(一般在2到16个之间),但每个核心的性能较强,擅长执行复杂的运算和逻辑任务,如浮点计算和整数计算。CPU在单线程任务上的性能通常较好,因为它们具有较大的缓存和较高的时钟频率。

GPU(图形处理器)拥有成百上千个小型处理核心,非常适合于处理大规模数据和执行高度并行的任务,例如图形渲染、深度学习和科学计算。虽然每个核心的计算能力相对较弱,但总体上GPU的计算能力非常强大,特别是在图像处理、模拟和计算密集型任务上。

CPU擅长控制单元和存储单元,逻辑运算单元,GPU擅长并行数学计算,做单精度或双精度浮点运算

CPU能力强数量少,GPU能力小数量多

 独立显卡:GPU和显存、风扇,接口组成

  架构区别:

CPU和GPU都是运算的处理器,在架构组成上都包括3个部分:运算单元ALU、控制单元Control和缓存单元Cache。

但是,三者的组成比例却相差很大。

在CPU中缓存单元大概占50%,控制单元25%,运算单元25%;

在GPU中缓存单元大概占5%,控制单元5%,运算单元90%。

GPU核心参数:

  1. 核心频率:频率越高,性能越强、功耗也越高。
  2. 显示位宽:单位是bit,位宽决定了显卡同时可以处理的数据量,越大越好。
  3. 显存容量:显存容量越大,代表能缓存的数据就越多。
  4. 显存频率:单位是MHz或bps,显存频率越高,图形数据传输速度就越快。
  • CUDA Core:CUDA Core 是 NVIDIA GPU 上的计算核心单元,用于执行通用的并行计算任务,是最常看到的核心类型。NVIDIA 通常用最小的运算单元表示自己的运算能力,CUDA Core 指的是一个执行基础运算的处理元件,我们所说的 CUDA Core 数量,通常对应的是 FP32 计算单元的数量。
  • Tensor Core:Tensor Core 是 NVIDIA Volta 架构及其后续架构(如 Ampere 架构)中引入的一种特殊计算单元。它们专门用于深度学习任务中的张量计算,如[矩阵乘法]和卷积运算。Tensor Core 核心特别大,通常与深度学习框架(如 TensorFlow 和 PyTorch)相结合使用,它可以把整个矩阵都载入寄存器中批量运算,实现十几倍的效率提升。

英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑

流处理器可以认为是一个独立的任务处理单元,也可以认为一颗GPU包含了数万个个CPU同时处理任务。 

流处理器(SP,也可以把它称为Core),拥有的流处理器数量很多都是以千为基础单位的,有些甚至已经破万.

x86 arm risc-v cpu指令集

RISC-V已经成为继x86、ARM之后冉冉升起的第三大CPU架构

x86和arm都需要各自的公司intel ,ARM授权,而RISC-v开源

x86架构作为复杂指令集,一直统治PC电脑、HP高性能计算平台。

ARM属于精简指令级架构,用于大多数智能手机、嵌入式和物联网设备,低功耗和高性能。

RISC-V也是精简指令集,但开源开放免费,正逐渐成为不可忽视的重要力量,得到各个国家、企业的高度重视,我国很多自主芯片都是基于RISC-V架构。

intel,AMD,ARM三家公司在PC端一般采用x86复杂指令集,移动端一般采用arm指令集

cpu主频 是每秒发送的时钟脉冲数

CPU时钟周期 :一个是时钟脉冲所需要的时间,也叫节拍脉冲或T周期,它是CPU中最小的时间单位。

在流水线中一条指令的生命周期分为:

取指:

指令取指(Instruction Fetch)是指将指令从存储器中读取出来的过程。

译码:

指令译码(Instruction Decode)是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组(Register File)中将操作数读出。

执行:

指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指令执行(Instruction Execute)。指令执行是指对指令进行真正运算的过程。譬如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则进行减法操作。在“执行”阶段的最常见部件为算术逻辑部件运算器(Arithmetic Logical Unit,ALU),作为实施具体运算的硬件功能单元。

访存:

存储器访问指令往往是指令集中最重要的指令类型之一,访存(Memory Access)是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程。

写回:

写回(Write-Back)是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。

 

Superscalar Engines和VLIW(Very Long Instruction Word)是现代CPU设计中两种常见的指令级并行处理技术。在Superscalar Engines中,CPU通过同时发射多个指令来提高执行效率。这些指令可以相互独立,从而可以通过乱序执行和动态调度来充分利用处理器资源。VLIW则使用一个长指令字(Very Long Instruction Word)包含多个指令,并且这些指令共享一个执行单元和总线,从而实现高吞吐量的指令流水线。
这两种技术都依赖于处理器能够在单个时钟周期内执行多个指令,并且需要具有复杂的硬件结构来支持指令突发执行。因此,他们通常更适合用于执行大量并行任务的应用程序,例如多媒体处理或科学计算。
现代大多数CPU都是超标量的,即它们可以在同一周期内发射多于一个指令。发射宽度(Issue-width)是在同一周期内可以发射的最大指令数。当前一代CPU的典型发射宽度范围为2-6。为了确保正确的平衡,这种超标量引擎还支持多个执行单元和/或流水线执行单元。CPU还将超标量性能与深度流水线和乱序执行相结合,以提取给定软件的最大指令级并行性(Instruction-Level Parallelism)。
图9展示了一款支持2个宽度的超标量CPU的示例,即在每个流水线阶段处理两条指令。超标量CPU通常支持多个独立的执行单元,以避免冲突并保持流水线中的指令流动性。 

CUDA全称(Compute Unified Device Architecture)统一计算架构,是NVIDIA推出的并行计算平台,它提供了相关API让开发者可以使用GPU完成通用计算加速(GPGPU),而不仅仅是图形计算

CUDA编程让你可以在CPU-GPU的异构计算系统上高效执行应用程序,语法只是在C语言的基础上做了简单的扩展,在开始编程前,我们首先得理清Host和Device的概念

  • Host:CPU及其内存
  • Device:GPU及其内存

运行在GPU设备上的代码我们称为kernel

典型的CUDA程序处理流程:

  • 分配内存,数据初始化
  • 将数据从Host拷贝到Device
  • 调用kernels处理数据,然后存在GPU内存(Device)
  • 将数据从Device拷贝到Host
  • 内存释放

CUDA编程概述 - 知乎

nvcc是CUDA编译器:编译主机侧代码可以配置为gcc或clang,默认使用标准路径第一个编译器,设备层使用LLVM编译器进行编译。

nvcc --host-compiler=gcc/clang

CUDA(Compute Unified Device Architecture)是由NVIDIA推出的通用并行计算架构,它允许GPU解决复杂的计算问题。CUDA编程模型包括以下几个基本概念:

  1. 核函数(Kernel):在CUDA中,核函数是在GPU上执行的并行函数。每个线程执行相同的计算任务,但处理不同的数据。

  2. 线程(Thread):线程是CUDA编程的基本执行单位,每个线程都是一个独立的计算单元。

  3. 线程块(Thread Block):线程块是一组并行执行的线程,它们共享同一个代码和数据空间。线程块内的线程可以通过共享内存和同步机制进行通信和协作。

  4. 网格(Grid):网格是一组线程块,它们共享相同的核函数和执行配置。网格有助于将计算任务划分为更大、更易于管理的单位。

CUDA编程模型还引入了主机端和设备端的概念,其中CPU是主机端,而GPU是设备端。主机端负责复杂逻辑处理和运算量少的计算,而GPU则负责运行简单但计算量大的并行计算。

在CUDA编程中,线程组织结构可以是一维、二维或三维的。一维和二维组织结构分别将线程和线程块组织为线性数组和二维矩阵,适合处理不同类型的数据。

CUDA已经成为GPU计算的事实标准

cuda矩阵乘法:

矩阵规模

矩阵A: n行,l列
矩阵B:l行,m列
结果矩阵C=A✖️B: n行,m列

cuda矩阵乘法(简单理解)_cuda 矩阵乘法-CSDN博客

深入了解CUDA编程模型:并行计算的强大工具-CSDN博客 

 CUDA 编程指北:从入门到实践 - 知乎

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

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

相关文章

【C++】const限定符|const引用

const的引用 说const引用之前需要说明,这是建立在引用的前提下,如果是普通的拷贝赋值就基本不需要使用到const(有关权限)。 1 权限不能放大(可平移、缩小) 如何解释权限不能放大? 阅读下面的代码 可以看到&#xff1a…

sadtalker学习用于风格化音频驱动单图像说话人脸动画的真实 3D 运动系数的应用

论文出处 https://arxiv.org/abs/2211.12194 使用方法 1. 打开项目的colab链接 https://colab.research.google.com/github/Winfredy/SadTalker/blob/main/quick_demo.ipynb#scrollTofAjwGmKKYl_I 在examples/source_image文件夹中添加希望动起来说话的图片,这…

基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于GA遗传优化的离散交通网络双层规划模型设计.优化输出路段1和路段2的收费情况收敛过程。 2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序…

组蛋白脱乙酰酶介导的胃癌肿瘤微环境特征及协同免疫治疗(多组学文献学习)

目录 ①HDAC转录组多数据NMF一次聚类 ②ACRG队列中HDAC单独NMF聚类 ③HDS评分在胃癌中的临床特征和基因组特征 ④高 HDS 可能提示胃癌的“热”肿瘤状态 ⑤HDS是胃癌免疫治疗效果的有力预测指标 ⑥单细胞转录组测序揭示了高HDS和低HDS患者的TME ⑦内皮细胞和成纤维细胞可…

BGP实训

BGP基础配置实训 实验拓扑 注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为2的设备,以此类推;另外,同一网段中,IP 地址的主…

web学习笔记(四十五)Node.js

目录 1. Node.js 1.1 什么是Node.js 1.2 为什么要学node.js 1.3 node.js的使用场景 1.4 Node.js 环境的安装 1.5 如何查看自己安装的node.js的版本 1.6 常用终端命令 2. fs 文件系统模块 2.1引入fs核心模块 2.2 读取指定文件的内容 2.3 向文件写入指定内容 2.4 创…

git下载安装教程

git下载地址 有一个镜像的网站可以提供下载: https://registry.npmmirror.com/binary.html?pathgit-for-windows/图太多不截了哈哈,一直next即可。

鸿蒙 UIAbility和Compent 生命周期

一、UIAbility的生命周期 在UIAbility的使用过程中,会有多种生命周期状态,掌握UIAbility的生命周期,对于应用的开发非常重要。 1、UIAbility的生命周期 UIAbility的生命周期主要分为以下4个: Create---Foreground---Background---…

RabbitMQ 延时消息实现

1. 实现方式 1. 设置队列过期时间:延迟队列消息过期 死信队列,所有消息过期时间一致 2. 设置消息的过期时间:此种方式下有缺陷,MQ只会判断队列第一条消息是否过期,会导致消息的阻塞需要额外安装 rabbitmq_delayed_me…

C++从入门到精通——缺省参数

缺省参数 前言一、缺省参数概念二、缺省参数分类位置参数的缺省参数全缺省参数半缺省参数 关键字参数的缺省参数函数指针的缺省参数lambda表达式 三、缺省参数的具体代码展示main.cpp 前言 缺省参数是在函数定义时指定的默认值,当调用函数时未提供该参数的值时&…

暴雨服务器X7740赋能大模型训练

数字经济浪潮愈演愈烈,大模型训练对服务器的要求也越来越高。在此背景下,暴雨信息发布专门为大规模模型训练而设计的全新旗舰GPU服务器—X7740,以卓越的计算性能、高速网络通信能力以及创新的能效表现,有效赋能大模型训练。 X7740 搭载了暴雨信息最新一代的英特尔至强可扩展处理…

如何划分训练集、测试集、验证集

训练集、测试集和验证集是在机器学习和数据科学中常用的术语,用于评估和验证模型的性能。它们通常用于监督学习任务中。 1. 训练集(Training Set):训练集是用于训练机器学习模型的数据集。在训练期间,模型使用训练集中…

Leetcode - 周赛390

目录 一,3090. 每个字符最多出现两次的最长子字符串 二,3091. 执行操作使数据元素之和大于等于 K 三,3092. 最高频率的 ID 四,3093. 最长公共后缀查询 一,3090. 每个字符最多出现两次的最长子字符串 本题是一道标准…

嵌入式C语言中头文件计设规则方法

我是阿梁,最近在负责的项目代码,也算是祖传代码了,里面有很多头文件嵌套的情况,即a.h包含b.h,b.h又包含c.h,c.h又包含d.h......遂找到一份华子的C语言编程规范学习一下,并结合自己的理解写成这篇文章,以规范自己的代码。 1. 头文件嵌套的缺点 依赖:若x.h包含了y.h,则…

启信宝商业大数据助力全国经济普查

近日,合合信息旗下启信宝收到中国青年创业就业基金会感谢信,对启信宝协同助力全国经济普查和服务青年创业就业研究表达感谢。 第五次全国经济普查是新时代新征程上一次重大国情国力调查,是对国民经济“全面体检”和“集中盘点”,…

武汉星起航:亚马逊受惠国家政策,企业成长与行业发展齐头并进

亚马逊电商平台作为国际知名的跨境电商巨头,在中国市场也展现出了强劲的发展势头。近年来,国家政策对亚马逊电商平台的支持力度不断加大,为企业提供了良好的发展环境和机遇。武汉星起航将探讨国家政策对亚马逊电商平台的重要影响,…

深度思考:雪花算法snowflake分布式id生成原理详解

雪花算法snowflake是一种优秀的分布式ID生成方案,其优点突出:它能生成全局唯一且递增的ID,确保了数据的一致性和准确性;同时,该算法灵活性强,可自定义各部分bit位,满足不同业务场景的需求&#…

QT使用数据库

数据库就是保存数据的文件。可以存储大量数据,包括插入数据、更新数据、截取数据等。用专业术语来说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。 什么时候需要数据库?在嵌入式里,存储大量数据,或者记录数…

【项目技术介绍篇】若依开源项目RuoYi-Cloud后端技术介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

双端队列deque和vector以及list的优缺点比较

参考:https://blog.csdn.net/TWRenHao/article/details/123483085 一、vector vector具体用法详情点这里 优点: 支持随机访问 CPU高速环缓存命中率很高 缺点: 空间不够,便需要增容。而增容代价很大,还存在一定的空间浪费。 头部…