red*_*alx 12 .net simd vectorization auto-vectorization ryujit
新的RyuJIT编译器是否曾生成向量(SIMD)CPU指令,何时?
附注:System.Numerics命名空间包含允许显式使用Vector操作的类型,这些操作可能会也可能不会生成SIMD指令,具体取决于CPU,CLR版本,JITer版本,是否直接编译为本机代码.这个问题具体是关于何时非矢量代码(例如在C#或F#中)将产生SIMD指令.
Han*_*ant 12
RuyJIT中的SIMD代码生成严格限于System.Numerics.Vectors命名空间中的类型.通用SIMD支持需要对CLR进行非常重要的修订,这样的代码只有在SIMD变量正确对齐时才有效.SSE2至少为16,能够使用AVX2为32,即将到来的AVX-512为64.
现在还远远不够,32位CLR只能对应4位,64位版本只能为8.对于resp 32位和64位代码,"自然"对齐.所需的更改将影响CLR的每个部分,垃圾收集器和类加载器.关于这样一个重大变化的问题没有得到考虑.并且没有迹象表明它在CoreCLR项目中被考虑过,它将是最明显的目标版本.
如果您希望利用SIMD超出System.Numerics.Vectors中的当前支持,那么可以使用C++编译器,使用C++/CLI或C++/CX语言扩展来互操作.
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |