Сколько памяти я могу выделить на карте cuda - PullRequest
5 голосов
/ 07 октября 2011

Я пишу серверный процесс, который выполняет вычисления на GPU с использованием cuda. Я хочу ставить в очередь входящие запросы до тех пор, пока на устройстве не будет достаточно памяти для выполнения задания, но мне сложно определить, сколько памяти я могу выделить на устройстве. У меня довольно хорошая оценка того, сколько памяти требуется для работы (по крайней мере, сколько будет выделено из cudaMalloc ()), но я вынимаю устройство из памяти задолго до того, как выделю общий объем доступной глобальной памяти.

Есть ли какой-нибудь король формулы для вычисления из общей глобальной памяти количества, которое я могу выделить? Я могу играть с ним до тех пор, пока не получу оценку, которая работает эмпирически, но я обеспокоен тем, что мои клиенты в какой-то момент развернут разные карты, и мои фальшивые цифры не будут работать очень хорошо.

1 Ответ

5 голосов
/ 08 октября 2011

Размер DRAM вашего GPU является верхней границей объема памяти, который вы можете выделить с помощью cudaMalloc, но нет гарантии, что среда выполнения CUDA сможет удовлетворить запрос на все это в одном большом выделении или дажесерия небольших выделений.

Ограничения выделения памяти варьируются в зависимости от деталей базовой модели драйвера операционной системы.Например, если рассматриваемый графический процессор является основным устройством отображения, то возможно, что ОС также зарезервировала некоторую часть памяти графического процессора для графики.Другое неявное состояние, которое использует среда выполнения (например, куча), также потребляет ресурсы памяти.Также возможно, что память стала фрагментированной и не существует непрерывного блока, достаточно большого для удовлетворения запроса.

Функция API CUDART cudaMemGetInfo сообщает о свободном и общем объеме доступной памяти.Насколько я знаю, нет аналогичного вызова API, который мог бы сообщать о размере самого большого удовлетворяемого запроса на выделение.

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