我有一台配备了集成的Intel HD 3000和i7核心的MacBook Pro 13寸笔记本电脑。
我需要使用并行编程。
我的教学顾问无法告诉我它是否适用于我的MacBook。
有没有测试我可以在我的笔记本上运行以进行测试? + 我找到了这个,但只有Linux和Windows SDK…也许Linux版本也适用于Mac。
我该怎么办?
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应该是有用的。
我在2011年的MacBook Air上测试了OpenCL,它配备了Core i5-2467M。我可以告诉你,由苹果制作的OpenCL实现在CPU上并不能正常工作,只能在GPU上运行。当你设置一个大于1的工作组大小时,会出现很大的问题。
<OpenCL/...>
替换为<CL/...>
,并将-framework OpenCL
替换为-lOpenCL
。当然,您还需要安装库和ICD。 - o11c