У меня возникла следующая проблема. Я хочу измерить gst_efficiency
и gld_efficiency
для моего приложения cuda, используя nvprof
. Документация распространяется с CUDA 5.0 говорит мне, чтобы генерировать их, используя следующие формулы для устройств с возможностью вычисления 2,0-3,0:вычисление gst_throughput и gld_throughput с помощью nvprof
gld_efficiency = 100 * gld_requested_throughput/gld_throughput
gst_efficiency = 100 * gst_requested_throughput/gst_throughput
Для требуемых показателей следующие формулы приведены:
gld_throughput = ((128 * global_load_hit) + (l2_subp0_read_requests + l2_subp1_read_requests) * 32 - (l1_local_ld_miss * 128))/gputime
gst_throughput = (l2_subp0_write_requests + l2_subp1_write_requests) * 32 - (l1_local_ld_miss * 128))/gputime
gld_requested_throughput = (gld_inst_8bit + 2 * gld_inst_16bit + 4 * gld_inst_32bit + 8
* gld_inst_64bit + 16 * gld_inst_128bit)/gputime
gst_requested_throughput = (gst_inst_8bit + 2 * gst_inst_16bit + 4 * gst_inst_32bit + 8
* gst_inst_64bit + 16 * gst_inst_128bit)/gputime
Поскольку нет формула приведена для используемых метрик. Я предполагаю, что это события, которые можно подсчитать с помощью nvprof. Но некоторые из событий, похоже, недоступны на моем gtx 460 (также пробовал gtx 560 Ti). Я вставил output из nvprof --query-events
.
Любые идеи, что происходит не так, или что я неправильно интерпретирую?
EDIT: Я не хочу, чтобы использовать CUDA Визуальная Profiler, так как я пытаюсь проанализировать мое приложение для различных параметров. Поэтому я хочу запустить nvprof
, используя несколько конфигураций параметров, записывая несколько событий (каждый в своем первом запуске), а затем выводит данные в таблицах. Я уже получил эту автоматизацию и работал для других показателей (т. Е. Инструкций) и хочу сделать это для повышения эффективности загрузки и хранения. Вот почему меня не интересует решение, связанное с nvvp
. Кстати, для моего приложения nvvp
не удалось вычислить показатели, необходимые для эффективности хранения, поэтому в этом случае мне это совсем не помогает.
Вы можете использовать Визуальный Profiler, который измеряет эти показатели непосредственно для вас, так что вам не нужно, чтобы собрать все эти события. –
@YuZhou, пожалуйста, см. Мой EDIT, спасибо – soriak
Возможно, имена событий в -query-событиях выглядят иначе, чем те, что указаны в таблице. Попробуйте следующие формулы: 'gld_throughput = ((128 * l1_global_load_hit) + (l2_subp0_read_sector_queries + l2_subp1_read_sector_queries) * 32 - (l1_local_ld_miss * 128))/gputime' ' gst_throughput = (l2_subp0_write_sector_queries + l2_subp1_write_sector_queries) * 32 - (l1_local_ld_miss * 128))/gputime' –