Есть ли на хосте OpenCL более одной платформы? - PullRequest
9 голосов
/ 10 августа 2010

Определение платформы в OpenCL 1.0 и 1.1 спецификации Khronos :

Платформа: хост плюс набор устройств, управляемых платформой OpenCL, которые позволяют приложению совместно использовать ресурсы и выполнять ядра на устройствах в платформе.

Функция OpenCL clGetPlatformIDs создает массив платформ, подразумевая, что возможно несколько платформ. Можно ли предположить, что данный хост OpenCL имеет только одну платформу?

Другими словами, я потеряю что-либо на любом хосте, выполнив это:

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

Ответы [ 4 ]

10 голосов
/ 26 августа 2010

Я бы не рассчитывал, что будет только одна Платформа.Когда у вас есть несколько реализаций OpenCL в одной системе (что должно быть возможно с OpenCL ICD, хотя я не уверен, планируется ли это только или уже закончено), вы должны получить несколько платформ, по одной для каждой реализации opencl.Одним примером, где может быть несколько реализаций opencl, может быть реализация nvidia для запуска opencl на gpu и реализация amd для запуска на процессоре, так что это тоже не так уж далеко.

edit: посмотрите на http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71 для (лучшего) описания этого

7 голосов
/ 18 января 2012

Чтобы дополнить ответ Тима Чайлда примером (Thinkpad X201 с установленным AMD и Intel SDK):

$ 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
3 голосов
/ 28 июля 2011

Да, для каждого поставщика OpenCL существует один идентификатор платформы.Поэтому, если вы установите AMD и Intel OpenCL SDK, вы получите один идентификатор платформы для каждого.

0 голосов
/ 10 августа 2010

Даже если вы предполагаете, что хост имеет только одну платформу, вам придется выяснить, каков ID этой платформы, перед вызовом clGetPlatformInfo .Поэтому лучше, если вы вызовете clGetPlatformIDs, выберите платформу по умолчанию или пользовательскую платформу, а затем вызовете clGetPlatformInfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...