Я следовали учебнику здесь http://www.nvidia.com/docs/IO/116711/sc11-cuda-c-basics.pdfCUDA тема и блоки объяснения
пытаемся научить себя основу программирования GPU. Я до сих пор не совсем понимаю топологию блоков и потоков. На стр. 42 код определяет данные о размере следующим образом:
#define N (2048*2048)
#define THREADS_PER_BLOCK 512
Этот учебник делает предположения? Я сейчас на ноутбуке с графическим процессором Nvidia 520m. используя структуру cudaDeviceProp, я смог определить, что я могу управлять 1024 потоками на каждый блок. Что именно определяет количество 2048x2048? Количество блоков? как узнать, правильно ли это?
Итак, если я правильно вас понимаю. этот 2048 * 2048 - это размер набора данных консерватизма или общее количество потоков. Один, который будет работать со всеми текущими GPU. Когда я запускаю GPU Z, получите эту информацию. 1 многопроцессорные (48 ядер) 1536 нитей на МП нити на блок 1024 размеров резьбы 1024x1024x64 размеров сетки 65535x65535x65535 ли это означает, что я должен иметь возможность работать с 1024 потоков на блок и 1024x1024x64 нитей. или я ограничена 1536 потоками, что будет намного меньше, чем этот код указывает? – mreff555
Я бы очень рекомендовал прочитать первые несколько разделов руководства по программированию c. –
Вы не ограничены 1536 потоками. Блоки блокировки CUDA не все должны быть запланированы в одно и то же время. Они могут быть запланированы один за другим, в какой-то степени разрешено аппаратное обеспечение. Как я уже сказал, 8192 блока из 512 потоков должны работать ** на любом доступном в настоящее время графическом процессоре CUDA **, включая ваши. Невозможно дать вам полный учебник CUDA в пространстве одного вопроса SO или набора комментариев. –