// ======================== Сохранение результата ==============================
if (rank != 0) // Сохранение проводит нулевой комп
MPI_Send(x,rows,MPI_FLOAT,0,15,MPI_COMM_WORLD);
else
{
t_en = clock(); // Засекаем время
t_en = t_en - t_st;
fp = fopen("_x.txt","w"); // Открываем файл результата
fprintf(fp,"Time: %d.\n",t_en); // Пишем туда время
fprintf(fp,"%d\n",N); // и размерность
for (i = 0; i < rows; i++) // Сохраняем свои данные
fprintf(fp,"%f\n",x[i]);
for (rank_k = 1; rank_k < size; rank_k++)
{ // Принимаем данные от rank_k
rows_k = (int)(N/size); // и сохраняем
if (rank_k < N%size) rows_k++;
MPI_Recv(x,rows_k,MPI_FLOAT,rank_k,15,MPI_COMM_WORLD,&st);
for (i = 0; i < rows_k; i++)
fprintf(fp,"%f\n",x[i]);
}
fclose(fp); // Закрываем файл
}
free(x); // Чистим память
MPI_Finalize();
return 0; // Конец
}
//--------------------------------------------------------------------------4. Тестирование программы:
FPM (время в микросекундах) |
|||||
Случайные числа |
Обратный порядок |
||||
1 проц |
2 |
3 |
1 проц |
3 |
2 |
2 проц |
20 |
21 |
2 проц |
35 |
36 |
3 проц |
27 |
26 |
3 проц |
36 |
39 |
4 проц |
30 |
34 |
4 проц |
52 |
57 |
5 проц |
38 |
32 |
5 проц |
62 |
60 |
6 проц |
44 |
43 |
6 проц |
81 |
80 |
7 проц |
45 |
44 |
7 проц |
71 |
72 |
8 проц |
48 |
47 |
8 проц |
86 |
81 |
RM 600 (время в микросекундах) |
|||
Случайные числа |
Обратный порядок |
||
1 проц |
80000 |
1 проц |
80003 |
2 проц |
135343 |
2 проц |
180334 |
3 проц |
165403 |
3 проц |
213683 |
4 проц |
180345 |
4 проц |
250432 |
5 проц |
204324 |
5 проц |
299841 |
6 проц |
230982 |
6 проц |
340213 |
7 проц |
251954 |
7 проц |
351025 |
8 проц |
243108 |
8 проц |
350001 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.