Эффективная пропускная способность в Cuda

При вычислении эффективной пропускной способности в Cuda я считаю количество операций чтения / записи в общей памяти. Пример кода приведен ниже.

__global__ void kernel(float *a, float * b, float * c, int num){
int i = threadIdx.x + blockIdx.x*blockDim.x;
__shared__ a_shared[NUM];
__shared__ b_shared[NUM];
if (i < NUM){
a_shared[i] = a[i];
b_shared[i] = b[i]
c[i] = a_shared[i] + b_shared[i];
}
}

-1

Решение

Что касается секция из руководства по передовому опыту, которое вы указали в комментариях выше, я бы сказал, что ответ «нет», общий трафик не должен быть включен.

Откуда нам это знать?

  1. Основная цель расчета эффективной пропускной способности состоит в том, чтобы сравнить ее с теоретической пропускной способностью:

Для точного измерения производительности полезно рассчитать теоретическую и эффективную пропускную способность. Когда последняя намного ниже первой, детали проектирования или реализации, вероятно, уменьшат пропускную способность, и это должно быть основной целью последующих усилий по оптимизации для ее увеличения.

Однако теоретический расчет пропускной способности включает в себя только трафик глобальной памяти к DRAM:

Используя эти элементы данных, максимальная теоретическая пропускная способность памяти NVIDIA Tesla M2090 составляет 177,6 ГБ / с:

Это число является пропускной способностью DRAM. Он не включает пропускную способность разделяемой памяти.

  1. Ссылки на измерения профилировщика относятся к глобальному трафику памяти, а не к разделяемой памяти:

Запрошенная глобальная пропускная способность

Запрошенная глобальная пропускная способность магазина

Глобальная пропускная способность

Глобальная пропускная способность магазина

DRAM Read Throughput

Скорость записи DRAM

  1. Метод вычисления теоретической пропускной способности совместно используемой памяти не описан нигде, о чем я знаю в официальной документации CUDA, поэтому он не может быть включен в теоретический расчет пропускной способности. Поэтому включение измерения ширины полосы совместно используемой памяти не имеет смысла для целей сравнения.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]