Максимальное количество потоков на GPU
Я использую устройство TESLA T10, и у него есть 2 устройства cuda, и максимальное количество потоков в блоке составляет 512, а максимальное количество потоков по каждому измерению равно (512,512,64), а максимальный размер сетки равен (65535,65535,1), и у него 30 мультипроцессоры на каждом устройстве cuda.
Теперь я хочу знать, сколько потоков я могу запустить параллельно. Я читаю предыдущие решения, но ни один из них не устраняет мои сомнения. из предыдущего чтения =(30)*512 потоков, которые я могу запустить параллельно (maxNoOfMultiprocessor * maxThreadBlockSize)
но когда я запустил 32 блока из 512 потоков, он все еще работает, как это возможно??? я не понимаю эти максимальные потоки в каждом измерении, а также максимальный размер сетки, пожалуйста, объясните на примере....... заранее спасибо
2 ответа
В целях этого обсуждения, забудьте о том, сколько существует мультипроцессоров. Это не имеет никакого отношения к тому, сколько блоков вы можете запустить в ядре (то есть в сетке).
Количество потоков, которые вы можете запускать параллельно (т.е. которые могут выполняться одновременно), отличается от количества потоков, которые вы можете запустить, или от количества блоков, которые вы можете запустить.
Обычно вы не хотите запускать сетки, которые имеют столько потоков, сколько машина может запустить в данный момент времени (maxNoOfMultiprocessor * maxThreadBlockSize). Машина хочет гораздо больше потоков, чем это, поэтому она может скрывать задержки.
Ваша машина ограничена 512 потоками на блок, но вы можете запустить одномерную сетку до 65535 блоков. Это не означает, что все эти блоки / потоки работают одновременно, но машина в конечном итоге обработает их все.
Вы можете создать гораздо больше потоков, чем может обрабатывать аппаратное обеспечение одновременно. Это называется " автоматическая масштабируемость" от nVidia. Если у вас есть карта с 30 SMX, 30 блоков будут работать параллельно, а затем будет запущено 2 блока. Если вы затем запустите ту же программу с 32 блоками на карте с только 16 SMX (предположим, что она существует), будет запущено 16 блоков, а затем еще 16 блоков.