我已经用opencv和openCL编写了一个函数,并计算了执行时间。
GET_SYS_TIME(start_time);
ocl::oclMat ocl_in(src_img);
GET_SYS_TIME(end_time);
printf("data transfermation cost time=%lu ms, %lu us!\n", \
(end_time - start_time)/1000lu, (end_time - start_time));
ocl::oclMat ocl_resized_src_img;
GET_SYS_TIME(start_time);
ocl::resize(ocl_in, ocl_resized_src_img, Size(ocl_in.cols/4,
ocl_in.rows/4));
GET_SYS_TIME(end_time);
printf("resized cost time=%lu ms, %lu us!\n", \
(end_time - start_time)/1000lu, (end_time - start_time));
ocl_in.download(src_img);
ocl :: oclMat ocl_in(src_img);此代码的功能是将数据从Mat(CPU)传输到oclMat。它的成本是调整大小的六倍。我不知道如何缩短从CPU到GPU的数据转换的时间消费者。