<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Учебно-исследовательские системы для изучения параллельных методов</article-title>
      </title-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>779</fpage>
      <lpage>787</lpage>
      <abstract>
        <p>Подготовка кадров в области суперкомпьютерных вычислений является важной задачей. Вместе с тем обучение является крайне сложным. Большое разнообразие вычислительных систем и технологий осложняют обучение [3]. Помочь в обучении могут учебно-исследовательские системы. Мы представляем два примера подобных систем ParaLab[1, 5] и ParaLib[8]. В системах возможно выбрать из заданного списка решаемую задачу. Для задач могут быть изучены методы реализации параллельных алгоритмов. При заданном методе и различных начальных условиях могут быть выполнены вычислительные эксперименты. ParaLab позволяет наглядно отобразить решение задачи на смоделированной вычислительной системе, а так же получить оценки производительности и эффективности алгоритмов. ParaLib демонстрирует возможность использования различных современных технологий параллельного программирования и параллельных языков для решения поставленных задач (например, OpenMP, MPI, Co-Array Fortran[6] и Chapel[7]). Обе системы позволяют накапливать результаты для последующего анализа. Открытая архитектура систем позволяет слушателям добавлять собственные реализации алгоритмов. Программные системы ParaLab и ParaLib используются при обучении студентов в Нижегородском университете.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Обучение методам параллельного программирования является важной задачей
современного ИТ-образования. Для формирования необходимых компетенций, необходимо понимать
работу алгоритмов распараллеливания и оценивать (как количественно так и качественно)
затраты вычислительных ресурсов. Большую пользу в этом направлении может принести
использование в учебном процессе специализированных учебно-исследовательских систем.</p>
      <p>В рамках статьи рассматриваются две программные системы ParaLab и ParaLib, созданные
и используемые в ННГУ им. Н.И.Лобачевского в рамках курсов [4], посвященных
параллельному программированию и суперкомпьютерным технологиям.</p>
      <p>Система ParaLab представляет собой интегрированную среду для изучения и исследования
параллельных алгоритмов решения для большинства «классических» вычислительных задач
(матричные вычисления, сортировка, обработка графов, оптимизация и др.) [1]. Широкий набор
имеющихся средств визуализации процесса выполнения эксперимента и анализа полученных
результатов позволяет изучить эффективность использования тех или иных алгоритмов на
разных вычислительных системах, сделать выводы о масштабируемости алгоритмов и определить
возможное ускорение процесса параллельных вычислений.</p>
      <p>Система может быть использована для организации лабораторного практикума по учебным
курсам в области параллельного программирования, в рамках которого обеспечивается
возможности:
 моделирования многопроцессорных вычислительных систем с различной топологией
сети передачи данных;
 получения визуального представления о вычислительных процессах и операциях
передачи данных, происходящих при параллельном решении разных вычислительных задач;
 построения оценок эффективности изучаемых методов параллельных вычислений.</p>
      <p>Проведение такого практикума может быть организовано на обычных однопроцессорных
компьютерах под управлением операционных систем семейства Windows. Для исполнения
алгоритмов используется режим имитации параллельных вычислений.</p>
      <p>Библиотека параллельных алгоритмов ParaLib предназначена для изучения и освоения
современных технологий и языков параллельного программирования на примерах реализации
параллельных алгоритмов для большого числа задач вычислительной математики. На примере
представленных в системе вычислительных задач и параллельных методов их решения можно
сравнить сложность программной реализации параллельных алгоритмов и эффективность
разработанных параллельных программ. Библиотека дополнена учебно-исследовательской
системой, которая позволяет:
 выбрать вычислительную задачу;
 выбрать последовательный/параллельный метод для решения выбранной задачи;
 выбрать язык/технологию параллельного программирования для решения выбранной
задачи;
 задать параметры задачи;
 определить число используемых процессоров;
 выполнить эксперимент, в ходе которого будет выполнен запуск решения выбранной
задачи;
 накапливать и анализировать результаты выполненных экспериментов.</p>
      <p>Выполнение экспериментов может осуществляться на локальном компьютере или на
вычислительной системе с распределенной памятью. Программные реализации параллельных
методов выполнены с использованием разных языков и технологий параллельного
программирования, в числе которых:
 технология параллельного программирования для систем с общей памятью OpenMP;
 технология параллельного программирования для систем с распределенной памятью</p>
      <p>MPI;
 язык параллельного программирования Chapel (Cascade High Productivity Language);
 язык параллельного программирования Co-Array Fortran.</p>
      <p>Все реализации выполнены для операционных систем семейства Windows.</p>
      <p>Системы ParaLab и ParaLib органично дополняют друг друга, позволяя ставить различные
вычислительные эксперименты, визуально изучать процессы вычислений и численно
оценивать их параметры.</p>
      <p>Далее приводится более полное описание рассматриваемых учебно-исследовательских
систем.
2. Учебно-исследовательская система ParaLab</p>
      <p>Учебно-исследовательская система ParaLab (Параллельная Лаборатория) представляет
собой программный комплекс, который позволяет проводить как реальные параллельные
вычисления на многопроцессорной вычислительной системе, так и имитировать такие
эксперименты на одном последовательном компьютере с визуализацией процесса решения сложной
вычислительной задачи.</p>
      <p>При проведении имитационных экспериментов ParaLab предоставляет следующие
возможности для пользователя:</p>
      <p>1. Смоделировать параллельную вычислительную систему. В процессе моделирования
возможно определить топологию параллельной вычислительной системы для проведения
экспериментов (рис. 1), задать число процессоров в этой топологии, установить
производительность процессоров, выбрать характеристики коммуникационной среды и способ
коммуникации.
Рис. 1. Диалог выбора топологии системы
2. Задать условия вычислительного эксперимента. Для задания условий необходимо
осуществить постановку вычислительной задачи, для которой в составе системы ParaLab
имеются реализованные параллельные алгоритмы решения. Выполнить задание параметров
задачи, а так же выбрать параллельный метод для решения выбранной задачи.</p>
      <p>3. Устанавливать параметры визуализации. Система ParaLab позволяет установить
параметры визуализации для выбора желаемого темпа демонстрации, способа отображения
пересылаемых между процессорами данных, степени детальности визуализации выполняемых
параллельных вычислений (рис. 2);
Рис. 2. Визуализация процесса параллельных вычислений</p>
      <p>при выполнении матричного умножения
4. Выполнять вычислительные эксперименты. В системе ParaLab можно выполнить
эксперимент для параллельного решения выбранной задачи; при этом в системе ParaLab может
быть сформировано несколько различных заданий для проведения экспериментов с
отличающимися типами многопроцессорных систем, задач или методов параллельных вычислений, для
которых выполнение эксперимента может происходить одновременно (в режиме разделения
времени); одновременное выполнение эксперимента для нескольких заданий позволяет
наглядно сравнивать динамику решения задачи различными методами, на разных топологиях, с
разными параметрами исходной задачи. При выполнении серии экспериментов, требующих
длительных вычислений, в системе имеется возможность их проведения в автоматическом режиме
с запоминанием результатов в журнале экспериментов для организации последующего анализа
полученных данных;</p>
      <p>5. Накапливать и анализировать результаты вычислительных экспериментов.
Система ParaLab позволяет накапливать и анализировать результаты выполненных
экспериментов; по запомненным результатам в системе имеется возможность построения графиков,
характеризующих параллельные вычисления зависимостей (времени решения, ускорения,
эффективности) от параметров задачи и вычислительной системы (рис. 3).
Рис. 3. Окно журнала эксперимента с результатами
Одной из важнейших характеристик системы является возможность выбора способов
проведения экспериментов. Эксперимент может быть выполнен в режиме имитации, то есть
проведен на одном процессоре без использования каких-либо специальных программных средств
типа библиотек передачи сообщений. Кроме того, в рамках системы ParaLab обеспечивается
возможность следующих способов проведения реального вычислительного эксперимента:
 на одном компьютере, где имеется библиотека передачи сообщений MPI
(многопоточное выполнение эксперимента); для данной библиотеки имеются общедоступные реализации,
которые могут быть получены в сети Интернет и установлены на компьютере под управлением
операционных систем MS Windows,
 на реальной многопроцессорной кластерной вычислительной системе,
 в режиме удаленного доступа к вычислительному кластеру.</p>
      <p>Если проводится реальный эксперимент на многопроцессорной вычислительной системе
или в режиме удаленного доступа, система ParaLab предоставляет возможность выбора типов
вычислительных узлов.</p>
      <p>При построении зависимостей временных характеристик от параметров задачи и
вычислительной системы для экспериментов, выполненных в режиме имитации, используются
теоретические оценки в соответствии с имеющимися моделями параллельных вычислений [1-3]. Для
реальных экспериментов на многопроцессорных вычислительных системах зависимости
строятся по набору результатов проведенных вычислительных экспериментов. Любой из
проведенных ранее экспериментов может быть восстановлен для повторного проведения. Кроме того,
обеспечена возможность ведения журнала экспериментов с записью туда постановки задачи,
параметров вычислительной системы и полученных результатов.</p>
      <p>Лабораторные занятия, проводимые при использовании системы ParaLab, могут
проводиться, например, по следующему плану:</p>
      <p> обучаемый решает определенную сложную вычислительную задачу при помощи
нескольких параллельных методов на заданной им вычислительной системе, сопоставляет
результаты и дает их интерпретацию в рамках теории построения параллельных алгоритмов;
 обучаемый самостоятельно конструирует средствами комплекса несколько
вычислительных систем таким образом, чтобы при решении задачи продемонстрировать основные
теоретические понятия;</p>
      <p> обучаемый самостоятельно формирует одну или несколько вычислительных систем и
решает задачи при различных значениях параметров вычислительной системы, изучая тем
самым влияние параметров на временные характеристики алгоритма;</p>
      <p> обучаемый проводит реальные вычислительные эксперименты в режиме удаленного
доступа к кластеру и сравнивает результаты реальных и имитационных экспериментов.</p>
      <p>Реализованные таким образом процессы изучения и исследований позволят освоить
теоретические положения и помогут формированию представлений о методах построения
параллельных алгоритмов, ориентированных на решение конкретных прикладных задач.
3. Библиотека параллельных численных методов ParaLib
Как уже было отмечено ранее, библиотека ParaLib предназначена для изучения и
сравнительного сопоставления разных языков и технологий параллельного программирования. Для
поддержки процессов изучения библиотека дополнена учебно-исследовательской системой
(УИС), общая структура которой представлена на рис. 4.</p>
      <p>Учебно-исследовательская система библиотеки ParaLib обеспечивает следующие
возможности.</p>
      <p>Рис. 4. Внешний вид учебно-исследовательской системы на основе</p>
      <p>библиотеки параллельных численных методов ParaLib
1. Выбор задачи и метода решения. Меню задания условий численного эксперимента
располагается вверху слева диалогового окна системы (рис. 4 область 1).</p>
      <p>Для проведения эксперимента необходимо вначале выбрать решаемую задачу. Выбрав
задачу, можно указать метод ее решения. Определившись с алгоритмом, необходимо указать
технологию или язык программирования, используемые в реализации.</p>
      <p>В первой версии системы рассматривается ряд «классических» задач вычислительной
математики, используемых для обучения основам параллельного программирования. Для задач
представлены два способа реализации – последовательный и базовый параллельный
алгоритмы. Все задачи содержат реализации с использованием технологий OpenMP и MPI. На примере
задачи умножения матриц демонстрируется способ реализации и интеграции в библиотеку
решений задач с применением языков параллельного программирования Co-Array Fortran и
Chapel.</p>
      <p>2. Получение контекстной информации. Информационная панель располагается вверху
справа (рис.4 область 2) и позволяет получать необходимую информацию о выбранных
алгоритмах и их реализациях. Выбор отображаемой информации осуществляется переключением
вкладок панели.
Вкладка «Задача» используется для отображения постановки решаемой задачи. У каждой
задачи может быть несколько методов решения. Описание выбранного метода находиться в
соответствующей вкладке. Выбрав задачу, метод реализации и технологию, можно изучить
пример реализации алгоритма во вкладке «Реализация».</p>
      <p>Последняя вкладка используется для отображения информации о библиотеке и
реализованных в ней на текущий момент задачах и методах.</p>
      <p>3. Выполнение вычислительного эксперимента. Выбрав алгоритм и интересующую
реализацию, необходимо задать условия вычислительного эксперимента при помощи задания
следующих параметров:</p>
      <p> Для эксперимента нужно указать количество исполнителей. В качестве исполнителей в
зависимости от технологии или языка программирования могут выступать вычислительные
потоки или процессы.</p>
      <p> Для эксперимента задается размер решаемой задачи. Размер интерпретируется в
зависимости от задачи. Например, в задаче умножения матриц в качестве размера указывается
размер матрицы, а задачах оптимизации на графах – количество вершин в графе. Предполагается,
что описание значения параметра указано в постановке задачи (см. область 2 "Информационная
панель").</p>
      <p> В ряде задач используется дополнительный параметр. Интерпретация значения зависит
от постановки задачи или метода реализации. Подробную информацию о параметре так же
можно узнать в постановке задачи или описании метода реализации. Параметр блокируется,
если не используется.</p>
      <p> Количество повторений вычислительного эксперимента. Так как от запуска к запуску
время выполнения может меняться, система предлагает возможность получения более
достоверной оценки времени выполнения путем повторного запуска эксперимента несколько раз.</p>
      <p>Система позволяет автоматически подсчитать ускорение для проведенных экспериментов.
Для подсчета ускорения необходим запуск в один поток или процесс в зависимости от
технологии или языка программирования. Подобный эксперимент проводится автоматически, если
установлен выбор в поле «Провести эксперимент для подсчета ускорения».</p>
      <p>Для запуска вычислительного эксперимента необходимо нажать на кнопку «Начать
эксперимент». В любой момент времени эксперимент можно остановить, нажав кнопку остановки.
На кнопке отображается таймер, указывающий на текущее время работы заданного
эксперимента.</p>
      <p>4. Сбор и анализ результатов вычислительных экспериментов. В середине диалогового
окна (рис. 4 область 3) отображаются результаты всех выполненных экспериментов. Для
каждого проведенного эксперимента в таблице указываются параметры эксперимента и время
работы. В таблице слева можно поставить выбор тех запусков, которые следует отобразить на
графике. По умолчанию время работы или ускорение отображается для всех выполненных
экспериментов.</p>
      <p>Для удобства пользователя реализован ряд дополнительных инструментов работы с
результатами экспериментов. Для упорядочивания результатов, выбрав строку, есть возможность
ее переместить вверх или вниз, нажав соответствующую кнопку. Выделенные строки с
результатами можно удалить. Если выделить строку в таблице, а затем нажать на кнопку «Выделить
строки с:», результаты экспериментов, у которых совпадают решаемая задача, метод и
технология, будут выполнены для проведения одновременного сравнения.</p>
      <p>5. Визуальное сравнение времени выполнения экспериментов. Визуальное сравнение
численных данных позволяет быстрее сделать выводы относительно проведенных
экспериментов. С этой целью внизу диалогового окна (рис. 4 область 4) строится гистограмма сравнения
результатов вычислительных экспериментов. На гистограмме по горизонтальной оси отложен
номер выполненного эксперимента, а по вертикальной время работы или ускорение. На
графике указывается максимальное и минимальное время (ускорение), а также отношение
максимального времени к минимальному. Рядом с каждым столбиком в гистограмме указывается
время или ускорение.</p>
      <p>Для обеспечения рассмотренных возможностей архитектура построения библиотеки
параллельных алгоритмов и учебно-исследовательской системы ParaLib построена как система
функциональной-ориентированных программных слоев - уровней (см. рис. 5).</p>
      <p>ParaLib
Учебно-исследовательская система
Умножение матриц
...</p>
      <p>Решение
дифференциальных уравнений
Набор решаемых задач
Алгоритм
Кэннона</p>
      <p>...</p>
      <p>Методы решения задач
Алгоритм</p>
      <p>Фокса</p>
    </sec>
    <sec id="sec-2">
      <title>Chapel</title>
    </sec>
    <sec id="sec-3">
      <title>CoArray</title>
    </sec>
    <sec id="sec-4">
      <title>Fortran</title>
    </sec>
    <sec id="sec-5">
      <title>OpenMP MPI</title>
      <p>Технологии и языки параллельного программирования
...
...
Рис. 5. Архитектура программного комплекса</p>
      <p>параллельных численных методов ParaLib
На верхнем уровне расположена учебно-исследовательская система. Система обеспечивает
задание условий вычислительного эксперимента, организует выполнение исполняемых
модулей при разных начальных условиях, позволяет накапливать информацию о проведенных
экспериментах и делать выводы о применимости в рамках задачи выбранной технологии или
языка параллельного программирования.</p>
      <p>На следующем уровне расположена подсистема, объединяющая в своем составе
вычислительные задачи, для которых в библиотеке имеются реализованные методы решения.
Подсистема содержит также набор разработанных материалов с описаниями постановок всех
представленных в библиотеке задач.</p>
      <p>Далее располагается подсистема, в которой для каждой задачи предыдущего уровня
представлены имеющиеся методы решения и их реализации с использованием разных языков и
технологий параллельного программирования. Кроме того, подсистема содержит описания
методов реализации параллельных алгоритмов.</p>
      <p>На самом нижнем уровне расположена подсистема, содержащая реализации алгоритмов с
применением различных методов, технологий и языков разработки параллельных программ.
Каждая реализация в подсистеме представлена в виде нескольких файлов (файл с исходным
кодом и исполняемый модуль). В рамках ParaLib считается, что исполняемый модуль на вход
должен принимать четыре параметра – размер задачи, количество повторных запусков
алгоритма, количество исполнителей (количество процессов или потоков) и возможно
дополнительный параметр назначение которого определяется задачей. Результат работы исполняемого
модуля – время работы каждого запуска алгоритма, которое записывается в отдельной строке
журнала экспериментов.</p>
      <p>
        Библиотека параллельных методов и учебно-исследовательская система ParaLib свободна
для использования, загрузочный комплект может быть получен на сайте Центра
суперкомпьютерных технологий Нижегородского университета [
        <xref ref-type="bibr" rid="ref4">8</xref>
        ].
Заключение
      </p>
      <p>Система ParaLab и библиотека ParaLib носят учебно-исследовательский характер и могут
быть использованы в ходе обучения специалистов различным аспектам параллельного
программирования. Имеющиеся в программных комплексах реализации алгоритмов могут
использоваться в качестве образцов при разработке параллельных программ с использованием
различных языков и технологий параллельного программирования.
Литература
Educational and research systems for studying of parallel
methods
Evgeniy Kozinov, Victor Gergel, Alexey Linev and Anton Shtanyuk
Teaching supercomputing technologies is very important and complex task. A wide variety of
computer systems and technologies complicate training process. Educational and research
systems can help. We are presenting two such systems: ParaLab and ParaLib. User can select
task from a predefined list. For a given method, and different initial conditions can be
performed computational experiments. For tasks can be explored methods of implementation
of parallel algorithms. ParaLab allows you visualize the solution of the problem on a
simulated computer system, as well as to obtain estimates of the performance and efficiency
of algorithms. ParaLib demonstrates the possibility of using various modern technologies of
parallel programming and parallel languages for the task (for example
OpenMP,MPI,CoArray Fortran and Chapel). Both systems allow store results for later analysis. The open
architecture allows students to add their own implementation of algorithms. ParaLab and
ParaLib are used in teaching students in the Nizhny Novgorod State University.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          5.
          <article-title>Учебный курс CS338</article-title>
          .
          <article-title>Многопроцессорные вычислительные системы и параллельное про- граммирование</article-title>
          . URL: http://www.hpcc.unn.ru/mskurs/cs338_ppr_index.
          <source>htm (дата обращения 10.05</source>
          .
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          6. John Reid, JKR Associates,
          <article-title>UK Coarrays in the next Fortran Standard</article-title>
          .
          <source>April 21</source>
          ,
          <year>2010</year>
          URL:ftp://ftp.nag.co.uk/sc22wg5/
          <fpage>N1801</fpage>
          -N1850/N1824.pdf
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <article-title>7. The Chapel Parallel Programming Language</article-title>
          . URL: http://chapel.cray.
          <source>com/ (дата обращения 10.05</source>
          .
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          8.
          <article-title>Библиотека параллельных алгоритмов ParaLib</article-title>
          . URL: http://hpc-education.
          <source>unn.ru/ru/paralib (дата обращения 10.05</source>
          .
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>