Теперь CUDA позволяет динамически выделять глобальную память. Однако я не смог найти никаких упоминаний о масштабируемости этой функции malloc
: лучше ли это, чем, например, предварительное выделение блока памяти, а затем просто назначение следующего блока памяти потоку путем атомарного увеличения глобального целого числа? Это последнее «домашнее» решение работает, но есть очевидная проблема с масштабируемостью, поэтому мне интересно, позаботится ли об этом как-то malloc
.
Динамическое распределение в CUDA - меньше конфликтов, чем рукописное решение?
comment
Подождите — CUDA теперь разрешает malloc из кода GPU?
- person wump   schedule 19.01.2011
comment
да, руководство по программированию CUDA 3.2, стр. 122
- person GalicianMario   schedule 24.01.2011
Ответы (1)
Я думаю, что хотя ваше «домашнее» решение может быть столь же хорошим в настоящее время, хотя одновременные вызовы глобального целого числа могут замедлить его работу, Malloc будет моим выбором.
Это связано с тем, что это позволяет Nvidia справиться с головной болью масштабируемости и вносить улучшения в аппаратную или программную реализацию, которыми вы можете воспользоваться, просто перекомпилировав свой код позже.
person
Phil
schedule
19.01.2011
Вы правы, я просто осторожно отношусь к использованию malloc, поскольку это хорошо известное узкое место для масштабируемости в многоядерном программировании (поэтому люди обычно используют hoard) - я просто хочу, чтобы была статья/исследование о масштабируемости CUDA malloc , так что мне не нужно прибегать к самодельным решениям.
- person GalicianMario; 24.01.2011