Вопрос или проблема
Предстоящая модернизация критически важной программы, которую я использую, потребует поддержки AVX2 и FMA3. Мой процессор Intel поддерживает AVX2, как указано в характеристиках моего ЦП (Intel(R) Core(TM) i7-4771 CPU @ 3.50GHz), но о FMA3 ничего не говорится.
Я случайно проверил другие более новые процессоры и не нашел упоминаний о FMA3.
Есть ли идеи, как определить, поддерживается ли FMA3? Является ли это частью AVX2? Или это настолько старая функция, что о ней никто не упоминает отдельно?
Запись в Википедии о наборе инструкций FMA должна рассказать вам все, что нужно знать.
Она начинается с определения:
Набор инструкций FMA является расширением 128- и 256-битных инструкций Streaming SIMD Extensions в наборе инструкций микропроцессора x86 для выполнения операций слияния умножения и сложения (FMA).
Позже приводится список всех ЦП, которые его поддерживают, как от AMD, так и от Intel. Важно для этого вопроса упоминание:
Процессоры Haswell (2013) и новее, за исключением Pentium и Celeron
Таким образом, ваш процессор Intel® Core™ i7-4771, будучи представителем семейства Haswell, был одним из первых ЦП от Intel, которые поддерживали его.
FMA3 не является “частью” Advanced Vector Extensions 2 (AVX2), но это современные функции. AVX2 и FMA3 были представлены в одном поколении ЦП Intel, но первая также доступна в более современных Celeron, как указано:
- Процессоры Haswell (Q2 2013) и новее, за исключением моделей с брендом Celeron и Pentium.
- Процессоры с брендом Celeron и Pentium, начиная с Tiger Lake (Q3 2020) и новее.
Основываясь как на ответе ChanganAuto, так и на комментарии Фрэнка Томаса – вы можете запросить информацию непосредственно у компьютера.
В Linux – lshw будет работать и покажет это как FMA (я не уверен, что будет показано как FMA4), а в Windows cpu-z или другие инструменты отобразят это.
На поддерживаемом процессоре 4-го поколения – Haswell Intel(R) Core(TM) i3-4010U это вывод lshw -c cpu
возможности: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm arat pln pts md_clear flush_l1d cpufreq
Вы не упомянули ОС – так что я приведу примеры результатов для Windows и Linux.
У меня есть n100s, работающие как на Linux, так и на Windows, и я могу подтвердить, что запись cpu-z для FMA3 соответствует тому, что lshw называет fma.
А вот соответствующий вывод lshw
Ответ или решение
Для определения наличия FMA3 на вашем процессоре, вы можете воспользоваться несколькими методами. Процессор Intel Core i7-4771, который вы упомянули, принадлежит архитектуре Haswell и, согласно спецификациям Intel, поддерживает FMA3. Тем не менее, для подтверждения этой информации вы можете использовать несколько программных инструментов.
1. Проверка спецификаций процессора
Сначала можно обратиться к официальной странице Intel, где указаны характеристики вашего процессора. Вы можете найти информацию о поддержке FMA3, просматривая строки о поддерживаемых инструкциях. Это также может быть подтверждено на Википедии в статье о наборе инструкций FMA.
2. Использование специализированных утилит
Если вам нужно проверить это программно, вы можете использовать следующие инструменты:
-
На Windows:
- Установите утилиту CPU-Z. Запустите её и перейдите на вкладку "CPU", где будет указано наличие FMA3 (обычно обозначаемое как "FMA").
-
На Linux:
- Используйте команду
lshw
. Это может выглядет следующим образом:sudo lshw -c cpu
В выводе вы сможете увидеть, есть ли поддержка FMA. Она будет представлена как "fma".
- Используйте команду
3. Проверка с помощью командной строки
Вы также можете использовать терминал Windows для проверки наличия FMA3 с помощью команды wmic
:
wmic cpu get caption, datawidth, addresswidth, version, name, manufacturer, processorid
Однако, эта команда не даст информацию о поддерживаемых инструкциях. Для лучшего результата используйте CPU-Z или аналогичные инструменты.
4. Различие между FMA3 и AVX2
FMA3 и AVX2 — это разные наборы инструкций, хотя они были представлены в одной архитектуре. AVX2 поддерживается более широким кругом процессоров, включая некоторые из бюджетных линейок, таких как Celeron и Pentium, начиная с Икаруса (Tiger Lake). Однако все процессоры Haswell (2013 года) и более поздние, за исключением Pentium и Celeron, поддерживают FMA3.
В заключение, стандартный способ проверки наличия FMA3 на вашем процессоре — это использование CPU-Z на Windows или команды lshw -c cpu
на Linux. Ваш процессор, Intel Core i7-4771, поддерживает FMA3, так как он относится к архитектуре Haswell.