Предлагаемый пользователям на настоящем сайте комплекс программ является реализацией проекта, основная цель которого - обеспечение русскоязычных пользователей удобным доступом к подпрограммам для решения задач линейной алгебры на параллельных компьютерах с распределенной памятью. При реализации Комплекса использовались ресурсы суперкомпьютера СКИФ МГУ "ЧЕБЫШЕВ", установленного в НИВЦ МГУ. Этот комплекс основан на пакете ScaLAPACK, который был разработан сотрудниками нескольких университетов и лабораторий США. В оригинальном варианте ScaLAPACK доступен в сети Интернет по адресу http://www.netlib.org/scalapack.
ScaLAPACK является библиотекой подпрограмм по линейной алгебре для компьютеров с распределенной памятью и обменом информацией посредством передачи сообщений, поддерживающих PVM ( Parallel Virtual Machine) и/или MPI ( Massage Passing Interface). Это - продолжение проекта LAPACK (http://www.netlib.org/lapack/index.html), в котором было разработано и реализовано аналогичное математическое обеспечение для рабочих станций, векторных суперкомпьютеров и параллельных компьютеров с разделяемой памятью. Обе библиотеки содержат подпрограммы для решения систем линейных уравнений, проблемы наименьших квадратов и проблемы собственных значений.
ScaLAPACK предназначен для решения задач с плотными и ленточными матрицами. В его состав включена также подпрограмма для решения систем с треугольными матрицами.
В настоящее время ScaLAPACK написан на Фортране 77 (за исключением нескольких вспомогательных подпрограмм, написанных на языке Си для использования IEEE - арифметики) в стиле SPMD ( Single Program Multiple Data), использующем для межпроцессорного взаимодействия явную передачу сообщений.
Реализуемый в НИВЦ МГУ Комплекс подпрограмм (названный PARALG) состоит из целевых подпрограмм (т.е. решающих законченные задачи из области линейной алгебры, представляющие самостоятельный практический интерес). Эти подпрограммы реализованы на основе имеющегося в пакете ScaLAPACK набора базовых подпрограмм (т.е. подпрограмм, решающих отдельные подзадачи, на которые можно разделить целевые прикладные задачи).
Данный комплекс (как и пакет ScaLAPACK) относится к числу "параллельных предметных библиотек", при обращении к которым пользователю не приходится явно применять какие - либо конструкции специальных языков параллельного программирования или интерфейсов, поддерживающих взаимодействие параллельных процессов. Все необходимые действия по "распараллеливанию" выполняются подпрограммами из специально разработанных для этих целей пакетов с именами BLACS и PBLAS (http://www.netlib.org/blacs/, http://www.netlib.org/scalapack/html/pblas_qref.html/).
BLACS ( Basic Linear Algebra Communication Subprogramms) является библиотекой подпрограмм, предназначенных для использования методов распараллеливания при решении задач линейной алгебры. Она разработана для компьютеров с распределенной памятью и обеспечивает запуск параллельных процессов и их взаимодействие посредством обмена сообщениями. При этом BLACS освобождает пользователей от изучения предназначенных для этих целей стандартных примитивов ( MPI ).
Предполагается, что параллельные процессы организованы в двумерную (или одномерную) решетку процессов (process grid), в которой каждый из процессов идентифицируется своими координатами в решетке и хранит определенные части обрабатываемых матриц и векторов. Для работы с параллельными процессами BLACS включает в себя подпрограммы, реализующие следующие основные функции:
- построение, изменение и получение сведений о решетке процессов; - обмен сообщениями (передача матриц или их частей) между двумя процессами; - передача сообщений от одного процесса сразу многим процессам; - выполнение необходимых итоговых действий после получения параллельными процессами частичных результатов (например, вычисление итоговых сумм, максимумов или минимумов по всем процессам).
Другим пакетом, к которому обращаются подпрограммы комплекса, является пакет PBLAS ( Paralell Basic Linear Subprograms), содержащий версии для распределенной памяти подпрограмм (первого, второго и третьего уровней) хорошо известного пакета BLAS ( Basic Linear Algebra Subprogram). В BLAS'е содержатся версии подпрограмм, реализующих базовые операции линейной алгебры (такие как действия над векторами и скалярами, умножение матрицы на вектор или перемножение двух матриц), которые могут использоваться на векторных суперкомпьютерах и параллельных компьютерах с разделяемой памятью.
Разработчики пакета PBLAS реализовали его подпрограммы таким образом, чтобы их интерфейс был максимально похожим на интерфейс подпрограмм BLAS'а. Подпрограммы пакета PBLAS содержат обращения к подпрограммам пакета BLACS, а также к некоторым подпрограммам пакета BLAS.
Поскольку подавляющая часть взаимодействий между параллельными процессами происходит в рамках пакета PBLAS, тексты подпрограмм пакета ScaLAPACK либо полностью совпадают, либо почти идентичны текстам аналогичных последовательных подпрограмм пакета LAPACK.
Таким образом, параллельные подпрограммы комплекса вызывают, главным образом, подпрограммы из пакетов ScaLAPACK, PBLAS и BLACS, но также могут вызывать некоторые подпрограммы из пакета BLAS.
Пакеты, используемые при работе с подпрограммами комплекса, можно разделить на два уровня иерархии: локальный и глобальный. Локальными называются пакеты, подпрограммы которых предназначены для работы на одном процессоре и фактические параметры которых расположены в локальной памяти этого процессора. Глобальными называются пакеты, которые содержат параллельные подпрограммы, предназначенные для синхронной работы на нескольких процессорах с фактическими параметрами (матрицами и векторами), распределенными по этим процессорам.
К локальным относятся пакеты BLAS и BLACS, а также примитивы передачи сообщений ( MPI ). К глобальным относятся подпрограммы комплекса, исходного пакета ScaLAPACK и пакета PBLAS.
В данном комплексе параллельных подпрограмм подпрограммы делятся на целевые и базовые. К целевым относятся подпрограммы, которые имеют самостоятельное значение при решении прикладных задач. При этом они не требуют обязательного предварительного или последующего вызова других подпрограмм комплекса, относящихся к указанным двум категориям.
К категории базовых подпрограмм отнесены подпрограммы (относимые в ScaLAPACK'е к вычислительным), которые не могут быть использованы независимо от других подпрограмм комплекса. Они всегда выступают только в роли вызываемых из других подпрограмм. В качестве примеров таких подпрограмм могут служить, например, подпрограммы, выполняющие LQ - разложение прямоугольной матрицы методом отражений, или масштабирование (балансировку) матриц. Ниже приводится общая блок-схема описываемого Комплекса.
К общей части Руководства для пользователей комплекса параллельных подпрограмм относятся WEB - страницы, входящие в раздел "Руководство по использованию комплекса (общая документация)" и содержащие, например, такую информацию как:
- решетки процессов, контекст и подпрограммы пакета BLACS; - дескрипторы глобальных массивов; - разбиение на блоки и распределение исходных матриц в локальной памяти параллельных процессов; - описания параметров подпрограмм, связанных с глобальными массивами; - правила наименований подпрограмм и др.
В систематическом каталоге указываются имена и назначения целевых программ комплекса, доступных на текущий момент. Из каталога установлены гиперссылки как к описаниям подпрограмм (т.е. русскоязычным инструкциям по их использованию), так и к фортранным текстам тестовых примеров (или примеров по использованию) для этих подпрограмм. В описаниях подпрограмм в последнем разделе "Пример использования" делаются гиперссылки на фортранные тексты самих соответствующих программ.
Физически на компьютерах каждый из перечисленных выше пакетов может представляться в виде отдельной библиотеки объектных модулей (например, в виде библиотечных файлов с именами: libscalapack.a, libpblas.a, libblacs.a, libblas.a ). Кроме того в виде отдельной библиотеки (например, с именем libscalapacktools.a ) могут быть представлены объектные модули служебных подпрограмм.
В настоящее время на суперкомпьютере СКИФ МГУ "ЧЕБЫШЕВ" в ОС Linux подпрограммы пакета ScaLAPACK и др. представлены в рамках библиотеки MKL.
В разделе документации описываемого Комплекса PARALG "Пользователям суперкомпьютера СКИФ "ЧЕБЫШЕВ" НИВЦ МГУ" приводятся рекомендации, как на практике заказывать и использовать библиотеки объектных модулей, чтобы проводить вычисления по программам Комплекса.