HPC优化难题如何解之AMD篇
Doserv原创 Vicky Z 发表于:10年08月09日 09:29 [原创] 服务器在线
刘文卓先生:这个问题很好。在目前的计算机体系结构中,CPU核心速度最快,其次是二级缓存,然后是三级缓存,然后是内存,硬盘最慢,内存与缓存之间有着数量级上的速度差别。03年,AMD就推出了直连架构,就是为了提高内存的访问速度。直连架构、内存控制器对提升CPU的总体效能有很大帮助。
AMD在最新的12核处理器中将内存通道从原来的两个增加到了4个。要想提升浮点运算效能,就要把浮点运算单元中的管道尽量灌满,而内存通道越多它就灌得越快,算得也就越快。而如果用GPU加速运算,就会存在大量数据从CPU的主存复制到GPU的显存中的一个传输问题,它算完了还要复制回来,这个来回的传输比较占用时间。在现在体系结构上,把大规模的数据扔给GPU去算,要尽量让它算时间长一些再传回来,这样的模式会比较合算。因为如果传给GPU数据的时间超过了CPU自己算出结果的时间,那就不合算了。还有如果让它做迭代或递归这样的复杂计算也不行,为什么呢?我们都知道GPU是做流计算的,显示屏上的每个像素都是算出来的,而且每个像素之间都没有逻辑关系。所以GPU比较适合处理并行数据,就是那种没有横向相关性的数据和任务。比如像加密和解密这样的数据之间无逻辑关系的数据以及分子动力学的数据等等,都比较适合它来做计算。
现在AMD计划在台式机笔记本中推出的Fusion芯片会将CPU、GPU整合在一起,让它共享内存控制器。不是常规的通过PCI-E总线传数据,而是通过内存通道来传送数据,这样一来就可以解决刚才所说那个传输过程耗费时间的问题。我们现在做的第一个版本CPU和GPU的数据还是分开来存,第二版的Fusion将会把采用数据共享的方式,消除了数据拷贝的代价。,我们未来计划在服务器上也这么做。不过,服务器需要更好的稳定性还有OpenCL这样的开放环境,所以就比较复杂。
