工具链工具——映射与调度、模拟与验证、开发与测试工具

news2024/11/24 1:32:35

本篇文章将重点介绍工具链的工具相关知识,我们将从工具链的基本概念出发,重点介绍工具链中的映射和调度工具、模拟与验证工具、开发和测试工具,最后提出对工具链发展的展望,从而对工具链的工具进行一个较为系统的讲解。

  • 工具链的基本概念

工具链,英文名称toolchain,通常是指在软件开发或硬件设计中使用的一系列工具和软件,用于完成特定任务或流程。这些工具一般接连地使用,从而完成一个个任务,这也是“工具链”名称的由来。

而在AI芯片领域,工具链特指连接模型算法到芯片部署的端到端系列工具。面向存算一体芯片的深度学习编译工具链包括深度学习的算法设计、前端网络的模型转换、存算一体的电路设计等模块;如今,面向传统芯片的深度学习编译工具链发展健全,而面向存算一体芯片的深度学习编译工具链在前端优化策略、后端空间映射等方面都仍有欠缺,这使得深度学习部署在存算一体芯片上移植性低、成本高,因此需要我们设计出能实现端到端的存算一体工具链及软硬件系统。面向存内计算芯片的深度学习编译工具链通常包括量化、图优化、映射与调度、模拟与验证、开发与测试等工具,前面我们已经介绍过量化和图优化相关知识,本篇文章我们将介绍映射与调度、模拟与验证、开发与测试这三种工具。

  • 映射与调度工具

数据布局和计算任务在存储阵列中的映射至关重要,相应的工具应能智能地分配和管理数据在内存单元中的位置,优化计算效率和带宽使用;调度工具则负责在不同时刻根据资源约束安排计算操作,确保有效利用存内计算硬件的并行性和容量。在深度学习编译工具链中,映射与调度工具专门用于将高层的模型描述转换为优化的硬件指令,并调度这些指令到具体的计算资源上。这些工具通过高级优化技术来提升执行效率和硬件利用率。

下面以一些具体工具举例:

1.TPU-MLIR[1]:

TPU-MLIR是一种专用于处理器的TPU编译器。该编译器项目提供了一个完整的工具链,可以将来自不同深度学习框架(PyTorch, ONNX, TFLite和Caffe)的各种预训练神经网络模型转换为高效的模型文件(bmodel/cvimodel),以便在SOPHON TPU上运行。通过量化到不同精度的bmodel/cvimodel,优化了模型在sophon计算TPU上的加速和性能。这使得可以将与对象检测、语义分割和对象跟踪相关的各种模型部署到底层硬件上以实现加速。

图 1 TPU-MLIR整体架构[1]

2.TensorRT[2]:

TensorRT是NVIDIA提供的一个高性能深度学习推理(inference)引擎,专为生产部署优化。TensorRT提供了API和解析器,可以从所有主要的深度学习框架中导入经过训练的模型,广泛用于需要快速推理的应用场景,如视频分析和图像处理。

图 2 TensorRT logo[2]

3.TVM[3]:

Apache TVM是一个端到端的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。TVM 提供以下功能:将深度学习模型编译成最小可部署的模块;在更多的后端自动生成和优化模型的基础设施,进一步提高性能。TVM支持广泛的硬件平台和前端框架,能够自动优化模型以适应不同的硬件架构。

图 3 TVM示意图[3]

4.OpenVINO[4]:

OpenVINO是英特尔开发的一套优化深度学习性能的工具集,是一款可轻松实现“一次写入,处处部署”的开源AI工具套件,可以缩短延迟,提高吞吐量,加速AI推理过程,同时保持精度,缩小模型占用空间,优化硬件使用,支持多种类型的英特尔硬件。OpenVINO可以转换和优化使用TensorFlow和PyTorch等热门框架训练的模型,在多种英特尔硬件和环境、本地、设备、浏览器或云中部署,用于加速计算机视觉、自动驾驶等领域的深度学习推理任务。

图 4 OpenVINO原理示意图[4]

  • 模拟与验证工具

芯片设计中,模拟与验证工具是确保设计达到期望性能和功能的关键。这些工具模拟实际操作环境,预测芯片行为,并验证设计是否符合规格,帮助发现并修正错误,提高产品可靠性和效率。

芯片设计的模拟技术可分为软件仿真和硬件仿真。软件仿真在计算机上使用仿真软件模拟芯片设计行为,不需硬件参与,常见工具有ModelSim、VCS、Virtuoso、C++或SystemC相关芯片模拟器等;硬件仿真则使用通用硬件平台FPGA或专用仿真器,提供更真实的硬件操作环境,仿真速度更快。

按流程的先后,芯片设计的模拟技术还可更细致地分为行为级仿真(功能仿真)、综合后的功能仿真、综合后带时序信息地仿真、布局布线后的功能仿真、布局布线执行后的时序仿真[5],工具链验证使用的模拟器以行为级为主。在仿真过程中,综合后门级功能仿真被称为前仿,布局布线后的时序仿真被称为后仿,前仿使用硬件描述语言描述电路逻辑;后仿在设计完成后进行,主要考虑电路物理(连线、排布、电容、电阻等)的影响。

验证技术包括形式验证和代码验证。形式验证通过数学方法证明设计正确性,不依赖测试例,常用工具有Synopsys的VC Formal;代码验证,尤其是代码覆盖分析,用来检查测试用例是否覆盖所有可能路径,帮助发现遗漏的功能区域。

对于新型的存内计算芯片,由于FPGA平台难以完全仿真其核心功能,常采用软件仿真或特定开发板如知存科技的WTMDK2101系列。而在数字芯片设计中,前端充分的逻辑仿真可避免后端问题。因此,在存算一体芯片的设计过程中,前仿和软件仿真是非常重要的内容。

下面介绍部分常用模拟与验证工具:

1. VCS:高性能Verilog仿真和调试工具,支持多种语言,适用于复杂SoC和ASIC设计验证。优势在于仿真速度快,调试方便,但仅支持Linux和Unix系统。

图5 使用VCS和Verdi进行仿真并查看波形的一个简单例子

2. PrimeTime:静态时序分析工具,全面进行时序性能验证,包括时序分析和功耗分析。但是该软件的操作需要相关专业知识,准确选择库文件和延时文件至关重要。

3. ModelSim:支持多种HDL语言的仿真工具,提供丰富的调试功能。优势在于友好的用户界面,但在仿真速度和性能上不如VCS。

4. Formality:形式验证工具,验证数字IC设计中功能等效性,保证设计修改不引入错误。但需要设计者熟悉设计语言版本,可能存在编程语言版本导致的兼容性问题。

5. Virtuoso:模拟、混合信号的设计和仿真工具,它为设计者提供了全面的设计和验证环境,从概念设计到芯片布局和制造的每个阶段都能得到支持。但是软件功能较为复杂,所需计算资源较大。

图6 Virtuoso用户界面

  1. CEVA SoC:作为一种编程语言,SystemC可用于将硬件和软件描述指定为抽象行为模型。SystemC还提供事件驱动型仿真接口,开发人员可以通过该接口模拟并发进程。即使尚未设计系统的某些部分,开发人员也可以为SoC仿真生成完整系统的可执行模型。CEVA SoC模拟器提供集成SystemC仿真环境,允许系统工程师、架构师和软件开发人员在硅前阶段进行建模、分析和调试。该虚拟模拟器可用于架构定义和快速原型设计,并可用作有效的IP评估和概念验证 (PoC)工具。它能够与MATLAB无缝对接,以便用于开发算法和测试。CEVA客户可以在FPGA平台上模拟他们的系统以进行最终验证[6]。

图 7 CEVA SoC模拟器示意图[6]

  • 开发和测试工具

芯片设计中,我们也需要一套完成的开发与测试工具,包括集成开发环境(IDE)、代码编辑器、单元测试和集成测试工具在哪的各种工具等等。前序的模拟与验证阶段主要聚焦于设计的准确性和功能性,包括功能验证、时序验证、形式验证等等;而开发和测试阶段更侧重于设计的实现与测试,包括编码、布局布线、各种测试来确保设计的正确性和性能。

下面介绍部分常用的开发和测试工具:

1. Synopsys IO Complier II:主要应用于物理综合,包括布局布线等相关功能,可实现和优化IC的物理布局,Cadence virtuoso、Mentor Graphics Calibre等软件也有能实现进行物理设计和布局的相关功能。

2. Xilinx Vivado:用于FPGA的设计和综合,提供全面的开发环境和工具支持,可将逻辑设计映射到FPGA架构上,并生成可下载到FPGA器件的比特流文件。

图8 Vivado开发界面

  1. Vim、Emacs、VScode+iverilog:常用的代码编辑器,常用于编辑硬件描述语言Verilog、VHDL等等。

图9 Vscode与iverilog联动编写硬件描述语言

4. Cadence Palladium Emulator:用于大规模集成电路验证。

5. Synopsys ZeBu:用于硬件/软件共同验证或验证加速。

6.Mentor Graphics Veloce Emulation Platform:用于验证SoC设计。

7.Witmem studio:由知存科技开发的一款全功能集成开发环境,包含客户识别的SDK推送功能,SDK包自动更新下载安装功能,内核自动识别语法高亮编辑器,面向不同功能的个性化工程创建功能,以及常规IDE所具有的项目工程管理、文件编辑、编译、调试等功能,可在知存科技官网进行软件下载[7]。

图10 Witmem Studio开发界面

8.其他工具:Tcl/TK、Python等用于自动化测试和脚本编写的软件。

总而言之,为推动存内计算规模应用,工具链的发展壮大将成为存内计算芯片设计中的必然诉求,它们需要业界共同发力,共同搭建面向存内计算的映射与调度、模拟与验证、开发与测试工具链。相信在不久的将来,存内计算芯片相关工具链将迎来井喷式发展,让我们一同分享、一同创造,一起见证存内计算芯片的生态繁荣时代。

参考文献:

[1]编译器:TPU-MLIR环境构建及使用指南(一) - 江左子固 - 博客园 (cnblogs.com).

[2]使用 NVIDIA TensorRT 加速深度学习推理(更新) - NVIDIA 技术博客.

[3]Apache TVM中文站(tvm.hyper.ai).

[4]英特尔® 发行版 OpenVINO™ 工具套件 (intel.cn).

[5] FPGA中的五个级别和五种仿真(blog.csdn.net).

[6]CEVA SystemC 模拟器:出色的 SoC 模拟器 - 与非网 (eefocus.com).

[7]知存科技存内计算芯片开发者中心(witintech.com/develop.php).

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万兴PDF专家 PDFelement Pro v10.3.8 破姐版!

🧑‍💻万兴PDF专家 PDFelement Pro v10.3.8 破姐版 (https://docs.qq.com/sheet/DRVVxTHJ3RXJFVHVr)

WebSocket 全面解析

🌟 引言 WebSocket,一个让实时通信变得轻而易举的神器,它打破了传统HTTP协议的限制,实现了浏览器与服务器间的全双工通信。想象一下,即时消息、在线游戏、实时股票报价…这一切都离不开WebSocket的魔力💫。…

利用word2vec包将中文转变为词向量

代码展示&#xff1a; import jieba import re import json import logging import sys import gensim.models as word2vec from gensim.models.word2vec import LineSentence, loggerpattern u[\\s\\d,.<>/?:;\\"[\\]{}()\\|~!\t"#$%^&*\\-_a-zA-Z&…

网页使用之如何返回json/xml

后端返回json数据给前端进行渲染的方式比较熟悉&#xff0c;至于返回html页面&#xff0c;返回xml的方式接触逐渐减少&#xff0c;来在项目中熟悉这一点。 返回文本数据 json姿势的返回实属最简单的方式&#xff0c;在SpringBoot应用中&#xff0c;有两种简单的方式 1.直接在…

【docker 】Windows10安装 Docker

安装 Hyper-V Hyper-V 是微软开发的虚拟机&#xff0c;仅适用于 Windows 10。 按键&#xff1a; win键X &#xff0c;选着程序和功能 在查找设置中输入&#xff1a;启用或关闭Windows功能 选中Hyper-V 点击确定 安装 Docker Desktop for Windows Docker Desktop 官方下载…

LeetCode46:全排列

题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 解题思想 使用used记录元素是否使用过&#xff0c;排列是有序的&#xff0c;要注意与组合的区别。 代码 class Solution { public:vector<vector<int>…

在线教程|零门槛部署 Llama 3,70B 版本只占 1.07G 存储空间,新用户免费体验 8B 版本

4 月 18 日&#xff0c;Meta 宣布开源 Llama 3&#xff0c;这个号称「迄今为止最好的开源大模型」一经发布&#xff0c;立刻引爆科技圈&#xff01; 发布当天恰逢斯坦福大学教授、AI 顶尖专家吴恩达的生日&#xff0c;作为 AI 开源倡导者&#xff0c;他激动地发文表示&#xff…

Llama 3 ——开源大模型Llama 3从概念到使用

概述 Meta公司自豪地宣布推出其最新的开源大型语言模型——Llama 3&#xff0c;这是一款专为未来AI挑战而设计的先进工具。Llama 3包含两个不同参数规模的版本&#xff0c;以满足多样化的计算需求&#xff1a; 8B版本&#xff1a;优化了在消费级GPU上的部署和开发流程&#xf…

二、VLAN原理和配置

vlan不是协议&#xff0c;是一个技术&#xff0c;虚拟局域网技术&#xff0c;基于802.1q协议。 vlan&#xff08;虚拟局域网&#xff09;&#xff0c;将一个物理的局域网在逻辑上划分成多个广播域的技术。 目录 1.冲突域和广播域 概念 范围 2.以太网帧格式 3.以太网帧封装…

自动驾驶中的深度学习和计算机视觉

书籍&#xff1a;Applied Deep Learning and Computer Vision for Self-Driving Cars: Build autonomous vehicles using deep neural networks and behavior-cloning techniques 作者&#xff1a;Sumit Ranjan&#xff0c;Dr. S. Senthamilarasu 出版&#xff1a;Packt 书籍…

使用LocalGPT+cpolar打造可远程访问的本地私有类chatgpt服务

文章目录 前言环境准备1. localGPT部署2. 启动和使用3. 安装cpolar 内网穿透4. 创建公网地址5. 公网地址访问6. 固定公网地址 前言 本文主要介绍如何本地部署LocalGPT并实现远程访问&#xff0c;由于localGPT只能通过本地局域网IP地址端口号的形式访问&#xff0c;实现远程访问…

电子式汽车机油压力传感器的接线方法及特点

电子式机油压力传感器由厚膜压力传感器芯片、信号处理电路、外壳、固定电路板装置和两根引线&#xff08;信号线和报警线&#xff09;组成。信号处理电路由电源电路、传感器补偿电路、调零电路、电压放大电路、电流放大电路、滤波电路和报警电路组成。 厚膜压力传感器是20世纪…

杰发科技AC7840——SPI通信简介(1)_跑通Demo

0. 简介 一些配置项&#xff1a; CPHA&#xff1a;相序 CPLO&#xff1a;极性 看着demo需要按键&#xff0c;于是去掉按键&#xff0c;去掉打印&#xff0c;直接输出波形看逻辑分析仪的信号。 其实现在做这些demo测试应该都有逻辑分析仪&#xff0c;直接看波形更直观一点。…

git误操作版本回退的方法

场景&#xff1a;在使用git进行代码提交的时候不小心执行了git reset 命令进行了版本回退但是在这之前进行了git add . git commit -m "提交"等命令&#xff0c;正常情况下就可以直接使用 git reset 版本号 进行代码的回退&#xff0c;但是发现自己不能找打上一个提…

搭建MongoDB副本集

文章目录 一、什么是MongoDB的副本集二、副本集的架构三、副本集的成员四、部署副本集1、节点划分2、安装MongoDB2.1、下载解压安装包 3、创建主节点3.1、创建存储数据和日志的目录3.2、新建配置文件3.3、启动节点服务 4、创建副本节点4.1、创建存储数据和日志的目录4.2、新建配…

场景文本检测识别学习 day06(Vi-Transformer论文精读)

Vi-Transformer论文精读 在NLP领域&#xff0c;基于注意力的Transformer模型使用的非常广泛&#xff0c;但是在计算机视觉领域&#xff0c;注意力更多是和CNN一起使用&#xff0c;或者是单纯将CNN的卷积替换成注意力&#xff0c;但是整体的CNN 架构没有发生改变VIT说明&#x…

面试笔记——线程池

线程池的核心参数&#xff08;原理&#xff09; public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)corePoolSize …

2024年 Java 面试八股文——Redis篇

目录 1、介绍下Redis Redis有哪些数据类型 难度系数&#xff1a;⭐ 2、Redis提供了哪几种持久化方式 难度系数&#xff1a;⭐ 3、Redis为什么快 难度系数&#xff1a;⭐ 4、Redis为什么是单线程的 难度系数&#xff1a;⭐ 5、Redis服务器的的内存是多大…

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第三篇,主要讲述下拉列表pick_list部件的使用,会…

c#创建新项目

确保已安装.NET Core SDK。&#xff08;visual studio installer中可安装&#xff09; cmd中先引用到文件夹目录下。 mkdir MyConsoleApp MyConsoleApp是项目文件夹的名字。 mkdir 是一个命令行工具&#xff0c;用于在文件系统中创建新的目录&#xff08;文件夹&#xff09;…