用GPU实现网络运算

2009年06月01日

最近看到RMI新发布的XLP集成了POE,我忽然联想到,在图形运算领域,也存在一个order的问题——Vertex order。如果能够把Packet与Vertex进行映射,那么,通过GPU实现网络事务处理就是有可能的。

 

这是个有意思的设想。图形处理中,Vertex的顶点数据与网络中的Packet类似,只不过实现的功能不同罢了。从理论上看,两者间是有可能映射的。问题在于如何进行编译,以及针对GPU的流水线进行调度优化。GPU内部,完全是并行的思想。因为要进行大量的矩阵运算,所以采用了超大规模的SIMD结构,这一点网络处理器似乎也可借鉴。但是一旦Larrabee推出,很多问题就会迎刃而解。Larrabee拥有16个P55C内核,采用了顺序执行的方式,通过多个内核间的并行,可以实现大规模的SIMD运算。而P55C是x86 ISA,所以Larrabee是典型的x86架构的向量机。

不过,GPU的流水线功能设计相对固定,尤其是Vertex处理阶段,相当于把算法固化在硬件里面。如何把Packet处理流程高效地程映射到GPU的流水线,是难点所在。一旦实现了映射,GPU带来的好处是显而易见。现在ATi和nVIDIA都提供了支持OpenCL标准的开发包,OpenCL也逐渐被大家认可。在这个相对通用的环境下进行开发,肯定比专用环境来得快,开发人员的规模也要大许多,还不用为未来移植的问题费心。此外,GPU本来就被设计为应付超高吞吐,又有超强的order性能,一旦实现映射,网络处理能力想必非常强大。最后一点,GPU的量摆在那里,成本优势和快速升级带来的性能提升都是网络处理器无法比拟的。

我对网络处理器的工作机制不是特别清楚,无法亲手验证GPU上实现Packet与Vertex处理的映射。期待着,能有人在这方面做出突破。

观点 GPU,nVIDIA,ATi,Intel,Larrabee,x86,SIMD

  1. avatar
    tedazf
    June 3rd, 2009 at 8:04 am
    好巧啊,今天导师给我提供了一个博士课题,问我是否感兴趣,就是用GPU来解决SAT问题。似乎这个现在很流行啊!
 
点击换一张验证码