我从这里下载了OpenCL:https://software.intel.com/en-us/intel-opencl/download。我首先尝试使用AMD for OpenCL,但我尝试的所有页面都说“找不到404页面”。
这是我用Open。
测试OpenCL的代码#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函数删除该行,则编译正常。
我也尝试过编译,
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版本?
答案 0 :(得分:0)
是否使用32位二进制(x86)或64位二进制(x64)的选择基于应用程序的目标体系结构,而不是计算机编译的体系结构该程序。 x86版本的库工作而x64版本没有的原因是你的编译器正在以32位模式编译。切换到在x64中编译以使x64库正确链接。
我对gcc并不十分熟悉,所以我不知道哪些标志控制了这种行为。检查编译器文档。请注意,编译器本身是32位还是64位应该是无关紧要的。