没有什么可以阻止您将图像的文字数据复制到主机内存中的缓冲区,然后将其复制到GPU:
//HOST CODE
std::ifstream image_file("img.jpg", std::ios::binary);
std::vector<uint8_t> image_data;
image_file.seekg(0, std::ios_base::end);
size_t size = image_file.tellg();
image_data.resize(size);
image_file.seekg(0, std::ios_base::beg);
image_file.read(reinterpret_cast<char *>(image_data.data()), size);
cl_mem image_buffer = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, size, image_data.data(), nullptr);
clSetKernelArg(kernel, 0, sizeof(cl_mem), &image_buffer);
clSetKernelArg(kernel, 1, sizeof(size_t), &size);
//DEVICE CODE
kernel void image_manipulation_function(global uchar * data, size_t data_size) {
//Go crazy.
//Seriously.
//(Mostly because you'd *have* to be crazy to think this is a good idea)
}
唯一悬而未决的问题是
为什么?