Форум программистов, компьютерный форум CyberForum.ru

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
dofddd
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 11
#1

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

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

Укажите пожалуйста на ошибку в коде.

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  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2016, 22:44     Программа с использованием MPI
Посмотрите здесь:

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

Сборка программы с MPI - C++ Linux
Никак не могу собрать простейшую программу с MPI типа Hello world. Компиляция проходит вроде успешно. Но на стадии линковки вылезает куча...

Неблокирующий обмен MPI - C++ Linux
Не могу разобраться с неблокирующим вызовом. это функции MPI_Irecv и MPI_Isend. #include &lt;stdio.h&gt; #include &lt;mpi.h&gt; #include...

Компиляция и запуск программ из mpi - C++ Linux
Не запускается простая mpi-программа sergiy@linux-kczo:~/lab/mpi&gt; mpicc a.c sergiy@linux-kczo:~/lab/mpi&gt; mpirun ./a.out mpiexec...

MPI. Разбиение процессов на группы - C++ Linux
написал код #include &lt;stdio.h&gt; #include &lt;mpi.h&gt; #include &lt;omp.h&gt; #include &lt;iostream&gt; using namespace std; int main (int...

Параллельный алгоритм столбцово-ориентированный метод гаусса. MPI - C++ Linux
Пока писал алгоритм, долго мучался инфы по столбцовому алгоритму нигде нет. В итоге написал сам, преподаватель проверил и зачел. Код...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grgdvo
544 / 480 / 138
Регистрация: 02.09.2012
Сообщений: 1,412
24.10.2016, 23:30     Программа с использованием MPI #2
mpicc - это С-компилятор. В C нет оператора new.
Вам нужен C++-компилятор: mpicxx

Bash
1
mpicxx -o hello MV_for_stduents.c
Чтобы уж совсем по правилам, надо бы еще и расширение у файла сменить на .cpp (хотя и так откомпилируется)
dofddd
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 11
24.10.2016, 23:50  [ТС]     Программа с использованием MPI #3
Спасибо за разъяснение проблемы компилирования. При запуске выдаёт ошибку, не могли бы вы указать на ошибку и куда копать?
Миниатюры
Программа с использованием MPI  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2016, 02:17     Программа с использованием MPI
Еще ссылки по теме:

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

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


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

Или воспользуйтесь поиском по форуму:
grgdvo
544 / 480 / 138
Регистрация: 02.09.2012
Сообщений: 1,412
25.10.2016, 02:17     Программа с использованием MPI #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Параллельную программу надо запускать "параллельно".
Пользователь перед запуском должен сам для себя определить и задать, какое количество MPI-процессов будет у него в программе.
Я в код особо не вчитывался, но вроде у вас только два процесса используется.
Для запуска параллельной программы используется mpirun
Надо написать

Bash
1
mpirun -np 2 ./hello
Yandex
Объявления
25.10.2016, 02:17     Программа с использованием MPI
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru