C# Mono中的SIMD还有什么发展吗?

C# Mono中的SIMD还有什么发展吗?,c#,mono,sse,simd,C#,Mono,Sse,Simd,我想知道Mono.SIMD(或Mono内部的SIMD支持)自5(!)年前问世以来是否有任何发展。我个人认为这是提高c#的速度的一大步。然而,我已经使用它一段时间了,我感觉Mono.SIMD落后了,因为很多函数都丢失了 我面临的一些问题包括: 自SSE4.1(2006年推出,现在70%的计算机支持)以来,没有一个dot产品可以在1次操作中实现,而它在Mono.SIMD中需要3次操作。除此之外,程序员必须为每个版本的SSE编写一个函数,这是JIT应该做的工作(因为创建它是为了让程序员不再担心CPU版

我想知道Mono.SIMD(或Mono内部的SIMD支持)自5(!)年前问世以来是否有任何发展。我个人认为这是提高c#的速度的一大步。然而,我已经使用它一段时间了,我感觉Mono.SIMD落后了,因为很多函数都丢失了

我面临的一些问题包括:

  • 自SSE4.1(2006年推出,现在70%的计算机支持)以来,没有一个dot产品可以在1次操作中实现,而它在Mono.SIMD中需要3次操作。除此之外,程序员必须为每个版本的SSE编写一个函数,这是JIT应该做的工作(因为创建它是为了让程序员不再担心CPU版本)
  • 不可能将Vector4f和Vector4i(或任何其他不同的向量)相加/相乘
  • 没有正确的向量转换(比特看起来根本没有变化,所以结果非常奇怪,几乎完全没有用处)
  • 许多其他未包含的功能,例如舍入

  • 那么,是否有人知道Mono.SIMD或SIMD支持总体上是否出现了问题(如果是,是什么情况)?或者,有人知道解决上述问题的好方法吗?

    因为开发尚未进行。该项目是开源的,机器也不太复杂,因此可以改进当前的实现。我考虑过添加一些指令,但是,像往常一样,没有足够的时间这样做(应用程序最终也被取消了)。您可能对以下线程感兴趣:

    另一个答案是几年前提出的。因此,我写这篇文章是为了列出2018年读者需要的所有信息

    当Mono开始支持SIMD时,Unity的人要求他们

    它看起来很匆忙,所以整个API设计还有增长的空间

    微软开始开发一个更完整、更标准的支持SIMD的库,几年后的2014年

    因此,应注意这一新的选择

    微软于2015年开放了.NET内核的源代码,此后SIMD的工作得到了加速

    正是在去年,Mono 5.0宣布淘汰Mono.SIMD,支持微软的工作


    (SIMD加速支持部分)。

    SSE4.1中的Dot产品说明几乎毫无用处。在英特尔CPU上,它可以解码为4个微操作(单精度版本),而在最近的AMD CPU上,该指令是微代码。在.Net framework 4.6和4.5(用于向量运算的System.Numerics)中,自从RyuJIT与Microsoft.Bcl.Simd一起使用以来,Simd现在在本机上得到了.Net的支持。这可能会鼓励Mono团队跟随潮流?