Несмотря на рост вычислительных мощностей процессоров и компьютеров в целом, требования заказчиков и пользователей относительно производительности ИТ-систем и решений растут еще быстрее. Именно поэтому для многих софтверных проектов актуальной проблемой является обеспечение высокой эффективности программного кода и повышение быстродействия приложений не путем наращивания вычислительной мощности техники, а программно-алгоритмическими методами. На рынке есть весьма широкой спектр предложений для решения подобных задач от поставщиков средств разработки, однако особую позицию в этой сфере занимает корпорация Intel. В своих инструментах она делает естественный для себя, как ведущего мирового производителя процессоров доминирующей на рынке архитектуры x86, акцент на возможности оптимизации программного кода с учетом особенностей микропроцессорных систем Intel.
Для каких программистских задач проблема производительности и масштабируемости особенно актуальна? Каких усилий потребует решение этих задач от руководителей проектов и от самих разработчиков? Как оценивать результаты оптимизации программ? Что конкретно предлагает в этой сфере Intel? Эти и другие вопросы были в центре внимание вебинара “Как с помощью инструментария разработчика сделать программный код эффективным”, проведенного в декабре прошлого года еженедельником PC Week/RE при участии сотрудников нижегородского исследовательского центра Intel (где в том числе как раз и занимаются созданием такого инструментария) — разработчика программных инструментов Intel Екатерины Антаковой и специалиста по продвижению ПО Intel Галины Санжарлинской.
Для начала нужно напомнить простую истину: конечные пользователи имеют дело не с процессорами и модулями памяти, а с программными приложениями, решающими их (пользователей) прикладные задачи. А потому именно наличие соответствующего ПО и его качество – главные факторы успеха техники. Корпорация Intel отлично понимает эту базовую для ИТ-мира истину и потому фактически с момента своего создания выделяет тему сотрудничества с независимыми разработчиками ПО (в том числе их поддержки в разных форматах), как одно из ключевых направлений своей деятельности. С середины 1990-х компания присутствует на рынке с собственными средствами разработки и инструментами для повышения эффективности программного кода. В структуре компании уже давно важную роль играет софтверное направление, сосредоточенное в подразделении Software & Service Group (SSG). Более того, роль его неизменно возрастает. В задачи SSG входит разработка как разного рода средств для внутреннего потребления в корпорации, так и продуктов для внешних пользователей, преимущественно это средства разработки для программистов. Данная группа также обеспечивает общее взаимодействие с независимыми разработчиками.
Вполне понятно, что разработка ПО включает широкий спектр различных направлений деятельности с решением разных задач, порой довольно сильно различающихся с точки зрения предъявляемых к ним требований со стороны заказчиков и пользователей. При этом сами требования являются достаточно противоречивыми, а потому руководителям проектов и разработчикам почти всегда приходится искать компромиссные варианты при согласовании противоречащих друг другу требований снижения стоимости разработки и повышения эффективности эксплуатации ПО. Один из важных методов решения такой оптимизационной задачи –использование специальных инструментов разработки.
Отметим также, что повышение эффективности программного кода (тут подразумеваются в первую очередь повышение производительности ПО) особенно важно в задачах с высокой вычислительной нагрузкой (научно-технические расчеты, разного рода математическое моделирование, обработка мультимедийной информации, игровые приложения и пр.).
Доля такого рода задач на софтверном рынке, возможно, не столь велика, во всяком случае, пока уступает вопросам создания бизнес-приложений (хотя игровое направление явно растет опережающими темпами), но это не умаляет их значимости. К тому же нужно отметить, что сфера научно-технических и математических расчетов вообще часто не попадает в поле внимания аналитиков ИТ-рынка, поскольку они сосредоточены во многом на некоммерческих структурах (университеты, НИИ, внутрифирменные исследовательские подразделения и пр.).
Специфика современного этапа развития вычислительной техники заключается в том, что возможности повышения быстродействия монопотоковых вычислений чисто “электронными” методами в значительной степени были исчерпаны в начале нынешнего века, и потому главное направление увеличения компьютерной мощности – наращивание числа параллельных вычислительных потоков, в том числе за счет многопроцессорных систем и многоядерных процессоров.
Отметив, что сегодня многоядерность в ИТ нас окружает уже почти на 100% (в ПК, серверах, высокопроизводительных системах), Екатерина Антакова подчеркнула, что в этой ситуации перед разработчиками встает и целый ряд новых проблем. Например, нужно прогнозировать возможности масштабируемости кода с учетом появления новых архитектур, роста числа ядер в процессорах и узлов в кластерах, обновления самой структуры вычислительных систем. Ведь уже сегодня нужно учитывать потенциальное масштабирование не только на 4, но и на 64 ядра и даже более того. При этом возможности параллелизма нужно использовать и на уровне кластера, и на каждом узле.
Нужно учитывать и то, что дефекты в многопоточной программе редко воспроизводятся, нестабильны, трудно отлаживаются. С развитием программной системы код усложняется, обрастает скрытыми дефектами, устаревшими частями. Поддержка такого кода тяжела разработчикам, от них требуются постоянные усилия по уменьшению сложности программного кода, а также по удалению его устаревших частей. Решение этих проблем должно обеспечиваться за счет достижения максимальной корректности параллельного кода, а повышение производительности — с помощью декомпозиции задач, оптимального использования вычислительных ресурсов и снижения накладных расходов по управлению потоками и их синхронизации.
В качестве иллюстрации этой ситуации Екатерина Антакова привела пример проекта компании Altair Engineering по оптимизации ПО симулятора краш-теста автомобиля, математическая модель которого содержит около 1 млн. элементов. Здесь задача обеспечения быстрого моделирования сложной системы должна была выполняться в условиях использования в качестве вычислителей как ПК, так и серверных кластеров, а также гибридного параллельного приложения с поддержкой разных архитектур и технологий (в том числе MPI и OpenMP). В результате применения целого набора средств Intel (Сompilers, VTune Performance Analyzer, Cluster Toolkit, Trace Analyzer and Collector, MPI Library) разработчики смогли снизить время моделирования почти в 10 раз – до 5 мин на 1024 ядрах (128 MPI × 8 OpenMP).
Со своей стороны Intel предлагает разработчикам три основных комплексных продукта: Intel Parallel Studio XE (обеспечение высокой производительности на уровне узла), Intel Cluster Studio (поддержка распределенной производительности в кластере) и Intel Cluster Studio XE, объединяющий возможности первых двух инструментов.
Intel Parallel Studio XE включает в себя целый набор средств и инструментов, но его основной компонент – Intel Composer XE, в него входят оптимизирующие компиляторы Intel Cи/C++ и Fortran (для Windows и Linux) и соответствующие высокопроизводительные библиотеки. Оба компилятора поддерживают новейшие стандарты этих языков и обладают повышенной производительностью по сравнению с предыдущими вариантами средств Intel и конкурирующими предложениями. В набор для ОС Windows входит компилятор Visual Fortran, который может быть интегрирован в Visual Studio или установлен с оболочкой Visual Shell, поставляемой в комплекте, для Linux и Mac OS X компилятор может быть легко интегрирован в среды разработки Eclipse и XCode соответственно.
В составе Intel Parallel Studio XE имеются также библиотеки для оптимизации производительности и поддержки параллельных вычислений, средства анализа ошибок и профилировщики производительности. В целом с помощью данного инструмента разработчики могут создавать коды, поддерживающие масштабирование на современных процессорах Intel Xeon и Intel Core, а также выполнять переход на архитектуру Intel Many Integrated Core (Intel MIC). В новых версиях пакета эти возможности расширены за счет использования усовершенствованной версии (4.0) библиотеки шаблонов Intel Threading Building Blocks и обновленных расширений Intel Cilk Plus.
Кроме того, в состав Intel Parallel Studio XE входит целый комплекс инструментов, существенно облегчающих жизнь разработчика на разных этапах разработки приложения: VTune Amplifier XE (оптимизация производительности), Inspector XE (обнаружение ошибок памяти и многопоточности) и Adviser XE (поиск вариантов для многопоточности на этапе проектирования).
В дополнение ко всем этим средствам продукт Intel Cluster Studio XE включает Intel MPI Library (высокопроизводительная библиотека для передачи сообщений при использовании различных коммуникационных сред с возможностью настройки приложений) и инструмент Intel Trace Analyzer and Collector (анализ производительности и корректности MPI приложений для поиска узких мест и дисбаланса, в том числе с использованием визуальных средств).
Все эти инструменты поддерживают самые современные аппаратные архитектуры Intel, в том числе в их интегрированной реализации. В частности, речь идет о карте-акселераторе Intel Xeon Phi, которая, по сути, объединяет 60 (по крайней мере, в анонсированной модели 5110P) ядер x86 с большими 512-разрядными векторными модулями, работающими на частоте более 1 ГГц и обеспечивающими скорость вычислений двойной точности более 1 ТFLOPS. Все эти компоненты расположены на двухслотовой карте PCI Express со специальной прошивкой на базе Linux. Intel Xeon Phi 5110P включает 8 Гб памяти GDDR5, однако карты 3100 серии Intel планирует оснащать 6 Гб. Безусловно, ядра не рассчитаны на обработку основных задач, с которыми справляются процессоры семейства Core и даже Atom, но они отлично работают в параллельных задачах, способных использовать большое число ядер для максимального эффекта.
Карты-акселераторы Intel Xeon Phi могут эффективно применяться при моделировании погоды, решении различных медицинских задач, при исследованиях в области энергетики, в трёхмерном моделировании, для финансового анализа, создания контента и в производстве. Сейчас для наращивания вычислительной мощности в этих областях используют аппаратные средства AMD и Nvidia. Intel же просто делает то же самое, только её продукция не требует переработки и написания кода для CUDA или OpenCL. Таким образом, независимые поставщики могут оптимизировать свои программы под Intel Xeon Phi, используя языки Cи, Cи++ и Fortran с определёнными дополнениями, которые помогают задействовать этот акселератор.
Возможности ознакомления с инструментами разработчика Intel и их приобретения представила на вебинаре Галина Санжарлинская. Корпорация предлагает несколько вариантов лицензий по типу (ознакомительные, однопользовательские, плавающие) и назначению (академические и коммерческие). При этом периодически компания делает специальные предложения со скидками до 50%.
Кроме того, компания имеет постоянные долгосрочные программы сотрудничества с разработчиками ПО. На вебинаре была представлена новая программа Intel Developer Zone, запущенная в сентябре 2012 г. Она объединила в себе преимущества ранее существовавших программ (в том числе Intel Software Partner Program и Intel Software Network), чтобы предоставить компаниям и индивидуальным разработчикам доступ к различным инструментам, техническим материалам, а также помочь им наладить отношения со своими коллегами, клиентами, оказать содействие в разработке, маркетинге и продаже своего ПО. Intel также предлагает программы обучения и сертификации разработчиков по своим инструментам и технологиям.