Может ли устройство с процессором достичь того же уровня параллелизма, что и процессор? Почти всегда нет.
Количество вычислительных единиц в процессоре почти всегда больше, чем в процессоре. Например, за 50 долларов можно получить видеокарту с 10 вычислительными блоками (Radeon 6450). Самые дешевые 8-ядерные процессоры на Newegg стоят 189 долларов (настольный процессор) и 269 долларов (сервер).
Вычислительные единицы процессора будут работать быстрее из-за тактовой частоты и выполнять код ветвления гораздо лучше, чем GPU. Вам нужен процессор, если в вашей рабочей нагрузке много условных выражений.
GPU выполнит одни и те же инструкции для многих фрагментов данных. Для этого 6450 GPU имеет 16 «потоковых процессоров» на каждый вычислительный блок. Gpus хороши, когда вам приходится выполнять одни и те же (маленькие / средние) задачи много раз. Умножение матриц, вычисления n-boy, операции сокращения и некоторые алгоритмы сортировки работают намного лучше на оборудовании GPU / ускорителя, чем на процессоре.
Я ответил на аналогичный вопрос более подробно несколько недель назад. (Этот)
Возвращаясь к вашему вопросу о "том же уровне параллелизма" - у cpus нет такого же уровня параллелизма, как у gpus, за исключением случаев, когда gpu under выполняет выполнение реального ядра.
В вашей системе i5 будет только одно процессорное устройство. Это представляет весь процессор. Когда вы запрашиваете количество вычислительных блоков, opencl возвращает количество имеющихся у вас ядер. Если вы хотите использовать все ядра, вы просто запускаете ядро на своем устройстве, и opencl будет использовать все вычислительные блоки (ядра) для вас.