一、为什么需要智能编程语言
1. 语义鸿沟
传统C/C++等是以面向通用计算的加、减、乘、除等基本标量操作为基础的,通常不具有和具体任务及应用场景相关的高层语义。例如:使用纯标量计算的C++语言编写的卷积运算包含7重循环
,而采用向量语义的Python语言编写的卷积运算只需要四重循环
即可完成。而如果采用具有Conv语义和Tensor类型的编程语言实现卷积运算则只需要一条语句
即可完成。降低了代码量,提高了开发效率。
2. 硬件鸿沟
智能计算硬件在控制、存储和计算等方面有独特性,而传统编程语言难以有效描述上述硬件特点。
存储逻辑上
,智能处理器一般采用程序员可见的Scratchpad Memory(SPM),需要在语言层面提供对SPM 进行高效操作的支持。在计算逻辑上
,智能处理器中一般有面向智能计算的定制运算单元,如16位浮点、Brain 浮点等,当前编程语言层面主要提供的是 int 和 fp32 等数据类型,难以高效利用这些运算单元。
3. 平台鸿沟
平台鸿沟需要解决两大问题:(1)功能可移植性;(2)性能可移植性。
功能可移植性
:采用特定平台专用语言所编写的程序能够在别