OpenCL:如何使用C++包装器检查构建错误
OpenCL: How to check for build errors using the C++ wrapper
如果我用这样的源代码构建一个openCL程序
cl::Program program = cl::Program(context, sourceCode);
program.build(devices);
我想检查一下这是否成功。我看到了一些如何在C中实现这一点的例子,但由于我的项目是在C++中进行的,我想知道如何(在出现问题的情况下)获得一条可读的文本消息,指示使用C++包装器可能存在的问题。
我还启用了异常
#define CL_HPP_ENABLE_EXCEPTIONS
但不知道CCD_ 1是否抛出异常。
我使用的是AMD APP SDK 3.0和Khronos网页上的cl2.hpp
(因为它没有包含在SDK中)。
cl::Program::build()
函数确实会抛出异常。以下是如何获取构建日志:
cl::Program program = cl::Program(context, sourceCode);
try
{
program.build(devices);
}
catch (cl::Error& e)
{
if (e.err() == CL_BUILD_PROGRAM_FAILURE)
{
for (cl::Device dev : devices)
{
// Check the build status
cl_build_status status = program.getBuildInfo<CL_PROGRAM_BUILD_STATUS>(dev);
if (status != CL_BUILD_ERROR)
continue;
// Get the build log
std::string name = dev.getInfo<CL_DEVICE_NAME>();
std::string buildlog = program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(dev);
std::cerr << "Build log for " << name << ":" << std::endl
<< buildlog << std::endl;
}
else
{
throw e;
}
}
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- "无法确定要运行哪个"make"命令.检查构建配置中的"make"步骤
- 检查父构建器是否具有参数
- Linux/GCC:是否有一种方法可以检查构建是否与其他机器上的前一个机器相同
- 如何使用 cmake 在构建源代码之前检查某些库是否存在
- Eclipse 在检查语法时看不到包含文件,但在构建或运行应用程序时会看到
- 检查 char 数组是否由 2 个相同的数组构建
- Vim/Syntastic C/C++语法检查:可以配置为构建预编译的头文件
- 如何检查忍者并行构建的返回值
- OpenCL:如何使用C++包装器检查构建错误
- 构建 R 包:检查包时"Found 'rand', possibly from 'rand' (C)"注意事项
- 当使用(自定义)GCC 4时,Boost构建无法进行c++ 11特性检查.X或5
- 交叉编译:检查是否可以在64位机器上构建32位
- 当使用scons构建时,无法使用IAR臂编译器进行编译.License检查失败