обработка изображения параллельно на процессоре и графическом процессоре - PullRequest
0 голосов
/ 10 марта 2020

Я работаю над проектом, в котором мне нужно выполнить некоторые операции с каждым пикселем изображения UHD и записать это значение в местоположение, указанное указателем назначения. Я использую чипсет sm7150. при выполнении кода графического процессора с глобальным размером рабочей группы (Width / 4, Height / 4) время выполнения составляет 20 мс. Теперь я пытаюсь запустить изображение 3/4 на графическом процессоре и 1/4 на процессоре параллельно ... я делаю правильно?

clCreateBuffer (context, CL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITE, size, src_ptr, errcode_ret) clCreateBuffer (контекст, CL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITE, размер, dst_ptr, errcode_ret) ...

global_size [2] = {out_w / 4, (out_h / 4) * (3/4)}; 100 *

clEnqueueNDRangeKernel (queue_, kernel, 2, NULL, global_size, NULL, 0, NULL, & event_kernel); // здесь добавлен код процессора для 1/4 кадра для освобождения парлла clFini sh (queue _);

Я использовал CL_MEM_USE_HOST_PTR, чтобы избежать копирования памяти в кэш GPU, операция над каждым пикселем независима (использование карты поверх копии ) Но я обнаружил, что время выполнения как CPU, так и GPU значительно увеличилось, что-то не так с распараллеливанием? кто-то, пожалуйста, помогите.

...