当前位置:  开发笔记 > 编程语言 > 正文

在c#中使用SSE有可能吗?

如何解决《在c#中使用SSE有可能吗?》经验,为你挑选了3个好方法。

我正在阅读有关c#代码优化的问题,一个解决方案是使用带有SSE的c ++.是否可以直接从ac#程序进行SSE?



1> Amir..:

即将推出的Mono 2.2版本将获得SIMD支持.Miguel de Icaza在这里写了关于即将推出的功能的博客,API就在这里.

虽然将有一个支持Microsoft .NET Windows运行时开发的库,但除非您在Mono运行时下运行代码,否则它将无法获得您所期望的性能优势.根据您的具体情况,这可能是可行的.

更新:Mono 2.2 发布


仅供参考,下一个运行时的最新版本是CTP4(如果我没记错的话),你可以在这里下载:http://blogs.msdn.com/b/clrcodegeneration/archive/2014/05/12/ryujit- ctp4-now-with-more-simd-types-and-better-os-support.aspx-代码向后兼容非CTP运行时,因此它仍然有效,它只是不会利用SIMD说明.

2> JaredPar..:

C#可以明确地进行SSE呼叫吗?

没有.C#不能产生内联IL更少的内联x86/amd64组装.

CLR,更具体地说是JIT,如果可以使用SSE,则无需在大多数情况下强制使用SSE.我说的最多,因为我不是SSE专家,我确​​信在某些情况下它可能是有益的,JIT不会进行优化.


@Konrad,查看David Notario的博客.他有一些关于CLR使用SSE2的细节.http://blogs.msdn.com/davidnotario/archive/2005/08/15/451845.aspx
我知道这是一个旧的响应,但实际上可以在C#中执行任意组装.您不需要不安全,也不需要后编译器.您需要代码权限才能调用Win32 VirtualAlloc.请参见http://stackoverflow.com/a/7964376/344638

3> KindDragon..:

SIMD for .NET将在不久的将来推出.此功能ATM需要RyuJIT(.NET的下一代JIT编译器).

您应该使用Microsoft.Bcl.Simd包中的Microsoft.Numerics.Vectors.Vector类来利用此功能.这里有示例代码.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有