Samara Portal Technology, Computers

Самарский портал "Технологии, компьютеры"

…у лука есть слои, – объяснил Шрек, ошелушивая луковицу и показывая Ослу. – И у людоедов есть слои! Ты понял? – и он швырнул луковицу ослу под ноги и зашагал вперед.
Некоторое время Осёл стоял, задумавшись, и смотрел на луковицу.
– У вас обоих есть слои… Гм… Знаешь, если бы я любил лук… Торт! – внезапно закричал он. – Все любят торт! У торта есть слои!

 

В материале «Интеллигентный Саров» я специально не стал писать о том, чем же конкретно занимается Центр исследований и разработок Intel в Сарове (технопарк Сатис), поскольку тема эта большая и требует отдельного рассмотрения. Но главное, сама ситуация с открытием Центра Intel в Сарове показалась мне столь фантастичной и даже какой-то сказочной, что именно её мне захотелось изложить в первую очередь.

В 1946 году, когда в Сарове (тогда он назывался Арзамас-16) начали возводить первый советский ядерный центр, американский математик венгерского происхождения Джон фон Нейман придумал схему постройки компьютера, где процессорный модуль был физически отделён от хранилища программ и данных. Не следует удивляться тому, что понятие процессорного модуля появилось за несколько десятилетий до того, как корпорация Intel произвела на свет первый микропроцессор. Дело в том, что процессор – это исполнитель машинных инструкций, часть аппаратного обеспечения компьютера или программируемого логического контроллера, отвечающий за выполнение операций, заданных программами. И реализован он может быть любым способом: переключаемые механические реле, лампы, транзисторы. Разумеется, механический процессор не был, да и не мог быть успешным, но с чего-то же надо было начинать. Не следует удивляться и тому, что компьютер появился раньше процессора (представляете – самолёт бы появился раньше двигателя!): компьютер, успешно протестированный в 1942 году американцем болгарского происхождения Джоном Атанасовым не был программируемым.

Очевидно, что первыми пользователями настоящего неймановского компьютера могли быть только его создатели: всё остальное население нашей планеты просто не знало, что это за зверь. Так же на тот момент не существовало языков программирования, операционных систем (ОС), систем управления базами данных (СУБД) и прочего софта. Другими словами, команды отдавались конечным пользователем непосредственно процессору. Не буду излагать здесь всю историю вопроса, но так же очевидно, что на сегодняшний день конечный пользователь, как правило, работает с приложением, приложение взаимодействует с ОС и/или СУБД, само приложение создано компиляцией исходных текстов какого-нибудь языка программирования в машинные коды…, и на последнем этапе программное обеспечение работает уже непосредственно с процессором. Однако процессоров много, даже в дружной семье X86 достаточно различий, и писать приложения, оптимальным образом взаимодействующие с каждой моделью процессора, стало, мягко говоря, проблематично.

И вот корпорация Intel решила, что первый слой софта, соприкасающийся непосредственно с процессором, должны написать они сами. Здесь имеет место уже не просто доступ к системе команд процессора на ранних стадиях его разработки, а активное участие в этой работе, возможность повлиять со своей стороны на разработчиков «железа» (хотя система команд – это уже и не совсем «железо»). В результате сторонние программисты могут абстрагироваться от конкретной модели процессора и взаимодействовать не с ним, а со слоем программной оболочки вокруг него. А уж эта оболочка, определив, вокруг какого процессора она находится в конкретном компьютере, сумеет оптимальным образом давать ему инструкции. Сразу возникает вопрос: а если программа будет запущена на компьютере с другим процессором? Оказывается, в Intel решили, что будет лучше, если библиотеки сумеют работать и с процессорами конкурентов, поэтому в этой области имеет место сотрудничество. Необходимо также отметить особую важность библиотек для многоядерных процессоров. Собственно, и успех многоядерных процессоров зависел от того, насколько полно сумеют программисты использовать возможность распараллеливания приложений. И здесь опять жизнь заставила корпорацию Intel помогать своим конкурентам, также начавшим производить многоядерные процессоры: приложения распараллеливались и на их изделиях.

Сколь «толстым» является этот слой? Существует ли вероятность того, что он разрастётся (или будет дополнен вторым, третьим слоем) и станет доминировать, то есть займёт в программном продукте примерно такое же место, какое занимает в компьютере интеловская платформа? Пока можно определённо сказать только одно: «процесс пошёл», и отказ от использования библиотеки «первого слоя» ставит производителя программного продукта в заведомо невыгодное положение.

Герман Воронов, руководитель проекта Intel® Cluster Toolkit. Центр исследований и разработок Intel. Пресс-тур Intel в Саров. 17-18 февраля 2010 г. Фото: Владислав Бояров.

Теперь пора переходить к самим библиотекам. Программные инструменты для вычислений на кластерных системах Intel® Cluster Toolkit представил руководитель проекта Герман Воронов. Он назвал нынешний этап развития вычислений эрой параллелизма. Существует три типа распараллеливания:

Эра параллелизма.

  • Векторизация на уровне процессора, когда однотипная операция выполняется над несколькими элементами одновременно. Актуально это стало с середины 90-х годов, когда для обработки мультимедийной информации появились процессорные инструкции MMX. Распараллеливанием занимался сам компилятор без какого-либо участия программиста.
  • Распараллеливание на общей памяти (на уровне одной машины). Актуально стало с появлением систем с несколькими процессорами и особенно многоядерных процессоров (multi-core, many-core). Как правило, используется OpenMP. Сложнее, чем векторизация, но все ещё сравнительно легко – программисту достаточно выставить директивы OpenMP, остальное делает компилятор.
  • Распараллеливание на распределённой памяти нескольких компьютерных узлов (кластерная система): очень сложно в программировании и отладке.

Именно для кластеров, или для суперкомпьютеров и создан продукт, включающий в себя:

  • пакет с единой лицензией и единым инсталлятором, поддержкой Linux и Microsoft Windows;
  • Intel® MPI Library: высокопроизводительная и универсальная реализация MPI-2 стандарта, позволяющая приложениям работать на произвольном сетевом оборудовании (interconnect) ;
  • Intel® Trace Analyzer and Collector: событийно-ориентированный сбор трассы приложения с низким влиянием на производительность и графическое отображение процесса выполнения параллельного приложения;
  • Intel® Math Kernel Library: высоко-оптимизированная и распараллеленная библиотека математических функций для инженерных и научных приложений;
  • Intel® MPI Benchmarks: специальные тесты на производительность для MPI операций, ввод/вывод;
  • Intel® Cluster Toolkit Compiler Edition: ICT + последние компиляторы Intel (Fortran, C/C++).

Общий вид интерфейса (2/2). Новая особенность - отображение ошибок во время исполнения.

Прирост производительности, который даёт применение библиотек Intel® Cluster Toolkit, приведён на графике.

Сравнение производительности, который даёт применение библиотек Intel® Cluster Toolkit.

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

Можно смело сказать, что Intel упростила жизнь создателям суперкомпьютеров не только созданием универсальной аппаратной платформы, но и разработкой фундаментального программного обеспечения, на котором базируются как операционные системы, так и прикладные программные продукты. Сами кластеры на аппаратном уровне стали стандартными, и сегодня любой специалист может собрать кластер. Проблемой остаётся написание приложения, способного эффективно распараллеливаться на множество процессоров, передача сообщений от одного процесса другому, и эту проблему решает Intel® MPI Library. Любопытным является и то, что Intel® Trace Analyzer and Collector находил ошибки, которые незамеченными жили в программах по 10-15 лет.

Сергей Сиволгин, руководитель группы MKL. Центр исследований и разработок Intel. Пресс-тур Intel в Саров. 17-18 февраля 2010 г. Фото: Владислав Бояров.

Библиотеку математических функций Intel® Math Kernel Library (MKL) представил руководитель группы Сергей Сиволгин. Название этой библиотеки говорит само за себя, вот только краткий перечень функциональности библиотеки:

  • линейная алгебра: плотные матрицы (BLAS, LAPACK, ScaLAPACK);
  • линейная алгебра: разреженные матрицы (прямые/итеративные решатели, Sparse BLAS);
  • быстрое Преобразование Фурье (SMP и MPI);
  • векторная математическая библиотека (VML);
  • векторная статистическая библиотека(VSL);
  • функции расширенной точности (GMP);
  • дифференциальные уравнения (уравнение Пуассона, тригонометрические преобразования);
  • методы оптимизации (TRS).

Быстродействие и эффективность библиотеки очень велико. Например, эффективность некоторых ключевых функций достигает 98% от теоретического максимума. Библиотека оптимизирована для всех современных процессоров Intel®, начиная от Itanium®-based и Xeon®-based, и заканчивая Intel® Core™2 Quad и Intel® Core™ i7.

Работа на процессорах других производителей тоже возможна, при этом производительность сравнима с лучшими мировыми аналогами. Удобство и универсальность заключаются в том, что продукт поддерживает широкий спектр платформ и процессоров, автоматически распознавая тип процессора в режиме реального времени и загружая нужный код, оптимизированный именно для этого процессора. Высокая эффективность достигается не только на одном процессоре, но и для всей системы в целом, используя параллелизм OpenMP (на общей памяти) и MPI (на распределенной памяти). Библиотека регулярно используется для оценки эффективности самых мощных суперкомпьютеров в мире, входящих в список TOP500. По отзывам пользователей, библиотека Intel® MKL дает им возможность концентрироваться на их работе, их решениях, обеспечивая оптимальную производительность на целом спектре систем, от ноутбуков до кластеров.

Области применения Intel® MKL, это:

  • физическое моделирование;
  • прогнозирование погоды;
  • проектирование;
  • финансовые расчёты;
  • обработка изображений и сигналов;
  • биоинформатика.

Пользователями Intel® MKL являются крупнейшие наукоёмкие организации:

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

История MKL (Intel® Math Kernel Library).

История Intel® MKL насчитывает более полутора десятков лет, при этом все разработчики находятся в России.

Владимир Дудник, руководитель проекта IPP. Центр исследований и разработок Intel. Пресс-тур Intel в Саров. 17-18 февраля 2010 г. Фото: Владислав Бояров.

Библиотеку Intel® Integrated Performance Primitives (IPP) представил руководитель проекта Владимир Дудник.

Библиотека Intel® Integrated Performance Primitives (IPP).

Слово «примитив» в данном случае не несёт негативной окраски, а подчёркивает тот факт, что эти функции являются кирпичиками, строительными блоками, из которых можно возвести сколь угодно сложные сооружения. Функциональный состав Intel® IPP весьма широк:

  • обработка сигналов;
  • обработка изображений;
  • кодирование изображений;
  • трассировка лучей;
  • преобразование цвета;
  • компьютерное зрение;
  • кодирование видео;
  • матричные операции;
  • векторная математика;
  • криптография;
  • сжатие данных;
  • кодирование речи;
  • сгенерированные функции;
  • кодирование музыки;
  • распознавание речи;
  • обработка строк;
  • коммуникационные функции.

Среди многих достоинств библиотеки я, как конструктор, отметил бы самодокументируемость – случай достаточно редкий. Как результат, IPP имеет около 35000 пользователей по всему миру, и это не обычные пользователи, а разработчики софта, для которого быстродействие критично. IPP полностью разрабатывается в России.

Борис Воинов. Центр исследований и разработок Intel. Пресс-тур Intel в Саров. 17-18 февраля 2010 г. Фото: Владислав Бояров.

Борис Воинов представил вычислительные методы для моделирования процессов и технологий.

Вычислительные методы для моделирования процессов и технологий.

Это, например, термо-механическое моделирование, позволяющее рассчитать деформации и прочность неравномерно нагретого процессора. Особую актуальность такие расчёты приобрели с применением Intel® Turbo Boost Technology, позволяющей каждому ядру работать на своей оптимальной частоте, что вызывает динамически изменяемое тепловыделение каждого участка процессора. В качестве основы используется ставший уже классическим метод конечных элементов, но сами методики уникальны. В отличие от вышеупомянутых библиотек, моделирование технологий разрабатывается исключительно для внутрикорпоративного использования.

Метод кинетического Монте-Карло для моделирования молекулярной эпитаксии.

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

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

OSS-2017 от OCS в Самаре

OSS-2017 от OCS в Самаре. Статья Владислава Боярова

USB Type-C: кабелиные страсти

USB Type-C: кабелиные страсти. Статья Владислава Боярова