2015-12-14 5 views
3

Мой компьютер имеет GeForce GTX 960M, который, как утверждает NVIDIA, имеет 640 ядер CUDA. Однако, когда я запускаю clGetDeviceInfo, чтобы узнать количество вычислительных устройств на моем компьютере, он выводит 5 (см. Рисунок ниже). Похоже, что ядра CUDA несколько отличаются от того, что OpenCL рассматривает как вычислительные устройства? Или, может быть, группа ядер CUDA образует вычислительный блок OpenCL? Вы можете мне это объяснить?Какова связь между ядрами CUDA NVIDIA и процессорами OpenCL?

enter image description here

+3

Там в таблице, отображающей OpenCL <-> CUDA Лингво плавающей вокруг Интернета. То, что OpenCL вызывает вычислительный блок, - это потоковый многопроцессор CUDA. CUDA «ядра» - это, по существу, ALU/FPU. GTX 960M имеет 5 SM с 128 ядрами, всего 640. –

+0

@Angy Lettuce Спасибо за ответ. Итак, если я правильно понимаю это, каждая рабочая группа будет выполнена в вычислительном устройстве; поэтому, учитывая максимальный размер рабочей группы 1024, лучший параллелизм, который я могу сделать в этом графическом процессоре, заключается в том, чтобы выполнить 1024 * 5 = 5120 рабочих элементов. Это правильно? – mfaieghi

ответ

6

Какова связь между ядрами CUDA графических процессоров NVIDIA и OpenCL вычислительных блоков?

Ваш GTX 960m представляет собой устройство Максвелла с 5 Streaming Мультипроцессоры, каждый из которых имеет 128 ядер CUDA, в общей сложности 640 CUDA cores.

Сетевой процессор NVIDIA is equivalent to an OpenCL Compute Unit. Ранее связанный ответ также предоставит вам полезную информацию, которая может помочь в вопросе определения размера ядра в комментариях.

0

Архитектура CUDA близка к архитектуре OpenCL.

Устройство CUDA построено вокруг масштабируемого массива многопоточных потоковых многопроцессоров (SMs). Многопроцессор соответствует модулю вычисления OpenCL.

Многопроцессор выполняет поток CUDA для каждого рабочего элемента OpenCL и блок потока для каждой рабочей группы OpenCL. Ядро выполняется над OpenCLNDRange сеткой блоков потоков. Как показано на рисунке 2-1, каждый из блоков потоков, которые выполняют ядро, поэтому однозначно идентифицируется идентификатором ее рабочей группы, а каждый поток - его глобальным идентификатором или комбинацией его локального идентификатора и идентификатора рабочей группы.

Скопировано из Руководства по программированию OpenCL для CUDA Архитектура http://www.nvidia.com/content/cudazone/download/OpenCL/NVIDIA_OpenCL_ProgrammingGuide.pdf

Смежные вопросы