Что такое host_selector в селекторе устройств SYCL?
Я новичок в программировании SYCL, OpenCL и GPU. Я прочитал о селекторе устройств в SYCL и обнаружил следующие четыре:
- default_selector: устройства, выбранные по эвристике системы. Если устройство OpenCL не найдено, по умолчанию используется хост-устройство SYCL.
- gpu_selector: Выберите устройства в соответствии с типом устройства info::device::device_type::gpu из всех доступных устройств OpenCL. Если устройство OpenCL GPU не найдено, происходит сбой селектора.
- cpu_selector: Выберите устройства в соответствии с типом устройства info::device::device_type::cpu из всех доступных устройств и эвристик. Если устройство ЦПУ OpenCL не найдено, происходит сбой селектора.
- 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 на этом, но без каких-либо гарантий