我一直在努力让OpenCL在笔记本电脑上运行。我跟着this链接。我有一部NVIDIA GT525M显卡和Windows 8.1。 我遵循的步骤是:
安装最新的NVIDIA驱动程序。
安装Visual Studio 2013 Community Edition。
添加链接器和编译器的路径。
然后我尝试运行该页面中给出的以下代码:
#include <stdio.h>
#include <CL/cl.h>
int main(void)
{
cl_int err;
cl_uint* numPlatforms=NULL;
err = clGetPlatformIDs(0, NULL,numPlatforms);
if (CL_SUCCESS == err)
printf("\nDetected OpenCL platforms: %d", numPlatforms);
else
printf("\nError calling clGetPlatformIDs. Error code: %d", err);
getchar();
return 0;
}
代码构建成功,但我得到的结果是:
Error calling clGetPlatformIDs. Error code: -30
我的平台数量为零。 我一直在互联网上找一个解决方案,但找不到一个。请帮忙。
答案 0 :(得分:2)
此:
cl_uint* numPlatforms=NULL;
err = clGetPlatformIDs(0, NULL,numPlatforms);
等同于:
err = clGetPlatformIDs(0, NULL, NULL);
哪个没有意义。根据{{3}}:
如果函数执行成功,则返回CL_SUCCESS。否则,如果num_entries等于零且平台不为NULL,或者num_platforms和platforms都为NULL,则返回CL_INVALID_VALUE。
CL_INVALID_VALUE
是你得到的-30,原因如上所述。
您真正想要的是以下内容:
cl_uint numPlatforms = 0;
err = clGetPlatformIDs(0, NULL, &numPlatforms);