|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/par_prog/org/instr.htm
Дата изменения: Tue Nov 12 15:58:02 2013 Дата индексирования: Sat Apr 9 22:58:50 2016 Кодировка: Windows-1251 |
Описываемый на настоящем сайте Комплекс подпрограмм для параллельных вычислений с распределенной памятью (PARALG) с 2009 года доступен пользователям суперкомпьютера СКИФ "Чебышев" в НИВЦ МГУ в виде откомпилированных библиотек. Пакеты (BLAS, BLACS, ScaLAPACK и др.), модули которых используются подпрограммами Комплекса, входят в состав MKL-библиотеки, установленной на СКИФ и должны быть подсоединены при получении исполнимой программы. Объектные модули самого Комплекса могут быть взяты из библиотеки libparalg.a, указанной в последней строке скрипта. Ниже в приводимом конкретном примере дается гиперссыка на эту библиотеку.
Ниже представлен текст скрипта с именем bld-tcl, предназначенного для компиляции и получения исполнимой программы, которая может быть затем запущена в параллельном режиме на суперкомпьютере СКИФ.
#! /bin/sh
EXEDIR=.
EXE="<имя исполнимой программы>"
OBJ="<список имен объектных модулей>"
F77OPTS="-O2"
F77=mpif77
#
$F77 -c $F77OPTS <имя исходного фортранного модуля>
#
echo Linking executable $EXE
#
$F77 -o $EXEDIR/$EXE $OBJ \
-Wl,--start-group -lmkl_scalapack_lp64 -lmkl_blacs_lp64 -lmkl_intel_lp64 \
-lmkl_sequential -lmkl_core \
-Wl,--end-group \
-lpthread -libparalg.a
здесь:
В bld-tcl подключаются все пакеты из MKL-библиотеки, содержащие все вызываемые подпрограммы, используемые при работе описываемых параллельных подпрограмм Комплекса.
Полученная исполнимая программа может быть затем запущена на счет с помощью команды mpirun с параметрами (подробнее о запуске программ на СКИФе).
Например, в случае, если тестовый пример рассчитан на запуск на шести процессорах, команда запуска может выглядеть так:
mpirun -np 6 -maxtime 1 ./tcl_gesv.e
В тестах к подпрограммам, выдача исходных матриц и полученных результатов осуществляется с помощью обращения к подпрограмме PDLAPRNT, из пакета ScaLAPACK(TOOLS). Она распечатывает всю распределенную матрицу (вектор) полностью по столбцам по одному элементу в строке, получая элементы со всех, участвующих в вычислениях процессоров.
В случае обращения пользователей к подпрограммам Комплекса с помощью подпрограмм автоматизации конкретный вид скрипта показывает следующий пример (для решения системы уравнений с помощью подпрограммы Комплекса PDGESV1).
#! /bin/sh
EXEDIR=.
EXE="tcl_gesv.e"
OBJ="tcl_gesv.o cal_gesv.o pdgesv1.o pdlaprnt.o pdlaread.o pdlawrite.o"
#
F77OPTS="-O2"
F77=mpif77
#
$F77 -c $F77OPTS tcl_gesv.f
#
$F77 -o $EXEDIR/$EXE $OBJ \
-Wl,--start-group -lmkl_scalapack_lp64 -lmkl_blacs_lp64 -lmkl_intel_lp64 \
-lmkl_sequential -lmkl_core \
-Wl,--end-group \
-lpthread -libparalg.a
Чтобы не указывать все объектные модули подпрограмм Комплекса PARALG, которые необходимо вызвать для решения конкретной задачи, достаточно указать в последней строке скрипта объектную библиотеку Комплекса libparalg.a. Тогда строка с объектными модулями будет содержать только объектный модуль головной программы OBJ="tcl_gesv.o".
Здесь подпрограммы pdlaread.o и pdlawrite.o - входящие в Комплекс служебные подпрограммы для считывания из файла исходных матриц и распределения их по паралельным процессам и записи в файл полученного вектора решения.