Согласно определению flop_sp_efficiency
Соотношение достигнутых и максимальных операций с плавающей запятой одинарной точности
Руководство CUDA охватывает FLOPS, здесь .Коэффициент метрической доходности, например, 10%.Это поднимает два вопроса о термине «пик»:
1- Это аппаратное значение?Следовательно, nvprof должен знать, что для того, чтобы рассчитать соотношение и знаменатель должен быть постоянным для всех приложений, запущенных на конкретном устройстве?Согласно инструкции, это No_CUDA_cores * Graphic_clock_freq * 2
.Это способ, которым nvprof устанавливает знаменатель?
2 - Означает ли это, что пиковое значение достигается во время выполнения программы на ядро?Предположим, ядро вызывается 10 раз.Один вызов имеет самые высокие значения FLOPS (не имеет отношения к аппаратному значению), например, 2GFLOPS.Затем эффективность вычисляется как sum(FLOPS_i)/10
, что дает среднее значение FLOPS из 10 вызовов, а затем это среднее значение делится на 2, и это дает эффективность FLOPS для этого ядра.При таком предположении ядро может достигать 2 GFLOPS, тогда как другое ядро может достигать 4 GFLOPS.Я говорю это, потому что метрика сообщается для каждого ядра в nvprof.
Любой комментарий по этому поводу?