Контрольная работа: Паралельні обчислення з використанням MPI

if (allok) x = MSG_GO_ON; else { x = MSG_BREAK; numclients--;}// якщо є рядок – «згодовуємо»

MPI_Ssend(&x, 1, MPI_INT, src, TAG_MSG, MPI_COMM_WORLD);// її клієнту. Інакше (файл

// закінчився) – гасимо клієнта.

if (allok)

{

acc_name_len = strlen(acc_name)+1, acc_pass_len = strlen(acc_pass)+1;

printf (">>> Feeding %s:: %s to proc %d\n",acc_name,acc_pass, src);fflush(stdout);

MPI_Ssend(&acc_name_len, 1, MPI_INT, src,TAG_SEND_NAMELEN, MPI_COMM_WORLD);

MPI_Ssend(&acc_pass_len, 1, MPI_INT, src,TAG_SEND_PASSLEN, MPI_COMM_WORLD);

MPI_Ssend(&acc_name, acc_name_len, MPI_CHAR, src, TAG_SEND_NAME, MPI_COMM_WORLD);

MPI_Ssend(&acc_pass, acc_pass_len, MPI_CHAR, src, TAG_SEND_PASS, MPI_COMM_WORLD);

}

break;

}

}

printf ("[%d] Process exits\n",myrank);fflush(stdout);

}

else

{

int acc_name_len, acc_pass_len;

while (1)

{

x = MSG_READY;

MPI_Ssend(&x, 1, MPI_INT, 0, TAG_MSG, MPI_COMM_WORLD);// Посилаємо сигнал готовності

printf("[%d] Waiting\n",myrank);fflush(stdout);

MPI_Recv(&x, 1, MPI_INT, 0, TAG_MSG, MPI_COMM_WORLD, &status);

if (x == MSG_BREAK) // Вирішуємо, що робити далі

{

printf("[%d] BREAK received \n",myrank);fflush(stdout);

К-во Просмотров: 419
Бесплатно скачать Контрольная работа: Паралельні обчислення з використанням MPI