我们认为 OP 集和 AI 芯片硬件高度耦合其原因在于每一家 AI芯片厂商智能编程语言不同;由于各家 AI芯片厂商编程语言无法兼容,而深度学习框架厂商仅支持一家 AI 芯片就要投入巨大工程量,因此导致其最终只选择市占率最大的 1-2 家进行深度支持——AI芯片厂商的生态壁垒护城河得以形成。对于 AI 芯片而言之所以需要智能编程语言是传统编程语言(Python、C++、Java 等)难以满足三大鸿沟,而如果用运行效率最高的底层汇编语言写将导致开发门槛过高:(1)语义鸿沟:传统的高级编程语言难以高效描述复杂的智能语义,比如如果用 C++写卷积运算的代码,需要 7 重循环;如果用 Python 写,需要 4 重循环。高层的语义不好描述或者描述起来很费时间,要写很多行代码才能实现一个算子。(2)硬件鸿沟:不同 AI 芯片在控制、存储、计算方面都有很强的独立性,AI 芯片需要有专用的编程语言对上述特性进行很好的抽象,如果不让开发者通过编程语言清楚看到底层硬件抽象是无法很好利用底层 AI 芯片的性能的。(3)平台鸿沟:各类 AI 芯片底层指令集不同,由于汇编语言和指令集是一一对应的关系,因此汇编语言也不同,汇编语言之上的智能编程语言也不同,英伟达的智能编程语言 CUDA 在寒武纪、华为昇腾芯片上跑不起来,所以对于寒武纪、华为而言需要自己专有的智能编程语言。
我们认为 OP 集和 AI 芯片硬件高度耦合其原因在于每一家 AI芯片厂商智能编程语言不同;由于各家 AI芯片厂商编程语言无法兼容,而深度学习框架厂商仅支持一家 AI 芯片就要投入巨大工程量,因此导致其最终只选择市占率最大的 1-2 家进行深度支持——AI芯片厂商的生态壁垒护城河得以形成。对于 AI 芯片而言之所以需要智能编程语言是传统编程语言(Python、C++、Java 等)难以满足三大鸿沟,而如果用运行效率最高的底层汇编语言写将导致开发门槛过高:(1)语义鸿沟:传统的高级编程语言难以高效描述复杂的智能语义,比如如果用 C++写卷积运算的代码,需要 7 重循环;如果用 Python 写,需要 4 重循环。高层的语义不好描述或者描述起来很费时间,要写很多行代码才能实现一个算子。(2)硬件鸿沟:不同 AI 芯片在控制、存储、计算方面都有很强的独立性,AI 芯片需要有专用的编程语言对上述特性进行很好的抽象,如果不让开发者通过编程语言清楚看到底层硬件抽象是无法很好利用底层 AI 芯片的性能的。(3)平台鸿沟:各类 AI 芯片底层指令集不同,由于汇编语言和指令集是一一对应的关系,因此汇编语言也不同,汇编语言之上的智能编程语言也不同,英伟达的智能编程语言 CUDA 在寒武纪、华为昇腾芯片上跑不起来,所以对于寒武纪、华为而言需要自己专有的智能编程语言。