运行OpenCL程序时clGetPlatformID错误。

时间:2015-09-06 04:08:34

标签: opencl

我一直在努力让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

我的平台数量为零。 我一直在互联网上找一个解决方案,但找不到一个。请帮忙。

1 个答案:

答案 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);