Я новичок в программировании cuda. Я работаю на Kepler GPU, который имеетМаксимальное количество потоков для ядра
3.2 compute_capability
1024 max_threads_per_block
1 Multiprocessor
2048 max._threads per_Multiprocessor
2147483647 grid size
Означает ли это, что я могу назначить только 2048 для ядра?. Тогда что делать с этим большим размером сетки?
Мое приложение включает в себя некоторые большие вычисления матрицы.
Спасибо
Спасибо за ваш ответ. Я думал, что, поскольку GPU имеет только один SM, SM может иметь максимум 2048 потоков, максимальный поток для ядра будет 2048 – user8462
Даже если у GPU есть только 1 SM, вы можете запустить ядро, которое содержит много блоков, и эти блоки будут проходить через этот SM, как позволяют пространство и ресурсы. Номер 2048 дает вам представление о том, сколько потоков (максимум) может обрабатываться SM * в любой момент *, то есть одновременно. Но по мере того как threadblocks завершают свою работу, они «выходят» из SM, и новые потоковые блоки могут запускаться. –
Так как GPU работает на SIMT, это не означает, что все потоки должны занимать SM в одно время. Еще раз спасибо. – user8462