Эффективность функции Маллока в CUDA - PullRequest
4 голосов
/ 19 сентября 2011

Я пытаюсь перенести некоторые коды процессора в CUDA. Моя карта CUDA основана на архитектуре Fermi, и поэтому я могу использовать функцию malloc () в устройстве для динамического выделения памяти и не нужно много менять исходные коды. (Функция malloc () вызывается много раз в моих кодах.) Мой вопрос заключается в том, достаточно ли эффективна эта функция malloc, или мы должны избегать ее использования, если это возможно. Я не сильно ускоряю выполнение моих кодов на CUDA, и я сомневаюсь, что это вызвано использованием функции malloc ().

Пожалуйста, дайте мне знать, если у вас есть предложения или комментарии. Я ценю вашу помощь.

1 Ответ

4 голосов
/ 20 сентября 2011

Текущая реализация устройства malloc очень медленная (были опубликованы статьи об эффективном распределении динамической памяти CUDA, но эта работа еще не появилась в выпуске инструментария AFAIK). Память, которую он выделяет, поступает из кучи, в которой хранится глобальная память, и она также очень медленная. Если у вас нет веских причин для этого, я бы рекомендовал избегать динамического выделения памяти в ядре. Это отрицательно скажется на общей производительности. Влияет ли это на ваш код - это совершенно отдельный вопрос.

...