Я пишу программу на C, которая выполняет умножение матрицы 50x50.Почему перфект показывает меньше событий с плавающей запятой, чем ожидалось?
Я скомпилировал его для сборки, и я вижу, что он имеет как минимум 2 команды с плавающей запятой (mulsd и addedd) в самом внутреннем цикле. Цикл выполняется 125000 раз, поэтому я ожидал, что perf stat
даст мне как минимум 250000 операций с плавающей запятой.
Однако, когда я запускаю следующую команду,
perf stat -e r530110 -e r531010 -e r532010 -e r534010 -e r538010 ./matmul
я только получить следующие счетчики
448 r530110
0 r531010
0 r532010
0 r534010
<not counted> r538010
0.001082287 seconds time elapsed
Мой компилятор не дает инструкции SSE, так что другие нулевые отсчеты, как ожидается. Тем не менее, я получил только 448 операций с плавающей запятой.
Что происходит?
Просьба представить минимальный пример и дать нам код сборки. Если вы это сделаете, вы, скорее всего, ответите на свой вопрос. –
Также уточните заголовки: что такое «подозрительный»? :-) Я пробовал редактировать его, чтобы улучшить. –