Проверка флагов даст вам четкий ответ, тогда как проверка производительности (в частности, если программная проверка результата) будет иметь некоторая неопределенность. Для какой характеристики характеристики является гиперпотоковая (HT) подпись, которую мы будем тестировать? HT обеспечивает лучшую производительность, когда потоки выполняют другую работу, где разные определяются на основе микроархитектуры. Напротив, отдельные ядра имеют небольшую корреляцию производительности из-за выполнения кода на каждом ядре (некоторые факторы все еще существуют как пропускная способность памяти или общие кэши).
Существует множество комбинаций, для которых вы можете проверить; Я опишу одно возможное решение здесь. Предполагая, что система имеет по крайней мере два ядра, которые также могут включать HT. Это представляет собой 4 логических процессора (LP), по которым могут быть запланированы потоки. Создайте однопоточную программу, которая может подчеркнуть ресурсы одного ядра. Теперь дублируем эту работу, чтобы у нас было два потока, которые могут работать независимо. Чтобы затем проверить производительность, задайте аффинность планирования потоков к различным парам LP в системе. Затем измерьте производительность для работы на разных парах. Дроссельная пара даст отличную производительность, чем объединение отдельных ядер.
При написании теста производительности у вас есть обычные проблемы с измерением производительности. Имеет ли механизм измерения необходимую гранулярность? Изменена ли переменная, которую вы тестируете (HT против ядра), но нет других переменных? Например, кеш в одном состоянии перед каждым тестом? Или, если некоторые ядра разделяют кеши, значит, спаривание их в тесте даст отличную производительность от других пар? Теперь, если вы все это сделаете, вы должны увидеть разные результаты в зависимости от того, какая пара LP вы запланировали для своей работы.
Более точно: Как обнаружить наличие HT без флагов чтения? –