【发布时间】: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。