2014-09-26 2 views
0

Я начинаю программирование Cuda. Извинения за мой простой вопрос.Нужно ли устанавливать число сетки в программировании cuda?

Я прочитал несколько документов и примеров. Если я использую функцию ядра, я должен сделать что-то вроде

kernelfun <<<number of block, number of thread>>>(args). 

Таким образом, для сетки нет номера. Нужно ли устанавливать количество сетки, которое мы планируем использовать?

Согласно моему графическому процессору, как мне установить количество блоков и количество потоков? enter image description here

Потому что я видел, что максимальное число потоков на каждый блок равно 512. Поэтому я должен установить число потоков 512 для полного использования графического процессора.

Другой вопрос: должен ли я рассчитать память моего проекта, когда я устанавливаю числа блоков и потоков? Или компьютер автоматически организует это, и мне не нужно беспокоиться о памяти, которую использует мой проект.

ответ

1

Я считаю, что параметры запуска ядра являются:

kernelfun <<<number of block, number of _threads_>>>(args). 

Что касается установки количества сеток - нет, вы не должны делать ничего подобного. Один запуск ядра эквивалентен одной сетке, состоящей из блоков и блоков, состоящих из потоков и потоков, которые являются исполняющими элементами, выполняющими код вашего ядра.

Ваш дополнительный вопрос о размере сеток и блоков, скорее всего, является дубликатом, так как это довольно известная тема, например, см. Здесь SO thread.

Что касается последнего вопроса, проблема с памятью, если ваши потоки внутри блоков потребляют больше регистров, чем доступно, то ядро ​​просто не будет успешно выполнено. Помимо этого, я не могу понять, о чем вы спрашиваете, точно, если это не отвечает на ваш вопрос, пожалуйста, добавьте дополнительные данные, например о том, какую память вы беспокоитесь и т. Д.

+0

привет, благодарю вас за ваше ответ. Не могли бы вы ответить на другой вопрос в моей новой редакции? – Vivian

Смежные вопросы