从硬件架构到软件工具链,存算一体大算力AI芯片的创新与实践( 五 )


从硬件架构到软件工具链,存算一体大算力AI芯片的创新与实践
文章图片
如果是高级的用户 , 可以开发自己的自定义算子 , 我们也提供算子的开发工具SDK , 这里边包括了编程模型方面 , 基于CUDA的扩展语言 , 叫后摩Dataparallellanguage或者叫hardwaredataparallellanguage(HDPL语言) , 还有ScheduleLanguage , 最底层是标准的C++ 。
编译器方面包括了HDPL编译器 , 底层C/C++编译器 。 工具链方面也提供了丰富的工具链 , 包括了debugger、调试器、汇编和反汇编的工具、Objdump工具 , 还有一个HMprofeiler , 用它来可以方便的调试CIM 。
除此之外 , 我们也对推理引擎方面有支持 。 我们的编译器可以让用户从开发类似GPU的一些程序里 , 无缝的过渡到AI处理器的开发过程中来 , 因为我们是一个类CUDA的编程模型 。 上层对接的推理引擎可以是多种多样的 , 包括百度的PaddlePaddle、ONNX、TensorFlow、MXNet等 。 这些工具产生的模型 , 经过量化工具会翻译成一个RelayIR的中间表达 。 这个中间表达之后会通过Tensorgraph优化器来做优化 , Tensor优化器做了哪些事情呢?包括自动算子的融合 , 优化带宽的瓶颈 , 自动流水的分配机制 , 可以充分利用AICore的硬件并行性 , 以及设备内存SRAM和DDR的自动分配 , 层间的调度优化等 , 来提高硬件利用率 。
再下一层是IPUgraphruntime , 即图的运行时 。 运行时最下层会调用IPU各种各样的资源 。 IPU资源包括了AICore , 就是AI写处理器 , 还有一些扩展的计算资源 , 大多数的计算可以通过卷积在CIM里来实现 。 还有一些其他的特殊操作 , 比如最常用的pooling等类似的操作 , 可以在SpecialFunctionUnit来实现 。 如果有自定义的算子还可以通过HDPL语言的接口 , 在不同的计算扩展单元里实现 。 我们的编程模型也是针对数据并行的模型 , 上图有一个简单的例子 , 它与CUDA编程方式是非常接近的 。
以上就是本次分享的主要内容 , 感谢大家的观看 。