3DNow、SSE等指令集提供了SIMD(单指令多数据流),同时进行4个数据的操作。Intel的C++/Fortran编译器也支持SIMD,确实可以提升3倍多的性能。在Mono中也有SIMD类,并可以找到相关的性能测试,好像只有微软的.net中没有原生支持SIMD。我查询了一些文章,有通过P/invoke调用Intel的KML中的dll来间接利用SIMD。有没有其它更好的方法,或者封装好的SIMD类库呢?请大家提点建议啊,谢谢。 如果在4核的CPU上利用SIMD+并行能提升10多倍的性能,那是相当可观的。(Fortran/C++中使用SIMD的编译参数+OpenMP,确实有很大的提升)
补充:
不知道XNA或者OpenCL.net中是否有利用SIMD的方法。.net下利用OpenCL也是生成C的代码再编译,有没有更好的符合C#使用习惯的方法呢?