当前位置: 首页 > news >正文

为什么 FPGA 比 CPU 和 GPU 快?

FPGA、GPU 与 CPU——AI 应用的硬件选择

现场可编程门阵列 (FPGA) 为人工智能 (AI) 应用带来许多优势。图形处理单元 (GPU) 和传统中央处理单元 (CPU) 相比如何?

人工智能(AI)一词是指能够以类似于人类的方式做出决策的非人类机器智能。这包括判断能力、沉思能力、适应能力和意图能力。

研究公司Statista预测,到2025年,全球人工智能市场将达到1260亿美元。到2030年,人工智能将占中国GDP的26.1%、北美GDP的14.5%和阿联酋GDP的13.6%。

整个人工智能市场包括广泛的应用,包括自然语言处理(NLP)、机器人过程自动化、机器学习和机器视觉。人工智能正在许多垂直行业迅速得到采用,并正在创造下一个伟大的技术变革,就像个人电脑和智能手机的出现一样。
在这里插入图片描述

人工智能 (AI) 及其术语的起源可以归功于研究人员 Allen Newell、Cliff Shaw 和 Herbert Simon 在 1956 年创建的逻辑理论家程序。逻辑理论家程序旨在模拟人类解决问题的能力,由研究与开发(兰德)公司资助。逻辑理论家被认为是第一个人工智能项目,于 1956 年在新罕布什尔州达特茅斯学院的达特茅斯夏季人工智能研究项目 (DSRPAI) 上提出。

虽然人工智能主要依赖于模仿人类思维的编程算法,但硬件也是同样重要的一部分。用于人工智能操作的三种主要硬件解决方案是现场可编程门阵列(FPGA)、图形处理单元(GPU)和中央处理单元(CPU)。
每个选项都有自己的优势,但也有一些局限性,我们将进一步探讨。

FPGA

现场可编程门阵列 (FPGA) 是具有可编程硬件结构的集成电路类型。这与图形处理单元 (GPU) 和中央处理单元 (CPU) 的不同之处在于 FPGA 处理器内部的功能电路不是硬蚀刻的。这使得 FPGA 处理器能够根据需要进行编程和更新。这也使设计人员能够从头开始构建神经网络并构建 FPGA,以最好地满足他们的需求。

FPGA 的可重新编程、可重新配置架构为不断变化的人工智能领域提供了关键优势,使设计人员能够快速测试新的和更新的算法。无需开发和发布新硬件,这在加快上市时间和节省成本方面提供了强大的竞争优势。
FPGA 集速度、可编程性和灵活性于一身,可通过降低专用集成电路 (ASIC) 开发中固有的成本和复杂性来提高性能效率。

FPGA 提供的主要优势包括:
卓越的性能和减少延迟的优势:FPGA 提供低延迟和确定性延迟 (DL)。深度学习作为模型将从初始状态或给定的起始条件连续产生相同的输出。 DL 提供已知的响应时间,这对于许多具有硬期限的应用程序至关重要。这使得语音识别、视频流和动作识别等实时应用程序的执行速度更快。
成本效益:FPGA 在制造后可以针对不同的数据类型和功能进行重新编程,与用新硬件替换应用程序相比,它具有真正的价值。通过将图像处理管道等附加功能集成到同一芯片上,设计人员可以将 FPGA 不仅仅用于人工智能,从而降低成本并节省电路板空间。 FPGA 较长的产品生命周期可以为应用提供更高的实用性,可以在几年甚至几十年内测量。这一特性使其成为工业、航空航天、国防、医疗和运输市场的理想选择。
能源效率:FPGA 使设计人员能够微调硬件以满足应用需求。利用 INT8 量化等开发工具是优化 TensorFlow 和 PyTorch 等机器学习框架的成功方法。 INT8 量化还为 NVIDIA® TensorRT 和 Xilinx® DNNDK 等硬件工具链带来了良好的结果。这是因为 INT8 使用 8 位整数而不是浮点数,并且使用整数数学而不是浮点数学。正确利用 INT8 可以降低内存和计算需求,从而将内存和带宽使用量减少多达 75%。事实证明,这对于满足要求苛刻的应用中的能效要求至关重要。
FPGA 可以并行承载多种功能,甚至可以为特定功能分配芯片的各个部分,从而大大提高操作和能源效率。 FPGA 独特的架构将少量分布式内存放入结构中,使其更接近处理。与 GPU 设计相比,这可以减少延迟,更重要的是可以降低功耗。

GPU

图形处理单元 (GPU) 最初开发用于生成计算机图形、虚拟现实训练环境和视频,依赖于高级计算和浮点功能来绘制几何对象、照明和颜色深度。为了让人工智能取得成功,需要大量数据进行分析和学习。这需要强大的计算能力来执行人工智能算法并转移大量数据。 GPU 可以执行这些操作,因为它们是专门为快速处理渲染视频和图形时使用的大量数据而设计的。它们强大的计算能力使其在机器学习和人工智能应用中广受欢迎。

GPU 非常适合并行处理,即并行计算大量算术运算。这为具有快速连续重复执行的重复工作负载的应用程序提供了可观的加速。 GPU 的定价可以根据具有竞争力的解决方案进行定价,平均显卡的生命周期为五年。
GPU 上的人工智能确实有其局限性。 GPU 通常无法提供与 ASIC 设计一样多的性能,其中微芯片是专门为人工智能应用而设计的。 GPU 提供大量计算能力,但代价是能源效率和热量。热量可能会给应用程序带来耐久性问题,损害性能并限制操作环境的类型。更新AI算法和添加新功能的能力也不是FPGA处理器可比的。

中央处理器
中央处理器 (CPU) 是许多设备中使用的标准处理器。与 FPGA 和 GPU 相比,CPU 的架构具有有限数量的针对顺序串行处理进行优化的内核。 Arm® 处理器可能是一个例外,因为它们强大地实现了单指令多数据 (SIMD) 架构,允许在多个数据点上同时运行,但其性能仍然无法与 GPU 或 FPGA 相比。
有限的内核数量降低了 CPU 处理器并行处理正确运行 AI 算法所需的大量数据的效率。 FPGA 和 GPU 的架构设计具有快速同时处理多个任务所需的密集并行处理能力。 FPGA 和 GPU 处理器执行 AI 算法的速度比 CPU 快得多。这意味着人工智能应用程序或神经网络在 FPGA 或 GPU 上的学习和反应速度比 CPU 快几倍。
CPU 确实提供了一些初始定价优势。当使用有限的数据集训练小型神经网络时,可以使用 CPU,但代价是时间。基于 CPU 的系统比基于 FPGA 或 GPU 的系统运行速度慢得多。基于 CPU 的应用程序的另一个好处是功耗。与 GPU 配置相比,CPU 将提供更好的能效。

微型机器学习 (TinyML)

TinyML 被视为人工智能发展的下一个进化阶段,正在经历强劲的增长。在 FPGA、GPU 和 CPU 处理器上运行的人工智能应用程序非常强大,但它们不能用于手机、无人机和可穿戴应用程序等所有环境。
随着互联设备的广泛采用,需要进行本地数据分析,以减少对云的依赖以实现完整的功能。 TinyML 可在微控制器上运行的边缘设备上实现低延迟、低功耗和低带宽推理模型。
消费级 CPU 的平均功耗为 65 至 85 瓦,而 GPU 的平均功耗为 200 至 500 瓦。相比之下,典型的微控制器消耗的功率为毫瓦或微瓦数量级,这比功耗低一千倍。这种能源效率使 TinyML 设备能够依靠电池供电运行数周、数月甚至数年,同时在边缘运行 ML 应用程序。
TinyML 支持 TensorFlow Lite、uTensor 和 Arm 的 CMSIS-NN 等框架,将人工智能和小型互联设备结合在一起。

TinyML 的优势包括:
能源效率:微控制器消耗的电量非常少,这为远程安装和移动设备带来了好处。
低延迟:通过在边缘本地处理数据,数据不需要传输到云端进行推理。这大大减少了设备延迟。
隐私:数据可以存储在本地,而不是存储在云服务器上。
减少带宽:随着推理对云的依赖减少,带宽问题也被最小化。
使用 MCU 的 TinyML 的未来对于小型边缘设备和 FPGA、GPU 或 CPU 不可行的普通应用程序来说是有希望的。

要点

AI 的三种主要硬件选择是:FPGA、GPU 和 CPU。在速度和反应时间至关重要的人工智能应用中,FPGA 和 GPU 在学习和反应时间方面具有优势。虽然 GPU 能够处理人工智能和神经网络所需的大量数据,但其缺点包括能源效率、热考虑因素(热量)、耐用性以及使用新功能和人工智能算法更新应用程序的能力。 FPGA 在人工智能应用和神经网络中具有关键优势。其中包括能源效率、实用性、耐用性以及轻松更新人工智能算法的能力。

相关文章:

为什么 FPGA 比 CPU 和 GPU 快?

FPGA、GPU 与 CPU——AI 应用的硬件选择 现场可编程门阵列 (FPGA) 为人工智能 (AI) 应用带来许多优势。图形处理单元 (GPU) 和传统中央处理单元 (CPU) 相比如何? 人工智能(AI)一词是指能够以类似于人类的方式做出决策的非人类机器智能。这包…...

js常用函数总结

js常用函数总结 1、模糊搜索 export const fuzzyQuery (list, keyWord, attribute name) > {const reg new RegExp(keyWord)const arr []for (let i 0; i < list.length; i) {if (reg.test(list[i][attribute])) {arr.push(list[i])}}return arr } list 原数组 ke…...

cartographer离线建图报错:data_.trajectory_nodes.SizeOfTrajectoryOrZero

cartographer离线建图报错: data_.trajectory_nodes.SizeOfTrajectoryOrZero [FATAL] [1706177325.876019302, 1706015603.398505596]: F0125 18:08:45.000000 17607 pose_graph_2d.cc:1314] Check failed: data_.trajectory_nodes.SizeOfTrajectoryOrZero(trajectory_id) &…...

【YOLO系列算法俯视视角下舰船目标检测】

YOLO系列算法俯视视角下舰船目标检测 数据集和模型YOLO系列算法俯视视角下舰船目标检测YOLO系列算法俯视视角下舰船目标检测可视化结果 数据集和模型 数据和模型下载&#xff1a; YOLOv6俯视视角下舰船目标检测训练好的舰船目标检测模型舰船目标检测数据YOLOv7俯视视角下舰船…...

python进程间使用共享内存multiprocessing.shared_memory来通讯

python多个进程通讯使用共享内存 1、multiprocessing.shared_memory ​ 使用这个模块可从进程直接访问共享内存,该模块提供了一个 SharedMemory 类,用于分配和管理多核或对称多处理器(SMP)机器上进程间的共享内存。 ​ 为了协助管理不同进程间的共享内存生命周期,multi…...

经典目标检测YOLO系列(三)YOLOv3的复现(2)正样本的匹配、损失函数的实现

经典目标检测YOLO系列(三)YOLOv3的复现(2)正样本的匹配、损失函数的实现 我们在之前实现YOLOv2的基础上&#xff0c;加入了多级检测及FPN&#xff0c;快速的实现了YOLOv3的网络架构&#xff0c;并且实现了前向推理过程。 经典目标检测YOLO系列(三)YOLOV3的复现(1)总体网络架构…...

编程笔记 html5cssjs 061 JavaScrip简介

编程笔记 html5&css&js 061 JavaScrip简介 一、JavaScript概述二、JavaScript的主要特点三、历史延革四、JavaScript与前端开发小结 JavaScript 是 web 开发者必学的三种语言之一&#xff1a;HTML 定义网页的内容&#xff1b;CSS 规定网页的布局&#xff1b;JavaScript…...

计算机网络 第5章(运输层)

系列文章目录 计算机网络 第1章&#xff08;概述&#xff09; 计算机网络 第2章&#xff08;物理层&#xff09; 计算机网络 第3章&#xff08;数据链路层&#xff09; 计算机网络 第4章&#xff08;网络层&#xff09; 计算机网络 第5章&#xff08;运输层&#xff09; 计算机…...

pythonSM4加密

数据安全法及密评要求&#xff0c;敏感数据系统需要使用国密算法进行加解密处理。 敏感数使用SM4/ECB加解密方式 #密钥参数epidemic_key #加密信息参数 message #加密算法SM4/ECB/PKCS5Padding #加密类型SM4-ECB #添加模式PKCS5Padding from cryptography.hazmat.primitives.…...

JSP在线阅读系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc

一、源码特点 JSP 小说在线阅读系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为SQLServer2008&#…...

el-date-picker设置default-time的默认时间

default-time &#xff1a;选择日期后的默认时间值。 如未指定则默认时间值为 00:00:00 默认值修改 <el-form-item label"计划开始时间" style"width: 100%;" prop"planStartTime"><el-date-picker v-model"formData.planStart…...

List集合根据对象某个元素去重

序言 检视代码时有下面这样一段代码&#xff08;已脱敏处理&#xff09;&#xff0c; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors…...

QML Qt4版本移植到Qt5概述

C++代码 在Qt5中,QML应用程序使用OpenGL场景图架构来渲染,而在Qt4中使用的是图形视图框架。这种结构上的变化导致C++接口进行了大量重构。QtDeclarative模块已被弃用,该模块的类被移动到新的QtQML和QtQuick模块中,名称有了变化,如表3-1所列。如果需要使用Qt5中新的QQml和…...

【极数系列】Flink环境搭建Linux版本 (03)

文章目录 引言01 Linux部署JDK11版本1.下载Linux版本的JDK112.创建目录3.上传并解压4.配置环境变量5.刷新环境变量6.检查jdk安装是否成功 02 Linux部署Flink1.18.0版本1.下载Flink1.18.0版本包2.上传压缩包到服务器3.修改flink-config.yaml配置4.启动服务5.浏览器访问6.停止服务…...

2023年深圳市节假日人口迁入数据,shp/excel格式,需要自取!

基本信息. 数据名称: 深圳市节假日人口迁入数据 数据格式: Shp、excel 数据时间: 2023年国庆节 数据几何类型: 线 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1a0928迁入人口占迁入深圳市人口的比值&#xff0…...

Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤

1.从github上clone代码&#xff0c;并切换到n6.1.1版本&#xff1a;clone到D:\DownLoad目录下 git clone https://github.com/FFmpeg/FFmpeg.git git checkout n6.1.1 2.安装MSYS2并编译FFmpeg源码: (1).从https://www.msys2.org/ 下载msys2-x86_64-20240113.exe &#…...

HiveSQL题——用户连续登陆

目录 一、连续登陆 1.1 连续登陆3天以上的用户 0 问题描述 1 数据准备 2 数据分析 3 小结 1.2 每个用户历史至今连续登录的最大天数 0 问题描述 1 数据准备 2 数据分析 3 小结 1.3 每个用户连续登录的最大天数(间断也算) 0 问题描述 1 数据准备 2 数据分析 3 小…...

题解仅供学习使用

...

Linux命令-apt-get命令(Debian Linux发行版中的APT软件包管理工具)

补充说明 apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个 包管理系统。deb包可以把一个应用的文件包在一起&#xff0c;大体就如同Windows上的安装文件。 语法 apt-get [OPTION] PACKAGE选项 apt-get install 安装新包 apt-get r…...

matlab appdesigner系列-仪器仪表3-旋钮

旋钮&#xff0c;同过旋转显示特定的值 示例&#xff1a;模拟收音机调频 操作步骤&#xff1a; 1&#xff09;将旋钮、标签按钮拖拽到画布上&#xff0c;将标签文字修改为&#xff1a;欢迎收听&#xff0c;并将旋钮其数值范围改为90-107 2&#xff09;设置旋钮的回调函数 代…...

常见の算法5

位图 一个int类型32字节&#xff0c;可以表示0-31这32个数出没出现过&#xff0c;出现过1没出现0&#xff0c;再扩大一点搞个数组&#xff0c;就可以表示0-1023出没出现过&#xff0c;一个long类型可储存64位 如何把10位组成的数&#xff0c;第四位由1改成零 package class05…...

MYSQL中group by分组查询的用法详解(where和having的区别)!

文章目录 前言一、数据准备二、使用实例1.如何显示每个部门的平均工资和最高工资2.显示每个部门的每种岗位的平均工资和最低工资3.显示平均工资低于2000的部门和它的平均工资4.having 和 where 的区别5.SQL查询中各个关键字的执行先后顺序 前言 在前面的文章中&#xff0c;我们…...

架构篇25:高可用存储架构-双机架构

文章目录 主备复制主从复制双机切换主主复制小结存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个方面去进行思考…...

微信小程序(十五)自定义导航栏

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.组件文件夹创建方法 2.自定义组件的配置方法 3.外部修改组件样式&#xff08;关闭样式隔离或传参&#xff09; 创建组件文件夹 如果是手动创建建议注意在json文件声明&#xff1a; mynav.json {//声明为组件可…...

Python3进行pdf文件分割及转word

今天有个pdf分割的需求&#xff0c;电脑装的Python3&#xff0c;网上查资料都是Python2的代码&#xff0c;所以整理一份3的 安装&#xff1a; pip install PyPDF2 import PyPDF2def funSplitPdf():pdf_file open(/path/fileName.pdf, rb)pdf_reader PyPDF2.PdfReader(pdf_fi…...

深入理解TCP网络协议(1)

目录 1.TCP协议的段格式 2.TCP原理 2.1确认应答 2.2超时重传 3.三次握手(重点) 4.四次挥手 1.TCP协议的段格式 我们先来观察一下TCP协议的段格式图解: 源/目的端口号:标识数据从哪个进程来,到哪个进程去 32位序号/32位确认号:TCP会话的每一端都包含一个32位&#xff08…...

QT 中如何使用 JSON 功能?

在 Qt 中&#xff0c;您可以使用 QJsonDocument、QJsonObject 和 QJsonArray 类来处理 JSON 数据。以下是一个简单的示例&#xff0c;说明如何在 Qt 中使用这些类来解析和生成 JSON 数据&#xff1a; 1. 包含必要的头文件 首先&#xff0c;确保您的项目中包含了必要的 Qt JSO…...

C++面试:算法的执行效率和资源消耗、时间和空间复杂度分析根据实际场景,选用合适的数据结构和算法进行程序设计

目录 算法的执行效率和资源消耗、时间和空间复杂度分析 执行效率和资源消耗 时间复杂度分析 空间复杂度分析 实际应用 面试技巧 根据实际场景&#xff0c;选用合适的数据结构和算法进行程序设计 所根据原则 实例 如何选择数据结构示例 合适的数据结构&#xff1a;哈…...

力扣100215-按键变更的次数

按键变更的次数 题目链接 解题思路 我们发现只要相邻的两个字母不一样(大小写算一样)&#xff0c;那么按键变更次数就要加1 class Solution { public:int countKeyChanges(string s) {int ans 0;for(int i 1;i<s.size();i){if(s[i] - s[i-1] 32 || s[i] - s[i-1] -32 |…...

STM32-GPIO输出(HAL库)

STM32-GPIO 介绍 什么是GPIO&#xff1f; GPIO&#xff08;通用输入/输出&#xff09;是一种用于与外部设备进行数字通信的通用硬件接口。它允许微控制器或其他数字电路的引脚以灵活的方式配置为输入或输出&#xff0c;并在运行时进行动态控制。GPIO可用于连接和控制各种外围…...