gpt4 book ai didi

c# - CIL中有SIMD指令吗?

转载 作者:太空狗 更新时间:2023-10-29 21:39:21 24 4
gpt4 key购买 nike

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

从我天真的观点来看,在 CIL 中支持它们应该很容易(在极少数情况下它们不受支持)。不同的故事是在 C# 中公开它们(例如),但对于这样的特殊功能,即使是 msil block (类似于 _asm)也能很好地工作。

所以我的问题是:在ECMA 335除了在 MSIL 中是否有对 SIMD 指令的任何(已记录或未记录的)支持,我没有找到任何东西?

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

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

我知道 Microsoft SIMD-enabled Vector Types 的存在,它们是很棒的东西,但是(1)我不是在寻找外部库,我绝对不想部署测试版 JIT,(2)它们仅针对 Windows 8 64 位,(3)到目前为止 SIMD支持非常小(从我的 POV 来看,如果我需要它,那么我想要它,肮脏和快速)。

最佳答案

恐怕在 CIL 级别上什么都没有。

如您所述,Microsoft 正在推进对 .NET future 版本的 SIMD 支持。

如果你能用Mono,它有一些SIMD support一段时间(目前与 Microsoft.Bcl.Simd API 不兼容。

.NET 和 Mono 在这里共享一个通用的方法,即 JIT 内部结构和标准 IL 实现。

关于c# - CIL中有SIMD指令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23443358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com