OpenCL多维

时间:2018-08-07 15:37:03

标签: opencl gpu cpu intel amd

所以我有一个OpenCL程序,可以打印以下信息:

Version ....... OpenCL 1.2 (Mar 15 2018 21:59:37)
Vendor ........ Apple
Profile ....... FULL_PROFILE
Name .......... Apple

GPUS: 

Device #0
Max work group size ......... 256
Max work item dimensions .... 3
Max work item sizes ......... 256 256 256 
Name ........................ Intel(R) HD Graphics 630
Platform .................... 
Profile ..................... FULL_PROFILE
Vendor ...................... Intel Inc.
Version ..................... OpenCL 1.2 
Driver version .............. 1.2(Mar 15 2018 22:04:21)

Device #1
Max work group size ......... 256
Max work item dimensions .... 3
Max work item sizes ......... 256 256 256 
Name ........................ AMD Radeon Pro 560 Compute Engine
Platform .................... 
Profile ..................... FULL_PROFILE
Vendor ...................... AMD
Version ..................... OpenCL 1.2 
Driver version .............. 1.2 (Mar 15 2018 21:59:57)

CPUS: 

Device #0
Max work group size ......... 1024
Max work item dimensions .... 3
Max work item sizes ......... 1024 1 1 
Name ........................ Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
Platform .................... 
Profile ..................... FULL_PROFILE
Vendor ...................... Intel
Version ..................... OpenCL 1.2 
Driver version .............. 1.1

所以问题是: 在AMD上,它具有3个尺寸,每个尺寸256个。 这是否意味着它可以同时进行256 ^ 3并行计算? 还是该信息还有其他含义? 同样,Intel HD Graphics是否可以执行相同的精确计算?那为什么他们要分开卡呢?

1 个答案:

答案 0 :(得分:3)

指定GPU可以并行执行的工作量。 “最大工作项大小”指定每个维度中工作组的最大大小。您还 受“最大工作组大小”限制,该宽度不能超过您的宽度*高度*深度。此外,每个内核都有一个最大的工作组大小,clGetKernelWorkGroupInfo可以使用CL_KERNEL_WORK_GROUP_SIZE来查询。以我的经验,您通常不希望达到这些限制。使用较小的工作组,您的内核将运行得更快。除非出于某些原因需要大型工作组,否则只需将它们设置为32或64个项目(或者,如果不使用共享的本地内存,则将工作组大小保留为默认值(NULL),然后让运行时选择一个(但保持全局工作组的大小可以很好地划分,否则最终会导致工作组大小不理想。

您的Intel和AMD GPU是分开报告的,因为它们是分开的设备。至于为什么苹果将两个GPU放在一个盒子里,这取决于他们。通常,用户可以选择速度还是功耗。