因此,我有一个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上,它有三个维度,每个维度有256个。这是否意味着它可以同时进行256^3并行计算?或者这些信息还有其他意义吗?同样的道理,英特尔高清图形能执行同样的精确计算吗?那他们为什么要分开卡呢?
发布于 2018-08-07 23:08:12
它确实是,而不是,它指定您的GPU可以并行完成的工作量。“最大工作项大小”指定每个维度中工作组的最大大小。您也被“最大工作组大小”所限制,您的宽度*高度*深度不能超过。此外,每个内核都有一个最大的工作组大小,可以通过clGetKernelWorkGroupInfo和CL_KERNEL_WORK_GROUP_SIZE查询。根据我的经验,您通常不想接近这些限制;您的内核将使用较小的工作组运行得更快。除非您有需要大型工作组的原因,否则只需将其设置为32项或64项(或者如果您不使用共享本地内存,则保留工作组大小默认值(NULL),并让运行时选择一个项目(但保持全局工作组大小-可以很好地划分,否则最终会出现次优工作组大小)。
您的英特尔和AMD GPU是分别报告,因为他们是不同的设备。至于苹果为什么把两个GPU放在一个盒子里,这取决于他们。通常情况下,用户可以做出速度与功率的选择。
https://stackoverflow.com/questions/51730602
复制相似问题