OpenCL helloworld的问题

OpenCL helloworld的问题,opencl,Opencl,我是OpenCl的新手,我正在努力学习它。 我安装了适用于OpenCL的英特尔®SDK™ 应用程序,现在我正尝试将其与visual studio 2015结合使用。 当我试图运行hello world示例时,它在下面代码部分的“program.build”部分返回一个错误 谁能告诉我我错过了什么 谢谢:) 控制台返回以下内容: Using platform: Intel<R> OpenCL Using device: Intel<R> Core<TM> i7-

我是OpenCl的新手,我正在努力学习它。 我安装了适用于OpenCL的英特尔®SDK™ 应用程序,现在我正尝试将其与visual studio 2015结合使用。 当我试图运行hello world示例时,它在下面代码部分的“program.build”部分返回一个错误

谁能告诉我我错过了什么

谢谢:)

控制台返回以下内容:

Using platform: Intel<R> OpenCL
Using device: Intel<R> Core<TM> i7-3770 CPU e 3.40 GHz
-44
Error building: 
使用平台:英特尔OpenCL
使用设备:Intel Core i7-3770 CPU e 3.40 GHz
-44
错误生成:
示例代码:

//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);
}
//获取所有平台(驱动程序)
std::矢量所有_平台;
cl::平台::获取(&所有_平台);
如果(所有平台.size()==0){
std::cout错误代码-44表示“程序对象无效”。然而,这是不确定的,并暗示了其他一些损坏内存的问题。另请参阅


调用
program.build()
两次虽然不是很好的实践,但不是这里的问题,但可能有一些线程问题?问题当然不在您提供的代码中。

哪一个错误代码?如果是编译错误,您能得到显示opencl-c中编程错误源的错误字符串吗?当我使用这个:std::我能得到以下消息吗:Exce在OpenCL项目中的0x75 58C54的投掷:微软C++异常:英特尔::OpenCL::Debug后端::CopyServer异常在内存位置0x00 56F5FC.也许平台是一个BUGGY的实验版本?OpenCL 1.2或2?x?你调用这个代码>程序的事实。ng.存储
程序的结果。将
构建到一个变量中,然后在
if
语句中对其进行比较,并使用该变量将其输出到流中。