Как использовать блоки / сетку и темы / блок? - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь ускорить это приложение поиска в базе данных с помощью CUDA, и я работаю над запуском основного алгоритма параллельно с CUDA.

В одном тесте я запускаю алгоритм параллельно через цифровойпоследовательность размером 5000 с 500 блоками на сетку и 100 нитями на блок и возвращалась со временем прогона примерно 500 мс.

Затем я увеличил размер цифровой последовательности до 8192 со 128 блоками на сетку и 64потоков на блок и каким-то образом возвращался с результатом 350 мс для запуска алгоритма.

Это будет указывать, что количество используемых блоков и потоков и их взаимосвязь влияют на производительность.

У меня вопрос, как определить количество блоков / сетки и потоков / блоков?

Ниже приведены мои спецификации графического процессора из стандартной программы запросов устройств: enter image description here

1 Ответ

2 голосов
/ 18 июля 2011

Вы должны проверить это, потому что это зависит от вашего конкретного ядра. Одна вещь, которую вы должны стремиться сделать, это сделать количество потоков в блоке кратным количеству потоков в деформации. После этого вы можете стремиться к высокой загрузке каждого SM, но это не всегда является синонимом более высокой производительности. Было показано, что иногда более низкая занятость может дать лучшую производительность. Ядра, связанные с памятью, обычно получают большую выгоду от большей загрузки, чтобы скрыть задержку памяти. Вычислить связанные ядра не так много. Лучше всего протестировать различные конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...