Библиотека 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.
-pa -pab -paz
Данная оценка позволяет получить следующую информацию:
Оценки производительности каждой программы включаются в общую оценку производительности вызывающей программы.
При использовании программ из библиотек возможно также подключение оптимизатора Application Compiler [6] для генерирования более эффективного кода.
Библиотеки VECLIB, SCILIB, LAPACK построены с учетом особенностей архитектуры семейства CONVEX.Они могут использоваться как в однопроцессорном (С1), так и в многопроцессорном (С2,С3) варианте и при этом автоматически настраиваться на заданную архитектуру, используя все преимущества векторных операций и параллельной обработки.
С целью повышения быстродействия программы нижнего уровня библиотек не выдают предупреждающих сообщений о возможной ошибке. Данные ошибки устраняются математически корректным способом. Например, путем присвоения математически естественного результата в случае некорректных исходных данных. Программы высокого уровня способны выявлять и выдавать диагностику ошибок.
Использование библиотек не должно влиять на точность результатов вычислений. Если результаты работы программы с подключением библиотечных подпрограмм существенно отличаются от результатов без использования библиотечных подпрограмм, это скорее всего связано с плохой обусловленностью задачи.
Библиотека состоит из следующих разделов:
Программы 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.
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 разделов.
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 - решение системы линейных уравнений с положительно определенной трехдиагональной матрицей коэффициентов.
RS - нахождение собственных чисел и векторов действительной симметричной матрицы;
TQL2 - нахождение собственных чисел и собственных векторов действительной симметричной трехдиагональной матрицы;
TQLRAT - нахождение собственных чисел трехдиагональной действительной симметричной матрицы;
TRED1, TRED2 - ортогональное преобразование действительной симметричной матрицы в действительную симметричную трехдиагональную.
DSLEFS - оценка числа обусловленности и нахождение собственных чисел;
DSLEIN - выделение динамической области памяти;
DSLET1, DSLEIC, DSLEIE, DSLEIF, DSLEIM - анализ исходной матрицы коэффициентов на корректность;
DSLEOR - переупорядочивание исходной матрицы коэффициентов для последующей факторизации;
DSLEVM, DSLEVC, DSLEVE, DSLEV1 - ввод исходной матрицы коэффициентов;
DSLECO - факторизация и оценка числа обусловленности исходной матрицы;
DSLEFA - факторизация разреженной симметричной матрицы;
DSLESL - решение системы линейных уравнений;
DSLEDA... DSLESV - вспомогательные сервисные программы.
DALLOC... RALLOC - программы динамического размещения данных в оперативной памяти;
RAN, SRAN - генерация последовательности равномерно распределенных случайных чисел;
Программа RAN идентична одноименной VAX программе и может использоваться для переносимости VAX программ.
RANV, SRANV - генерация последовательности равномерно распределенных случайных векторов;
SC2IBM, SIBM2C - преобразование данных из формата CONVEX в формат IBM и обратно;
SSORT - сортировка массива;
XERVEC - диагностика ошибок.
Структура библиотеки,включая количество разделов по классам охватываемых задач, аналогична VECLIB, за исключением того,что отсутствуют разделы 6, 7, 8 из VECLIB, посвященные решению разреженных линейных систем и задач на собственные значения, а также симметричным положительно определенным линейным системам. Часть программ библиотеки совпадает с соответствующими программами из VECLIB.
Разделы библиотеки включают три основных типа программ:
Управляющие программы предназначены для решения определенного класса задач. Они подразделяются на простые и специальные. Специальные программы обеспечивают более полный и надежный анализ исходных данных по сравнению с простыми и поэтому требуют большего времени счета. Так, например, специальная управляющая программа для решения систем линейных уравнений осуществляет более тщательную и надежную проверку на сингулярность путем оценки числа обусловленности матрицы коэффициентов.
Вычислительные программы предназначены для решения отдельных задач, например 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