.NETFramework 4.5是否提供SSE4/AVX支持?

.NETFramework 4.5是否提供SSE4/AVX支持?,.net,simd,.net-4.5,avx,sse4,.net,Simd,.net 4.5,Avx,Sse4,我想,我听说了,但不知道在哪里 upd:我讲过JiT不,在.NET中没有可以自己编写机器代码的场景。代码生成完全取决于即时编译器。它当然能够根据机器处理器的能力定制代码生成。ngen.exe必须始终在目标计算机上运行的一个重要原因。NET4.5中的不安是否经过调整以利用sse4或avx是一个悬而未决的问题,我还没有听到任何关于它的消息。我相当怀疑这一点,微软除了修复bug之外,并没有对这种不安进行太多的修补。非常不稳定,4.5不是并行版本 但是VC++确实有一个更新的C++代码生成器。它能够自动

我想,我听说了,但不知道在哪里


upd:我讲过JiT

不,在.NET中没有可以自己编写机器代码的场景。代码生成完全取决于即时编译器。它当然能够根据机器处理器的能力定制代码生成。ngen.exe必须始终在目标计算机上运行的一个重要原因。NET4.5中的不安是否经过调整以利用sse4或avx是一个悬而未决的问题,我还没有听到任何关于它的消息。我相当怀疑这一点,微软除了修复bug之外,并没有对这种不安进行太多的修补。非常不稳定,4.5不是并行版本

但是VC++确实有一个更新的C++代码生成器。它能够自动对循环进行矢量化,并使用SIMD/AVX指令来实现。这提到了它,一个简短的视频是


更新:目前在CTP中,代码名为RyuJIT,包括一些对SIMD指令的基本支持。SSE2类型,提供自动矢量化。然而,它与Microsoft.Bcl.Simd包和Vector类的关系非常紧密,对于Simd需要快速运行的16字节内存对齐要求,没有通用的解决方案

在上一次构建会议上宣布,更可能是富有成效的前进道路。它使用C++编译器的后端生成代码,自动受益于其内置的自动矢量化和自动并行化支持。否则,还没有明确解释内存对齐问题是如何解决的。它有自己的问题,反射很困难,目前只支持打包的应用程序,这种应用程序的运行时依赖关系可以提前确定。Windows应用商店和手机应用程序



更新:这是在.NET 4.6 System.Numerics.Vectors.dll程序集中提供的。请注意,框架中包含的是“安全”的,与MSDN文档不匹配,
Vector
缺失。Nuget软件包(版本4.1.0)确实匹配。

它似乎即将推出。(我一小时前才发现)

这里有几个链接

您需要最新版本的


(Nuget)

是的,您可以使用一些向量类型来确保在可用时使用硬件加速


你当然可以自己编写机器代码;将字节写入内存,然后对其调用
Marshal.GetDelegateForFunctionPointer
,以获取可以调用的委托。调用它的成本意味着它可能无法与Mono.Simd相比,但这肯定是可能的。@HansPassant