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

У цьому прикладі всі процеси ламають той самий пароль, і новий цикл (не реалізований у прикладі) не почнеться, поки не завершать роботу всі процеси. Отже, час одного циклу визначається часом роботи процесу з максимальним рангом (тобто виконуючого підбор найбільшої довжини => перебір найбільшого числа комбінацій).

Приклад 5 показує більш зроблену систему, що читає з необхідну інформацію з файлу, і роздає кожному процесу по паролі. Процеси працюють в асинхронному режимі, зв'язуючи з головним процесом, що відіграє роль «роздавального-прийомного центра», організовуючи систему дуже схожу на «клієнта-сервер».

Завдання 2: Після вивчення коду поясніть, чому це не є системою клієнт-сервер.

===== Example5.cpp =====

#include <mpi.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

//типи повідомлень

#define TAG_MSG 98 // службове повідомлення – зміст перемінної – код (див. нижче)

#define TAG_SEND_NAMELEN 97 // пересилається довжина рядка імені

#define TAG_SEND_PASSLEN 96 // пересилається довжина рядка пароля

#define TAG_SEND_NAME 95 // пересилається рядок імені

#define TAG_SEND_PASS 94 // пересилається рядок імені

#define MSG_FAILURE 0 // невдача при розшифровці

#define MSG_SUCCESS 1 // успіх при розшифровці

#define MSG_READY 2 // клієнт готовий до прийому наступного пароля

#define MSG_GO_ON 3 // сигнал клієнту продовжувати роботу

#define MSG_BREAK 5 // сигнал клієнту завершити роботу

int do_decrypt_pass(int param);

int main(int argc, char* argv[])

{

int x,result;

char in_line[256],acc_name[256],acc_pass[256],racc_name[256],racc_pass[256];

int myrank, size;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&size);

MPI_Comm_rank(MPI_COMM_WORLD,&myrank);

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