我是OpenCl的新手,我正在努力学习它。我安装了用于OpenCL™应用程序的英特尔®软件开发工具包,现在我正尝试将其用于visual studio 2015。当我试图运行hello world示例时,它在以下代码部分的"program.build“-part处返回一个错误。
有人能告诉我我错过了什么吗?
谢谢:)
consol返回以下内容:
Using platform: Intel<R> OpenCL
Using device: Intel<R> Core<TM> i7-3770 CPU e 3.40 GHz
-44
Error building: 示例代码:
//get all platforms (drivers)
std::vector<cl::Platform> all_platforms;
cl::Platform::get(&all_platforms);
if (all_platforms.size() == 0) {
std::cout << " No platforms found. Check OpenCL installation!\n";
exit(1);
}
cl::Platform default_platform = all_platforms[0];
std::cout << "Using platform: " << default_platform.getInfo<CL_PLATFORM_NAME>() << "\n";
//get default device of the default platform
std::vector<cl::Device> all_devices;
default_platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices);
if (all_devices.size() == 0) {
std::cout << " No devices found. Check OpenCL installation!\n";
exit(1);
}
cl::Device default_device = all_devices[0];
std::cout << "Using device: " << default_device.getInfo<CL_DEVICE_NAME>() << "\n";
cl::Context context({ default_device });
cl::Program::Sources sources;
// kernel calculates for each element C=A+B
std::string kernel_code =
" void kernel simple_add(global const int* A, global const int* B, global int* C){ "
" C[get_global_id(0)]=A[get_global_id(0)]+B[get_global_id(0)]; "
" } ";
sources.push_back({ kernel_code.c_str(),kernel_code.length() });
cl::Program program(context, sources);
if (**program.build({ default_device }) != CL_SUCCESS**) {
std::cout << program.build({ default_device }) <<"\n";
std::cout << " Error building: " << program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device) << "\n";
exit(1);
}发布于 2020-09-22 02:16:36
错误码-44表示“程序对象无效”。然而,这是不确定的,并暗示了一些其他破坏内存的问题。另请参阅this question。
调用program.build()两次虽然不是很好的做法,但这里不是问题所在,而是一些线程问题?问题当然不在您提供的代码片段中。
https://stackoverflow.com/questions/43520624
复制相似问题