Как транзакции L2 отображаются на DRAM в графических процессорах? - PullRequest
0 голосов
/ 23 мая 2018

В графических процессорах транзакции в кэш L2 могут иметь размер 32B, 64B или 128B (как для чтения, так и для записи).И общее количество таких транзакций можно измерить с помощью таких метрик nvprof, как gst_transactions и gld_transactions.Однако я не могу найти какой-либо материал, который подробно описывает, как эти транзакции отображаются для доступа DRAM, то есть, как эти транзакции обрабатываются DRAM, который обычно имеет другую ширину шины?Например, графический процессор TitanXp имеет 384-битную шину глобальной памяти, а P100 имеет 3072-битную шину памяти.Так как же инструкции 32B, 64B или 128B отображаются на эти шины памяти?И как я могу измерить количество транзакций, генерируемых контроллером DRAM?

PS: метрика dram_read_transactions, похоже, не делает этого.Я говорю это потому, что получаю одно и то же значение для dram_read_transactions на TitanXp и P100 (даже при последовательном доступе), несмотря на то, что эти два устройства имеют разную ширину шины.

1 Ответ

0 голосов
/ 23 мая 2018

Хотя GPU DRAM может иметь разную (аппаратную) ширину шины для разных типов графических процессоров, шина всегда состоит из набора разделов, каждый из которых имеет эффективную ширину 32 байта.Транзакция DRAM с точки зрения профилировщика фактически состоит из одной из этих 32-байтовых транзакций, а не транзакции на полной "ширине шины".

Следовательно, (одиночная) 32-байтовая транзакция для L2, если она отсутствует вL2 преобразуется в одну 32-байтовую транзакцию DRAM.Транзакции с более высокой степенью детализации, такие как 64-байтовые или 128-байтовые, преобразуются в необходимое количество 32-байтовых транзакций DRAM.Это можно обнаружить с помощью любого из профилировщиков CUDA.

Эти связанные вопросы здесь и здесь также могут представлять интерес.

Обратите внимание, что«эффективная ширина» 32 байта, как использовано выше, не обязательно означает, что транзакция требует 32-байтового * 8 бит / байт = 256-битный интерфейс.Шины DRAM могут быть «с двойной накачкой» или «с четырьмя накачками», что означает, что транзакция может состоять из нескольких битов, передаваемых на «провод» интерфейса.Поэтому вы найдете GPU, которые имеют только 128-битный (или даже 64-битный) интерфейс с GPU DRAM, но «транзакция» на этих шинах будет по-прежнему состоять из 32 байтов, что потребует передачи нескольких битов(вероятно, в нескольких тактовых циклах шины DRAM) на «провод» интерфейса.

...