Таким образом, получается, что обещанная технология plug and play не работает. Принтеры не соединяются с ПК, серверы не взаимодействуют с серверами, работающими под управлением другой операционной системы, приложения не связываются друг с другом, устройства не синхронизируются – этот список можно продолжать до бесконечности. И дело не только во взаимодействии аппаратного и программного обеспечения. Ведь постоянно происходят значительные изменения в области технологий центральных и графических процессоров, но разработчикам и пользователям было трудно принять эти перемены.
В последнее время значительно возрос интерес к использованию графических процессоров для проведения вычислений общего назначения. Конвейеры графической обработки эволюционировали с модулей, выполняющих фиксированные функции, до модулей, использующих в высшей степени программируемые вычислительные блоки. Видя это, находчивые разработчики пытались использовать грандиозный потенциал параллельных вычислений на графических ядрах, переписывая свои приложения так, чтобы вписываться в модели программирования, поддерживаемые традиционными программными интерфейсами графических приложений, такими как Microsoft DirectX и OpenGL.
Хотя такой подход обрел популярность среди исследователей, но он оказался труден для разработчиков, не привыкших иметь дело с графическими программными интерфейсами. Это привело к появлению новых программных интерфейсов, специально рассчитанных на то, чтобы быть удобными для разработчиков, скрывая детали модели графического программирования. Однако массовое принятие нового подхода было все еще затруднено. Дело в том, что новые программные интерфейсы в конечном счете могли работать лишь на продуктах поставщика интерфейса. Кроме того, графический процессор рассматривался как независимый ускоритель приложений, а не как составная часть большей сбалансированной однородной платформы. Это приводило к тому, что для графического и центрального процессоров писался свой отдельный программный код. В свою очередь, это не вызывало быстрое принятие нового подхода из-за растерянности разработчиков и маркетологов, пытавшихся найти верный путь полного использования дополнительной вычислительной мощи и понять, какой программный интерфейс лучше использовать для каждого программного модуля.
История демонстрирует, что рыночная путаница стандартов способна сильно повлиять на продажи продуктов – достаточно вспомнить противостояние стандартов VHS и Betamax или Blu-ray и HD DVD. Пользователи, будь то корпоративные или домашние, могут очень неохотно инвестировать в технологию, если ее перспективы туманны. Производители вскоре поняли, что отсутствие единого стандарта тоже тормозило принятие технологии вычисления на графических процессорах, что подтолкнуло их к тому, чтобы начать утверждать стандарты и сотрудничать друг с другом. В прошлом году основные поставщики центральных и графических процессоров объединили свои усилия для разработки языка программирования Open Computing Language (OpenCL). Разработчики могут использовать этот новый язык, основанный на стандартах, для программирования на базе однородных платформ, используя все доступные в системе процессоры, независимо от их типа и их поставщиков.
Созданный организацией Khronos Group — тем же консорциумом, который отвечал за разработку программного интерфейса OpenGL для лучшего создания двухмерной и трехмерной графики в приложениях САПР, приложениях обработки рентгенографических и томографических изображений и развлекательных приложениях — стандарт OpenCL рассчитан на выполнение параллельных вычислений на графических и центральных процессорах. OpenCL позволяет графическому процессору помогать центральному процессору проводить вычисления или осуществлять массовую обработку данных, что ведет к более сбалансированной платформе, характеризующейся большей скоростью и большей эффективностью. OpenCL позволяет разработчикам переносить на графический процессор выполнение задач, параллельных по своей природе, возлагая выполнение остальных задач на центральный процессор. Каждый процессор в системе работает над теми задачами, для которых он лучше всего подходит, что способствует получению больших результатов за меньшее время на том же аппаратном обеспечении. Бета-версия OpenCL для центральных процессоров архитектуры x86 уже доступна у AMD. Разработчики могут начать переносить свои программы на эту версию OpenCL и с легкостью воспользоваться преимуществами вычислений на графических процессорах, когда выйдет полная платформа разработки OpenCL.
На практике это означает, что OpenCL дает возможность улучшить время отклика серверов и высокопроизводительных систем. Например, многие финансовые компании, банки и организации, имеющие дело с огромными объемами данных, часто испытывают затруднения при поиске необходимых данных, а затем при анализе и связывании этих данных с целью получения нужной информации. Ранее на это могло уходить много времени, поскольку обработка данных в системе проводилась только на центральном процессоре. Теперь же за счет использования вычислительной мощи графических процессоров можно значительно быстрее получать желаемые результаты. Используя все процессоры системы, OpenCL помогает финансовым компаниям добиваться большего от уже приобретенного оборудования. И преимуществами OpenCL могут пользоваться не только финансовые компании, а любые организации, проводящие массовую обработку данных, такие как научно-исследовательские лаборатории, университеты, отделы автоматизированного проектирования, ТВ-студии и кинокомпании.
Язык OpenCL выделяется тем, что позволяет приложениям динамически определять, какие процессоры доступны, включая многоядерные центральные процессоры и графические процессоры. Это позволяет разработчикам динамически масштабировать производительность своих приложений в зависимости от доступного аппаратного обеспечения клиентов. Например, если компания приобретает приложение с поддержкой ускорения OpenCL, которое может использовать доступные в данный момент центральные и графические процессоры, то она может подогнать инвестиции в оборудование под текущие вычислительные потребности. Если затем ее потребности возрастут, то она может просто купить дополнительные или более мощные центральные или графические процессоры.
Возможно, самое важное преимущество стандарта OpenCL состоит в том, что он является открытым. Этот стандарт разрабатывается группой компаний, и все поставщики, вовлеченные в эту разработку, заинтересованы в том, чтобы он работал на их оборудовании. Единый проект позволяет всем его участникам договориться друг с другом и создать язык, подходящий для любого оборудования, от чего также выиграют и конечные пользователи, которые смогут быстрее и эффективнее проводить свои вычисления.
Стандарт OpenCL нацелен на то, чтобы решать реальные проблемы конечных пользователей и программистов. Открытый межплатформенный язык, такой как OpenCL, поможет нам приблизиться к эре быстрых и эффективных вычислений.