【发布时间】:2020-09-22 02:16:35
【问题描述】:
我是 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:
示例代码:
//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);
}
【问题讨论】:
-
哪个错误代码?如果是编译错误,你能得到显示opencl-c中编程错误来源的错误字符串吗?
-
当我使用这个时:std::cout
-
我收到以下消息:OpenCLProject3.exe 中 0x7558C54F 处引发异常:Microsoft C++ 异常:内存位置 0x0056F5FC 处的 Intel::OpenCL::DeviceBackend::Exceptions::CompilerException。
-
也许他的平台是一个有问题的实验平台?哪个版本? opencl 1.2 还是 2.x?
-
你在这个程序中调用了两次
program.build,这有点令人担忧。将program.build的结果存储到一个变量中,然后在if语句中进行比较,并使用该变量将其输出到流中。
标签: opencl