Is your feature request related to a problem? Please describe.
I think that the formula likwid-perfctr currently (5.5.1) uses to calculate the vectorization ratio on Intel x86 CPUs does not reflect what this metric is supposed to convey. Currently, the ratio tells what fraction of the floating-point instructions are of the vectorized type. IMO it should tell how much of the work is executed using vectorized instructions.
Describe the solution you'd like
Current formula for FP64 (for Intel CPUs):
100*(FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)/(FP_ARITH_INST_RETIRED_SCALAR_DOUBLE+FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)
Suggested formula:
100*(2*FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+4*FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+8*FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)/(FP_ARITH_INST_RETIRED_SCALAR_DOUBLE+2*FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+4*FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+8*FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)
Is your feature request related to a problem? Please describe.
I think that the formula likwid-perfctr currently (5.5.1) uses to calculate the vectorization ratio on Intel x86 CPUs does not reflect what this metric is supposed to convey. Currently, the ratio tells what fraction of the floating-point instructions are of the vectorized type. IMO it should tell how much of the work is executed using vectorized instructions.
Describe the solution you'd like
Current formula for FP64 (for Intel CPUs):
100*(FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)/(FP_ARITH_INST_RETIRED_SCALAR_DOUBLE+FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)Suggested formula:
100*(2*FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+4*FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+8*FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)/(FP_ARITH_INST_RETIRED_SCALAR_DOUBLE+2*FP_ARITH_INST_RETIRED_128B_PACKED_DOUBLE+4*FP_ARITH_INST_RETIRED_256B_PACKED_DOUBLE+8*FP_ARITH_INST_RETIRED_512B_PACKED_DOUBLE)