Динамическое распределение в CUDA - меньше конфликтов, чем рукописное решение?

Теперь CUDA позволяет динамически выделять глобальную память. Однако я не смог найти никаких упоминаний о масштабируемости этой функции malloc: лучше ли это, чем, например, предварительное выделение блока памяти, а затем просто назначение следующего блока памяти потоку путем атомарного увеличения глобального целого числа? Это последнее «домашнее» решение работает, но есть очевидная проблема с масштабируемостью, поэтому мне интересно, позаботится ли об этом как-то malloc.


person GalicianMario    schedule 10.12.2010    source источник
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
comment
Вы правы, я просто осторожно отношусь к использованию malloc, поскольку это хорошо известное узкое место для масштабируемости в многоядерном программировании (поэтому люди обычно используют hoard) - я просто хочу, чтобы была статья/исследование о масштабируемости CUDA malloc , так что мне не нужно прибегать к самодельным решениям. - person GalicianMario; 24.01.2011