Параллельные вычисления в ИММ УрО РАН
 
 

Библиотеки параллельных программ, работающие на Альфа-станциях

На Альфа-станциях (пока, к сожалению, не МВС-1000) доступны библиотеки семейства ScaLAPACK, позволяющие пользоваться готовыми распараллеленными численными методами линейной алгебры. Обращение к ним вставлено в стандартные запускалки трансляторов mpif77 и mpicc, так что в командной строке ничего специально писать не нужно.

Локальная копия подробной документации о ScaLAPACK находится на этом же сервере. Для начала можно попытаться собрать и запустить пример, входящий в упомянутое руководства. Вообще же всякого рода тестов и примеров ОЧЕНЬ много.

По понятным причинам, все примеры в документации приведены на Фортране. Библиотека, конечно же, может быть вызвана и из C. Один из способов сделать это – собирать программу с помощью mpif77, при этом main должна быть заменена на void MAIN__(void). Например, следующая программа печатает свое положение в сетке, после чего завершается.

#include <stdio.h>

void sl_init_(int *, int *, int *);
void blacs_gridinfo_(int *, int *, int *, int *myrow, int *mycol);
void blacs_exit_(int *);

void MAIN__(void)
{
    int ictxt, np_row=2, np_cal=3, myrow, mycol, ex=0;
          
    sl_init_(&ictxt, &np_row, &np_cal);
    blacs_gridinfo_(&ictxt, &np_row, &np_cal, &myrow, &mycol);
    printf("%d x %d\n", myrow, mycol);
    blacs_exit_(&ex);
    exit(0);
}