Копирование кадра Занимая больше времени на Mali GPU - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь реализовать ядро ​​копии кадра. У меня есть указатель на изображение, которое я должен скопировать в место, указанное указателем назначения. Я могу реализовать это с процессором, который даст мне лучшую производительность. но из-за требований к питанию я работаю на графическом процессоре.

Процессорное время: 2мс. Время GPU: 24мс

Пожалуйста, просмотрите этот код GPU и помогите оптимизировать его.

//create buffer

// repeat below code and create buffer variables for  source and destination 

mem_flag |= CL_MEM_USE_HOST_PTR;
buffers = clCreateBuffer(context_, mem_flag, mem_size, host_ptr, &error_code);

global_size[2] = { (size_t) dst_w/8, (size_t) dst_h};

int ret = clEnqueueNDRangeKernel(queue_, kernel, 2, NULL, global_size, NULL, 0, NULL, &event_kernel);
clFinish(queue_);

//Kernal code

// buf_src_y: Buffer pointer to source image   buf_dst_y: Buffer pointer to destination image
//buf_src_uv : buf_src + src_uv_offset            buf_dst_uv : buf_dst + dst_uv_offset         

int x = get_global_id(0) * 8;
int y = get_global_id(1);

int src_pos = mad24(y, src_stride, x);
int dst_pos = mad24(y, dst_stride, x);
vstore8(vload8(0, buf_src_y + src_pos), 0, buf_dst_y + dst_pos);

if (y < dst_uv_h) {
vstore8(vload8(0, buf_src_uv + src_pos), 0, buf_dst_uv + dst_pos);
}
...