0

我目前正在从事一个从 MathNet.Numerics 库切换到 System.Numerics.Vectors 库的项目。我想利用 SIMD 硬件支持。

应用程序的目标框架是 .NET 4.6.1,因此 RyuJIT 应该是默认的 JIT 编译器。UseRyuJIT在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework中设置为 1 。

但该System.Numerics.Vector.IsHardwareAccelerated属性仍然返回 false。

该应用程序在发布模式下运行,未选中 Prefer 32-Bit,平台目标是 AnyCPU(尽管我也尝试过 x64),启用本机代码调试已选中,当我从 Visual Studio 运行它并观看 Debug -> Windows -> Modules窗口我可以在列表中看到clrjit.dll。没有protojit.dll(我认为这是 CTP 版本名称)或compatjit.dll处于活动状态。

此外,在应用配置中没有设置useLegacyJit enabled="1" ,也没有在 regedit 中设置COMPLUS_useLegacyJit环境变量或useLegacyJit标志。

系统信息:

视窗 7 专业版

视觉工作室专业版 2013

System.Numerics.Vectors v4.1.2.0

英特尔酷睿 i7 3740QM

4

1 回答 1

1

当您从 Visual Studio 启动应用程序时,即使对于发布版本,默认设置也会禁用 jit 优化,并且还会禁用 SIMD 代码生成。

您可以在 VS 中更改此设置,方法是导航到 Tools | 选项 | 调试 | 常规并取消选中“在模块加载时抑制 JIT 优化(仅限托管)”。

VS 调试器选项对话框

于 2018-05-14T20:09:03.110 回答