На блоках двойной точности (DPU) на Kepler K20Xm
Согласно документу по архитектуре Kepler, SMX имеет 192
Ядра CUDA и 64
Единицы двойной точности (DPU). Для K20Xm есть 14
SMX на общую сумму в 2688
ядра, что означает, что учитываются только ядра CUDA. Для чего же в действительности используется DPU и как они связаны с ядрами?
Мои мысли:
a) Ядра CUDA не могут выполнять операции двойной точности, и только DPU могут. Поэтому ядра CUDA свободны для других вещей, пока DPU заняты.
б) Для ядер CUDA так или иначе необходим модуль двойной точности для выполнения операций двойной точности, поэтому только 128
из 192
Ядра CUDA доступны для других вещей.
Ура Анди
1 ответ
Единицы двойной точности на самом деле являются отдельными аппаратными модулями с плавающей запятой, которые выполняют арифметику двойной точности. Они независимы от "ядер куды", которые, грубо говоря, можно считать единицами одинарной точности.
Таким образом, для арифметики одинарной точности пропускная способность может быть вычислена на основе "ядер cuda" или единиц одинарной точности. Для арифметики двойной точности пропускная способность должна быть рассчитана на основе единиц двойной точности.
В Kepler K20 SMX соотношение единиц с двойной точностью и единиц с одинарной точностью составляет 1:3. Поэтому пропускная способность для каждого типа арифметики соответствует одному и тому же соотношению. Под "арифметикой" я подразумеваю здесь умножение с плавающей запятой или сложение с плавающей запятой.