Каков шаблон доступа к памяти графического процессора cudnnConvolutionForward () в cuDNN? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу понять схему доступа к памяти для обычных операций в cuDNN, особенно для двумерных сверток с использованием cudnnConvolutionForward () или эквивалентных высокооптимизированных сверток на GPU в целом. памяти, в которой находятся входы, выходы и веса во время расчета? (регистр, общий, локальный, глобальный, текстура ...) Если они перемещаются из одного типа в другой, как структурируются ходы? (например, в блоках или плитках), и

Как много передача памяти задействована из / в каждый тип памяти? Для типичных тензоров в формате NCHW каждый вход и веса читаются один или более одного раза? Сохраняется ли результат один раз?

Кажется, что эта операция обычно ограничивается пропускной способностью памяти, а не вычислениями. Если да, то почему?

Если форма тензоров делает различие, предположим размеры, обычно используемые при классификации изображений, например, N = десятки, H, W = от десятков до сотен, C = сотни, а свертки маленькие, 3x3, 1x1 или 5x5. Наиболее распространенная операция в net, на которую я сейчас смотрю, - это свертка 3x3 с N = 32, H = 28, W = 28, C = 128.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...