是否有任何OpenCL主机有多个平台?

时间:2010-08-09 22:27:57

标签: opencl

Khronos的OpenCL 1.0和1.1 specification中的平台定义:

  

平台:主机加上由OpenCL框架管理的设备集合,允许应用程序在平台上的设备上共享资源和执行内核。

OpenCL函数clGetPlatformIDs创建了一个平台数组,这意味着可以使用多个平台。假设给定的OpenCL主机只有一个平台是否安全?

换句话说,通过这样做,我会在任何主机上丢失任何东西:

cl_platform_id platform_id;
cl_uint num_platforms;
errcode = clGetPlatformIDs(1, &platform_id, &num_platforms);

4 个答案:

答案 0 :(得分:10)

我不会依赖只有一个平台。如果在一个系统上有多个OpenCL实现(这应该可以使用OpenCL ICD,虽然我不确定它是仅计划还是已经完成),您应该获得多个平台,每个opencl实现一个平台。可能有多个opencl实现的一个例子是在gpu上运行opencl的nvidia实现和在cpu上运行的amd实现,因此它不是那么遥远。

编辑:查看http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71(更好)解释此

答案 1 :(得分:7)

以Tim Child为例(安装了AMD和Intel SDK的Thinkpad X201)补充了Tim Child的答案:

$ python /usr/share/doc/python-pyopencl/examples/benchmark-all.py
Execution time of test without OpenCL:  10.9563219547 s
===============================================================
Platform name: AMD Accelerated Parallel Processing
Platform profile: FULL_PROFILE
Platform vendor: Advanced Micro Devices, Inc.
Platform version: OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
---------------------------------------------------------------
Device name: Intel(R) Core(TM) i5 CPU       M 520  @ 2.40GHz
Device type: CPU
Device memory:  7799 MB
Device max clock speed: 2399 MHz
Device compute units: 2
Execution time of test: 0.00842799 s
Results OK
===============================================================
Platform name: Intel(R) OpenCL
Platform profile: FULL_PROFILE
Platform vendor: Intel(R) Corporation
Platform version: OpenCL 1.1 LINUX
---------------------------------------------------------------
Device name: Intel(R) Core(TM) i5 CPU       M 520  @ 2.40GHz
Device type: CPU
Device memory:  7799 MB
Device max clock speed: 2400 MHz
Device compute units: 2
Execution time of test: 0.00260659 s
Results OK

答案 2 :(得分:3)

是的,每个供应商的OpenCL安装都有一个Platform Id。因此,如果你安装AMD和英特尔的OpenCL SDK,你将获得一个平台ID。

答案 3 :(得分:0)

即使您假设主机只有一个平台,您也必须在调用clGetPlatformInfo之前弄清楚该平台的ID是什么。因此,如果您调用clGetPlatformIDs,选择默认或用户提供的平台,然后调用clGetPlatformInfo,则会更好。