
 
25
   fprintf(fd,"%d ",array[i][j]); 
 fprintf(fd,"\n"); 
    } 
    fclose(fd); 
} 
 
Файл slave.c 
#include "shared.h" 
 
int main(int argc, char *argv[]) 
{ 
    int myrank; 
    MPI_Init(&argc,&argv); 
    MPI_Comm_rank(MPI_COMM_WORLD,&myrank); 
    printf("Slave rank %d started.\n",myrank); 
 
    MPI_Status status; 
    int master; 
    int tmp_begin; 
    int tmp_end; 
    //получаем данные 
    
MPI_Recv(&tmp_begin,1,MPI_INT,MPI_ANY_SOURCE,0,MPI_COMM_WORLD,&status); 
    master = status.MPI_SOURCE; 
    printf("Slave rank %d has found master rank %d.\n",myrank,master); 
    MPI_Recv(&tmp_end,1,MPI_INT,master,1,MPI_COMM_WORLD,&status); 
    int tmp_size = (tmp_end-tmp_begin)*SIZE*sizeof(int); 
    int * tmp_arr = malloc(tmp_size); 
    MPI_Recv(tmp_arr,tmp_size,MPI_INT,master,2,MPI_COMM_WORLD,&status); 
    printf("Slave rank %d has received data from master.\n",myrank); 
    //////////////////////// 
    //делаем с ними НИЧЕГО// 
    //////////////////////// 
    //посылаем обратно 
    MPI_Send(&tmp_begin,1,MPI_INT,master,0,MPI_COMM_WORLD); 
    MPI_Send(&tmp_end,1,MPI_INT,master,1,MPI_COMM_WORLD); 
    MPI_Send(tmp_arr,tmp_size/sizeof(int),MPI_INT,master,2,MPI_COMM_WORLD); 
    printf("Slave rank %d has sent data to master and ended.\n",myrank); 
    free(tmp_arr); 
    MPI_Finalize(); 
    return 0; 
} 
 
Задание №3. Написать реализацию набора конфигурационных параметров  для многих 
одновременно  работающих  экземпляров  программы.  Набор  параметров  задается  некоторой 
структурой  данных  и  хранится  в  разделяемой  памяти.  Блок  разделяемой  памяти  создается 
при  запуске  первого  экземпляра  программы  и  заполняется  из  файла.  Перед  окончанием 
работы  последнего  экземпляра  набор  параметров  сохраняется  в  файл,  а  блок  разделяемой 
памяти  удаляется.  Программа  должна  обеспечивать  основные  функции  работы  с  набором 
параметров (прочитать  и  изменить  элемент),  причем  в  случае  изменения  данных  одним  из 
экземпляров, он оповещает все остальные экземпляры с помощью сигнала. 
Алгоритм 
Первый  из  запущенных  процессов  считывает  из  файла input.txt параметры – числа 
epsilon,  n, x. Epsilon – требуемая точность, n – степень,  x – начальное значение. Программа