Размер DRAM вашего GPU является верхней границей объема памяти, который вы можете выделить с помощью cudaMalloc
, но нет гарантии, что среда выполнения CUDA сможет удовлетворить запрос на все это в одном большом выделении или дажесерия небольших выделений.
Ограничения выделения памяти варьируются в зависимости от деталей базовой модели драйвера операционной системы.Например, если рассматриваемый графический процессор является основным устройством отображения, то возможно, что ОС также зарезервировала некоторую часть памяти графического процессора для графики.Другое неявное состояние, которое использует среда выполнения (например, куча), также потребляет ресурсы памяти.Также возможно, что память стала фрагментированной и не существует непрерывного блока, достаточно большого для удовлетворения запроса.
Функция API CUDART cudaMemGetInfo
сообщает о свободном и общем объеме доступной памяти.Насколько я знаю, нет аналогичного вызова API, который мог бы сообщать о размере самого большого удовлетворяемого запроса на выделение.