如何正确设置OpenCL?

时间:2018-06-18 17:37:30

标签: c opencl

功能

  • Windows 10 64位
  • Intel Core i7
  • Amd Radeon R9
  • 来自mingw的GCC 6.8.0

设置

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

这是我用Open。​​

测试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

我在某处读到了下载OpenCL驱动程序时创建的-lOpenCL。所以我尝试在这里下载驱动程序: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版本?

1 个答案:

答案 0 :(得分:0)

是否使用32位二进制(x86)或64位二进制(x64)的选择基于应用程序的目标体系结构,而不是计算机编译的体系结构该程序。 x86版本的库工作而x64版本没有的原因是你的编译器正在以32位模式编译。切换到在x64中编译以使x64库正确链接。

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