Недостаток CUDA 5 Примеры динамического параллелизма
Я гуглил и смог найти тривиальный пример нового динамического параллелизма в Compute Capability 3.0 только в одном из их технических обзоров, связанных здесь. Я знаю, что карты HPC, вероятно, не будут доступны до этого времени в следующем году (после того, как лаборатории получат их). И да, я понимаю, что простого примера, который они привели, достаточно, чтобы вы начали, но чем больше, тем лучше.
Есть ли другие примеры, которые я пропустил?
Чтобы избавить вас от хлопот, вот весь пример, приведенный в техническом задании:
__global__ ChildKernel(void* data){
//Operate on data
}
__global__ ParentKernel(void *data){
ChildKernel<<<16, 1>>>(data);
}
// In Host Code
ParentKernel<<<256, 64>>(data);
// Recursion is also supported
__global__ RecursiveKernel(void* data){
if(continueRecursion == true)
RecursiveKernel<<<64, 16>>>(data);
}
РЕДАКТИРОВАТЬ: GTC talk Новые функции в модели программирования CUDA, сфокусированные в основном на новом динамическом параллелизме в CUDA 5. Ссылка содержит видео и слайды. Все еще только примеры игрушек, но гораздо больше деталей, чем приведенное выше техническое описание.
5 ответов
Вот что вам нужно, руководство по программированию динамического параллелизма. Полный деталей и примеров: http://docs.nvidia.com/cuda/pdf/CUDA_Dynamic_Parallelism_Programming_Guide.pdf
Просто чтобы подтвердить, что динамический параллелизм поддерживается только на графических процессорах с вычислительной способностью 3,5 и выше.
У меня есть 3.0 GPU с установленной cuda 5.0 Я скомпилировал примеры динамического параллелизма nvcc -arch=sm_30 test.cu
и получил приведенную ниже ошибку компиляции test.cu(10): error: вызов глобальной функции ("child_launch") из глобальной функции ("parent_launch") разрешен только в архитектуре compute_35 или выше.
Информация о GPU
Устройство 0: "GeForce GT 640" Версия драйвера CUDA / Runtime Version 5.0 / 5.0 Возможности CUDA Major/Minor version number: 3.0
надеюсь это поможет
Я изменил название вопроса на "...CUDA 5...", поскольку динамический параллелизм является новым в CUDA 5, а не в CUDA 4. У нас пока нет общедоступных примеров, потому что у нас нет общедоступного оборудования что может их запустить. CUDA 5.0 будет поддерживать динамический параллелизм, но только на Compute Capability 3.5 и более поздних версиях (например, GK110). Они будут доступны позже в этом году.
Мы выпустим несколько примеров с кандидатом на выпуск CUDA 5 ближе к тому моменту, когда будет доступно оборудование.
Просто хотел проверить вас всех, учитывая, что CUDA 5 RC был выпущен недавно. Я посмотрел в примерах SDK и не смог найти там динамического параллелизма. Кто-то поправит меня, если я ошибаюсь. Я искал запуски ядра в ядрах путем поиска "<<<" и ничего не нашел.
Я думаю, что вычислительные возможности 3.0 не включают в себя динамический паралелизм. Он будет включен в архитектуру GK110 (он же "Большой Кеплер"), я не знаю, какой номер вычислительной способности будет назначен (возможно, 3.1?). Эти карты не будут доступны до конца этого года (я жду ооочень много для них). Насколько я знаю, 3.0 соответствует чипам GK104, таким как GTX690 или GT640M для ноутбуков.