SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Технологии разработки паралелльных программ с использованием
           параллельных математических библиотек


                                Василий Воронов

                   Московский Государственный Университет
              факультет Вычислительной математики и кибернетики

                                27 октября 2009 г.




В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                  Суперкомпьютерная Школа   1 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                       Суперкомпьютерная Школа   2 / 34
О чем этот курс?




   На типичных примерах продемонстрировать жизненный цикл программы,
   разработанной на основе функциональности параллельных математических
   библиотек PETSc, SLEPc
   Указать особенности, не вошедшие либо слабо освещенные в официальной
   документации
   Целевая платформа – IBM BlueGene/P
   Формат занятий: лекция + демонстрация работы с программами на
   массивно-параллельной платформе




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                     Суперкомпьютерная Школа   3 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                       Суперкомпьютерная Школа   4 / 34
Общие сведения о пакете PETSc




PETSc [4]– пакет для параллельного решения задач линейной алгебры,
дифференциальных уравнений, нелинейных уравнений.
Документация:
    Официальный manual
    http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manua
    Tutorials
    http://www.mcs.anl.gov/petsc/petsc-as/documentation/tutorials/index.html
    (обратите внимание на слайды 2008 и 2009 годов.)
    Онлайн-документация по функциональности с примерами про-
    грамм http://www.mcs.anl.gov/petsc/petsc-as/documentation/index.html




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                     Суперкомпьютерная Школа   5 / 34
Структура пакета PETSc




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                     Суперкомпьютерная Школа   6 / 34
Подробнее о компонентах PETSc


                                          Таблица:

         Модуль         Назначение
          Mat           Структуры данных различных типов матриц, матрично-
                        векторные операции
            Vec         Структуры данных различных типов вектора, векторные
                        операции
            DM          Компонента управления данными, поддерживает рас-
                        пределенные структуры данных, обобщенные индексы и
                        механизмы соответствия локальной и глобальной нуме-
                        рации данных
          KSP           Итерационный решатель СЛАУ
          PC            Переобусловливатель СЛАУ
          TS            Решатель ОДУ
         SNES           Решатель нелинейного уравнения
       LIBPETSC         Общие компоненты PETSc, организующие ввод-вывод
                        данных, профилирование приложений



   В. Воронов   (ВМК МГУ)    Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   7 / 34
Прикладные пакеты, разработанные на основе PETSc




   Пакет Toolkit for Advanced Optimization (TAO)
   Scalable Library for Eigenvalue Problems (SLEPC)
   Prometheus - scalable unstructured finite element solver
   freeCFD - general purpose CFD solver
   OpenFVM - finite volume based CFD solver
   OOFEM - object oriented finite element library
   libMesh - adaptive finite element library
   DEAL.II - sophisticated C++ based finite element simulation package
Пакеты доступны по
ссылкеhttp://www.mcs.anl.gov/petsc/petsc-as/miscellaneous/external.html




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                     Суперкомпьютерная Школа   8 / 34
Установка PETSc

Версии PETSc доступны по ссылке
http://www.mcs.anl.gov/petsc/petsc-as/download/index.html, последняя
версия
http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.0.0-p8.tar.gz.
На linux-like платформах PETSc входит в дистрибутивы, пример установки для
Debian:
>sudo apt-get install libpetsc2.3.3 libpetsc2.3.3-dbg
 petsc2.3.3-doc
После скачивания необходимо найти и модифицировать конфигурационный файл,
примеры файлов в папке $PETSC_DIR/config.
Установка:
>export PETSC_DIR=./petsc-2.3.3;
>export PETSC_ARCH=production;
>export BOPT=O_++;
>$PETSC_DIR/config/bluegenep.py
>$PETSC_DIR/make all tests -j 2



   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                     Суперкомпьютерная Школа   9 / 34
Простейшая программа на PETSc




>cat hello.c
#include "petsc.h"
int main( int argc, char *argv[] ) {
    int rank;
    PetscInitialize( &argc, &argv, 0, 0 );
    MPI_Comm_rank( PETSC_COMM_WORLD, &rank );
    PetscPrintf("Hello World from rank %dn", rank );
    PetscSynchronizedFlush( PETSC_COMM_WORLD );
    PetscFinalize();
    return 0;
}




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   10 / 34
Простейшая программа на PETSc-II




Компиляция и запуск с помощью Makefile
>cat Makefile
SHELL = /bin/bash
EXAMPLE = hello
include $(PETSC_DIR)/bmake/common/base
EXECS = hello
hello: hello.o chkopts
$(CLINKER) -o hello hello.o $(PETSC_LIB)
${RM} -r hello.o
>make hello




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   11 / 34
Дополнительные возможности




   Интерфейсы к функциональности PETSc доступны из C/C++, Fortran, Python
   Средства экспорта-импорта данных c Matlab, конвертеры матриц в форматы
   MatrixMarket, Harwell-Boeing
   Средства визуализации данных (вывод портретов матриц, построение графиков
   и гистограм a la упрощенный gnuplot)
   Механизм создания собственного метода




  В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                   Суперкомпьютерная Школа   12 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   13 / 34
Обзор функциональности

Операции над матрицами и векторами с помощью функциональности компонент
Mat и Vec–основа программ PETSc. Типы поддерживаемых матриц
(последовательных и параллельных):
   MATSEQAIJ/MATMPIAIJ–разреженная матрица общего вида
   MATSEQBAIJ/MATMPIBAIJ–разреженная матрица блочной структуры
   MATSEQDENSE/MATMPIDENSE–плотная матрица
Матрица и вектор в PETSc определяются интерфейсом Основные функции:
   Mat*Create(), Mat*Destroy(), MatSetFromOptions()–создание, удаление,
   настройка типа матрицы
   (MatSetValues(), MatInsertValues(), MatAssemblyBegin(),
   MatAssemblyEnd())–добавление/модификация значений матриц
   MatMultAdd(), MatTranspose(), . . . –матрично-векторные операции разных
   типов
   VecLoad(), MatLoad(), MatView(), VecView()–ввод-вывод матрицы и
   вектора на диск



   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   14 / 34
Пример: умножение матрицы на вектор y = Ax




MatCreate(PETSC_COMM_WORLD, A);CHKERRQ(ierr);
VecCreate(PETSC_COMM_WORLD, x);CHKERRQ(ierr);
VecCreate(PETSC_COMM_WORLD, y);CHKERRQ(ierr);
...
ierr = MatMult(A, x, y);CHKERRQ(ierr);




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   15 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   16 / 34
Решение СЛАУ




   Решение СЛАУ является вычислительным ядром широкого класса научных и
   инженерных алгоритмов.
   Классическая постановка задачи Ax = b, A ∈ R m,n ; x ∈ R n,1 , b ∈ R m,1 .
   В PETSc доступен следующий набор алгоритмов решения СЛАУ:
   http://www.mcs.anl.gov/petsc/petsc-as/documentation/linearsolvertable.ht
   Параметры командной строки позволяют выбирать тип итерационного
   решателя (-ksp_type <тип>) и предобусловливателя (-pc_type <тип>), а
   также модифицировать их параметры
Демонстрация примера. Пример–решение системы уравнений с трехдиагональной
матрицей.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   17 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   18 / 34
Отладка программ




В PETSc встроены мощные средства отладки программ.
   Практически все функции PETSc поддерживают синтаксис ierr =
   Function(...);CHKERRQ(ierr);
   В случае ошибки выполнения выводится стек вызовов функций и типичные
   причины
   Возможность подключить отладчик к отдельному процессу/процессам
   (vargrind)
   Использовать параметры командной строки -start_in_debugger,
   -on_error_attach_debugger
Демонстрация примера.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   19 / 34
Профилирование программы




   Параметр командной строки -log_summary используется для получения
   детальной информации о производительности
   Для разбивки информации для различных регионов программы использовать
   функции PreLoadBegin(), PreLoadStage(), PreLoadStage(),. . . ,
   PreLoadEnd()
   Функциональность для отдельных событий PetscLog()...
Демонстрация примера.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   20 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   21 / 34
Постановка задачи
Модуль TS предоставляет функциональность для решения дифференциального
уравнения
                                 du
                                    = F (u, t)
                                 dt
где функция F может быть общего вида, а также двух специальных видов
                                        du
                                           = Au,
                                        dt
                                       du
                                          = A(t)u.
                                       dt
Функциональность TS:
    TSCreate(), TSDestroy(), TSSetFromOptions()–создать/уничтожить объект
    TS
    TSSetProblemType(), TSSetMatrices()–установить тип решаемой проблемы,
    установить матрицы ОДУ
    TSSetUp(), TSSetInitialTimeStep(), TSSetDuration(),
    TSStep()–установка параметров решателя и запуск
    TSGetTimeStep(), TSSetTimeStep()–функции для реализации псевдо-шаговых
    методов
Параметры командной строки:-ts_max_steps, -ts_max_time,
   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   22 / 34
Пример кода программы
int main(int argc, char **argv) {
 PetscInt m, time_steps_max;
 PetscScalar time_total_max, steps, ftime;
 Mat A; Vec u; TS ts;
  PetscInitialize(argc, argv, 0, 0);
  ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr);
  ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,m,m);CHKERRQ(ierr); MatSetF
  # инициализировать значения матрицы
  ierr = SetupMatrix(A);CHKERRQ(ierr);
  ierr = VecCreate(PETSC_COMM_WORLD, &u);
  ierr = VecSetSize(u,PETSC_DECIDE, m); VecSetFromOptions(u);
  ierr = TSCreate(PETSC_COMM_SELF,&ts);CHKERRQ(ierr);
  # тип задачи u_t = A u с постоянной матрицей
  ierr = TSSetProblemType(ts,TS_LINEAR);CHKERRQ(ierr);
  ierr = TSSetMatrices(ts,A,PETSC_NULL,PETSC_NULL,
    PETSC_NULL,DIFFERENT_NONZERO_PATTERN,&appctx);CHKERRQ(ierr);
  ierr = TSSetInitialTimeStep(ts,0.0,dt);CHKERRQ(ierr);
  ierr = TSSetSolution(ts,u);CHKERRQ(ierr);
  ierr = TSSetDuration(ts,time_steps_max,time_total_max);CHKERRQ(ierr);
  ierr = TSSetFromOptions(ts);
  ierr = TSStep(ts,&steps,&ftime);CHKERRQ(ierr);
  MatDestroy(A);
   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   23 / 34
Проблемы при использовании структур памяти




   Операции, связанные с управлением динамической памятью в PETSC,
   приводят к параличу производительности
   Пример: сложение разреженных матриц A + B. Необходимо избегать операций
   реаллокации.
   Идея: в один проход посчитать сколько нужно в каждой строчке элементов и
   динамически создать нужную структуру матрицы
   Функции: Mat***SetPreallocation(), Mat***SetPreallocationCSR()
Демонстрация примера.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   24 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   25 / 34
Нелинейные уравнения в PETSc




Библиотека PETSc содержит модуль SNES решателей нелинейных уравнений вида

                                        F (u) = 0.

В общем виде решение задачи осуществляется в виде итераций

                                                   F (u (k) )
                               u (k+1) = u (k) +              ,
                                                   F (u (k) )

где F (u)–якобиан функции. Вычисление якобиана является вычислительно
сложной задачей, для решения которой могут использоваться несколько методов.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   26 / 34
Постановка задачи




Рассмотрим некоторую область D = D ∪ Γ, в которой определено уравнение

                                     ∆u − λe u = 0,
                                          u |Γ = 0.

Численное решение задачи осуществляется переходом к схеме
                                       n+1      n
                                     Auij = f (uij ),
                            A = [D+x + D−x + D+y + D−y ],
                                                      n
                                       f (uij ) = e uij .
                                           n


Демонстрация примера.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   27 / 34
План курса

1   Математическая библиотека PETSc
     Обзор функциональности PETSc
     Установка

2   Матрично-векторные операции в PETSc

3   Case study: Решение систем линейных уравнений

4   Отладка и профилирование параллельных программ

5   Решение обыкновенных дифференциальных уравнений
      Case study: решение ОДУ
      Case study: эффективное управление памятью

6   Решение нелинейных уравнений
      Case study: решение уравнения Брату

7   Пакет SLEPc: решение задач на собственные значения
      Case study: решение обобщенной задачи на собственные значения
      Case study: частичное сингулярное разложение


     В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                      Суперкомпьютерная Школа   28 / 34
Общие сведения о пакете




   SLEPC [6] является высокоуровневой параллельной математической
   библиотекой решения задач на собственные значения, спектральных
   преобразований, сингулярного разложения.
   SLEPC построен на использовании функциональности PETSc, соответственно
   внутри программы имеется возможность работать с объектами и функциями
   PETSc.
   Документация доступна по ссылке
   http://www.grycap.upv.es/slepc/documentation/manual.htm и включает
   manual, описание функций и примеров работы с библиотекой




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   29 / 34
Установка




>wget http://www.grycap.upv.es/slepc/download/distrib/slepc-3.0.0-p6.tgz
>tar xvzf slepc-3.0.0-p6
>export SLEPC_DIR=slepc-3.0.0-p6 # подставить нужную директорию
>./configure
> make test

На некоторых платформах потребуется установить полный пакет LAPACK.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   30 / 34
Постановка задачи
Рассматривается проблема вычисления λ, x в задаче
                                        Ax = λBx
Пример кода для задачи Ax = λx, оператор A загружается из файла:
...
ierr   = PetscViewerBinaryOpen(PETSC_COMM_WORLD,filename,FILE_MODE_READ,&viewe
ierr   = MatLoad(viewer,MATAIJ,&A);CHKERRQ(ierr);
ierr   = PetscViewerDestroy(viewer);CHKERRQ(ierr);
...
ierr   =   EPSCreate(PETSC_COMM_WORLD,&eps);CHKERRQ(ierr);
ierr   =   EPSSetOperators(eps,A,PETSC_NULL);CHKERRQ(ierr);
ierr   =   EPSSetFromOptions(eps);CHKERRQ(ierr);
ierr   =   EPSSolve(eps);CHKERRQ(ierr);
ierr   =   EPSGetIterationNumber(eps, &its);CHKERRQ(ierr);
ierr   =   PetscPrintf(PETSC_COMM_WORLD," Number of iterations of the method: %d
ierr   =   EPSGetType(eps,&type);CHKERRQ(ierr);
ierr   =   PetscPrintf(PETSC_COMM_WORLD," Solution method: %snn",type);CHKERRQ
ierr   =   EPSGetDimensions(eps,&nev,PETSC_NULL);CHKERRQ(ierr);
ierr   =   PetscPrintf(PETSC_COMM_WORLD," Number of requested eigenvalues: %dn"
ierr   =   EPSDestroy(eps);CHKERRQ(ierr);
ierr   =   MatDestroy(A);CHKERRQ(ierr);
ierr   =   SlepcFinalize();CHKERRQ(ierr);
   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   31 / 34
Постановка задачи



Алгоритм сингулярного разложения оператора имеет важные приложения в ряде
задач.
Проблема заключается в факторизации матрицы X в виде матриц особого вида

                                       X = UΣV T .

U, V – ортогональные матрицы. Σ – диагональная матрица с сингулярными
значениями в порядке убывания.

Для ряда практических задач требуется вычислять усеченное сингулярное
разложение
                                            T
                               X ≈ U1k Σkk V1k .
Демонстрация примера.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   32 / 34
Заключение




Презентация и примеры, продемонстрированные в курсе, доступны по ссылке
http://angel.cmc.msu.ru/~basrav.

Вопросы, замечания, комментарии, предложения? Пишите
basrav@angel.cmc.msu.ru.
Спасибо за внимание.




   В. Воронов   (ВМК МГУ)   Разработка на основе параллельных библиотек
                                                                    Суперкомпьютерная Школа   33 / 34
Литература
[1] Н. С. Бахвалов, Н. П. Жидков, and Г. М. Кобельков.
    Численные методы.
    М: Наука, 1987.
[2] М. Ю. Баландин and Э. П. Чепурина.
    Методы решения СЛАУ большой размерности.
    Новосибирск: Изд-во НГТУ, 2000.
[3] Y. Saad.
    Iterative Methods for Sparse Linear Systems.
    Society for Industrial Mathematics, 2003.
[4] S. Balay, K. Buschelman, W. D. Gropp, D. Kaushik, M. G. Knepley, L. C. McInnes,
    B. F. Smith, and H. Zhang.
    PETSc Web page.
    See http://www. mcs. anl. gov/petsc.
[5] L. Oliker, A. Canning, J. Carter, C. Iancu, M. Lijewski, S. Kamil, J. Shalf, H. Shan,
    E. Strohmaier, S. Ethier, et al.
    Scientific Application Performance on Candidate PetaScale Platforms.
    2007.
[6] V. Hernandez, J.E. Roman, and V. Vidal.
    SLEPc: A scalable and flexible toolkit for the solution of eigenvalue problems.
    ACM Transactions on Mathematicalоснове параллельных библиотек
    В. Воронов (ВМК МГУ)   Разработка на Software (TOMS), 31(3):351–362, 2005.
                                                              Суперкомпьютерная Школа   34 / 34

Más contenido relacionado

Similar a Petsc+slepc slides

Построение базы знаний для агентов
Построение базы знаний для агентовПостроение базы знаний для агентов
Построение базы знаний для агентовVladimir Burdaev
 
РАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИ
РАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИРАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИ
РАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИNatalia Polkovnikova
 
2014-2015_Алгор-структ_Раб-прогр_Мансуров
2014-2015_Алгор-структ_Раб-прогр_Мансуров2014-2015_Алгор-структ_Раб-прогр_Мансуров
2014-2015_Алгор-структ_Раб-прогр_Мансуров????? ????????
 
Altair - Advanced Particle Simulator
Altair - Advanced Particle SimulatorAltair - Advanced Particle Simulator
Altair - Advanced Particle SimulatorAlexander Le-Zakharov
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
 
Лекция №1 Организация ЭВМ и систем
Лекция №1 Организация ЭВМ и системЛекция №1 Организация ЭВМ и систем
Лекция №1 Организация ЭВМ и системpianist2317
 
ППП МВТУ моделирование в текхнических устройствах
ППП МВТУ моделирование в текхнических устройствахППП МВТУ моделирование в текхнических устройствах
ППП МВТУ моделирование в текхнических устройствахnurgulaofficial
 
Тема: Пакет прикладных программ «моделирование в технических устройствах «
Тема: Пакет прикладных программ «моделирование в технических устройствах «Тема: Пакет прикладных программ «моделирование в технических устройствах «
Тема: Пакет прикладных программ «моделирование в технических устройствах «nurgulaofficial
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++Olga Maksimenkova
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkCUSTIS
 
Информационный центр дисциплины блог
Информационный центр дисциплины   блогИнформационный центр дисциплины   блог
Информационный центр дисциплины блогVyacheslav Starodubtsev
 
ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...
ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...
ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...ITMO University
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаAlexey Paznikov
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Olga Maksimenkova
 

Similar a Petsc+slepc slides (20)

Построение базы знаний для агентов
Построение базы знаний для агентовПостроение базы знаний для агентов
Построение базы знаний для агентов
 
РАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИ
РАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИРАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИ
РАЗРАБОТКА МОДЕЛИ ЭКСПЕРТНОЙ СИСТЕМЫ НА ОСНОВЕ НЕЧЁТКОЙ ЛОГИКИ
 
2014-2015_Алгор-структ_Раб-прогр_Мансуров
2014-2015_Алгор-структ_Раб-прогр_Мансуров2014-2015_Алгор-структ_Раб-прогр_Мансуров
2014-2015_Алгор-структ_Раб-прогр_Мансуров
 
Cell и MC#
Cell и MC#Cell и MC#
Cell и MC#
 
Altair - Advanced Particle Simulator
Altair - Advanced Particle SimulatorAltair - Advanced Particle Simulator
Altair - Advanced Particle Simulator
 
A.g.demenev(perm su) 2014
A.g.demenev(perm su) 2014A.g.demenev(perm su) 2014
A.g.demenev(perm su) 2014
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Лекция №1 Организация ЭВМ и систем
Лекция №1 Организация ЭВМ и системЛекция №1 Организация ЭВМ и систем
Лекция №1 Организация ЭВМ и систем
 
ППП МВТУ моделирование в текхнических устройствах
ППП МВТУ моделирование в текхнических устройствахППП МВТУ моделирование в текхнических устройствах
ППП МВТУ моделирование в текхнических устройствах
 
Тема: Пакет прикладных программ «моделирование в технических устройствах «
Тема: Пакет прикладных программ «моделирование в технических устройствах «Тема: Пакет прикладных программ «моделирование в технических устройствах «
Тема: Пакет прикладных программ «моделирование в технических устройствах «
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
Tapestry it is simple
Tapestry it is simpleTapestry it is simple
Tapestry it is simple
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring Framework
 
17 pdf -_programmi
17 pdf -_programmi17 pdf -_programmi
17 pdf -_programmi
 
Tbb лр1
Tbb   лр1Tbb   лр1
Tbb лр1
 
Информационный центр дисциплины блог
Информационный центр дисциплины   блогИнформационный центр дисциплины   блог
Информационный центр дисциплины блог
 
ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...
ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...
ВИРТУАЛЬНАЯ ЛАБОРАТОРИЯ ОБУЧЕНИЯ МЕТОДАМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ ГЕНЕРА...
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курса
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25
 

Más de Michael Karpov

EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...Michael Karpov
 
Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)Michael Karpov
 
Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016 Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016 Michael Karpov
 
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014) Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014) Michael Karpov
 
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...Michael Karpov
 
Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)Michael Karpov
 
(2niversity) проектная работа tips&tricks
(2niversity) проектная работа   tips&tricks(2niversity) проектная работа   tips&tricks
(2niversity) проектная работа tips&tricksMichael Karpov
 
"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012Michael Karpov
 
(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиков(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиковMichael Karpov
 
Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)Michael Karpov
 
Как мы готовим продукты
Как мы готовим продуктыКак мы готовим продукты
Как мы готовим продуктыMichael Karpov
 
Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)Michael Karpov
 
сбор требований с помощью Innovation games
сбор требований с помощью Innovation gamesсбор требований с помощью Innovation games
сбор требований с помощью Innovation gamesMichael Karpov
 
Зачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile командеЗачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile командеMichael Karpov
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile командеMichael Karpov
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile командеMichael Karpov
 
Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010Michael Karpov
 
How to give a great research talk
How to give a great research talkHow to give a great research talk
How to give a great research talkMichael Karpov
 

Más de Michael Karpov (20)

EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
 
Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)
 
Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016 Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016
 
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014) Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
 
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
 
Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)
 
(2niversity) проектная работа tips&tricks
(2niversity) проектная работа   tips&tricks(2niversity) проектная работа   tips&tricks
(2niversity) проектная работа tips&tricks
 
"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012
 
(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиков(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиков
 
Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)
 
Как мы готовим продукты
Как мы готовим продуктыКак мы готовим продукты
Как мы готовим продукты
 
Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)
 
сбор требований с помощью Innovation games
сбор требований с помощью Innovation gamesсбор требований с помощью Innovation games
сбор требований с помощью Innovation games
 
Зачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile командеЗачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile команде
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде
 
HPC Visualization
HPC VisualizationHPC Visualization
HPC Visualization
 
Hpc Visualization
Hpc VisualizationHpc Visualization
Hpc Visualization
 
Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010
 
How to give a great research talk
How to give a great research talkHow to give a great research talk
How to give a great research talk
 

Petsc+slepc slides

  • 1. Технологии разработки паралелльных программ с использованием параллельных математических библиотек Василий Воронов Московский Государственный Университет факультет Вычислительной математики и кибернетики 27 октября 2009 г. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 1 / 34
  • 2. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 2 / 34
  • 3. О чем этот курс? На типичных примерах продемонстрировать жизненный цикл программы, разработанной на основе функциональности параллельных математических библиотек PETSc, SLEPc Указать особенности, не вошедшие либо слабо освещенные в официальной документации Целевая платформа – IBM BlueGene/P Формат занятий: лекция + демонстрация работы с программами на массивно-параллельной платформе В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 3 / 34
  • 4. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 4 / 34
  • 5. Общие сведения о пакете PETSc PETSc [4]– пакет для параллельного решения задач линейной алгебры, дифференциальных уравнений, нелинейных уравнений. Документация: Официальный manual http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manua Tutorials http://www.mcs.anl.gov/petsc/petsc-as/documentation/tutorials/index.html (обратите внимание на слайды 2008 и 2009 годов.) Онлайн-документация по функциональности с примерами про- грамм http://www.mcs.anl.gov/petsc/petsc-as/documentation/index.html В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 5 / 34
  • 6. Структура пакета PETSc В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 6 / 34
  • 7. Подробнее о компонентах PETSc Таблица: Модуль Назначение Mat Структуры данных различных типов матриц, матрично- векторные операции Vec Структуры данных различных типов вектора, векторные операции DM Компонента управления данными, поддерживает рас- пределенные структуры данных, обобщенные индексы и механизмы соответствия локальной и глобальной нуме- рации данных KSP Итерационный решатель СЛАУ PC Переобусловливатель СЛАУ TS Решатель ОДУ SNES Решатель нелинейного уравнения LIBPETSC Общие компоненты PETSc, организующие ввод-вывод данных, профилирование приложений В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 7 / 34
  • 8. Прикладные пакеты, разработанные на основе PETSc Пакет Toolkit for Advanced Optimization (TAO) Scalable Library for Eigenvalue Problems (SLEPC) Prometheus - scalable unstructured finite element solver freeCFD - general purpose CFD solver OpenFVM - finite volume based CFD solver OOFEM - object oriented finite element library libMesh - adaptive finite element library DEAL.II - sophisticated C++ based finite element simulation package Пакеты доступны по ссылкеhttp://www.mcs.anl.gov/petsc/petsc-as/miscellaneous/external.html В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 8 / 34
  • 9. Установка PETSc Версии PETSc доступны по ссылке http://www.mcs.anl.gov/petsc/petsc-as/download/index.html, последняя версия http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.0.0-p8.tar.gz. На linux-like платформах PETSc входит в дистрибутивы, пример установки для Debian: >sudo apt-get install libpetsc2.3.3 libpetsc2.3.3-dbg petsc2.3.3-doc После скачивания необходимо найти и модифицировать конфигурационный файл, примеры файлов в папке $PETSC_DIR/config. Установка: >export PETSC_DIR=./petsc-2.3.3; >export PETSC_ARCH=production; >export BOPT=O_++; >$PETSC_DIR/config/bluegenep.py >$PETSC_DIR/make all tests -j 2 В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 9 / 34
  • 10. Простейшая программа на PETSc >cat hello.c #include "petsc.h" int main( int argc, char *argv[] ) { int rank; PetscInitialize( &argc, &argv, 0, 0 ); MPI_Comm_rank( PETSC_COMM_WORLD, &rank ); PetscPrintf("Hello World from rank %dn", rank ); PetscSynchronizedFlush( PETSC_COMM_WORLD ); PetscFinalize(); return 0; } В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 10 / 34
  • 11. Простейшая программа на PETSc-II Компиляция и запуск с помощью Makefile >cat Makefile SHELL = /bin/bash EXAMPLE = hello include $(PETSC_DIR)/bmake/common/base EXECS = hello hello: hello.o chkopts $(CLINKER) -o hello hello.o $(PETSC_LIB) ${RM} -r hello.o >make hello В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 11 / 34
  • 12. Дополнительные возможности Интерфейсы к функциональности PETSc доступны из C/C++, Fortran, Python Средства экспорта-импорта данных c Matlab, конвертеры матриц в форматы MatrixMarket, Harwell-Boeing Средства визуализации данных (вывод портретов матриц, построение графиков и гистограм a la упрощенный gnuplot) Механизм создания собственного метода В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 12 / 34
  • 13. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 13 / 34
  • 14. Обзор функциональности Операции над матрицами и векторами с помощью функциональности компонент Mat и Vec–основа программ PETSc. Типы поддерживаемых матриц (последовательных и параллельных): MATSEQAIJ/MATMPIAIJ–разреженная матрица общего вида MATSEQBAIJ/MATMPIBAIJ–разреженная матрица блочной структуры MATSEQDENSE/MATMPIDENSE–плотная матрица Матрица и вектор в PETSc определяются интерфейсом Основные функции: Mat*Create(), Mat*Destroy(), MatSetFromOptions()–создание, удаление, настройка типа матрицы (MatSetValues(), MatInsertValues(), MatAssemblyBegin(), MatAssemblyEnd())–добавление/модификация значений матриц MatMultAdd(), MatTranspose(), . . . –матрично-векторные операции разных типов VecLoad(), MatLoad(), MatView(), VecView()–ввод-вывод матрицы и вектора на диск В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 14 / 34
  • 15. Пример: умножение матрицы на вектор y = Ax MatCreate(PETSC_COMM_WORLD, A);CHKERRQ(ierr); VecCreate(PETSC_COMM_WORLD, x);CHKERRQ(ierr); VecCreate(PETSC_COMM_WORLD, y);CHKERRQ(ierr); ... ierr = MatMult(A, x, y);CHKERRQ(ierr); В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 15 / 34
  • 16. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 16 / 34
  • 17. Решение СЛАУ Решение СЛАУ является вычислительным ядром широкого класса научных и инженерных алгоритмов. Классическая постановка задачи Ax = b, A ∈ R m,n ; x ∈ R n,1 , b ∈ R m,1 . В PETSc доступен следующий набор алгоритмов решения СЛАУ: http://www.mcs.anl.gov/petsc/petsc-as/documentation/linearsolvertable.ht Параметры командной строки позволяют выбирать тип итерационного решателя (-ksp_type <тип>) и предобусловливателя (-pc_type <тип>), а также модифицировать их параметры Демонстрация примера. Пример–решение системы уравнений с трехдиагональной матрицей. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 17 / 34
  • 18. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 18 / 34
  • 19. Отладка программ В PETSc встроены мощные средства отладки программ. Практически все функции PETSc поддерживают синтаксис ierr = Function(...);CHKERRQ(ierr); В случае ошибки выполнения выводится стек вызовов функций и типичные причины Возможность подключить отладчик к отдельному процессу/процессам (vargrind) Использовать параметры командной строки -start_in_debugger, -on_error_attach_debugger Демонстрация примера. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 19 / 34
  • 20. Профилирование программы Параметр командной строки -log_summary используется для получения детальной информации о производительности Для разбивки информации для различных регионов программы использовать функции PreLoadBegin(), PreLoadStage(), PreLoadStage(),. . . , PreLoadEnd() Функциональность для отдельных событий PetscLog()... Демонстрация примера. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 20 / 34
  • 21. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 21 / 34
  • 22. Постановка задачи Модуль TS предоставляет функциональность для решения дифференциального уравнения du = F (u, t) dt где функция F может быть общего вида, а также двух специальных видов du = Au, dt du = A(t)u. dt Функциональность TS: TSCreate(), TSDestroy(), TSSetFromOptions()–создать/уничтожить объект TS TSSetProblemType(), TSSetMatrices()–установить тип решаемой проблемы, установить матрицы ОДУ TSSetUp(), TSSetInitialTimeStep(), TSSetDuration(), TSStep()–установка параметров решателя и запуск TSGetTimeStep(), TSSetTimeStep()–функции для реализации псевдо-шаговых методов Параметры командной строки:-ts_max_steps, -ts_max_time, В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 22 / 34
  • 23. Пример кода программы int main(int argc, char **argv) { PetscInt m, time_steps_max; PetscScalar time_total_max, steps, ftime; Mat A; Vec u; TS ts; PetscInitialize(argc, argv, 0, 0); ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr); ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,m,m);CHKERRQ(ierr); MatSetF # инициализировать значения матрицы ierr = SetupMatrix(A);CHKERRQ(ierr); ierr = VecCreate(PETSC_COMM_WORLD, &u); ierr = VecSetSize(u,PETSC_DECIDE, m); VecSetFromOptions(u); ierr = TSCreate(PETSC_COMM_SELF,&ts);CHKERRQ(ierr); # тип задачи u_t = A u с постоянной матрицей ierr = TSSetProblemType(ts,TS_LINEAR);CHKERRQ(ierr); ierr = TSSetMatrices(ts,A,PETSC_NULL,PETSC_NULL, PETSC_NULL,DIFFERENT_NONZERO_PATTERN,&appctx);CHKERRQ(ierr); ierr = TSSetInitialTimeStep(ts,0.0,dt);CHKERRQ(ierr); ierr = TSSetSolution(ts,u);CHKERRQ(ierr); ierr = TSSetDuration(ts,time_steps_max,time_total_max);CHKERRQ(ierr); ierr = TSSetFromOptions(ts); ierr = TSStep(ts,&steps,&ftime);CHKERRQ(ierr); MatDestroy(A); В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 23 / 34
  • 24. Проблемы при использовании структур памяти Операции, связанные с управлением динамической памятью в PETSC, приводят к параличу производительности Пример: сложение разреженных матриц A + B. Необходимо избегать операций реаллокации. Идея: в один проход посчитать сколько нужно в каждой строчке элементов и динамически создать нужную структуру матрицы Функции: Mat***SetPreallocation(), Mat***SetPreallocationCSR() Демонстрация примера. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 24 / 34
  • 25. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 25 / 34
  • 26. Нелинейные уравнения в PETSc Библиотека PETSc содержит модуль SNES решателей нелинейных уравнений вида F (u) = 0. В общем виде решение задачи осуществляется в виде итераций F (u (k) ) u (k+1) = u (k) + , F (u (k) ) где F (u)–якобиан функции. Вычисление якобиана является вычислительно сложной задачей, для решения которой могут использоваться несколько методов. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 26 / 34
  • 27. Постановка задачи Рассмотрим некоторую область D = D ∪ Γ, в которой определено уравнение ∆u − λe u = 0, u |Γ = 0. Численное решение задачи осуществляется переходом к схеме n+1 n Auij = f (uij ), A = [D+x + D−x + D+y + D−y ], n f (uij ) = e uij . n Демонстрация примера. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 27 / 34
  • 28. План курса 1 Математическая библиотека PETSc Обзор функциональности PETSc Установка 2 Матрично-векторные операции в PETSc 3 Case study: Решение систем линейных уравнений 4 Отладка и профилирование параллельных программ 5 Решение обыкновенных дифференциальных уравнений Case study: решение ОДУ Case study: эффективное управление памятью 6 Решение нелинейных уравнений Case study: решение уравнения Брату 7 Пакет SLEPc: решение задач на собственные значения Case study: решение обобщенной задачи на собственные значения Case study: частичное сингулярное разложение В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 28 / 34
  • 29. Общие сведения о пакете SLEPC [6] является высокоуровневой параллельной математической библиотекой решения задач на собственные значения, спектральных преобразований, сингулярного разложения. SLEPC построен на использовании функциональности PETSc, соответственно внутри программы имеется возможность работать с объектами и функциями PETSc. Документация доступна по ссылке http://www.grycap.upv.es/slepc/documentation/manual.htm и включает manual, описание функций и примеров работы с библиотекой В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 29 / 34
  • 30. Установка >wget http://www.grycap.upv.es/slepc/download/distrib/slepc-3.0.0-p6.tgz >tar xvzf slepc-3.0.0-p6 >export SLEPC_DIR=slepc-3.0.0-p6 # подставить нужную директорию >./configure > make test На некоторых платформах потребуется установить полный пакет LAPACK. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 30 / 34
  • 31. Постановка задачи Рассматривается проблема вычисления λ, x в задаче Ax = λBx Пример кода для задачи Ax = λx, оператор A загружается из файла: ... ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD,filename,FILE_MODE_READ,&viewe ierr = MatLoad(viewer,MATAIJ,&A);CHKERRQ(ierr); ierr = PetscViewerDestroy(viewer);CHKERRQ(ierr); ... ierr = EPSCreate(PETSC_COMM_WORLD,&eps);CHKERRQ(ierr); ierr = EPSSetOperators(eps,A,PETSC_NULL);CHKERRQ(ierr); ierr = EPSSetFromOptions(eps);CHKERRQ(ierr); ierr = EPSSolve(eps);CHKERRQ(ierr); ierr = EPSGetIterationNumber(eps, &its);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD," Number of iterations of the method: %d ierr = EPSGetType(eps,&type);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD," Solution method: %snn",type);CHKERRQ ierr = EPSGetDimensions(eps,&nev,PETSC_NULL);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD," Number of requested eigenvalues: %dn" ierr = EPSDestroy(eps);CHKERRQ(ierr); ierr = MatDestroy(A);CHKERRQ(ierr); ierr = SlepcFinalize();CHKERRQ(ierr); В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 31 / 34
  • 32. Постановка задачи Алгоритм сингулярного разложения оператора имеет важные приложения в ряде задач. Проблема заключается в факторизации матрицы X в виде матриц особого вида X = UΣV T . U, V – ортогональные матрицы. Σ – диагональная матрица с сингулярными значениями в порядке убывания. Для ряда практических задач требуется вычислять усеченное сингулярное разложение T X ≈ U1k Σkk V1k . Демонстрация примера. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 32 / 34
  • 33. Заключение Презентация и примеры, продемонстрированные в курсе, доступны по ссылке http://angel.cmc.msu.ru/~basrav. Вопросы, замечания, комментарии, предложения? Пишите basrav@angel.cmc.msu.ru. Спасибо за внимание. В. Воронов (ВМК МГУ) Разработка на основе параллельных библиотек Суперкомпьютерная Школа 33 / 34
  • 34. Литература [1] Н. С. Бахвалов, Н. П. Жидков, and Г. М. Кобельков. Численные методы. М: Наука, 1987. [2] М. Ю. Баландин and Э. П. Чепурина. Методы решения СЛАУ большой размерности. Новосибирск: Изд-во НГТУ, 2000. [3] Y. Saad. Iterative Methods for Sparse Linear Systems. Society for Industrial Mathematics, 2003. [4] S. Balay, K. Buschelman, W. D. Gropp, D. Kaushik, M. G. Knepley, L. C. McInnes, B. F. Smith, and H. Zhang. PETSc Web page. See http://www. mcs. anl. gov/petsc. [5] L. Oliker, A. Canning, J. Carter, C. Iancu, M. Lijewski, S. Kamil, J. Shalf, H. Shan, E. Strohmaier, S. Ethier, et al. Scientific Application Performance on Candidate PetaScale Platforms. 2007. [6] V. Hernandez, J.E. Roman, and V. Vidal. SLEPc: A scalable and flexible toolkit for the solution of eigenvalue problems. ACM Transactions on Mathematicalоснове параллельных библиотек В. Воронов (ВМК МГУ) Разработка на Software (TOMS), 31(3):351–362, 2005. Суперкомпьютерная Школа 34 / 34