如何测试OpenCL兼容性?

15

我有一台配备了集成的Intel HD 3000和i7核心的MacBook Pro 13寸笔记本电脑。

我需要使用并行编程。

我的教学顾问无法告诉我它是否适用于我的MacBook。

有没有测试我可以在我的笔记本上运行以进行测试? + 我找到了这个,但只有Linux和Windows SDK…也许Linux版本也适用于Mac。

我该怎么办?

3个回答

41

vocaro的回答绝对正确;即使您的特定图形芯片不支持OpenCL,在Snow Leopard和Lion上始终可以使用CPU计算设备。

以下程序将向您显示给定Macintosh上支持OpenCL的设备:

// clang -framework OpenCL dumpcl.c -o dumpcl && ./dumpcl

#include <stdio.h>
#include <stdlib.h>
#include <OpenCL/opencl.h>

int main(int argc, char* const argv[]) {
    cl_uint num_devices, i;
    clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, 0, NULL, &num_devices);

    cl_device_id* devices = calloc(sizeof(cl_device_id), num_devices);
    clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, num_devices, devices, NULL);

    char buf[128];
    for (i = 0; i < num_devices; i++) {
        clGetDeviceInfo(devices[i], CL_DEVICE_NAME, 128, buf, NULL);
        fprintf(stdout, "Device %s supports ", buf);

        clGetDeviceInfo(devices[i], CL_DEVICE_VERSION, 128, buf, NULL);
        fprintf(stdout, "%s\n", buf);
    }

    free(devices);
}

在我的 MacBook 上,这是这样的:

Device Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz supports OpenCL 1.1 
Device ATI Radeon HD 6490M supports OpenCL 1.1 

您可以使用此程序作为起点来请求其他设备信息。Khronos API参考文献中的clGetDeviceInfo应该是有用的。


这个在OSX 10.9上会出问题吗?当我运行它时,我得到以下错误信息:dumpcl.c:1:10: 致命错误:找不到“stdio.h”文件。 - deweydb
没关系,似乎在升级后Xcode开发工具消失了,您可以通过运行以下命令来触发重新安装: xcode-select --install - deweydb
@user1876508 在Linux上,您需要将<OpenCL/...>替换为<CL/...>,并将-framework OpenCL替换为-lOpenCL。当然,您还需要安装库和ICD。 - o11c

3

我喜欢苹果公司创建了OpenCL,并将其作为开放标准,但他们的支持却逐渐减少。他们目前支持的最新版本是1.2,而这个版本已经过去约3年了。:( - Entalpi

0

我在2011年的MacBook Air上测试了OpenCL,它配备了Core i5-2467M。我可以告诉你,由苹果制作的OpenCL实现在CPU上并不能正常工作,只能在GPU上运行。当你设置一个大于1的工作组大小时,会出现很大的问题。


1
我有点迷惑:它能在GPU上运行还是不能?我到处都看到Intel HD 3000不支持openCL... - Bertrand Caron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接