二、软件移植性差
在陈一峰看来,GPU编程最大的问题还在于几乎不可能实现的程序可移植性,“我们这段代码只是为这台16节点的机器编写,如果要跑在另外一台机器上面,几乎要重写程序。在标准CPU集群上我们有MKL TTF和FFTW,但在GPU上很难,问题非常复杂。”
确实如此,用户一般都不希望把代码绑定在某一套或某一家厂商的硬件平台之上,而是希望一次编写的软件包可以自适应多种GPU,适应不同时期,不同架构的硬件平台。软件不可移植意味着用户针对某个GPU平台编写的程序不能平滑地运行在其他GPU或CPU硬件平台上,用户在软件方面的投资就无法得到延续与保护。另外,从商业软件来看,传统高性能计算领域的很多软件都是为X86集群编写的,如何把它们移植到GPU平台上并保持高效率,也是用户最关心的问题之一。

其实,Nvidia早已经注意到了这一问题。Nvidia中国PSG销售经理谢强表示,为了支持其他CPU、GPU硬件平台,CUDA C/C++也开始提供多种调优工具,让开发人员将在CUDA平台上写的程序进行转换,从而运行在多核CPU和AMD的GPU上面。尽管这还无法一步到位地解决所有程序在异构平台之间平滑移植的挑战,但至少让用户看到了一线曙光。
