Jump to content

ВебCL

ВебCL
Разработчик(и) Рабочая группа WebCL
Стабильная версия
1.0 / 19 марта 2014 г .; 10 лет назад ( 19.03.2014 ) [1]
Операционная система Кросс-платформенный
Тип API
Веб-сайт www .chronos .org /webcl /

WebCL ( язык веб-вычислений ) — это привязка JavaScript к OpenCL для гетерогенных параллельных вычислений в любом совместимом веб-браузере без использования плагинов , впервые анонсированная в марте 2011 года. Он разработан на тех же основаниях, что и OpenCL, и считается версией браузера. последнего. Прежде всего, WebCL позволяет веб-приложениям повысить скорость работы с помощью многоядерных процессоров и графических процессоров . С ростом популярности приложений, требующих параллельной обработки , таких как редактирование изображений, приложения дополненной реальности и сложные игры, повышение скорости вычислений становится все более важным. По этим причинам некоммерческая организация Khronos Group [2] спроектировал и разработал WebCL, который представляет собой привязку Javascript к OpenCL с переносимым программным ядром, обеспечивающий параллельные вычисления в веб-браузерах на широком спектре устройств. Короче говоря, WebCL состоит из двух частей: одна — это программирование ядра, которое выполняется на процессорах (устройствах), а другая — JavaScript, который привязывает веб-приложение к OpenCL. Завершенная и утвержденная спецификация WebCL 1.0 была выпущена 19 марта 2014 г. [2]

Выполнение

[ редактировать ]

В настоящее время ни один браузер не поддерживает WebCL. Однако для реализации WebCL используются неродные надстройки. Например, Nokia разработала расширение WebCL. [3] Mozilla не планирует внедрять WebCL в пользу WebGL вычислительных шейдеров , от которых, в свою очередь, отказались в пользу WebGPU .

Рабочий проект WebCL

[ редактировать ]

Пример кода C

[ редактировать ]

Базовой единицей параллельной программы является ядро . Ядро — это любая распараллеливаемая задача, используемая для выполнения определенной работы. Чаще функции могут быть реализованы в виде ядер. Программа может состоять из одного или нескольких ядер. Для реализации ядра важно, чтобы задача была распараллеливаемой. Зависимости данных и порядок выполнения играют жизненно важную роль в создании эффективных распараллеленных алгоритмов. Простым примером можно считать случай развертывания цикла , выполняемого компилятором C, когда используется такой оператор:

for (i = 0; i< 3 ; i++)
	c[i] = a[i] + b[i];

можно развернуть в:

c[0] = a[0] + b[0];
c[1] = a[1] + b[1];
c[2] = a[2] + b[2];

Вышеуказанные операторы могут быть распараллелены и выполняться одновременно. Ядро использует аналогичный подход, где только снимок i й итерация фиксируется внутри ядра. Переписываем приведенный выше код с использованием ядра:

__kernel add(__global float* a, __global float* b, __global float*c)
{
	int i = get_global_id(0);

	if (i<3)
		c[i] = a[i] + b[i];
}

Запуск приложения WebCL включает в себя следующие шаги:

  1. Разрешить доступ к устройствам и предоставить контекст
  2. Передаем ядро ​​устройству
  3. Заставить устройство выполнить ядро
  4. Получить результаты с устройства
  5. Используйте данные внутри JavaScript

Более подробную информацию об этом можно найти по адресу [5]

Список исключений

[ редактировать ]

WebCL, будучи реализацией на основе JavaScript, не возвращает код ошибки при возникновении ошибок. Вместо этого он выдает исключение, например OUT_OF_RESOURCES, OUT_OF_HOST_MEMORYили специфичный для WebCL WEBCL_IMPLEMENTATION_FAILURE. [6] Объект исключения описывает машиночитаемое имя и человекочитаемое сообщение, описывающее ошибку. Синтаксис следующий:

exception WebCLException : DOMException {
  DOMString name;     // A string representation of the numeric error code, e.g. "INVALID_VALUE"
  DOMString? message; // An implementation-specific description of what caused the exception
};

Из приведенного выше кода видно, что поле сообщения может иметь значение NULL. Другие исключения включают в себя:

  1. INVALID_OPERATION – если блокирующая форма этой функции вызывается из WebCLCallback
  2. INVALID_VALUE - если eventWaitList пусто
  3. INVALID_CONTEXT – если события, указанные в eventWaitList не принадлежат к одному и тому же контексту
  4. INVALID_DEVICE_TYPE - если deviceType задано, но не является одним из допустимых перечислимых значений
  5. DEVICE_NOT_FOUND - если нет WebCLDevice доступный, соответствующий заданному deviceType

Более подробную информацию об исключениях можно найти в документе со спецификациями. [6]

Существует еще одно исключение, которое возникает при попытке вызвать «освобожденный» объект. При использовании метода выпуска объект не удаляется навсегда, но освобождаются ресурсы, связанные с этим объектом. Чтобы избежать этого исключения, releaseAll Можно использовать метод, который не только освобождает ресурсы, но и удаляет все созданные связанные объекты.

Безопасность

[ редактировать ]

WebCL, будучи открытым программным обеспечением, разработанным для веб-приложений, также имеет множество уязвимостей в области проектирования и разработки. Это заставило разработчиков, работающих над WebCL, уделять безопасности первостепенное внимание. Немногие проблемы, которые были решены:

  1. Доступ к памяти за пределами выделенного пространства. Это происходит путем доступа к областям памяти за пределами выделенного пространства. Злоумышленник может переписать или стереть все важные данные, хранящиеся в этих ячейках памяти. Всякий раз, когда возникает такой случай, во время компиляции должна быть сгенерирована ошибка, а во время выполнения должен быть возвращен ноль, не позволяя программе перегружать память. Проект WebCL Validator, [7] был инициирован группой Khronos (разработчиками) по устранению этой уязвимости.
  2. Инициализация памяти: это делается для того, чтобы приложения не могли получить доступ к ячейкам памяти предыдущих приложений. WebCL гарантирует, что этого не произойдет, инициализируя все буферы и используемые переменные нулями перед запуском текущего приложения. OpenCL 1.2 имеет расширение cl_khr_initialize_memory, которое позволяет это сделать. [6]
  3. Отказ в обслуживании. Наиболее распространенную атаку на веб-приложения невозможно полностью устранить с помощью WebCL или браузера. OpenCL может быть снабжен сторожевыми таймерами и вытесняющей многозадачностью, которые могут использоваться WebCL для обнаружения и завершения контекстов, которые занимают слишком много времени или потребляют много ресурсов. Существует расширение OpenCL 1.2 «cl_khr_terminate_context», как и предыдущее, которое позволяет завершить процесс, который может вызвать атаку типа «отказ в обслуживании». [6]
[ редактировать ]
  • Ошибка 664147 — [WebCL] добавляет openCL в Gecko , Mozilla.
  • Ошибка 115457: [Мета] Поддержка WebCL для WebKit , WebKit Bugzilla

См. также

[ редактировать ]
  1. ^ «Хронос выпускает спецификацию WebCL 1.0» . 19 марта 2014 г.
  2. ^ Jump up to: а б «Хронос выпускает спецификацию WebCL 1.0» . Группа компаний «Хронос». 19 марта 2014 года . Проверено 19 марта 2014 г.
  3. ^ «ВебКЛ» . Исследования Нокиа . Проверено 6 мая 2012 г.
  4. ^ «Пешеходный переход — обзор WebCL» .
  5. ^ «Ускорение веб-приложений с помощью OpenCL» . ИБМ .
  6. ^ Jump up to: а б с д «Спецификация WebCL» . www.khronos.org . Проверено 14 сентября 2016 г.
  7. ^ «ХроносГруппа/webcl-валидатор» . Гитхаб . Проверено 14 сентября 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 33b6f938a59005ffbf2c04a50f2a602b__1720287540
URL1:https://arc.ask3.ru/arc/aa/33/2b/33b6f938a59005ffbf2c04a50f2a602b.html
Заголовок, (Title) документа по адресу, URL1:
WebCL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)