Описываемый на настоящем сайте Комплекс подпрограмм для параллельных вычислений с распределенной памятью (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 - входящие в Комплекс служебные подпрограммы для считывания из файла исходных матриц и распределения их по паралельным процессам и записи в файл полученного вектора решения.