Я использую Intel VTune для профилирования моей программы.
Процессор, который я использую, это IVY Bridge.
Все события с инструкциями по аппаратному обеспечению можно найти здесь:
https://software.intel.com/en-us/node/589933
FP_COMP_OPS_EXE.X87
Число выполненных FP вычислений
цикл. Количество FADD, FSUB, FCOM, FMUL, целых MUL и IMUL,
FDIV, FPREM, FSQRTS, целочисленные DIV и IDIV. Это событие не
отличить FADD, используемый в середине трансцендентного потока от
s
FP_COMP_OPS_EXE.X87, кажется, включает в себя целочисленное умножение и целочисленное деление; тем не менее, там нет целочисленного сложения и целочисленного вычитания. Я не могу найти эти два вида инструкций ни с вышеуказанного сайта.
Может кто-нибудь сказать мне, что такое событие, которое учитывает инструкции сложения целых чисел и вычитания целых чисел?
Я много читаю на ваш вопрос, но здесь идет:
Возможно, что если ваш код ограничен в вычислительном отношении, вы можете найти способы вывести значение целочисленных сложений и подпрограмм без непосредственного их измерения. Например, UOPS_RETIRED.ALL - FP_COMP_OPS_EXE.ALL
даст вам очень приблизительную оценку дополнений и подпрограмм, предполагая, что вы уже что-то сделали, чтобы установить, что ваш код привязан к вычислениям.
А у тебя Если нет, то это может помочь начать с базового анализа VTune, а затем устранить узкие места в памяти, кеше и внешнем интерфейсе. Если вы уже сделали это, у вас есть еще несколько вариантов:
UOPS_DISPATCHED_PORT
с блок-схемой Ivy Bridge, или, что еще лучше, со списком того, какие конкретные типы арифметики могут выполняться на каких портах (которые я не могу найти).INST_RETIRED.ANY / CPU_CLK_UNHALTED
,Извините, что нет более прямого ответа.
Других решений пока нет …