Для запуска используйте 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