2012款Macbook Pro上的OpenCL设备数量

4

我正在一台2012年中期的13英寸MacBook Pro上编写一个OpenCL程序,具体配置如下:

处理器:2.9 GHz 英特尔 Core i7

图形处理器:英特尔 HD Graphics 4000

在我的程序中,我通过以下方式检查可用设备数量:

// get first platform
cl_platform_id platform;
err = clGetPlatformIDs(1, &platform, NULL);

// get device count
cl_uint gpuCount;
err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &gpuCount);

cl_uint cpuCount;
err |= clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 0, NULL, &cpuCount);

std::cout<<"NUM CPUS: "<<cpuCount<<" NUM GPUS: "<<gpuCount<<std::endl;

执行程序后,我的程序显示我只有一个CPU零个GPU。这是怎么回事?难道OpenCL不支持Intel HD Graphics 4000显卡吗?我认为我的电脑是双核处理器,那么应该有2个CPU和1个GPU才对,难道我没有正确地获取数据吗? 编辑:我已经找到了问题所在。将我的操作系统升级到Mavericks(之前运行的是Mountain Lion)后,openCL现在将我的显卡识别为有效设备。

您可以使用GPU Caps Viewer应用程序验证您的结果。该应用程序可在http://www.geeks3d.com/20140312/gpu-caps-viewer-1-20-1-released/上找到。 - Meluha
根据这里,你的机器应该能运行OpenCL 1.2。对于CPU来说,即使它是双核的,它仍然只有一个计算单元。所以1个CPU是正确的。否则,每次安装一个GPU都会看到数百个GPU。 - maZZZu
@bl0z0,为什么它仍然显示0个GPU? - user1855952
通过计算单元,我指的是OpenCL设备。我对Mac不了解,如果它是Linux或Windows,我会说你的驱动程序没有正常工作。 - maZZZu
也许你需要手动安装Intel的cl驱动程序。 - huseyin tugrul buyukisik
显示剩余2条评论
2个回答

4

您的处理器有多个核心,被识别为计算单元。运行以下代码片段并检查CU的数量是否符合预期:

cl_device_id device;
cl_uint max_compute_units;
cl_int ret = clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(cl_uint), &max_compute_units, NULL);
printf("Number of computing units: %u\n", max_compute_units);

3

这不是回答你的问题(请不要点踩),但希望能帮助你弄清楚你实际安装了什么。我本来想把它发表为评论,但那里的格式化将是无用的。

如果你想要一个易读的已安装CPU和图形设备列表,以下命令可以很好地完成:

system_profiler | awk '/^Hardware/ || /^Graphics/{p=1;print;next} /^[A-Za-z]/{p=0} p'

Graphics/Displays:

    AMD Radeon HD 6970M:

      Chipset Model: AMD Radeon HD 6970M
      Type: GPU
      Bus: PCIe
      PCIe Lane Width: x16
      VRAM (Total): 1024 MB
      Vendor: ATI (0x1002)
      Device ID: 0x6720
      Revision ID: 0x0000
      ROM Revision: 113-C2960H-203
      EFI Driver Version: 01.00.560
      Displays:
        iMac:
          Display Type: LCD
          Resolution: 2560 x 1440
          Pixel Depth: 32-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Built-In: Yes

Hardware:

    Hardware Overview:

      Model Name: iMac
      Model Identifier: iMac12,2
      Processor Name: Intel Core i7
      Processor Speed: 3.4 GHz
      Number of Processors: 1
      Total Number of Cores: 4
      L2 Cache (per Core): 256 KB
      L3 Cache: 8 MB
      Memory: 16 GB
      Boot ROM Version: IM121.0047.B1F
      SMC Version (system): 1.72f2
      Serial Number (system): DGKH90PWDHJW
      Hardware UUID: 1025AC04-9F8E-5342-9EF4-XXXXXXXXXXXXX

并且这是关于实际CPU细节的内容:
sysctl -a | grep "brand_string"
machdep.cpu.brand_string: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz

这是针对 OpenCL 版本的内容:

system_profiler | grep -A 11 OpenCL:
OpenCL:

  Version: 2.3.59
  Obtained from: Apple
  Last Modified: 19/09/2014 10:28
  Kind: Intel
  64-Bit (Intel): Yes
  Signed by: Software Signing, Apple Code Signing Certification Authority, Apple Root CA
  Get Info String: 2.3.59, Copyright 2008-2013 Apple Inc.
  Location: /System/Library/Frameworks/OpenCL.framework
  Private: No

顺便说一句,如果在 Stack Overflow 上提供额外有用的信息(不是真正的答案)有更好的方式,请告诉我。


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