Форум программистов, компьютерный форум, киберфорум
MPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
31 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 16
1

Программа с использованием MPI

24.10.2016, 22:44. Показов 2054. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Укажите пожалуйста на ошибку в коде.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "mpi.h" 
#include <stdlib.h>
#include <stdio.h>
#include <time.h> 
void ReadFromFile(int* src, int rows_, int columns_, char Name[]){
    FILE *fileToRead = fopen(Name, "rb");
    fread(src, sizeof(int), rows_*columns_, fileToRead);
    fclose(fileToRead);
}
int main (int argc, char* argv[])
{ 
    int rank; 
    MPI_Status st;  
    MPI_Init(&argc, &argv); 
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    if (rank == 0) 
{ 
        clock_t t1 = clock();
        int* vector = new int [10];
        char NameFile_V[] = "Vector.dat";
        FILE *fileToRead = fopen(NameFile_V, "rb");
        for (int j = 0; j < 10; j++)
{
            fread(&vector[j], sizeof(int), 1, fileToRead);
        };
        fclose(fileToRead);
        MPI_Send(vector, 10, MPI_INT, 1, 0, MPI_COMM_WORLD); 
        int* Matrix = new int[5*5];
        char NameFile_M[] = "Matrix.dat";
        ReadFromFile(Matrix, 5, 5, NameFile_M);
        for (int i = 0; i < 5; i++)
{
            for (int j = 0; j < 5; j++)
                printf(" %d ", Matrix[i*5+j]);
            printf("\n");
        };
        for (int j = 0; j < 25; j++)
            printf(" %d ", Matrix[j]);
        clock_t t2 = clock();
        double time = (double) (t2-t1) / (double)CLOCKS_PER_SEC;
        printf("Time of task is %f\n", time);   
        } 
    else { 
        int* vector1 = new int [10];
        MPI_Recv(vector1, 10, MPI_INT, 0, 0, MPI_COMM_WORLD, &st); 
        for (int i=0; i<10; i++){
            printf("Process %d received vector[ %d ] = %d \n", rank, i, vector1[i]);
        }
    }; 
        MPI_Finalize(); 
}
Миниатюры
Программа с использованием MPI  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2016, 22:44
Ответы с готовыми решениями:

Как написать программу с использованием mpi на многоядерном ПК (ubuntu)
Здравствуйте! При написании программы c помощью библиотеки mpi надо ли как-то настраивать...

Параллельная программа для метода холецкого с помощью openMp и mpi
Товарищи,помогите пожалуйста с параллельным программированием: надо написать параллельную...

Японский кроссворд с использованием MPI
Нужно создать японский кроссворд на C++, наподобие такого , только с использованием MPI команд,...

Перемножение матриц с использованием MPI
...доброго времени суток, уважаемые форумчане! Возник такой вопрос: по задаче исходную матрицу...

3
1241 / 960 / 379
Регистрация: 02.09.2012
Сообщений: 2,936
24.10.2016, 23:30 2
mpicc - это С-компилятор. В C нет оператора new.
Вам нужен C++-компилятор: mpicxx

Bash
1
mpicxx -o hello MV_for_stduents.c
Чтобы уж совсем по правилам, надо бы еще и расширение у файла сменить на .cpp (хотя и так откомпилируется)
1
31 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 16
24.10.2016, 23:50  [ТС] 3
Спасибо за разъяснение проблемы компилирования. При запуске выдаёт ошибку, не могли бы вы указать на ошибку и куда копать?
Миниатюры
Программа с использованием MPI  
0
1241 / 960 / 379
Регистрация: 02.09.2012
Сообщений: 2,936
25.10.2016, 02:17 4
Параллельную программу надо запускать "параллельно".
Пользователь перед запуском должен сам для себя определить и задать, какое количество MPI-процессов будет у него в программе.
Я в код особо не вчитывался, но вроде у вас только два процесса используется.
Для запуска параллельной программы используется mpirun
Надо написать

Bash
1
mpirun -np 2 ./hello
1
25.10.2016, 02:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2016, 02:17
Помогаю со студенческими работами здесь

Ленточное умножение матриц с использованием MPI
Помогите разобраться, почему в результирующей матрице С диагональные элементы считаются...

MPI программа
Подскажите пожалуйста как исправить ошибку.

Программа на Fortran + MPI
C использованием MPI необходимо написать любую несложную программку.

Падает параллельная программа на MPI
Добрый день. Написал программу поразрядной сортировки для целых чисел с четно-нечетным слиянием...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru