Как проверить инструкции AVX-512 без поддерживаемого оборудования?

Я пытаюсь изучить новые инструкции x86-64 AVX-512, но ни один из моих компьютеров не поддерживает их. Я пробовал использовать различные дизассемблеры (от Visual Studio до онлайн: 1, 2), чтобы просмотреть инструкции для конкретных кодировок кода операции, но я получаю несколько противоречивые результаты. Кроме того, было бы неплохо запустить несколько инструкций и увидеть их фактический результат.

Поэтому мне интересно, есть ли онлайн-сервис, который позволяет скомпилировать небольшой (x86-64) ассемблерный код и запустить его или выполнить его на конкретном процессоре? (Скажем, Intel Sandy Bridge, Cannon Lake и т. Д.)


person MikeF    schedule 12.08.2018    source источник


Ответы (2)


Для запуска используйте Intel® Software Development Emulator, также известный как SDE исполняемый файл на эмулируемом процессоре, который поддерживает будущие наборы инструкций. Это бесплатное программное обеспечение (не с открытым исходным кодом, а для бесплатной загрузки), оно доступно для Linux, Windows и, я думаю, также для OS X.

https://software.intel.com/en-us/articles/debugging-applications-with-intel-sde содержит пошаговые инструкции по отладке с его помощью в Windows или Linux: SDE может работать как удаленный GDB, поэтому вы можете запустить sde -debug -- ./your-program, а затем в другой терминал запускает gdb ./your-program и использует target remote :portnumber для подключения к процессу SDE, чтобы вы могли устанавливать точки останова и пошагово.


Вы могли бы сделать то же самое с QEMU, если бы они добавили поддержку эмуляции AVX512. QEMU также может выступать в роли удаленного GDB.

QEMU определенно имеет настраиваемый набор инструкций, например вы могли бы сказать ему эмулировать x86 с AVX, но не с AVX2 (например, Sandybridge). SDM, вероятно, может сделать то же самое.

Вы даже можете сказать ему эмулировать то, чего вы не найдете на реальном оборудовании, например AVX2, но не BMI1 / 2, если хотите убедиться, что ваши проверки CPUID не предполагают, что что-либо подразумевает что-то еще, что не гарантировано.


Помните, что оба они по сути бесполезны для тестирования производительности, только для правильности вашей векторизации. IACA может быть полезен, чтобы получить представление о производительности. на SKX, но он далек от совершенства и совсем не моделирует узкие места в памяти. (Только реальный конвейер с некоторой степенью детализации.)

person Peter Cordes    schedule 12.08.2018
comment
Ага, про эмулятор тоже думал. Я могу попробовать. Хотя это довольно ограничительно. Пошаговое выполнение кода с помощью отладчика было бы моим оптимальным решением. Что касается других онлайн-дизассемблеров, как показывает мой опыт, большинство из них работают на процессорах, не поддерживающих AVX512. Мне нужно узнать, есть ли у Amazon или Microsoft Azure план, поддерживающий аренду ЦП по низкой цене. (как предположил Ханс Масгрейв.) - person MikeF; 12.08.2018
comment
@MikeF: Мой ответ показывает, как можно пошагово выполнить эмулированный код с помощью отладчика. (Или, по крайней мере, ссылки на статью Intel о том, как это сделать в Windows. Я процитировал только часть Linux, потому что это пара простых команд.) - person Peter Cordes; 12.08.2018
comment
@MikeF: Если вам буквально нужен дизассемблер, используйте objdump -drwC -Mintel или Agner Fog's objconv для преобразования машинного кода в текст asm. Ваш ЦП не должен поддерживать AVX512 для работы дизассемблера, никакой эмуляции или чего-то еще. Или, если вы компилируете C или C ++, используйте godbolt.org, чтобы получить вывод asm из компилятора напрямую, без создания исполняемый файл, а затем его дизассемблирование. например godbolt.org/g/YsVuAX содержит несколько примеров функций с выводом компилятора из gcc, clang и MSVC. - person Peter Cordes; 12.08.2018
comment
Спасибо, Питер. И нет, мне просто дизассемблер не нужен. (Я могу получить их из многих источников.) Я хотел протестировать выполнение этих инструкций AVX512 на реальном оборудовании. В настоящее время я пытаюсь установить виртуальную машину Windows 10 в 30-дневную бесплатную пробную учетную запись Azure. Если у него нет процессора, поддерживающего AVX-512, я более внимательно посмотрю на предложенный вами эмулятор. Я ценю все ваши предложения! - person MikeF; 12.08.2018
comment
@MikeF: Вы делаете это для тестирования производительности? В вашем вопросе этого не говорится, поэтому бесплатный эмулятор, который вы можете запустить на своем рабочем столе для пошагового кода AVX512, мне кажется намного лучше. - person Peter Cordes; 12.08.2018
comment
Я просто хочу узнать об этих новых инструкциях для AVX-512. Они добавили кучу новых кодировок (с префиксом EVEX), которые трудно понять, просто прочитав документацию Intel. Итак, понимаешь, мне всегда было легко сначала прочитать документацию, а затем запустить несколько тестов. Так что пока это моя главная цель. - person MikeF; 12.08.2018
comment
@MikeF: Это именно то, что вы можете делать с эмулятором, как объясняется в моем ответе, без необходимости подключения удаленного рабочего стола к облачной виртуальной машине для запуска там отладчика. Вот так я узнал AVX512. (На самом деле я потратил больше времени, просто глядя на сгенерированный компилятором asm для вещей, которые я пробовал с внутренними функциями; я думаю, что на самом деле я запускал что-то в SDE только один или два раза. использовать маскировку и широковещательную загрузку, а также переопределения режима округления.) - person Peter Cordes; 12.08.2018
comment
Да, это именно то, чему я пытаюсь научиться. Спасибо. Хотя я на винде. Могу ли я использовать его с Visual Studio, вы знаете? - person MikeF; 12.08.2018
comment
@MikeF: IDK, прочтите официальные документы Intel, на которые я ссылался. У них есть раздел Windows. Я так полагаю, что Intel обычно заботится о Windows не меньше, чем о Linux. Но я не использую Windows, поэтому я не читал эту часть. - person Peter Cordes; 12.08.2018

Существуют онлайн-инструменты, которые позволяют вам хотя бы выбрать другую сборку. диалекты, но я не вижу ничего, что поддерживает Xeon Phi или Skylake. Однако компиляторы Intel C ++ и Fortran поддерживают кросс-компиляция для этих дополнительных архитектур. Похоже, вы используете Windows, и это напрямую поддерживается.

Дополнительный способ будет включать аренду для игры экземпляра AWS EC2 C5, изначально поддерживающего AVX-512. В целях обучения это можно сделать всего за 0,085 доллара в час для зарезервированного экземпляра или 0,0185 доллара в час, если вас устраивает спотовая цена.

person Hans Musgrave    schedule 12.08.2018
comment
Привет спасибо. Ваша идея с AWS звучит очень интересно. Хотя раньше никогда с ними не сталкивался. Откуда вы все эти цены берете? А также что такое спотовое ценообразование? - person MikeF; 12.08.2018
comment
Цены меняются со временем, но эта ссылка должна оставаться актуальной. Спотовые инстансы отличаются от инстансов по требованию тем, что вам не обязательно сразу выделять машину. Amazon использует их, чтобы заполнить пробелы в обычном использовании, и готов предложить скидку, поскольку что-то лучше, чем ничего (при условии, что это что-то превышает их операционные издержки). Для вашего тестирования, вероятно, не требуется много ресурсов или постоянного хранилища между экземплярами на их машинах, поэтому самый дешевый вариант должен работать нормально. - person Hans Musgrave; 12.08.2018
comment
Изучая ваш комментарий по другому ответу, AWS - это Amazon, а у Azure есть аналогичный продукт с AVX-512. Их цены конкурентоспособны и не превышают точечные экземпляры, но легко опережают продукты AWS по запросу. - person Hans Musgrave; 12.08.2018
comment
Ага, спасибо. Попробую покопаться. Пока все очень запутанно. Позвольте мне попытаться понять это прямо. Я бы арендовал виртуальную машину, на которую я мог бы установить, скажем, Windows, а затем удаленно, не так ли? Если да, то это было бы неплохо, поскольку я могу запустить на нем удаленный отладчик с помощью Visual Studio. Что меня смущает, так это их названия в том списке, который вы связали. Скажите t1.micro, t2.small и так далее - миллион вещей в этом списке. Также как мне выбрать, на каком процессоре он будет работать? - person MikeF; 12.08.2018
comment
Эти облачные сервисы излишне сложны. Вы арендуете виртуальную машину и можете выбрать, что это за виртуальная машина (например, Windows). Вам не нужно устанавливать ОС. Вам нужно будет копаться в документации, чтобы проверить тип процессора, или вы можете поверить мне на слово, что Amazon хвастается AVX512 в экземплярах C5 и что Microsoft хвастается этим в своих экземплярах Fv2. Оба провайдера используют процессоры Skylake с более новой версией набора инструкций AVX512. Чтобы выбрать, например, какой тип экземпляра C5 вы хотите, вам нужно будет сравнить другие его свойства, такие как RAM. Самый дешевый должен работать - person Hans Musgrave; 12.08.2018
comment
Они поддерживают так много сервисов, что документация требует некоторого времени, пока вы к ней не привыкнете. Дошло до того, что знание AWS становится действительно полезным навыком. - person Hans Musgrave; 12.08.2018
comment
Вы делаете ставку! Привет, я только что заметил, что Azure поддерживает бесплатную учетную запись в течение 30 дней. Это может быть все, что мне нужно. Как вы думаете, стоит ли попробовать подписаться на это? Или они запускают эти бесплатные учетные записи на некоторых недостаточно мощных процессорах? - person MikeF; 12.08.2018
comment
Обычно бесплатные учетные записи ограничиваются формой микроэкземпляра, при этом точная терминология различается у разных облачных провайдеров. У них обычно достаточно часов, чтобы вы могли запускать его постоянно весь месяц бесплатно. В любом случае вы платите только за свое использование (без ежемесячной платы), поэтому для отладки и игры с набором инструкций AVX-512 вы, вероятно, получите меньше доллара, особенно если вы знакомы с другими наборами инструкций SIMD. - person Hans Musgrave; 12.08.2018
comment
Ганс, я только что завершил настройку 30-дневной бесплатной учетной записи Azure. Вот что я нашел. Их стандартная обычная виртуальная машина с клиентской версией Win10 была установлена ​​на Intel(R) Xeon(R) CPU E5-2673 v3, который является процессором Haswell, не поддерживающим AVX512. Поэтому мне пришлось использовать их F2s_v2 стандартный Compute optimized план и ОС Win10 Datacenter Server, которая была установлена ​​на Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz, которая поддерживала AVX512F. (бит 16) и AVX512VL (бит 31), но не поддерживал AVX512_IFMA (бит 21). Затем я мог удаленно подключиться к нему с помощью отладчика VS. - person MikeF; 12.08.2018
comment
Я не уверен, позволят ли они мне использовать его бесплатно в течение следующих 30 дней, но, помимо того, что на настройку ушло несколько часов, это способ запустить мои тесты на реальном (хотя и на виртуальной машине) аппаратное обеспечение. Теперь я попробую прочитать официальный документ эмулятора Intel, который Питер Кордес предложил в другом посте. Может, это более простое решение. - person MikeF; 12.08.2018