8

我想知道自从 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. 还有很多其他功能没有包括在内,例如四舍五入。

那么,有谁知道 Mono.SIMD 或 SIMD 支持是否发生了一般情况(如果是,是什么)?或者,有没有人知道解决上述任何问题的好方法?

4

2 回答 2

4

AFAIR 开发没有进行中。该项目是开源的,并且机制不是太复杂,因此可以改进当前的实施。我考虑过添加一些说明,但是像往常一样,没有足够的时间来做这件事(申请最终也被取消了)。您可能有兴趣查看该线程: http: //lists.ximian.com/pipermail/mono-devel-list/2012-February/038632.html

于 2013-10-22T15:18:51.410 回答
2

另一个答案是几年前提出的。因此,我写这篇文章是为了列出 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加速支持部分)。

于 2018-01-05T01:58:54.557 回答