规格
设置
我从这里下载了OpenCL:https://software.intel.com/en-us/intel-opencl/download。我首先尝试了AMD for 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我在某处读到,当您下载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版本?
发布于 2018-06-19 03:22:36
选择使用32位二进制(x86)还是64位二进制(x64)是基于应用程序的目标体系结构,而不是基于编译程序的计算机的体系结构。库的x86版本可以工作而x64版本不能工作的原因是您的编译器是以32位模式编译的。切换到在x64中编译,以获得正确链接的x64库。
我对gcc不是非常熟悉,所以我不知道是什么标志控制了这种行为。检查您的编译器文档。请注意,编译器本身是32位还是64位应该是无关紧要的。
https://stackoverflow.com/questions/50914797
复制相似问题