Versal系列0-AI Engine与Systolic Array

2023-10-10 07:59

本文主要是介绍Versal系列0-AI Engine与Systolic Array,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在开发VCK190时,发现Xilinx Versal系列的AI engine(AIE),其实和Systolic Array(SA)有着很相似的地方。Xilinx工程师在研发AIE时,应该是有所借鉴SA的。

Systolic Array最早是H. T. Kung于1982年在论文《Why systolic architectures?》中提出,但是由于过于过于专用性,在通用处理器当道的年代并没有得到许多的关注。随着人工智能的火热,各种硬件加速器的设计不断涌现,谷歌的TPU就重新使用起了Systolic Array来做AI里最常用的矩阵乘法操作。许多AI模型部署的硬件加速器也都采用了SA做主要算子。

Why systolic architectures?

Systolic Array

在做矩阵乘法时,一般的方法是将矩阵的行和列从存储元件(DDR、BRAM、cache)中取出来,做完运算后再将其返回DDR中。而存储单元消耗的带宽是有限的,通常比计算单元速度慢很多,因此,访存的带宽成了整个系统的瓶颈。如果能每次在取出数据后,尽量做尽可能多的操作,让数据的利用率尽可能大,就能显著提升整个系统的速度。

常规矩阵运算

Systolic Array就是这样一个能显著提升矩阵乘法性能的硬件架构。它只需要从存储元件中取出一次元素,就能将整个矩阵计算完成。以3x3的方阵乘法为例,A矩阵与B矩阵相乘得到C矩阵:

3x3的方阵乘法

用于计算此矩阵乘法的SA也包含3x3个Processing Element(PE),每个PE的完成的操作就是将做个矩阵的乘法并放入自己的局部存储中(Local Memory)。在初始时刻,先将A矩阵的列翻转,B矩阵的行翻转,并按照A每一行晚一拍,B每一列晚一拍进入SA的顺序放置。每个PE的本地存储当前都是空的。

初始状态

然后矩阵元素 a11c_{13} ...

最后一个时钟周期

Systolic Array在整个矩阵的运算中只需要在开始访问存储器得到A和B矩阵的元素,每次运算不需要重新访存,就可以传递给下一个PE,从而克服了访存对速度的限制。

AI Engine

AI Engine是Xilinx Versal系列器件里新添加的硬核,每个AIE都是个32位RISC微处理器,如VCK190上嵌入了400个这样的硬核,因此能提供非常庞大的算力,来满足AI等场景下的要求。

类似SA,AIE也是形成一个阵列[1],从下图中可以看到,它也有局部的存储(灰色块),也有类似SA的计算单元(绿色块)。并且也会有互联的总线逻辑(蓝色,绿色与黑色线)。这种架构能让计算逻辑更快得访问Memory,互联逻辑也能让AIE访问相邻AIE的Memory。

AIE阵列架构

而AIE阵列与SA的区别在于

  • AIE阵列的计算逻辑AIE非常强大,包括标量/矢量计算单元。而SA里的PE通常只是做简单的乘加运算。
  • AIE阵列的单个AIE存储单元容量为32KB,而通常SA的存储单元容量较小。
  • AIE阵列的互联逻辑不仅可以传递数据到右边和下边的AIE,也可以传递到左边和上边,也可以跨AIE,通过AXI Interconnect总线访问更加远的AIE。而SA的互联逻辑更加简单。
AI Engine计算单元
AI Engine存储单元

AIE可以认为是个加强版的Systolic Array,利用了局部存储的高带宽的优势,让计算逻辑与存储逻辑更加靠近,从而满足高吞吐率,高计算量应用的要求。

参考

  1. ^AM009-AI Engine Architecture https://docs.xilinx.com/r/scNYG4asFKV~nqnjEkGwmA/root

link

这篇关于Versal系列0-AI Engine与Systolic Array的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/179109

相关文章

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统