System.Numerics.Vectors IsHardwareAccelerated返回false

时间:2017-02-22 10:14:37

标签: c# simd ryujit

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

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

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

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

此外,在应用配置中没有设置 useLegacyJit =" 1" ,没有 COMPLUS_useLegacyJit 环境变量或 useLegacyJit 在注册表中标记。

系统信息:

Windows 7专业版

Visual Studio Professional 2013

System.Numerics.Vectors v4.1.2.0

Intel Core i7 3740QM

1 个答案:

答案 0 :(得分:1)

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

您可以在VS中更改此项,方法是导航到“工具”|选项|调试|常规和取消选中"抑制模块负载的JIT优化(仅管理)"。

VS Debugger Options Dialog