【问题标题】:How to setup OpenCL correctly?如何正确设置 OpenCL?
【发布时间】:2018-06-18 17:37:29
【问题描述】:

规格

  • Windows 10 64 位
  • 英特尔酷睿 i7
  • AMD Radeon R9
  • 来自 mingw 的 GCC 6.8.0

设置

我从这里下载了 OpenCL:https://software.intel.com/en-us/intel-opencl/download。我首先尝试了 AMD 的 OpenCL,但我尝试的所有页面都显示“404 页面未找到”。

这是我用来测试 OpenCL 的代码。

opencl.c

#include <stdlib.h>
#include <stdio.h>
#include <CL/cl.h>

int main() {
    cl_device_id device_id;
    cl_uint num_devices;

    cl_int id = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 1, &device_id, &num_devices);

    return 0;
}

我尝试编译这段代码。

gcc opencl.c -I C:\Intel\OpenCL\sdk\include -L C:\Intel\OpenCL\sdk\lib\x64 -o opencl.exe

但我收到此错误。

undefined reference to `clGetDeviceIDs@24'

如果我删除带有 clGetDeviceIDs 函数的行,它编译得很好。

-lOpenCL

我也试过编译,

gcc opencl.c -I C:\Intel\OpenCL\sdk\include -lOpenCL -o opencl.exe

但它说...

cannot find -lOpenCL

我在某处读到 -lOpenCL 是在您下载 OpenCL 驱动程序时生成的。所以我尝试在这里下载驱动程序:https://support.amd.com/en-us/kb-articles/Pages/OpenCL2-Driver.aspx。我安装了驱动程序,然后运行了设置,但它说它没有检测到任何 AMD 图形硬件。

编辑

我将-L C:\Intel\OpenCL\sdk\lib\x64 更改为-L C:\Intel\OpenCL\sdk\lib\x86 并使用
gcc opencl.c -I C:\Intel\OpenCL\sdk\include -L C:\Intel\OpenCL\sdk\lib\x86 -lOpenCL -o opencl.exe 编译,它有效吗?所以我检查了我的系统设置以确保我有 Windows 64 位,它说
64-bit operating system, x64-based processor。那我是不是安装了错误的 OpenCL 版本?

【问题讨论】:

  • 如果你尝试这样编译会发生什么:gcc opencl.c -I C:\Intel\OpenCL\sdk\include -L C:\Intel\OpenCL\sdk\lib\x64 -lOpenCL -o opencl.exe?
  • @Xirema 我刚刚尝试了你的建议,cannot find -lOpenCL 的错误消失了,但undefined reference to `clGetDeviceIDs@24' 的错误再次出现。
  • C:\Intel\OpenCL\sdk\lib\x64 是否包含您需要用来链接到可执行文件的.lib 文件?如果有,它叫什么?
  • @Xirema 它的名字叫OpenCL.lib。

标签: c opencl


【解决方案1】:

选择使用 32 位二进制 (x86) 还是 64 位二进制 (x64) 取决于您的应用程序的目标架构,而不是计算机编译的架构该程序。库的 x86 版本有效而​​ x64 版本无效的原因是您的 编译器 正在以 32 位模式编译。切换到在 x64 中编译以使 x64 库正确链接。

我对 gcc 不是很熟悉,所以我不知道是什么标志控制了这种行为。检查您的编译器文档。请注意,编译器本身是 32 位还是 64 位应该是无关紧要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多