昆仑芯科技基础工具链开发负责人张钊:强大易用的昆仑芯软件栈助力生态发展

文章来源:网络整理编辑:采集侠2022-07-07 07:34

导读:

[昆仑芯科技基础工具链开发负责人张钊:强大易用的昆仑芯软件栈助力生态发展

近日,昆仑芯科技应邀出席百度技术沙龙第99期“智能芯片”专场:昆仑芯一周年——构筑国产数智基石,AI算力赋能千行百业。四位专家首次同台,揭秘十年磨一剑的中国芯的神秘技术面纱,并系统介绍昆仑芯两代产品赋能千行百业的最新成果及应用实践。 

本篇以下内容整理于沙龙第三位演讲嘉宾——昆仑芯科技基础工具链开发负责人张钊题为 “强大易用的昆仑芯软件栈助力生态发展”直播分享。

昆仑芯科技基础工具链开发负责人张钊:强大易用的昆仑芯软件栈助力生态发展

昆仑芯科技基础工具链开发负责人张钊

我是昆仑芯科技基础工具链开发负责人张钊,今天分享昆仑芯软件栈的相关内容,主要包含以下四个部分:

1)昆仑芯的硬件架构,包括最新一代昆仑芯XPU-R架构以及其中的计算部分和存储部分。

2)昆仑芯的软件栈,包括运行时环境、开发套件、高性能加速库、通信库和图编译加速库。

3)昆仑芯的编程模型,包括编程模型、内存层级和算子开发的方法。

4)昆仑芯和上层框架的合作,主要包括适配的方法和当前支持推理和训练的场景情况。

昆仑芯的硬件架构

第一部分,再次强调我们的新一代昆仑芯XPU-R架构,主要是为了更好地了解软件栈。

昆仑芯XPU-R架构,大体分为计算、存储、互联和接口四个部分。

计算部分主要有SDNN和Cluster。这里面的SDNN就是软件定义的神经网络引擎,是自研核心张量计算单元,加速卷积和矩阵乘法的计算。Cluster主要负责除了卷积和矩阵乘法之外的通用计算部分。

存储部分主要包括GDDR6和Shared Memory,GDDR6是高速内存,提供了512 GB/s的存储带宽,具有较高的能效比和性价比。Shared Memory是片上的共享内存,保证所有计算单元高并发、低延时的访问。

片间互联提供了高速的芯片间互联,有效地支持大规模、分布式的训练,减少通信的延迟。

接口支持PCIe4.0,同时也兼容PCIe3.0,可以灵活适配业界已经上市的一些AI的服务器。

这一代的架构XPU-R是采用SDNN加Cluster的融合架构,既有通用性,也兼顾了高性能。作为第二代架构持续优化,进一步提升了计算性能,同时也增强了灵活的编程能力和通用性。

接下来看一下芯片架构的计算部分。XPU-R主要包含有8个Cluster单元和6个SDNN单元。Cluster单元主要承担通用计算任务,支持SIMD指令,提供通用和灵活的编程能力。SDNN主要承担MAC类计算和EW类计算,提供 128 TFLOPS@ FP16的算力。当然,SDNN也具有灵活的可编程性,能够轻松实现卷积、矩阵乘法、向量计算等功能。

架构中的存储部分,重点看片上高速存储和外存GDDR6。L3 SRAM作为片上高速共享存储,容量为64MB,能够被Cluster和SDNN共享访问。它能够提供比片外GDDR6更低的延时和更高的带宽。在我们软件编程过程中,用好L3 SRAM是提高性能非常重要的手段之一。GDDR6不同的产品形态有不同的容量,比如16GB版本、32GB版本,能够被Cluster和SDNN共享访问。GDDR6作为主要的存储单元,与L3 SRAM的管理基本一致。

昆仑芯的软件栈

接下来进入核心的第二部分——昆仑芯的软件栈。下图是昆仑芯软件栈架构图。

昆仑芯科技基础工具链开发负责人张钊:强大易用的昆仑芯软件栈助力生态发展

在应用层,我们支持深度学习模型的训练和推理,也支持视频智能分析以及一些科学计算。

在框架层,我们深度适配PaddlePaddle(百度飞桨),同时也支持常见的开源框架,如PyTorch、TensorFlow、ONNX等。

中间部分是昆仑芯的SDK——从下到上包括昆仑芯的驱动、虚拟化模块,还有昆仑芯的运行时库,再往上是昆仑芯的一个以编译器为核心的开发者套件、图编译引擎、高性能算子库和高性能通信库的部分。

之下的硬件部分是昆仑芯AI加速卡。

部署环境方面,支持公有云、计算中心和边缘设备等。

接下来围绕SDK中的各个模块展开,分别介绍各个模块的功能和作用。

昆仑芯的运行时环境这个模块主要包括昆仑芯AI芯片的底层驱动,这是一个内核态的程序;也提供了方便易用的Runtime API,这个是用户态的程序;同时昆仑芯运行时环境包含了大量的管理工具,包括监控、测试、debugger和profiler,这样能更好提升昆仑芯板卡的可操控性,也为上层提供灵活的应用接口。昆仑芯运行时环境主要的特性包括支持多stream、支持SR-IOV虚拟化,也支持event的同步。昆仑芯的运行时环境支持多个平台,如常见的x86-64平台、Arm64平台,也适配国产主流平台。

昆仑芯的模拟器实现了对昆仑芯AI芯片的完全模拟,使用上是由上层的昆仑芯运行时根据上层的配置进行AI加速卡和模拟器之间的控制切换,主要包括了对计算和存储单元的模拟、昆仑芯芯片运行时环境的完全模拟。同时,昆仑芯的模拟器可以提供丰富的工具,包括debugger、profiler和测试工具,既实现了功能级模拟,做到了比特级的精确对齐,也提供了相应的性能模拟,做到计算模块的性能cycle级对齐的水准。同时它支持多个应用场景,包括一些软件栈的功能验证、Kernel的开发和调试,以及Kernel性能的评估和优化。同时,昆仑芯模拟器可以做到和芯片无缝切换。

昆仑芯开发套件是以编译器为核心的一组开发套件,作为昆仑芯的基础工具链,它是基于LLVM开发的,实现了定制化的Clang前端并适配了昆仑芯XPU后端。它是一套完整的工具链,包括编译器、汇编器、linker、compiler-rt(libs)和一些常用的编程工具;同时它支持AOT编译和JIT的方式编译,支持device和host文件的分割和混合编译,向开发者提供一些debugger和profiler工具。

昆仑芯深度神经网络高性能加速库,专门为深度学习设计,是一套高效灵活的软件库,易于集成到机器学习框架中。我们目前集成的框架包括百度飞桨、TensorFlow,还有PyTorch等框架。这套加速库提供了基于Context的一套API,支持多线程和多stream的应用。同时它也支持DNN的一些常用算子,例如矩阵乘法、卷积前向和卷积反向、池化前向和池化反向、激活前向和激活反向等。

昆仑芯通信库,提供了芯片之间的数据传输能力,实现了broadcast、reduce等一系列的通信接口。主要特性包括数据压缩、拓扑检测、多机多卡、跨代兼容的支持,还有异常检测和恢复等。

昆仑芯的图编译加速库是根据昆仑芯硬件相关的设计,做图层的分析和优化,它是基于TVM进行开发的,提供了大量的C++和Python的接口,方便易用。作为一个昆仑芯的推理引擎,可以对接主流的Deep Learning框架导出的模型,也可以直接导入百度飞桨模型、TensorFlow模型、PyTorch模型等。提供了一套编译优化器和运行时分离的工作流程。如下图可以看到一个AI的模型如何进入我们这套图编译加速库,最终进行上线部署的一套过程。

昆仑芯科技基础工具链开发负责人张钊:强大易用的昆仑芯软件栈助力生态发展

昆仑芯的编程模型

本文链接:http://www.soxunwang.com/kjrd/2022/0707/104113.html

声明:
1、此文内容为本网站刊发或转载企业宣传资讯,仅代表作者个人观点,供读者参考。
2、搜讯网所转载的稿件都会明确标注作者和来源,如您不希望被转载请及时与我们联系删除。
3、搜讯网的原创文章,请转载时务必注明文章作者和"来源:搜讯网",不尊重原创的行为搜讯网或将追究责任。
4、本站提供的图文仅供参考,不能作为任何咨询依据,专业问题请咨询专业人士,谨防受骗。

关注搜讯网微信号

扫描加关注!

搜讯网福利发放

最新热点 更多
相关阅读 更多