在C#中使用SSE

me *_* me 4 c# sse simd

我目前正在使用C#对应用程序进行编码,因为相对较小的代码会导致90-95%的执行时间.代码本身也非常适合SSE(因为它是矩阵和基于矢量的),所以我继续开始使用Mono.Simd,尽管这在执行时间上有显着差异,但这仍然不够.Mono.Simd的问题在于它只有非常旧的SSE指令(主要来自SSE1和SSE2,我相信),这导致dotproduct(或标量/内积)例如占用3条指令,而它可以是仅在一条指令中使用SSE4实现(并且自2006年以来SSE4可用,可以安全地假设现在每台现代计算机都有它).此外,根本不包括许多其他功能(例如,获取每个数字的绝对值,这也需要一个笨拙的解决方法).

我的问题是,我可以在我的C#代码中调用任何其他库来使用SSE/SIMD吗?也可以在C#中使用内联汇编,所以显然我也可以使用C++代码,即使这会导致性能损失很小,但如果有人会有一个相对易于使用的C++库,那么这是可以接受的我猜.

在此先感谢您的帮助.

Mar*_*han 12

开源的Yeppp!库(我是作者)提供了SIMD优化的数据处理功能,可以通过官方绑定从.Net语言中使用.它不仅支持SSE,还支持即将推出的Intel Haswell处理器的AVX2以后的SIMD扩展.库自动为其运行的处理器选择最佳版本.