1.2. Структура пакета ScaLАРАСК
Общая структура пакета ScaLAPACK представлена на рис. 1.1.
Рис. 1.1. Структура пакета ScaLAPACK.
На этом рисунке компоненты пакета, расположенные выше разделительной линии, содержат подпрограммы, которые выполняются параллельно на некотором наборе процессоров и в качестве аргументов используют векторы и матрицы, распределенные по этим процессорам. Подпрограммы из компонентов пакета ниже разделительной линии вызываются на одном процессоре и работают с локальными данными. Каждый из компонентов пакета - это независимая библиотека подпрограмм, которая не является частью библиотеки ScaLAPACK, но необходима для ее работы. В тех случаях, когда на компьютере имеются оптимизированные фирменные реализации каких-то из этих библиотек (BLAS, LAPACK), настоятельно рекомендуется для достижения более высокой производительности использовать именно эти реализации.
Собственно сама библиотека ScaLAPACK состоит из 530 подпрограмм, которые
для каждого из 4-х типов данных (вещественного, вещественного с двойной
точностью, комплексного, комплексного с двойной точностью) разделяются на
три категории:
- Драйверные подпрограммы, каждая из которых решает некоторую
законченную задачу, например, решение системы линейных алгебраических
уравнений или нахождение собственных значений вещественной симметричной
матрицы. Таких подпрограмм 14 для каждого типа данных. Эти подпрограммы
обращаются к вычислительным подпрограммам.
- Вычислительные подпрограммы выполняют отдельные подзадачи,
например, LU разложение матрицы или приведение вещественной симметричной
матрицы к трехдиагональному виду. Набор вычислительных подпрограмм
значительно перекрывает функциональные потребности и возможности драйверных подпрограмм.
- Служебные подпрограммы выполняют некоторые внутренние вспомогательные действия.
Имена всех драйверных и вычислительных подпрограмм совпадают с именами
соответствующих подпрограмм из пакета LAPACK, с той лишь разницей, что в
начале имени добавляется символ P, указывающий на то, что это параллельная
версия. Соответственно, принцип формирования имен подпрограмм имеет ту же
самую схему, что и в LAPACK. Согласно этой схеме имена подпрограмм пакета имеют вид PTXXYYY, где
Т - код типа исходных данных, который может иметь следующие значения:
S - вещественный одинарной точности,
D - вещественный двойной точности,
С - комплексный одинарной точности,
Z - комплексный двойной точности;
XX - указывает вид матрицы:
DB - ленточные общего вида с преобладающими диагональными элементами,
DT - трехдиагональные общего вида с преобладающими диагональными элементами,
GB - ленточные общего вида,
GE - общего вида,
GT - трехдиагональные общего вида,
HE - эрмитовы,
PB - ленточные симметричные или эрмитовы положительно определенные,
PO - симметричные или эрмитовы положительно определенные,
PT - трехдиагональные симметричные или эрмитовы положительно определенные,
ST - симметричные трехдиагональные,
SY - симметричные,
TR - треугольные,
TZ - трапециевидные,
UN - унитарные;
YYY - указывает на выполняемые данной подпрограммой действия:
TRF - факторизация матриц,
TRS - решение СЛАУ после факторизации,
CON - оценка числа обусловленности матрицы (после факторизации),
SV - решение СЛАУ,
SVX - решение СЛАУ с дополнительными исследованиями,
EV и EVX - вычисление собственных значений и собственных векторов,
GVX - решение обобщенной задачи на собственные значения,
SVD - вычисление сингулярных значений,
RFS - уточнение решения,
LS - нахождение наименьших квадратов.
Полный список подпрограмм и их назначение можно найти в руководстве по
ScaLAPACK [2]. В данном пособии мы рассмотрим только вопросы, касающиеся использования этой библиотеки.
Next:1.3. Использование библиотеки ScaLAPACK
Up:1. БИБЛИОТЕКА ПОДПРОГРАММ ScaLAPACK
Prev:1.1. История разработки пакета ScaLАРАСК и
его общая организация