OpenCL HelloWorld

I just started working in opencl, and now I'm working on what should be regarding the basic hello_world program in opencl. Unfortunately, the program does not output the correct phrase or anything at all, instead hangs without output.

Any idea on why this is?

Below: openglsource.cpp and hello.cl

#define CL_USE_DEPRECATED_OPENCL_2_0_APIS #include<CL/cl.hpp> #include<iostream> #include <fstream> int main() { std::vector<cl::Platform> platforms; cl::Platform::get(&platforms); auto platform = platforms.front(); std::vector<cl::Device> devices; platform.getDevices(CL_DEVICE_TYPE_CPU, &devices); auto device = devices.front(); std::ifstream helloWorldFile("hello.cl"); std::string src(std::istreambuf_iterator<char>(helloWorldFile), (std::istreambuf_iterator<char>())); cl::Program::Sources sources( 1, std::make_pair(src.c_str(), src.length() + 1)); cl::Context context(device); cl::Program program(context, sources); auto err = program.build("-cl-std=CL1.2"); char buf[16]; cl::Buffer memBuf(context, CL_MEM_WRITE_ONLY | CL_MEM_HOST_READ_ONLY, sizeof(buf)); cl::Kernel kernel(program, "Hello", &err); kernel.setArg(0, memBuf); cl::CommandQueue queue(context, device); queue.enqueueTask(kernel); queue.enqueueReadBuffer(memBuf, GL_TRUE, 0, sizeof(buf), buf); std::cout << "hello"; std::cin.get(); } 

hello.cl

 __kernel void HelloWorld(__global char* data) { data[0] = 'H'; data[1] = 'E'; data[2] = 'L'; data[3] = 'L'; data[4] = 'O'; data[5] = ' '; data[6] = 'W'; data[7] = 'O'; data[8] = 'R'; data[9] = 'L'; data[10] = 'D'; data[11] = '!'; data[12] = '\n'; } 
+5
source share
1 answer

The problem was

  cl::Kernel kernel(program, "Hello", &err); 

he should be

  cl::Kernel kernel(program, "HelloWorld", &err); 

The line that goes there is not just an arbitrary name, as I assumed, it should be the function that you want to call from the specified kernel. It makes sense to make it clear that the kernel may contain several functions!

Such a simple fix ..... I feel bad for publishing!

+6
source

Source: https://habr.com/ru/post/1259980/


All Articles