System.Numerics.Vectors IsHardwareAccelerated возвращает false

В настоящее время я работаю над проектом, который переключился с библиотеки MathNet.Numerics на библиотеку System.Numerics.Vectors. Я хочу использовать аппаратную поддержку SIMD.

Целевой структурой приложения является.NET 4.6.1, поэтому RyuJIT должен быть компилятором JIT по умолчанию. UseRyuJIT имеет значение 1 в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework.

Но System.Numerics.Vector.IsHardwareAccelerated свойство по-прежнему возвращает false.

Приложение работает в режиме Release, Prefer 32-Bit не проверяется, целью платформы является AnyCPU (хотя я также пробовал x64), проверяется включение отладки собственного кода, и когда я запускаю его из Visual Studio и наблюдаю отладку -> Windows -> Модули В окне я вижу clrjit.dll в списке. Нет protojit.dll (я думаю, что это было имя версии CTP) или compatjit.dll активен.

Кроме того, в конфигурации приложения не задано значение useLegacyJit enabled="1", нет переменной среды COMPLUS_useLegacyJit или флага useLegacyJit в regedit.

Системная информация:

Windows 7 Профессиональная

Visual Studio Professional 2013

System.Numerics.Vectors v4.1.2.0

Intel Core i7 3740QM

1 ответ

При запуске приложений из Visual Studio настройка по умолчанию, даже для сборок релизов, отключит оптимизацию jit, а также отключит генерацию кода SIMD.

Вы можете изменить это в VS, перейдя в Инструменты | Варианты | Отладка | Общий и снятый флажок "Подавить оптимизацию JIT при загрузке модуля (только для управляемого)".

VS Debugger Options Dialog

Другие вопросы по тегам