2013-06-07 3 views
6

Меня смущает связь между количеством ядер в графическом процессоре NVidia, количеством SMP и максимальным количеством потоков. Свойства устройства для GT650m моего ноутбука показывают 384 ядра, 2 SMP, с 1024 потоками на SMP.CUDA cores vs thread count

Как эти числа относятся друг к другу и имеют размер основы? Я предполагаю (возможно, неправильно), что на каждый SMP имеется 192 ядра, но это не коэффициент 1024. Если в каждом ядре работает нить из 32 потоков, я бы ожидал 32 * 192 потока на SMP или 2^5 * (2^7 + 2^6), или 4096 + 2048 = 6142.

Что мне не хватает?

ответ

9

Я думаю, что вы должны иметь более глубокий взгляд на планирование ядер в cuda.

Есть два важных размеры: блоки и нитей на блоке

Каждый блок запланирован на одном SM и есть то нарезанных в перекосов. Поэтому блоки имеют общую память, которая доступна только внутри блока, , потому что она лежит на памяти SM. Количество блоков на каждый SM зависит от размера устройства и расчета занятости. Максимальные блоки для SM - 8 для CC 1.0-2.x и 16 для CC 3.x.

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

Теперь ваша карта имеет общее количество 384 ядер на 2 SM с 192 ядрами каждый. Счет ядра CUDA представляет собой общее число команд с плавающей запятой или целочисленными точками одинарной точности, которые могут быть выполнены за каждый цикл. Не учитывайте ядра CUDA при любых расчетах.

Максимальное количество потоков зависит от вычислительной способности. CC2.0-3.x поддерживает максимум 1024 потока на блок при наличии достаточных регистров и слотов деформации. Деформации статически назначаются планировщикам деформаций. Количество планировщиков warp для SM равно 1 для CC 1.x, 2 для CC 2.x и 4 для CC 3.x.

Если ваше приложение не выполнило одновременные ядра, то для использования каждого SM gridDim должно иметь> = количество блоков SM.

Для использования GTX650m для полного использования вычислительной мощности необходимо иметь как минимум два блока (в противном случае с одним блоком вы могли использовать только один SM). С другой стороны, если вы хотите запланировать потоки 10240, вы можете легко запланировать 10 блоков из 1024 потоков каждый.

+0

Спасибо. Думаю, планирование графика было тем, чего мне не хватало. –