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 при загрузке модуля (только для управляемого)".