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

时间:2013-10-22 13:22:16

标签: c# mono sse simd

我想知道自从它出现5(!)年以来Mono.SIMD(或Mono内部的SIMD支持)是否有任何开发。我个人认为这是提高c#速度的重要一步。但是,我已经使用了一段时间了,我觉得Mono.SIMD落后了,因为很多功能都缺失了。

我面临的一些问题包括:

  1. 缺少点积,自SSE4.1(2006年推出,现在支持70%的计算机)以来,可以在1次操作中实现,而在Mono.SIMD中需要3次操作。除此之外,程序员还必须为每个版本的SSE编写一个函数,这是JIT应该做的工作(因为它是专门为了让程序员不再担心CPU版本而创建的)。
  2. 不可能添加/乘以Vector4f和Vector4i(或任何其他不同的矢量)。
  3. 没有正确的向量投射(这些位似乎没有变化,所以结果很奇怪,几乎完全无用)。
  4. 许多未包含的其他功能,例如舍入。
  5. 那么,有没有人知道Mono.SIMD或SIMD支持是否正在发生某些事情(如果是这样的话)?或者,是否有人知道上述任何问题的良好解决方案?

2 个答案:

答案 0 :(得分:4)

AFAIR开发尚未进行中。该项目是开源的,机器不是太复杂,因此可以改进当前的实施。我考虑添加一些指令,但是,像往常一样,没有足够的时间来做到这一点(也最终取消了应用程序)。您可能有兴趣查看主题:http://lists.ximian.com/pipermail/mono-devel-list/2012-February/038632.html

答案 1 :(得分:1)

  

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

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

http://tirania.org/blog/archive/2008/Nov-03.html

似乎很匆忙,因此整体API设计仍有增长空间。

微软开始研究一个更加完整和标准化的支持SIMD的库,那是几年后的2014年,

https://www.infoq.com/news/2014/04/SIMD-CLR

因此,应该注意这个更新的选项。

微软在2015年开源.NET Core,从此加速了SIMD的工作。

去年,Mono 5.0宣布了Mono.SIMD的淘汰,转而支持微软的工作,

http://www.mono-project.com/docs/about-mono/releases/5.0.0/(SIMD加速支持部分)。