Что такое host_selector в селекторе устройств SYCL?

Я новичок в программировании 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 устройства являются устройствами GPU и Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz это процессорные устройства. Что насчет host devices Вот?

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

1 ответ

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

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

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

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

Другие вопросы по тегам