我目前正在用 C# 编写一个应用程序,该应用程序可以从使用 SSE 中受益匪浅,因为相对较小的代码片段会占用 90-95% 的执行时间。代码本身也非常适合 SSE(因为它是基于矩阵和向量的),所以我继续并开始使用 Mono.Simd,尽管这在执行时间上产生了显着差异,但这仍然不够。 Mono.Simd 的问题是它只有非常旧的 SSE 指令(我相信主要来自 SSE1 和 SSE2),这会导致点积(或标量/内积)占用 3 条指令,而它可以是使用 SSE4 仅用 1 条指令即可实现(并且由于 SSE4 自 2006 年以来就可用,因此我们可以放心地假设现在每台现代计算机都拥有它)。此外,根本不包含许多其他函数(例如,获取每个数字的绝对值,这也需要一个笨拙的解决方法)。
我的问题是,我可以从 C# 代码中调用其他库来使用 SSE/SIMD 吗?也可以在 C# 中使用内联汇编,所以显然我也可以使用 C++ 代码,尽管这会导致性能下降,但如果有人有一个相对易于使用的带有上述函数的 C++ 库,这是可以接受的我猜。
预先感谢您的任何帮助。
开源是啊!图书馆(我是其作者)提供 SIMD 优化的数据处理函数,并且可以通过官方绑定从 .Net 语言使用。它不仅支持 SSE,还支持即将推出的 Intel Haswell 处理器的 SIMD 扩展至 AVX2。该库会自动为其运行的处理器选择最佳版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)