OpenCL Framework: подходит ли вам?

Раскрытие информации: Ваша поддержка помогает поддерживать работу сайта! Мы зарабатываем реферальную плату за некоторые услуги, которые мы рекомендуем на этой странице.


OpenCL, или Open Computing Language, является программной средой, разработанной исключительно для создания приложений, которые могут работать в различных компьютерных системах. Это открытый стандарт для разработки кроссплатформенных приложений параллельного программирования, который имеет ряд реализаций с открытым исходным кодом..

По сути, OpenCL был разработан, чтобы позволить кодировщикам создавать приложения, которые можно запускать на любом устройстве, независимо от производителя, спецификаций процессора, графического блока или других аппаратных компонентов. Это означает, что разработчик может создать приложение на своем ПК с Windows, и оно будет работать так же хорошо на телефоне Android, компьютере Mac OS X или любом другом устройстве параллельной обработки. При условии, конечно, что все эти устройства поддерживают OpenCL и имеют соответствующий компилятор и реализованную библиотеку времени выполнения.

Язык программирования, используемый для разработки приложений OpenCL, – это OpenCL C, основанный на C99 (предыдущее официальное определение языка программирования C). OpenCL C может программировать различные аппаратные средства и устройства, включая процессоры, графические процессоры и аппаратные ускорители.

история

OpenCL был сначала разработан Apple Inc, а затем усовершенствован с учетом информации от нескольких крупных разработчиков оборудования и предложен некоммерческой организации Khronos Group. Группа Khronos создала комитет по открытым стандартам с активным участием нескольких крупных поставщиков технологий для завершения разработки стандартов OpenCL.

Технические стандарты были доработаны в конце 2008 года, а в 2009 году Apple выпустила OpenCL 1.0 со своей Mac OS X Snow Leopard. В течение 2008 и 2009 годов OpenCL был официально принят AMD, NVIDIA и IBM..

В 2010 и 2011 годах было представлено несколько новых функций и улучшений, а в 2013 году был выпущен OpenCL 2.0, который включал, среди прочего, поддержку общей виртуальной памяти, вложенный параллелизм и расширение клиентского драйвера для Android. Последующий выпуск в 2015 году, Open CL 2.1, заменил язык ядра OpenCL C на OpenCL C++.

Интернет-ресурсы

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

  • Страница ресурсов Khronos: группа Khronos, отвечающая за поддержку OpenCL, собрала большой список ресурсов для разработчиков, включая информацию о различных реализациях, привязках к языку и множестве библиотек и сред, доступных программистам OpenCL. Этот же сайт также включает в себя обширный список онлайн-обучения и руководств.
  • Справочные карты: эти удобные справочные листы содержат все необходимое для программирования в OpenCL, включая руководство по API, диаграмму классов, команды совместно используемой виртуальной памяти, а также списки доступных программных объектов, типы данных, встроенные функции и многое другое..
  • Форумы Intel OpenCL: этот сайт в основном посещают известные разработчики OpenCL, которые ищут советы по программированию, обсуждают лучшие практики и делятся идеями.

Учебники

Для OpenCL доступно несколько онлайн-учебных пособий, некоторые из которых созданы сообществом разработчиков открытого кода, другие разработаны многими производителями оборудования, внесшими свой вклад в стандарт OpenCL. Поскольку OpenCL является продвинутым инструментом программирования, большинство из них предполагают предыдущий опыт разработки приложений и, как правило, знание C / C++.

  • Учебное пособие по OpenCL от CodeProject: этот интерактивный учебный курс содержит обширную информацию о проекте OpenCL, руководство по установке соответствующего программного обеспечения для разработки OpenCL и отдельные уроки по всем основным областям программирования OpenCL. Включает несколько примеров и дополнительные ссылки для справочной информации..
  • Учебное пособие по CMSoft OpenCL: CMSoft предлагает как общее учебное пособие по OpenCL, так и серию тематических исследований, предназначенных для охвата ряда специализированных проектов, включая реализацию общего алгоритма фильтрации фотографий, который будет работать на любом совместимом с OpenCL графическом процессоре, отслеживание цвета в видео, и как использовать графический процессор для умножения матриц.
  • Введение в OpenCL Tutorial: созданный аппаратным архитектором в AMD, этот учебник написан для совершенно новых программистов OpenCL и знакомит их с основами OpenCL, предоставляя множество примеров кодирования.

книги

Будучи относительно новой платформой, есть только несколько книг по OpenCL, и многие из них были написаны до текущей версии, что означает, что они не будут охватывать некоторые из последних функций, доступных для разработчиков. Тем не менее, даже старые тексты дают хороший обзор структуры и ее использования. Ознакомление с последними разработками можно легко получить через многие онлайн-ресурсы, перечисленные выше..

  • Гетерогенные вычисления с OpenCL 2.0 Дэвида Кели и др.: Этот текст призван охватить как стандарт OpenCL, так и общую концепцию параллельного программирования. В нем рассматриваются такие темы, как общая виртуальная память, методы оптимизации, отладка и способы распределения работы по разнородной системе компьютеров. Он включает в себя несколько тематических исследований, а также пример кода.
  • Руководство по программированию OpenCL Munshi и др.: Эта книга специально написана для работающих разработчиков. Будучи одним из самых ранних учебников OpenCL, написанных для версии 1.1, он не охватывает некоторые из последних улучшений. Тем не менее, он по-прежнему предоставляет эффективный обзор архитектуры и терминологии OpenCL, основных функций программирования и учебных пособий по языку для OpenCL C. Этот текст также включает в себя несколько тематических исследований, примеров и исходного кода в Интернете..
  • Руководство по разработке параллельного программирования OpenCL Рэймонда Тея: в этом тексте используется подход, который позволяет эффективно изучать язык и понимать как теорию, лежащую в его основе, так и практические применения. Это разбивает обучение на две части. Первая половина книги охватывает основы OpenCL и параллельного программирования. Вторая половина – исследование ключевых алгоритмов, демонстрирующих различные методы параллельного программирования..
  • Программирование OpenCL на примере Бангера и Бхаттачарьи: эта книга призвана стать «простым» руководством по программированию OpenCL, используя очень простые примеры для демонстрации ключевых концепций параллельного программирования и OpenCL..

Вывод

Двадцать лет назад, когда подавляющее большинство пользователей компьютеров работали с одними и теми же операционными системами, а на сцене CPU / GPU доминировала лишь небольшая горстка компаний, возможность программировать на нескольких платформах была роскошью, которую большинство из нас просто не понимали. не нужно. Но с запуском мобильных технологий и ростом Apple и Android маловероятно, что мы скоро увидим какого-либо отдельного производителя с таким уровнем доли рынка. Вместо этого разработчики программного обеспечения должны адаптироваться к современной гетерогенной среде.

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

Дальнейшее чтение и ресурсы

У нас есть больше руководств по программированию, учебных пособий и инфографики, связанных с кодированием и ресурсами разработчика:

  • Ресурсы для разработчиков на C: начинайте и переходите к передовым областям программирования на C.
  • Cocoa и Cocoa Touch Введение: изучите API для создания приложений для Mac OS X и iOS.
  • Введение в Java, обучение и ресурсы: на многих устройствах Java является отличным языком, если вы хотите программировать для большого количества платформ..

Какой код вы должны изучить?
Какой код вы должны изучить?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map