CL / cl.h не найден в SYCL - PullRequest
       89

CL / cl.h не найден в SYCL

0 голосов
/ 26 марта 2019

Я только начал работать над SYCL и запустил ComputeCpp_info в моей системе, и отображаются следующие данные на 3 устройствах

Информация ComputeCpp (CE 1.1.0)

SYCL 1.2.1 редакция 3

Устройство 1 (GeForce GTX 1050 = НЕТ - Устройство не поддерживает SPIR)

Устройство 2 (Intel (R) HD Graphics 630 = НЕПРОВЕРЕНО - Устройство не тестировалось в этой ОС)

Устройство 3 (Intel® Core ™ TM CPU i7-7700HQ @ 2,80 ГГц = НЕПРОВЕРЕНО - устройство работает с непроверенным драйвером)

Теперь мой вопрос: могу ли я работать на этих устройствах, так как 2 не проверены, а 1 невозможен? или мне не хватает некоторых драйверов?

Также я реализовал простой пример, но он дает мне CL / cl.h не найдена ошибка

#include <CL/sycl.hpp>
#include <array>
#include <numeric>
#include <iostream>

int main() {

const size_t array_size = 1024 * 512;
std::array<cl::sycl::cl_int, array_size> in, out;
std::iota(begin(in), end(in), 0);

cl::sycl::queue device_queue;

cl::sycl::range<1> n_items{ array_size };

cl::sycl::buffer < cl::sycl::cl_int, 1> in_buffer(in.data(), n_items);
cl::sycl::buffer < cl::sycl::cl_int, 1> out_buffer(out.data(), n_items);

device_queue.submit([&](cl::sycl::handler &cgh) {

    constexpr auto sycl_read = cl::sycl::access::mode::read;
    constexpr auto sycl_write = cl::sycl::access::mode::write;

    auto in_accessor = in_buffer.get_access<sycl_read>(cgh);
    auto out_accessor = out_buffer.get_access<sycl_write>(cgh);

    cgh.parallel_for<class VecScalMul>(n_items,
        [=](cl::sycl::id<1> wiID) {
        out_accessor[wiID] = in_accessor[wiID] * 2;
    });
});

}

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Инструмент computecpp_info показывает устройства, которые поддерживаются или не поддерживаются ComputeCpp в вашей системе.Вот объяснение выходных данных:

НЕТ - Устройство не поддерживает SPIR: это означает, что устройство можно увидеть, но оно не поддерживает инструкции SPIR и поэтому не может поддерживаться ComputeCpp

UNTESTED- Устройство не протестировано в этой ОС: это означает, что устройство видно и сообщает, что оно поддерживает инструкции SPIR.Он должен работать с ComputeCpp, но это конкретное устройство не было проверено командой ComputeCpp

Ошибка отсутствия заголовка cl.h из-за отсутствия заголовков OpenCL.Их можно найти здесь , и вам нужно будет указать на них при компиляции кода.Я бы предложил использовать руководство по началу работы с примером кода, а затем изменить пример "Привет, мир", чтобы проверить свой код.У него есть существующий файл CMake, предназначенный для поиска всех необходимых вам зависимостей.

0 голосов
/ 26 марта 2019
  1. (Это вопрос, относящийся к ComputeCpp, а не SYCL). Платформы UNTESTED, вероятно, будут работать, но Codeplay не может этого гарантировать.По моему опыту, оба должны работать, возможно, некоторые ошибки в драйвере OpenCL попадут вам на Intel GPU в зависимости от вашей конфигурации.
  2. Вам нужны заголовки OpenCL в вашей системе, так как спецификация SYCL 1.2.1 построена поверхOpenCL

Отказ от ответственности: я сотрудник Codeplay, работающий в ComputeCpp!

...