CIL中有SIMD说明吗?

 手机用户2502870065 发布于 2023-01-17 10:33

当我们用C(或C++)编写时,我们可以使用内联汇编代码_asm.这使我们能够优化程序中一小部分高度使用的部分,以利用汇编SIMD指令.大多数情况下我们不需要它,但是,例如,视频处理,加密/解密和数学算法将充分利用它们.在某些情况下,一些编译器(我确定gcc)甚至可以使用SIMD指令来处理普通代码,所以即使我们不知道它们的存在,我们也会使用它们.

从我天真的角度来看,在CIL中支持它们应该非常简单(在极少数情况下回退到软件实现它们不受支持).不同的故事是用C#公开它们(例如),但是对于这种专门的功能,即使一个msil块(类似_asm)也会很好用.

所以我的问题是:在ECMA 335中,我没有找到任何内容,但MSIL中的SIMD指令是否有任何(记录或未记录的)支持?

我不认为它们在JIT编译器生成的内容中使用,而是在我的.NET应用程序中明确使用它们的机制.当然,我可以用所有这些算法编写C++/CLI程序集,只需在我的.NET应用程序中使用它们,但我会避免使用混合模式程序集来保持应用程序完全可验证(并且不为不同的体系结构提供不同的程序集).

即使是最肮脏的技巧也是受欢迎的,因为它必须在很少的专门功能中使用.

我知道存在支持Microsoft SIMD的矢量类型,它们是一件好事但是(1)我不是在寻找外部库而且我绝对不想部署测试版JIT,(2)他们仅针对Windows 8 64位,(3)到目前为止,SIMD支持非常小(如果我需要这个,那么我希望它全部,脏和快).

1 个回答
  • 我担心CIL级别没什么.

    正如您所指出的,Microsoft正在向未来版本的.NET提供SIMD支持.

    如果你可以使用Mono,它有一段时间的SIMD支持(目前与Microsoft.Bcl.Simd API不兼容).

    .NET和Mono都有一个共同的方法,JIT内在函数与标准的IL实现.

    2023-01-17 10:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有