Параллельные вычисления в ИММ УрО РАН
|
|
Библиотеки параллельных программ, работающие на Альфа-станцияхНа Альфа-станциях (пока, к сожалению, не МВС-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); } |