我用了一个简单的“Hello,world”。 OpenCL程序,版本为2014.2 Xilinx Vivado IDE,声明为OpenCL support。其中一个代码段如下:
#include <CL/opencl.h>
...
// Connect to a compute device
//
int gpu = 1;
err = clGetDeviceIDs(NULL, gpu ? CL_DEVICE_TYPE_GPU : CL_DEVICE_TYPE_CPU, 1, &device_id, NULL);
if (err != CL_SUCCESS)
{
printf("Error: Failed to create a device group!\n");
return EXIT_FAILURE;
}
然而,似乎这个Vivado无法识别标题“CL / opencl.h”和cl相关的函数。我通过在我当前的Vivado HLS项目中手动放置一个外部CL目录(从CUDA SDK派生)解决了头问题,但它仍然报告错误,如“function'clGetDeviceIDs'没有函数体”。
答案 0 :(得分:1)
#include <CL/opencl.h>
是如何在Mac OS X上完成的,但在Windows上它通常是#include <CL/cl.h>
。你找到了你的CL include文件夹吗?你告诉IDE它在哪里吗?这听起来像你的第二个问题(在你解决了第一个问题之后)是你没有链接到OpenCL.lib(或你的平台上的任何库扩展)。您也需要找到它并链接到它。在支持ICD的平台上,可以使用Khronos lib并动态定位已安装的驱动程序,但在您的平台上可能会有所不同,请参阅Xilinx指令。
答案 1 :(得分:-1)
似乎在我的Vivado 2015.2中加入clc.h
就可以了。