Вперед: 5.1.3. Использование библиотеки ScaLAPACK
Назад: 5.1.1. История создания пакета ScaLАРАСК и его общая организаци
К содержанию: Оглавление


5.1.2. Структура пакета ScaLАРАСК

Общая структура пакета ScaLAPACK представлена на Рис. 5.1

Структура пакета ScaLAPACK

Рис. 5.1. Структура пакета ScaLAPACK

На этом рисунке компоненты пакета, расположенные выше разделительной линии, содержат подпрограммы, которые выполняются параллельно на некотором наборе процессоров и в качестве аргументов используют векторы и матрицы, распределенные по этим процессорам. Подпрограммы из компонентов пакета, расположенные ниже разделительной линии вызываются на одном процессоре и работают с локальными данными. Каждый из компонентов пакета - это независимая библиотека подпрограмм, которая не является частью библиотеки ScaLAPACK, но необходима для ее работы. В тех случаях, когда на компьютере имеются оптимизированные фирменные реализации каких-то из этих библиотек (BLAS, LAPACK), то настоятельно рекомендуется для достижения более высокой производительности использовать именно эти реализации.

Собственно сама библиотека ScaLAPACK состоит из примерно 530 подпрограмм, которые для каждого из 4-х типов данных (вещественного, вещественного с двойной точностью, комплексного, комплексного с двойной точностью) разделяются на три категории:

Имена всех драйверных и вычислительных подпрограмм совпадают с именами соответствующих подпрограмм из пакета 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 [16]. Здесь мы рассмотрим только вопросы, касающиеся использования этой библиотеки.



Вперед: 5.1.3. Использование библиотеки ScaLAPACK
Назад: 5.1.1. История создания пакета ScaLАРАСК и его общая организаци
К содержанию: Оглавление