Почему значение вычислительной пропускной способности отличается от фактической производительности/пиковой производительности?
Я хочу построить модель линии крыши для своих ядер. Итак, я запускаю ncu командой
ncu --csv --target-processes all --set линия крыши mpirun -n 1 ./run_pselinv_linux_release_v2.0 -H H3600.csc -file ./tmpfile
The roofline set
собирает достаточно данных для построения модели линии крыши. Но я не могу четко понять значение каждой метрики.
Собирается по метрикамsm__throughput.avg.pct_of_peak_sustained_elapsed
который . И я думаю, что это процент от пиковой производительности. Но когда я делюPerformance(6855693348.37)
по (5080428410372), я получаю0.13%
, что намного ниже, чем0.64%
.
Кроме того, я хочу собрать свои и в своем ядре, а не их пропускную способность.
Итак, мой вопрос:
Каково истинное значение
SM Throughput
иMemory Throughput
? Являются ли они процентом от и ? Кстати иPeak Traffic
являютсяPeak Performance
иPeak Bandwidth of DRAM
соответственно, да?Чтобы получить настоящее и
memory usage
моего ядра, я хочу умножитьCompute(SM) Throughput
иPeak Work
чтобы получить . Затем я умножаюreal time Performance
иelapsed time
чтобы получитьFLOPS
. Так же как и использование памяти. Верен ли мой метод?
Я искал этот вопрос в течение двух дней, но до сих пор не могу получить четкого ответа.
1 ответ
Я нахожу ответ на этот вопрос: Терминология, используемая в Nsight Compute Короче говоря,SM Throughput
иMemory Throughput
является максимумом ряда метрик соответственно. Так что я просто пытался понять их значение по названию, что совершенно неправильно.
Кстати, правильный способ сбора FLOPS и использования памяти вашей модели находится в этой лабораторной работе: Модель Roofline на графических процессорах NVIDIA Методика этой лабораторной работы
Время:
sm__cycles_elapsed.avg / sm__cycles_elapsed.avg.per_second
Флопы:
DP: sm__sass_thread_inst_executed_op_dadd_pred_on.sum + 2 xsm__sass_thread_inst_executed_op_dfma_pred_on.sum +sm__sass_thread_inst_executed_op_dmul_pred_on.sum
SP: sm__sass_thread_inst_executed_op_fadd_pred_on.sum + 2 xsm__sass_thread_inst_executed_op_ffma_pred_on.sum +sm__sass_thread_inst_executed_op_fmul_pred_on.sum
HP: sm__sass_thread_inst_executed_op_hadd_pred_on.sum + 2 x sm__sass_thread_inst_executed_op_hfma_pred_on.sum + sm__sass_thread_inst_executed_op_hmul_pred_on.sum
Тензорное ядро: 512 x sm__inst_executed_pipe_tensor.sum
Байты:
DRAM: dram__bytes.sum
L2: lts__t_bytes.sum
L1: l1tex__t_bytes.sum