NVIDIA喜欢搞一些封闭技术,比如说PhysX物理加速、CUDA并行计算等,都仅限自家显卡支持,不过在AMD老家德州举办的SC15高性能计算大会上,AMD做出了一个惊人的宣布,他们的显卡也可以支持CUDA了!
这是AMD Boltzmann Initiative计划的一部分,代号取自奥地利物理学家、哲学家、热力学、统计物理学路德维希·玻尔兹曼,现代GPU中也有应用他的成果。
该计划是AMD致力于高性能计算(HPC)、异构计算(HSA)所做的诸多努力,包含多个方面,我们这里重点看看和CUDA相关的。
首先,AMD宣布了一个异构计算编译器(HCC),单一编译环境统一支持ISO C++ 11/14、C14、OpenMP 4.0,而且是同时适用于CPU、GPU。
不过即便如此,AMD也只是做到和NVIDIA差不多的水平,而后者有开发者非常喜欢的CUDA。
为此,AMD又打造了一个“异构计算可移植界面”(HIP),也就是针对AMD GPU的CUDA编译环境,开发者可以将代码轻松移植过来。
开发者可以在HIP里得到和CUDA类似的编程语法,和大量的API指令,从而以类似CUDA的风格为AMD GPU编程。
此外它还包含一套工具集HIPify Tools,可以自动将CUDA代码转换成HIP代码。
关键的是,无论是转换来的还是原生的HIP代码,就可以分别利用HCC、NVCC编译器(利用HIP头文件增加支持HIP)为AMD、NVIDIA GPU进行编译了!
当然,AMD GPU是不可能直接运行编译好的CUDA程序的,后者仍然是NVIDIA的私有技术,但是有了HIP这种代码级别的转换,开发者可以轻松挖掘AMD GPU潜力了。虽然转换的效率总是不如原生的,但至少比没有强得多。
微软直接移植Android应用的努力归于失败,但是在高性能计算领域,开发者通常都是完全自己写自己的代码,并针对特定架构优化,所以HIP代码转换是十分有用的。
不过,AMD HIP能否随时跟上NVIDIA CUDA的最新技术特性还是个未知数,更关键的是NVIDIA对此怎么看?会不会告AMD侵权?
AMD的法律团队肯定研究过这个问题,尤其是Google就搞开源的CUDA编译器GPUCC。
反正,AMD说了,开发社区对HIP是非常非常欢迎的。