Вычислительное ядро
В вычислительной технике вычислительное ядро — это программа, скомпилированная для ускорителей с высокой пропускной способностью (таких как графические процессоры (GPU), процессоры цифровых сигналов (DSP) или программируемые пользователем вентильные матрицы (FPGA)), отдельная от основной программы, но используемая ею ( обычно работает на центральном процессоре ). Их иногда называют вычислительными шейдерами , они разделяют исполнительные блоки с вершинными и пиксельными шейдерами на графических процессорах, но не ограничиваются выполнением на одном классе устройств или графическими API . [1] [2]
Описание [ править ]
Вычислительные ядра примерно соответствуют внутренним циклам при реализации алгоритмов на традиционных языках (за исключением отсутствия подразумеваемой последовательной операции) или коду, передаваемому внутренним итераторам .
Они могут быть заданы отдельным языком программирования , таким как « OpenCL C » (управляемым API OpenCL ), как «вычислительные шейдеры », написанные на языке шейдеров (управляемые графическим API, таким как OpenGL ), или встроены непосредственно в код приложения . написан на языке высокого уровня , как в случае C++AMP .
Векторная обработка [ править ]
Эта парадигма программирования хорошо соответствует векторным процессорам : предполагается, что каждый вызов ядра в пакете независим, что позволяет выполнять параллельное выполнение данных . Однако в некоторых сценариях атомарные операции иногда могут использоваться для синхронизации между элементами (для взаимозависимой работы). Отдельным вызовам присваиваются индексы (в одном или нескольких измерениях), из которых может выполняться произвольная адресация данных буфера (включая операции разбросанного сбора ), при условии, что соблюдается предположение о непересекающихся данных.
API Вулкана [ править ]
API Vulkan предоставляет промежуточное представление SPIR-V для описания как графических шейдеров , так и вычислительных ядер независимым от языка и машины способом. Цель состоит в том, чтобы облегчить эволюцию языка и предоставить более естественную возможность использовать вычислительные возможности графического процессора в соответствии с такими разработками в области аппаратного обеспечения, как унифицированная архитектура памяти и гетерогенная системная архитектура . Это обеспечивает более тесное взаимодействие между процессором и графическим процессором.
См. также [ править ]
Ссылки [ править ]
- ^ Введение в вычислительное программирование в Metal , 14 октября 2014 г.
- ^ Учебное пособие по CUDA — ядро , 11 июля 2009 г.