Обзор математических библиотек CONVEX

Илюшкин Б. И.



Общее описание

В состав ППО CONVEX входят три независимые библиотеки программ: VECLIB, SCILIB, LAPACK. Каждая из библиотек содержит векторизованные версии стандартных программ, оптимизированных с учетом использования архитектуры семейства CONVEX.

Библиотека VECLIB содержит программы, предназначенные для решения следующих классов задач:

Библиотека SCILIB предназначена для решения тех же самых задач и содержит программы, совпадающие по названию и функциям с пакетом Unicos Math and Scientific Library, v 5.0, Cray Research Corp. Основной целью библиотеки SCILIB является обеспечение переносимости программ, разработанных в среде CRAY на CONVEX. В документацию по SCILIB не включены программы нижнего уровня, входящие в состав VECLIB и описанные в [1].

Библиотека LAPACK создана с целью замены существующих пакетов программ LINPACK и EISPACK и предназначена для решения следующих классов задач:

Кроме трех вышеперечисленных библиотек в состав ППО CONVEX включены три машиннонезависимых пакета программ,написанных на Фортране: LINPACK, EISPACK, и Math Advantage.

Пакеты LINPACK и EISPACK содержат тексты программ на Фортране и предназначены для анализа и решения систем линейных алгебраических уравнений и для решения задач на собственные значения. Оба пакета создавались в 70-х годах в рамках проекта NATS (национальная программа тестирования матобеспечения) и широко и тщательно тестировались. Кроме того, данные пакеты используются как тестовые для сравнительной оценки производительности суперкомпьютеров. Пакет научных программ Math Advantage содержит более 250 программ по различным разделам математики, включая векторные и матричные операции, обработку временных рядов и изображений, решение задачи на собственные значения, интерполирование и интегрирование. Пакет не содержит исходных текстов на Фортране, однако для каждой программы приводится тестовый пример с исходными данными и результатами счета.

Структура библиотек и их совместное использование

Все три основные библиотеки построены по одинаковому принципу из набора объектных модулей и являются двухуровневыми.

Верхний уровень образуют процедурно-ориентированные базовые модули, реализующие непосредственно численные алгоритмы. На зтом уровне библиотеки VECLIB и SCILIB включают часть модулей из пакетов LINPACK и EISPACK, оптимизированных для архитектуры CONVEX. Библиотека VECLIB использует также программные модули из пакета программ Boeing Computer Services' Vector Pack.

Нижний уровень содержит элементарные модули, которые применяются для часто повторяющихся базовых операций (вычисление скалярного произведения векторов, произведение матрицы на вектор и т.д.) В качестве элементарных модулей используются программы из машиннонезависимой библиотеки BLAS (Basic Linear Algebra Subprograms). BLAS состоит из нескольких разделов:

Все используемые модули из BLAS переписаны на ассемблере и оптимизированы с учетом архитектуры CONVEX.

Большинство программ каждой из библиотек имеет несколько версий, в зависимости от заданных типов исходных данных.Имена программ стандартизованы таким образом, что первая буква указывает на тип данных Fortran:

Для совместимости типов данных при совместном использовании программ из разных библиотек, VECLIB и LAPACK реализованы в двух вариантах:

        VECLIB                  LAPACK
        VECLIB8                 LAPACK8

Библиотеки VECLIB8, LAPACK8 являются подмножествами библиотек VECLIB, LAPACK, и предоставляют возможность изменения точности вычислений без изменения исходного программного кода.Для этого необходимо задать одну из следующих опций в командной строке запуска компилятора:

        -cfc,  -p8,  -pd8

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

------------------------------------------------------------------------
Type VECLIB VECLIB8    SCILIB     LAPACK    LAPACK8    LINPACK   EISPACK
------------------------------------------------------------------------
I INTEGER*4 INTEGER*8  INTEGER*8    -         -          -         -
S REAL*4    REAL*8     REAL*8     REAL*4    REAL*8     REAL*4      -
D REAL*8      -          -        REAL*8      -        REAL*8    REAL*8
C COMPLEX*8 COMPLEX*16 COMPLEX*16 COMPLEX*8 COMPLEX*16 COMPLEX*8   -
Z COMPLEX*16  -          -        COMPLEX*16   -       COMPLEX*16  -
------------------------------------------------------------------------

Таб. 1 Типы данных Fortran, используемых по умолчанию библиотеками.

В соответствии с Таб. 1 при совместном использовании библиотек VECLIB и SCILIB командная строка запуска компилятора [4] имеет следующий вид:

        fc  -cfc  prog  -lscilib  -lveclib8

Опция -cfc означает, что по умолчанию используются типы данных Cray. VECLIB8 использует типы данных, по умолчанию идентичные типам данных SCILIB и потому применяется вместо VECLIB при совместном со SCILIB использовании.

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

        fc [ options ]  prog  -llapack  -lveclib

или

        fc [ options ]  prog  -llapack8  -lveclib8

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

        fc [ options ]  prog  -llapack8  -lveclib8  -lscilib

Порядок расположения библиотек в командной строке неважен. Из Таб. 1 видно, что совместное использование библиотек осуществляется таким образом, чтобы были одинаковые параметры типов данных. Поэтому нельзя, например, совместно использовать в командной строке запуска компилятора библиотеки VECLIB и SCILIB.

Замечания по использованию библиотек

Оценка производительности программ библиотек может быть осуществлена при помощи анализатора производительности CONVEX Performance Analyzer CXpa [5]. Для этого при компиляции программы необходимо использовать в строке вызова одну из опций:

        -pa       -pab        -paz

Данная оценка позволяет получить следующую информацию:

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

При использовании программ из библиотек возможно также подключение оптимизатора Application Compiler [6] для генерирования более эффективного кода.

Библиотеки VECLIB, SCILIB, LAPACK построены с учетом особенностей архитектуры семейства CONVEX.Они могут использоваться как в однопроцессорном (С1), так и в многопроцессорном (С2,С3) варианте и при этом автоматически настраиваться на заданную архитектуру, используя все преимущества векторных операций и параллельной обработки.

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

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

Описание библиотеки VECLIB

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

Библиотека состоит из следующих разделов:

2. Векторные операции

Раздел содержит 38 программ, каждая из которых имеет несколько версий. Использование данных программ нижнего уровня позволяет в большинстве случаев увеличить производительность программ пользователя, однако в отдельных случаях большая производительность достигается без обращения к данным программам.

Программы VECLIB допускают обработку векторов, расположенных в массивах с интервалами между элементами, отличными от единицы. Вектор определяется тремя параметрами: именем массива, длиной и интервалом между элементами. Это позволяет задавать прямой или обратный порядок хранения (в зависимости от знака интервала), а также вести обработку строк матриц, расположенных в памяти по столбцам.

Ниже приводится список названий программ и их назначения по группам операций.

Операции нормирования и минимаксные

SNRM2 - евклидова норма вектора;

SNRSQ - квадрат евклидовой нормы вектора;

SAMAX - максимальная из абсолютных величин координат вектора;

SAMIN - минимальная из абсолютных величин координат вектора;

SMAX - максимальная из величин координат вектора;

SMIN - минимальная из величин координат вектора;

SASUM - сумма абсолютных величин координат вектора;

SSUM - сумма величин координат вектора.

Упорядочение и выбор координат

ISAMAX - индекс максимальной по абсолютной величине координаты вектора;

ISAMIN - индекс минимальной по абсолютной величине координаты вектора;

ISMAX - индекс максимальной координаты вектора;

ISMIN - индекс минимальной координаты вектора;

ISCTxx - число координат вектора, больших (меньших, равных) заданного скаляра;

ISSVxx - наименьший индекс координаты вектора, большей (меньшей, равной) заданного скаляра.

Линейные операции

SDOT - скалярное произведение двух векторов;

SDOTI - скалярное произведение нормального и разреженного вектора;

SWDOT - взвешенное скалярное произведение двух векторов;

SAXPY - частная линейная комбинация двух векторов;

SAXPYI - частная линейная комбинация нормального и разреженного вектора;

SRSCL - сложение вектора со скаляром;

SSCAL - умножение вектора на скаляр.

Нелинейные операции

SCLIP - выравнивание координат вектора (возврат на границу n-мерного параллепипида);

SCLIPL - левостороннее выравнивание координат вектора;

SCLIPR - правостороннее выравнивание координат вектора;

SFRAC - отсечение целых значений координат (отображение в n-мерный гиперкуб);

SSCTR - сжатие (преобразование разреженного вектора в плотный);

SGTHR - разрежение (преобразование плотного вектора в разреженный);

SRAMP - генерирование вектора с линейно изменяющимися координатами;

SLSTxx - поиск координат вектора больших (меньших, равных) заданного скаляра;

SCOPY - копирование вектора;

SSWAP - взаимное копирование двух векторов одного в другой (взаимная подстановка);

SZLRO - обнуление вектора (копирование в нулевой вектор);

SROT - вращение Гивенса двух векторов;

SROTG - построение матрицы плоского вращения Гивенса;

SROTI - вращение Гивенса разреженного и плотного вектора;

SROTM - модифицированное вращение Гивенса двух векторов;

SROTMG - подготовительная операция для SROTM.

3. Матричные операции

Раздел содержит 24 программы, каждая из которых имеет несколько версий. Имя каждой программы имеет мнемонику, позволяющую определить Fortran тип исходных данных, вид матрицы и тип операций в соответствии с нижеследующими обозначениями:

Виды матриц

GE - произвольная

GB - ленточная

HE - эрмитова

HB - эрмитова ленточная

HP - эрмитова компактная

SY - симметричная

SB - симметричная ленточная

SP - симметричная компактная

TR - треугольная

TB - треугольная ленточная

TP - треугольная компактная

Типы операций

MM - умножение матрицы на матрицу

MV - умножение матрицы на вектор

R - Rank - 1 update

R2 - Rank - 2 update

RK - Rank - K update

R2K - Rank - 2K update

SM - решение систем линейных уравнений

SV - решение системы линейных уравнений

Пример:

SGBMV - программа умножения ленточной матрицы ( GB) на вектор ( MV) с ординарной точностью ( S)

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

Имена программ

SGBMV - умножение ленточной матрицы на вектор;

SGEMM - умножение матрицы на матрицу;

SGEMMS - умножение матрицы на матрицу методом Штрассена;

SGEMV - умножение матрицы на вектор;

SGER - Rank 1 update;

SSBMV - умножение симметричной ленточной матрицы на вектор;

SSPMV - умножение симметричной компактной матрицы на вектор;

SSPR - symmetric Rank 1 update;

SSPR2 - Rank 2 update;

SSYMM - умножение симметричной матрицы на матрицу;

SSYMV - умножение симметричной матрицы на вектор;

SSYR - symmetric Rank 1 update;

SSYR2 - symmetric Rank 2 update;

SSYRK - symmetric Rank k update;

SSYR2K - symmetric Rank 2k update;

STBMV - умножение треугольной ленточной матрицы на вектор;

STBSV - решение системы линейных уравнений с треугольной ленточной матрицей коэффициентов;

STPMV - умножение треугольной компактной матрицы на вектор;

STPSV - решение системы линейных уравнений с треугольной компактной матрицей коэффициентов;

STRMM - умножение треугольной матрицы на матрицу;

STRMV - умножение треугольной матрицы на вектор;

STRSM - решение систем линейных уравнений с треугольными матрицами коэффициентов;

STRSV - решение системы линейных уравнений с треугольной матрицей коэффициентов;

XERBLA - диагностика ошибок для программ 2,3 разделов.

4. Системы линейных уравнений

Раздел содержит 19 программ, каждая из которых имеет несколько версий. В раздел включены программы из библиотеки LINPACK, оптимизированные для CONVEX. Имя каждой программы имеет мнемонику, позволяющую определить Fortran тип исходных данных, вид матрицы коэффициентов и тип операции в соответствии с нижеследующими обозначениями:

Виды матриц

GE - произвольная

GB - ленточная

PO - положительно определенная

PB - положительно определенная ленточная

PP - положительно определенная компактная

SI - симметричная

SP - симметричная компактная

HI - эрмитова

HP - эрмитова компактная

TR - треугольная

GT - произвольная трехдиагональная

PT - положительно определенная трехдиагональная

CH - декомпозиция Холецкого

QR - ортогонально треугольная декомпозиция

SV - декомпозиция с единственным значением

Типы операций

FA - факторизация

CO - факторизация и оценка обусловленности

SL - решение

DI - вычисление определителя и обратной матрицы

DC - декомпозиция

UD - обновление

Имена программ

SGBCO - факторизация и оценка числа обусловленности ленточной матрицы;

SGBDI - вычисление определителя ленточной матрицы;

SGBFA - факторизация ленточной матрицы;

SGBSL - решение системы линейных уравнений с ленточной матрицей коэффициентов;

SGECO - факторизация и оценка числа обусловленности произвольной матрицы;

SGEDI - вычисление определителя и обращение произвольной матрицы;

SGEFA - факторизация произвольной матрицы;

SGESL - решение системы линейных уравнений с произвольной матрицей коэффициентов;

SGTSL - решение системы линейных уравнений с трехдиагональной матрицей коэффициентов;

SGTSV - решение системы линейных уравнений с трехдиагональной матрицей коэффициентов;

SPBCO - факторизация и оценка числа обусловленности положительно определенной ленточной матрицы;

SPBDI - вычисление определителя положительно определенной ленточной матрицы;

SPBFA - факторизация Холецкого положительно определенной ленточной матрицы;

SPBSL - решение системы линейных уравнений с положительно определенной ленточной матрицей коэффициентов;

SPOCO - факторизация и оценка числа обусловленности положительно определенной матрицы;

SPODI - вычисление определителя и обращение положительно определенной матрицы;

SPOFA - факторизация Холецкого положительно определенной матрицы;

SPOSL - решение системы линейных уравнений с положительно определенной матрицей коэффициентов;

SPTSL - решение системы линейных уравнений с положительно определенной трехдиагональной матрицей коэффициентов.

5. Собственные числа и вектора

Раздел содержит 5 программ,каждая из которых имеет несколько версий. В раздел включены программы из библиотеки EISPACK, оптимизированные для CONVEX.

RS - нахождение собственных чисел и векторов действительной симметричной матрицы;

TQL2 - нахождение собственных чисел и собственных векторов действительной симметричной трехдиагональной матрицы;

TQLRAT - нахождение собственных чисел трехдиагональной действительной симметричной матрицы;

TRED1, TRED2 - ортогональное преобразование действительной симметричной матрицы в действительную симметричную трехдиагональную.

6. Системы линейных уравнений с разреженной матрицей коэффициентов

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

DSLEFS - оценка числа обусловленности и нахождение собственных чисел;

DSLEIN - выделение динамической области памяти;

DSLET1, DSLEIC, DSLEIE, DSLEIF, DSLEIM - анализ исходной матрицы коэффициентов на корректность;

DSLEOR - переупорядочивание исходной матрицы коэффициентов для последующей факторизации;

DSLEVM, DSLEVC, DSLEVE, DSLEV1 - ввод исходной матрицы коэффициентов;

DSLECO - факторизация и оценка числа обусловленности исходной матрицы;

DSLEFA - факторизация разреженной симметричной матрицы;

DSLESL - решение системы линейных уравнений;

DSLEDA... DSLESV - вспомогательные сервисные программы.

7. Собственные числа и вектора для разреженных матриц

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

8. Системы линейных уравнений с симметричной положительно определенной матрицей коэффициентов

Раздел содержит 26 программ.Структура раздела аналогична 6, 7. В данном разделе используется так называемая вертикальная (Sky line) или иначе профильная схема хранения данных (схема переменной ленты).

9. Быстрое преобразование Фурье

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

10. Корреляция и свертка

Раздел содержит 1 программу дискретной корреляции и свертки.

11. Оптимизация циклов

Раздел содержит 10 программ,предназначенных для оптимизации зависимых FORTRAN циклов, содержащих линейные рекуррентные зависимости 1-го и 2-го порядка между переменными. Данные программы используются для распараллеливания циклов.

12. Различные программы

Раздел содержит 13 различных программ.

DALLOC... RALLOC - программы динамического размещения данных в оперативной памяти;

RAN, SRAN - генерация последовательности равномерно распределенных случайных чисел;

Программа RAN идентична одноименной VAX программе и может использоваться для переносимости VAX программ.

RANV, SRANV - генерация последовательности равномерно распределенных случайных векторов;

SC2IBM, SIBM2C - преобразование данных из формата CONVEX в формат IBM и обратно;

SSORT - сортировка массива;

XERVEC - диагностика ошибок.

Описание библиотеки SCILIB

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

Структура библиотеки,включая количество разделов по классам охватываемых задач, аналогична VECLIB, за исключением того,что отсутствуют разделы 6, 7, 8 из VECLIB, посвященные решению разреженных линейных систем и задач на собственные значения, а также симметричным положительно определенным линейным системам. Часть программ библиотеки совпадает с соответствующими программами из VECLIB.

Описание библиотеки LAPACK

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

Разделы библиотеки включают три основных типа программ:

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

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

Вспомогательные программы содержат модули нижнего уровня. Большинство таких программ невидимо для пользователя и поэтому не документировано в руководстве.

Библиотека состоит из следующих разделов:

Литература

1.CONVEX VECLIB User's Guide , 7-th Edition , 1993

2. CONVEX SCILIB User's Guide, First Edition, 1991

3. CONVEX LAPACK User's Guide, First Edition, 1993

4. CONVEX FORTRAN User's Guide

5. CONVEX Performance Analyzer (CXpa) User's Guide

6. CONVEX Application Compiler User's Guide

7. LINPACK User's Guide, 1979

8. EISPACK Guide, 1976

9. EISPACK Guide Extension, 1977

10. Math Advantage User Manual - Fortran Version 4.0, 1992


The file was converted from TeX source by FunnyTeX utility by Mike Krutikov