Что такое host_selector в селекторе устройств SYCL? - PullRequest
0 голосов
/ 06 июня 2018

Я новичок в программировании SYCL, OpenCL и GPU.Я прочитал о селекторе устройств в SYCL и обнаружил следующие четыре:

  1. default_selector: устройства, выбранные по эвристике системы.Если устройство OpenCL не найдено, по умолчанию используется хост-устройство SYCL.
  2. gpu_selector: Выберите устройства в соответствии с типом устройства info :: device :: device_type :: gpu из всех доступных устройств OpenCL.Если устройство OpenCL GPU не найдено, происходит сбой селектора.
  3. cpu_selector: Выберите устройства в соответствии с типом устройства info :: device :: device_type :: cpu из всех доступных устройств и эвристик.Если не найдено устройство ЦП OpenCL, селектор не работает.
  4. host_selector: Выбирает устройство ЦП хоста SYCL, для которого не требуется среда выполнения OpenCL.

Я запустил computecpp_infoчтобы найти устройства:

$ /usr/local/computecpp/bin/computecpp_info
/usr/local/computecpp/bin/computecpp_info: /usr/local/cuda-8.0/lib64/libOpenCL.so.1: no version information available (required by /usr/local/computecpp/bin/computecpp_info)
/usr/local/computecpp/bin/computecpp_info: /usr/local/cuda-8.0/lib64/libOpenCL.so.1: no version information available (required by /usr/local/computecpp/bin/computecpp_info)
********************************************************************************

ComputeCpp Info (CE 0.7.0)

********************************************************************************

Toolchain information:

GLIBC version: 2.19
GLIBCXX: 20150426
This version of libstdc++ is supported.

********************************************************************************


Device Info:

Discovered 3 devices matching:
  platform    : <any>
  device type : <any>

--------------------------------------------------------------------------------
Device 0:

  Device is supported                     : NO - Device does not support SPIR
  CL_DEVICE_NAME                          : GeForce GTX 750 Ti
  CL_DEVICE_VENDOR                        : NVIDIA Corporation
  CL_DRIVER_VERSION                       : 384.111
  CL_DEVICE_TYPE                          : CL_DEVICE_TYPE_GPU 
--------------------------------------------------------------------------------
Device 1:

  Device is supported                     : UNTESTED - Device not tested on this OS
  CL_DEVICE_NAME                          : Intel(R) HD Graphics
  CL_DEVICE_VENDOR                        : Intel(R) Corporation
  CL_DRIVER_VERSION                       : r5.0.63503
  CL_DEVICE_TYPE                          : CL_DEVICE_TYPE_GPU 
--------------------------------------------------------------------------------
Device 2:

  Device is supported                     : YES - Tested internally by Codeplay Software Ltd.
  CL_DEVICE_NAME                          : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
  CL_DEVICE_VENDOR                        : Intel(R) Corporation
  CL_DRIVER_VERSION                       : 1.2.0.475
  CL_DEVICE_TYPE                          : CL_DEVICE_TYPE_CPU 

If you encounter problems when using any of these OpenCL devices, please consult
this website for known issues:
https://computecpp.codeplay.com/releases/v0.7.0/platform-support-notes

Итак, устройства GeForce GTX 750 Ti и Intel(R) HD Graphics являются устройствами с графическим процессором, а Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz - устройствами с процессором.Как насчет host devices здесь?

Если я выберу host_selector, где мой SYCL code будет работать?

1 Ответ

0 голосов
/ 06 июня 2018

В SYCL есть понятие хост-устройства и устройства OpenCL.Устройство OpenCL - это любое устройство с поддержкой OpenCL, такое как Intel GPU, AMD GPU, FPGA с поддержкой OpenCL и т. Д.

Хост-устройство, с другой стороны, является устройством, которое работает с устройством OpenCL.По сути, это ваш процессор, он контролирует все подключенные устройства с поддержкой OpenCL и не использует OpenCL сам по себе.Иногда некоторые поставщики процессоров предоставляют драйвер OpenCL, позволяющий вам также запускать OpenCL на вашем процессоре.В этом случае хост-устройство и устройство OpenCL совместно используют одни и те же аппаратные компоненты.

В вашем случае Intel предоставляет реализацию OpenCL для процессоров, а также для графических процессоров, поэтому все ваши устройства поддерживают OpenCL.Хост-устройство существует, даже если у вас нет устройств OpenCL

Я также хотел бы отметить, что ComputeCpp содержит экспериментальную поддержку для NVidia, поэтому вы можете запускать SYCL на этом, но безгарантии

...