【问题标题】:intel kernel builder, failed to create context for intel opencl cpu device英特尔内核生成器,无法为英特尔 opencl cpu 设备创建上下文
【发布时间】:2013-09-11 09:57:39
【问题描述】:

我正在尝试使用英特尔内核生成器。我安装了 intel opencl sdk 并执行程序。像这样输入简单的代码。

__kernel void hello(__global int* a, __global int* b, __global int* c) {
  int gid = get_global_id(0);
  c[gid] = a[gid] + b[gid];
}

我按下了编译或构建按钮,但它显示了一个错误。错误信息是。

使用默认指令集架构。 无法为 Intel OpenCL CPU 设备创建上下文... 编译失败!

我发现有人遇到了类似的问题。 http://software.intel.com/en-us/forums/topic/392622 但是这个问题没有正确的答案。

我认为代码不是这个的主要问题。所以我删除了代码,只保留一个字符,然后编译它。错误信息与之前相同。我不知道这是怎么回事。

我的环境是 Windows7 Professional 64bits, intel Core2 Quad Q8200 支持 SSE4.1, OpenCL-1.2-3.0.67279 intel_sdk_2013_x64, kernel builder version 3.0.0.1。 而且我从来没有在这台机器上运行过 OpenCL。我试过但发生编译错误。错误消息类似。他们未能创建上下文。该代码可能没有问题,因为我已经在另一台机器和操作系统(linux)上运行它。

如果有人使用这个程序,请帮助我。 提前致谢。

【问题讨论】:

    标签: windows kernel opencl intel builder


    【解决方案1】:

    根据本网站,英特尔的 OpenCL SDK 不支持 Core2 Duo/Quad CPU(因为它们不支持 SSe 4.2): http://software.intel.com/en-us/articles/intel-sdk-for-opencl-applications-2013-release-notes#_System_Requirements_1

    因此编译器无法为此设备创建上下文。您可以通过在选项对话框中明确选择目标体系结构来解决此问题。我不确定这会起作用,代码肯定不会运行。

    如果你想在你的机器上使用 OpenCL,试试 AMD APP SDK,它支持至少 SSE2 的每个 x86: http://developer.amd.com/tools/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/

    但是,这不适用于英特尔的 KernelBuilder。

    【讨论】:

    • 问题不在于 SDK。它是 OpenCL 客户端驱动程序。您仍然可以使用 Intel OpenCL SDK 进行开发并通过 AMD OpenCL 设备驱动程序运行 OpenCL。 cl-device-not-available-using-intel-core-2-duo-e8500-cpu
    • 您是否也可以使用“Intel KernelBuilder - AMD CPU OpenCL Driver”组合来编译代码?在 Linux 上,直接调用 Intel 编译器。
    • 其实我想要的是intel的OpenCL生成的内核的二进制代码。但是在linux(支持sse4.2的服务器)上,它不是elf的二进制格式($file 命令说格式是'data')。所以 objdump 命令无法解码二进制文件。我发现并看到了 Kernel Builder,它可以轻松地将二进制文件解码为程序集,或者在本地机器上进行尝试。但是我遇到了这个问题,你们帮我解决了这个问题。现在我就用别人的机器。非常感谢您的衷心帮助。我真的很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2017-06-03
    • 2017-04-17
    相关资源
    最近更新 更多