Open Computing Language (OpenCL) |
Автор: admin Просмотров: 2053 Комментарии:
Добавлен: 17 апреля 2016
Обновлено: 17.04.2016 - 14:09
Каркас для написания компьютерных программ, которые будут выполнятся на гетерогенных платформах, состоящих из центральных процессоров (CPU), графический процессоров (GPU), цифровых сигнальных процессоров (DSP), программируемых пользователем вентильных матриц (FPGA) и других процессоров или аппаратных ускорителей. В OpenCL входит язык программирования на основе С99 для программирования этих устройств и интерфейсов прикладного программирования (API) для управления платформой и выполнения программы на вычислительных устройствах. OpenCL предоставляет стандартный интерфейс для параллельных вычислений с использованием параллелизма на основе задач и на основе данных.
OpenCL является открытым стандартом поддерживаемым некоммерческим консорциумом [INVALID URL BB CODE]
OpenCL рассматривает вычислительную систему как состоящую из целого ряда вычислительных устройств, которые могут быть центральным процессором (CPU) или "ускорителями", такими как графический процессор (GPU), подключенный к процессору (CPU). Он использует Си- подобный язык для написания программ. Функции, выполняемые на устройстве OpenCL называются "kernels". Одно вычислительное устройство, как правило, состоит из нескольких вычислительных блоков, которые в свою очередь содержат несколько процессорных элементов (PEs). Одно задание kernel может работать на всех или на многих PEs одновременно. Вычислительный блок можно рассматривать как "kernel ", но понятие kernel трудно определить во всех типах устройств, поддерживаемых OpenCL (или даже в пределах категории "процессоров"), и количество вычислительных блоков может не соответствовать количеству ядер, заявленных в литературе вендора по маркетингу (где на самом деле могут быть подсчитаны SIMD потоки ).
В дополнение к C-подобным языкам программирования, OpenCL определяет интерфейс прикладного программирования (API), который позволяет программе управлять памятью устройства, которое (по крайней мере, концептуально) отдельно от памяти системы. Программы на языке OpenCL компилируются во время выполнения, так что OpenCL-приложения переносимы между реализациями различных систем. Стандарт OpenCL определяет API - интерфейсы для C и C++. Существуют сторонние API - интерфейсы для других языков программирования и платформ, таких как Python, Java и .NET. Стандарт OpenCL состоит из библиотеки API для C и C ++, и OpenCL C компилятора для вычислительного устройства (ов) целевой платформы.
Иерархия памяти OpenCL
OpenCL определяет четыре уровня иерархии памяти для вычислительного устройства:
- Глобальная память: общие для всех элементов обработки, но имеет высокую латентность доступа;
- Память только для чтения: меньше, малое время задержки, запись только на принимающий CPU, но не на вычислительное устройство;
- Локальная память: совместная обработка группы элементов;
- Память каждого элемента (регистры).
Не каждое устройство должно иметь все уровни иерархии. Согласованность между различными уровнями иерархии слабая, соблюдаются только явные конструкции, в частности барьеры.
Устройства могут или не могут разделять память с центральным процессором. API узла предоставляет ручное управление буфером памяти устройства и функции для передачи данных туда и обратно между узлом и устройствами.
OpenCL Cи-язык
Язык программирования, используемый для написания вычислительных ядер называется OpenCL C и основывается на C99, но адаптирован к модели устройства в OpenCL. Буферы памяти находятся в определенных уровнях иерархии памяти, указатели помечаются как __global , __local , __constant и __private , reflecting
Вместо программы устройства с основными функциями, OpenCL C функции отмечают __kernel как сигнал точки входа в программу, чтобы вызываться из программы узла. Указатели на функции , битовые поля и массивы переменной длины опущены, рекурсии запрещены. Стандартная библиотека C заменяется пользовательским набором стандартных функций, нацеленные на математическое программирование.
OpenCL C расширен для облегчения параллельности с векторными типами и операциями, синхронизации и функциями для работы с рабочими элементами и рабочими группами. В частности, кроме таких скалярных типов как float и double, которые ведут себя аналогично соответствующим типам в C, OpenCL предоставляет типы векторов фиксированной длины float4 (4-vector of single-precision floats). Такие векторные типы доступны для второй, третей, четвёртой, пятой и шестнадцатой длины различных базовых типов. Векторизованные операции этих типов предназначены для отображения на SIMD наборов инструкций, например, SSE или VMX при запуске OpenCL программы на CPU. Другие специализированные типы включают в себя 2-D и 3-D типов изображений.
https://en.wikipedia.org/wiki/OpenCL
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Программирование
Язык программирования:
C/C++
Архитектура компьютера: ARMv7, ARMv8, Cell, PowerPC, x86, x86-64
Сайт проекта
Комментарии |