2015-03-18 5 views
0

У меня был эксперимент как на GTX760 (Kepler), так и на GTX750Ti (Maxwell) с использованием тестов (Parboil, Rodinia). Затем я проанализировал результаты с использованием визуализатора профилей Nvidia. В большинстве приложений число глобальных инструкций чрезвычайно велико в 7-10 раз по архитектуре Максвелла.* Модифицировано * Nvidia Maxwell, увеличено количество команд глобальной памяти

спецификация. для обеих графических карт

GTX760 2048MB 256bit 6.0Gbps 192,2 Гб/с

GTX750Ti 5.4Gbps 2048Mb 128bit 86.4Gb/с

Ubuntu 14.04

драйвер CUDA 340,29

инструментарий 6,5

Я собрал тестовое приложение (без изменений), после чего я собрал результаты из NVVP (6.5). Проанализируйте все> Память ядра> В разделе L1/Shared Memory я собрал глобальные подсчеты транзакций.

Я приложил скриншоты нашего моделирования результата гисто побежали на kepler(link) и maxwell(link)

Кто знает, почему число глобальных подсчетов команд увеличивается на архитектуре Maxwell?

спасибо.

+0

В архитектуре Максвелла есть некоторые упрощения, которые могут привести к увеличению числа динамических команд. Например, 32-разрядное целочисленное умножение теперь представляет собой короткую последовательность строк, а не одну команду. Я видел расширение счетчика команд до 2x в определенных стандартных математических функциях. Я не вижу, как любое изменение архитектуры приведет к изменению динамического количества команд в 7-10 раз. Вы уверены, что оба ваших сборника являются версиями сборки? – njuffa

+1

Можете ли вы предоставить версию ОС, версию драйвера, версию инструментария, имя счетчиков/показателей, которые вы собираете, а также указания о том, как получить и запустить данный тест. Не исследуя значения SASS и счетчиков, я не уверен, что кто-то может дать вам хороший ответ. –

+0

Ubuntu 14.04/340.29/toolkit 6.5/ Я составил контрольный образец, после чего собрал результаты с NVVP (6.5). Анализ всех> Память ядра> Из раздела L1/Shared Memory я собрал подсчеты глобальной транзакции. @GregSmith – hkim

ответ

4

Счетчик gld_transactions не сопоставим между архитектурой Кеплера и Максвелла. Кроме того, это не эквивалентно счету выполненных глобальных инструкций.

На Fermi/Kepler подсчитывается количество запросов SM-L1 128 байтов. Это может увеличиваться с 0-32 за выполненную глобальную/общую инструкцию.

В глобальных операциях Максвелла все проходят через TEX (унифицированный кеш). Кэш TEX полностью отличается от кеша Fermi/Kepler L1. Глобальные транзакции измеряют количество секторов 32B, к которым обращаются в кеш. Это может увеличиваться с 0-32 за выполненную глобальную/общую инструкцию.

Если мы посмотрим на 3 различных случаях:

ДЕЛО 1: Каждый поток в перекоса получает доступ к той же 32-разрядное смещение.

CASE 2: Каждый поток в warp обращается к 32-битовому смещению с шагом в 128 байт.

CASE 3: Каждый поток в warp получает уникальное 32-битное смещение, основанное на его индексе полосы.

CASE 4: Каждый поток в warp обращается к уникальному 32-битовому смещению в 128-байтовом диапазоне памяти, который выровнен по 128 байт.

gld_transcations для каждого случая списка по архитектуре

  Kepler  Maxwell 
Case 1  1   4 
Case 2  32   32 
Case 3  1   8 
Case 4  1   4-16 

Моя рекомендация состоит в том, чтобы не смотреть на gld_transactions. Будущая версия профилировщиков CUDA должна использовать разные показатели, которые более эффективны и сопоставимы с прошлыми архитектурами.

Я бы рекомендовал посмотреть l2_ {читать, писать} _ {транзакции, пропускная способность}.