Вычислить ядро - Compute kernel
В вычислении , А вычислить ядро представляет собой процедуру , скомпилированные для высокой пропускной способности ускорителей (например, графических процессоров (GPU), цифровых сигнальных процессоров (ЦСП) или полевых программируемых массивов затворов (FPGA)), отдельно от , но используемых в основной программе ( обычно выполняется на центральном процессоре ). Их иногда называют вычислительными шейдерами , они разделяют исполнительные блоки с вершинными шейдерами и пиксельными шейдерами на графических процессорах, но не ограничиваются выполнением на одном классе устройств или графическими API .
Описание
Вычислительные ядра примерно соответствуют внутренним циклам при реализации алгоритмов на традиционных языках (за исключением того, что здесь нет подразумеваемой последовательной операции) или коду, передаваемому внутренним итераторам .
Они могут быть указаны с помощью отдельного языка программирования, такого как « OpenCL C » (управляемый OpenCL API), как «вычислительные шейдеры », написанные на языке шейдинга (управляемый графическим API, таким как OpenGL ), или встроенные непосредственно в код приложения. написан на языке высокого уровня , как в случае C ++ AMP .
Векторная обработка
Эта парадигма программирования хорошо соответствует векторным процессорам : предполагается, что каждый вызов ядра в пакете независим, что позволяет выполнять параллельное выполнение данных . Однако в некоторых сценариях для синхронизации между элементами (для взаимозависимой работы) иногда могут использоваться атомарные операции . Индивидуальным вызовам присваиваются индексы (в одном или нескольких измерениях), из которых может выполняться произвольная адресация данных буфера (включая операции сбора с разбросом ), при условии, что соблюдается предположение о неперекрытии.
Vulkan API
Vulkan API , обеспечивает промежуточный SPIR-V представление для описания как графического Shaders и Compute Ядра, в самостоятельном языке и машины независимым образом. Намерение состоит в том, чтобы способствовать эволюции языка и обеспечить более естественную способность к возможностям левередж GPU вычислений, в соответствии с аппаратными разработками , такими как архитектура Unified Memory и гетерогенного System Architecture . Это обеспечивает более тесное взаимодействие между процессором и графическим процессором.