Opencl в повседневных задачах

Opencl в повседневных задачах

Сравнительно не так давно мы говорили про HSA и на протяжении дискуссии преимуществ нового подхода к построению ПК затронули такую занимательную тему, как GPGPU — вычисления неспециализированного назначения на графическом ускорителе. Сейчас видеоускорители AMD предоставляют доступ к своим ресурсам посредством OpenCL — фреймворка, снабжающего относительно простое и понятное программированое высокопараллельной совокупности.
Смотрите кроме этого: teXet X-smart рекомендован для ответа повседневных задач

Компания teXet расширяет собственную линейку бюджетных смартфонов. На этот раз бренд представил компактный и эргономичный аппарат X-smart (ТМ-4071), что из коробки трудится на ОС Android 4.4 KitKat, оснащён двойным слотом для SIM-карт и поддерживает передачу данных в сетях 3G. Недорогая аппаратная платформа запланирована на исполнение ежедневных задач, каковые поднимаются перед любым обладателем современного смартфона. teXet X-smart взял 4-дюймовый дисплей.

Сейчас технологии OpenCL поддерживаются всеми главными игроками на рынке: возможность дать программам доступ к «продвинутому» ускорению (к тому же бесплатная, т.к. OpenCL не подразумевает каких-либо отчислений и роялти) очевидно того стоит, а от универсальности таких API побеждают все, кто реализует помощь OpenCL в собственных продуктах.

Подробнее о том, где сейчас возможно встретить OpenCL в повседневной судьбе, как он активизирует простой какие возможности и офисный софт открывает разработчикам сейчас и поболтаем.GPGPU, OpenCL и мало историиСамо собой, OpenCL — не единственный метод реализовывать неспециализированные вычисления на GPU.  Кроме OpenCL на рынке присутствуют CUDA, OpenACC и C++AMP, но по-настоящему популярными и находящимися на слуху являются первые две технологии.

Разработкой стандарта OpenCL занимались те же люди, каковые подарили миру разработки OpenGL и OpenAM: Khronos Group. Сама торговая марка OpenCL является собственностью фирмы Apple, но, к счастью для пользователей и программистов в мире, эта разработка не есть закрытой либо привязанной к продукции «яблочнои?» компании. Кроме Apple в Khronos Goup входят такие гиганты рынка, как Activision Blizzard, AMD, IBM, Intel, NVidia и ещё с дюжина компаний (по большей части, производителей ARM-ответов), каковые присоединились к консорциуму позднее.

В определённой мере OpenCL и CUDA идеологически и синтаксически схожи, от чего сообщество лишь победило. Программистам (в силу схожести определённых подходов и методов) несложнее применять обе технологии, переходить от «закрытои?» и привязанной к железу NVidia CUDA к универсальному и трудящемуся везде (среди них и на простых многоядерных CPU, и на суперкомпьютерах на базе архитектуры CELL) OpenCL.OpenCL в повседневном использованииСейчас вы поразмыслите «ага, будут сказать про игры и фотошоп».

Нет, OpenCL способен ускорить вычисления не только связанные с графикой. Одним из самых популярных приложений, применяющих возможности GPGPU есть… кроссплатформенный офисный пакет LibreOffice. Помощь OpenCL показалась в нём в 2014 году и используется для ускорения расчётов в табличном менеджере Calc. Вот наглядное видеосравнение производительности совокупности с AMD A10-7850K с графическим ядром R7 и Intel Core I5 с HD4600 на борту:

В синтетических тестах тот же AMD A10-7850K по неоднородным вычислениям с применением OpenCL обгоняет практически в два раза более дорогой i5-4670K / 4690:К слову, в науке и её прикладных направлениях имеется масса задач, каковые превосходно перекладываются на векторные процессоры видеоускорителей и разрешают делать расчёты в сотни и десятки раз стремительнее, чем на CPU. К примеру, разные разделы линейной алгебры. Умножение матриц и векторов — это то, чем GPU занимаются ежедневно, трудясь с графикой.

В этих задачах им нет равных, т.к. их архитектура затачивалась под ответ таких задач годами.Ко мне же относятся и стремительное преобразование Фурье, и всё, что с ним связано: ответ сложных дифференциальных уравнений разными способами. Раздельно возможно выделить гравитационные задачи N-тел каковые используются для расчёта аэро- и гидродинамики, моделировании плазмы и жидкостей.

Сложность расчётов содержится в том, что любая частица взаимодействует с другими, законы сотрудничества достаточно сложны, а вычисления требуется проводить параллельно. Для таких задач OpenCL и возможности GPU AMD подходят идеально, т.к. параллельные вычисления с множеством объектов и без того удачно решаются на процессорах для того чтобы типа ежедневно: в пиксельный шейдерах.Структурированные решётки довольно часто используются в растровой графике.

Неструктурированные — в вычислениях в области гидродинамики и при разных вычислениях с элементами, чьи графы имеют различный вес. Отличия структурированных решёток от неструктурированных числом «соседеи?» каждого элемента: у структурированных оно равное, у неструктурированных — различное, но и те и те превосходно ложатся на возможности OpenCL по ускорению вычислений. Сложности по переносу вычислений, по большей части, математические.

Другими словами главная задача у программиста — не только «написать» работу совокупности, но и создать математическое описание, которое переложит эти на аппаратные возможности посредством OpenCL.Комбинаторная логика (ко мне же относится и вычисление хэшей), способы Монте-Карло — то, что превосходно переносится на GPU.  Множество вычислительных модулей, высокая производительность в параллельных вычислениях — то, что реально активизирует эти методы.

Что ещё возможно ускорить посредством OpenCL и замечательных GPU?Поиск обратного пути. Вычисления графов и динамическое программирование: сортировки, обнаружение коллизий (соприкосновений, пересечений), генерацию регулярных структур, разные методы поиска и выборки.

С некоторыми ограничениями, но поддаются оптимизации и ускорению работы нейронных сетей и связанных с ними структур, но тут, скорее, неприятности в том, что нейронные структуры легко «дорого» виртуализировать, удачнее применять FPGA-решения. Превосходно показывают себя работы конечных автоматов (каковые и без того используются в работе с GPU, к примеру, в то время, когда речь заходит о компрессии / декомпресии видеосигнала либо работе по поиску повторяющихся элементов).

OpenCL vs CUDAСравнивать напрямую производительность OpenCL и CUDA фактически не имеет смысла. Во-первых, в случае если мы будем сравнивать их на видеокартах AMD и NVidia, то в неотёсанной гонке вычислительных возможностей победят видеоадаптеры AMD: современные ускорители NVidia имеют последовательность ограничений по производительности в формате FP64, внедрённые самой NVidia чтобы реализовывать «опытные» видеоплаты для вычислений (серии Tesla и Titan Z).

Их цена несоизмеримо выше, чем у аналогов по FLOPS на базе ответов AMD и их «родственных» карт в номерной линейке NVidia, что делает сравнение достаточно сложным. Возможно учитывать производительность-на-Ватт либо производительность-на-доллар, но к чистому сравнению вычислительной мощности это не имеет фактически никакого отношения: «FLOPS’ы любои? ценои?» слабо вяжутся с текущей денежной обстановкой, а по производительности-на-доллар «старуха» 7970 GHz Edition (она же R9 280X) до сих пор есть одной из самых удачных видеокарт.

Во-вторых, возможно попытаться сравнить OpenCL и CUDA на видеоплате от NVidia, но сама NVidia реализует OpenCL через CUDA на уровне драйвера, так что сравнение будет пара нечестным по в полной мере понятным обстоятельствам. Иначе, в случае если брать во внимание не только производительность, то кое-какой анализ совершить однако возможно. OpenCL трудится на куда большем перечне железа, чем NVidia CUDA.

Фактически все CPU, поддерживающие комплект руководств SSE 3, видеоускорители начиная с Radeon HD5xxx и NVidia GT8600 заканчивая новейшими Fury / Fury-X и 980Ti / Titan X, APU от AMD, встроенная графика Intel — в общем, фактически любое современное железо с несколькими ядрами может воспользоваться преимуществанми данной технологии. Особенности реализации CUDA и OpenCL (и достаточно сложная документация, т.к. параллельное программирование в целом далеко не самая лёгкая область разработки), скорее, отражены в инструментах разработки и специфических возможностях, а не в области производительности.

К примеру, у OpenCL имеются кое-какие неприятности с распределением памяти в силу «The OpenCL documentation is very unclear here». К тому же, CUDA уступает OpenCL в области синхронизации потоков — данных, руководств, памяти, чего угодно. К тому же посредством OpenCL возможно применять дополнительное выполнение потоков (out-of-order queues) и руководств, а CUDA до сих пор может лишь in-order.

На практике это разрешает избежать простоев процессора в ожидании данных, и эффект тем заметнее, чем дольше ковейер процессора и больше отличие между скоростью работы работы и скоростью памяти вычислительных модулей. Кратко: чем больше мощности вы выделите под OpenCL, тем больше будет отрыв в производительности.

CUDA с целью достижения сравнимых результатов потребует написание куда более сложного кода.Инструменты для разработки (Дебаггер, профилер, компилятор) CUDA немного лучше, чем подобные у OpenCL, но CUDA реализует API через язык C, а OpenCL — через С++, упрощая работу с объектно-ориентированным программированием, наряду с этим оба фреймворка изобилуют «локальными» хитростями, особенностями и ограничениями.Подход NVidia в этом случае очень сильно напоминает то, как трудится компания Apple. Закрытое ответ, с громадным строгими правилами и набором ограничений, но прекрасно заточенное для работы на конкретном железе.OpenCL предлагает более возможности и гибкие инструменты, но требует более большого уровня подготовки от разработчиков. Неспециализированный код на чистом OpenCL обязан запуститься на любом поддерживающем его железе, вместе с тем «оптимизированныи?» под конкретные ответы (скажем, видеоускорители AMD либо процессоры CELL) будет трудиться заметно стремительнее.

Случайная статья:

CUDA или OpenCL в Adobe Premiere Pro CC


Похожие статьи:

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.