Fur*_*may 5 .net c# clr mono intrinsics
我浏览.NET源代码并看到了这个属性.它说,
可以附加到JIT内部方法/属性的属性
并根据MSDN:
表示修改后的方法是实时(JIT)编译器可以执行特殊代码生成的内部值.这个类不能被继承.
但我有麻烦找怎么样.在什么样的代码上执行特殊的代码生成?
我的主要猜测是它主要使用像SIMD这样的处理器指令,就像 Java JIT那样.这是一个例子.我对它的加速感到好奇,我想知道Mono是否也这样做了.
Han*_*ant 15
这是针对RyuJIT特有的,这是微软目前正在开发的下一代64位抖动.仍然在alpha(又名CTP)中,下一版本的.NET和Visual Studio将被包含在内.目前可在.NET 4.6 Preview中使用.
RyuJIT的一个新功能是它能够生成SIMD机器代码,利用英特尔/ AMD处理器中的矢量化指令.在阵列上进行浮点运算的速度提高了x8倍.[JitIntrisic]属性是RyuJIT具有特殊内置知识的C#代码的标记,它将生成机器代码的SIMD版本而不是普通的非矢量化版本.
请记住,这距离当前C和C++编译器可以生成的代码类型还有一百万英里.RyuJIT只能为它知道的受膏类型做到这一点.与System.Numerics.Vector2一样.SIMD代码具有非常强大的对齐要求,效率很高,SSE2指令与16对齐,AVX指令为32.在.NET程序中进行这样的对齐将需要对CLR进行彻底检查,它目前只能在32位模式下与4对齐,在64位模式下为8.
长话短说:该如何你问的是抖动.Mono一直在修补自己的SIMD支持,它似乎已经在5年前陷入困境..NET Core最近刚刚宣布使用非常自由的MIT许可证开源,我假设(但不知道一个事实)这将包括RyuJIT的源代码.github项目现在正在进行中并且非常不完整.
更新:这使它成为.NET 4.6 RTM.Vector.IsHardwareAccelerated现在是内部的.只有System.Numerics.Vector2,Vector3和Vector4类型才能获得SIMD的喜爱.您可以从Nuget获得System.Numerics.Vectors版本4.1.0.0 .它暴露更多,包括Vector<T>.
| 归档时间: |
|
| 查看次数: |
1760 次 |
| 最近记录: |