“通过编译器重新编译”这件事对于一些活跃的开发者可能还好,但整个生态都重新编译不是那么容易的。 那些开发者不再支持的软件,不用转义或者虚拟机就永远运行不了了。 如果软件依赖了其他的静态库,就要等待库的更新或者自己去编译,越底层越可能需要有改动。如果用了一些 ISA 特定的 trick,或者写了各种汇编,就要真的重新付出去开发,可能写汇编的人早就离职了干别的去了,没人会了。
Jooooooooo
2021-08-28 01:21:08 +08:00
像是完全没接触的人会说的
你要不搜下 fpga
agagega
2021-08-28 01:38:24 +08:00
这是不同层面的事情。
像从给 CPU 编程到给 GPU 编程,这个属于编程模型上的变化,代码可能需要大量的重写。
如果是换个指令集,比如从 x86 迁移到 ARM,理论上你的代码如果全都是标准的可移植的那种,那的确重新编译就可以了。但很多项目 (1) 假定了很多平台特性(比如 x86 和 ARM 的内存一致性模型不一样),或者用了平台相关的内联汇编 /Intrinsic (2) 用了上游的库,而上游又依赖着更上游的代码,那就得等到他们全都改好才行,目测到今天还没有适配 M1 的那些软件就属于这种情况。当然即使同样是 x86,也会有指令集的不同,比如一些 CPU 支持 AVX512 而另一些不支持,情况类似,但不需要像到 ARM 那么大的功夫。
最近在搞模型部署,用的芯片是 arm 的,之前测试用的是 x64 的,结果就是,虽然两者都是 linux 系统,但是很多东西都不通用,搞死我了😟
ilotuo
2021-08-28 11:44:20 +08:00
AI 芯片是属于 SIMT 架构吧. 和 pc 上的 cpu 不是一个东西
yolee599
2021-08-28 12:57:45 +08:00
一个 CPU 架构不会轻易出现,也不会轻易改变的。编译器的实现,烧录软件的实现,产品线(一个架构只有一款硬件,别人不敢用,用了容易被绑死),硬件烧录器,bsp 代码,社区,等,这些都需要考虑的。通常是在外设上添加功能模块,通过某种总线和 CPU 通信。AI 芯片也是在现有的 CPU 构架上添加 NPU 外设,通过某种方式和 CPU 通讯