2. Документация
В начало страницы
В руководстве описано использование двух следующих компонент программного обеспечения:
BLAS (Базисные Подпрограммы Линейной Алгебры) с поддержкой потоков (thread-save), версия V2.0 и LAPACK (Пакет Линейной Алгебры ) c поддержкой потоков, версия V2.0
Продукты представляют бесплатные реализации BLAS и LAPACK, разработанные группой проф. Jack Dongarra, Университет штата Tennessee, USA, опубликованные в WWW (URL: http://www.netlib.org/) .
Руководство имеет следующую структуру.
1 Обзор
Продукты охарактеризованы с указанием отличий от бесплатных версий.
2 Документация
В руководстве не приводятся вызывающие последовательности для конкретных подпрограмм. Вместо этого читатель отсылается к общедоступной документации.
В разделе описано, как и где ее можно найти.
3 Примеры программ, использующих подпрограммы, поддерживающие потоки.
В этом разделе показан пример кода, использующего подпрограммы соответствующих версий BLAS и LAPACK. Пример достаточно прост для понимания и предназначен для описания принципов вызова поточно-безопасных подпрограмм из Открытой мультипроцессорной (OpenMP) Fortran-программы. 4 Компиляция и редактирование
Описываются способ компилирования и редактирования связей для пользовательских программ, содержащих обращения к описываемым продуктам.
5 Замечания об использовании.
Делаются несколько замечаний об использовании продуктов.
Приложение А. Список подпрограмм.
Приводится полный список подпрограмм.
Для общего использования BLAS и LAPACK см. документацию, упомянутую в "2. Детальные спецификации по OpenMP Fortran см. в OpenMP Fortran Application
Program Interface, Oct. 1997 1.0 (http://www.openmp.org/).
Благодарности
BLAS and LAPACK есть плод совместных усилий нескольких институтов и распространяются по Netlib.
В начало страницы
Поточно-безопасные версии BLAS и LAPACK основаны на BLAS (Базисные
Линейно-Алгебраические Подпрограммы) и LAPACK (Линейно-Алгебраический Пакет).
Каждая подпрограмма может вызываться из написанной на Fortran программы оператором CALL.
В начало страницы
BLAS есть библиотека векторных и матричных операций. Поточно-безопасная версия BLAS основана на BLAS из Netlib. BLAS содержит 57 функций. Общее количество подпрограмм разных степеней точности составляет примерно 170.
Поточно-везопасная версия BLAS имеет следующие рутины:
Уровень 1 BLAS : Векторные операции
Уровень 2 BLAS : Матричные и векторные операции
Уровень 3 BLAS : Матричные и матричные операции
Sparse-BLAS : Разреженные векторные операции
Поточно-безопасная реализация BLAS содержит подпрограммы с точно теми же именами и параметрами вызова, как и базисная версия из Netlib. Отличия только
в следующем:
- поточно-безопасная версия может быть использована в окружении SMP (Symmetric Multiple Processing);
- подрутины п-б-версии могут вызываться из OpenMP Fortran-программ;
- п-б-версия должна компоноваться с объектной программой, выданной компилятором Fujitsu для программ OpenMP Fortran.
Цель использования п-б-версии BLAS --- получить подпрограммы, параллельно выполняющие операции на разных множествах данных, которые независимы друг
от друга, и тем самым уменьшать время, необходимое для завершения всех операций. При обычном, последовательном, вычислении пользователь должен последовательно вызывать подпрограмму для последовательно сменяемых данных. С библиотекой же п-б BLAS пользователь может давать подпрограмме за раз несколько множеств данных, используя кратные потоки, где один поток обрабатывает одно множество данных и все потоки исполняются параллельно. На этом пути пользователь может ожидать параллельное выполнение с коэффициентом параллельности, равным количеству потоков. Конечно, для такого сокращения времени необходимо иметь много центральных процессоров. Пользователь увидит пример такого кода в разделе 3. Заметим, что BLAS п-б-версия не есть параллельная библиотека, подпрограммы которой спроектированы для решения одной проблемы с помощью многих потоков, или, другими словами, с помощью многих CPU. Вместо этого, подпрограмма п-б-версии предназначается для решения независимых многих задач параллельно с помощью многих потоков, исполняемых на многих CPU. Например, п-б-подпрограмма для умножения матриц может вызываться одновременно с многих CPU, где один CPU выполняет одно матричное умножение. Подпрограммы BLAS п-б-версии могут также вызываться извне параллельной конструкции OpenMP.
В начало страницы
LAPACK представляет собой библиотеку подпрограмм линейной алгебры. П-б-версия LAPACK основана на LAPACK 2.0 из Netlib. Она содержит около 300 функций. Общее количество подпрограмм разных типов точности --- около 1100. Подпрограммы относятся к следующим группам:
* Линейные уравнения
* Линейные задачи метода наименьших квадратов
* Собственные числа
* Разложения сингулярных значений
Подпрограммы п-б-версии LAPACK, предназначены для вызовов
из программ на OpenMP Fortran в окружении SMP. Их цель --- параллельное решение различных задач, не зависящих друг от друга, для сокращения общего
времени, потребного для решения всех таких задач.
LAPACK содержит подпрограммы-драйверы, вычислительные подпрограммы и вспомогательные подпрограммы. Драйверы имеют дело с общими задачами линейной алгебры, такими как системы линейных уравнений, в то время как вычислительные подпрограммы используются в качестве компонент драйверов, например, для LU-разложений матриц. Вспомогательные подпрограммы выполняют некоторые подзадачи или обычные элементарные вычисления.
В начало страницы
Интерфейс вызова подпрограмм (имя подпрограммы, набор параметров) в описываемых продуктах не отличается от принятых в обычных прототипах. Поэтому они не приводятся в руководстве. Пользователь может ознакомитьсчя с ними по общедоступной документации, указанной ниже.
В начало страницы
Обращайтесь к следующему руководству по описанию использования конкретных подпрограмм из описываемого программного продукта:
* LAPACK Users' Guide, Second Edition (SIAM, 1995)
Книга детально описывает использование LAPACK, включая спецификации, назначение, описание параметров, характеристики и точность драйверных и вычислительных рутин. В нее включены также быстрые справки по BLAS.
В начало страницы
Несколько документов по BLAS и LAPACK доступны в диалоге (on-line) из http://www.netlib.org/. Следующие имена все такие же как в August, 1999. * LAPACK Users' Guide.
Следующие URL дают обзор форм вызовов подпрограмм LAPACK. Они содержат ту же информацию, которая описана в "Part 1 Guide" в книге LAPACK Users' Guide,
Третье издание. Книга написана для LAPACK версии3.0, но может также использоваться для LAPACK версии 2.0, на котором базируется продукт. Различия между версиями 2.0 и 3.0 документированы в книге в "Предисловии к третьему изданию" и в разделе с заголовком "What's new in version 3.0?"
http://www.netlib.org/lapack/lug/lapack_lug.html
* Manual pages (i.e. "man" pages) для подпрограмм BLAS и LAPACK
( gzip tar файл).
http://www.netlib.org/lapack/manpages.tgz