У меня возникла следующая проблема. Я хочу измерить gst_efficiency
и gld_efficiency
для моего приложения cuda, используя nvprof
. В документации, распространяемой с cuda 5.0, говорится, что я могу их сгенерировать, используя следующие формулы для устройств с вычислительными возможностями 2.0-3.0:
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). Я вставил вывод nvprof --query-events
.
Есть идеи, что происходит не так или что я неправильно интерпретирую?
РЕДАКТИРОВАТЬ: Я не хочу использовать CUDA Visual Profiler, так как я пытаюсь проанализировать свое приложение по различным параметрам. Поэтому я хочу запустить nvprof
, используя несколько конфигураций параметров, записывая несколько событий (каждое за один прогон), а затем выводить данные в таблицах. Я уже автоматизировал это и работаю над другими показателями (например, с выпущенными инструкциями) и хочу сделать это для эффективности загрузки и хранения. Вот почему меня не интересуют решения, связанные с nvvp
. Между прочим, для моего приложения nvvp
не удается вычислить метрики, необходимые для эффективности магазина, поэтому в данном случае это мне совсем не помогает.
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
- person Yu Zhou   schedule 27.03.2013