Почему значение вычислительной пропускной способности отличается от фактической производительности/пиковой производительности?

Я хочу построить модель линии крыши для своих ядер. Итак, я запускаю 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%.

Кроме того, я хочу собрать свои и в своем ядре, а не их пропускную способность.

Итак, мой вопрос:

  1. Каково истинное значениеSM ThroughputиMemory Throughput? Являются ли они процентом от и ? Кстати иPeak TrafficявляютсяPeak PerformanceиPeak Bandwidth of DRAMсоответственно, да?

  2. Чтобы получить настоящее и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

Другие вопросы по тегам