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

MPI. Ошибка в выводимых данных. (Код присутствует) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить блок-схему к программе с матрицами http://www.cyberforum.ru/cpp-beginners/thread683834.html
помогите составить блок схему: #include<stdio.h> #include<math.h> #include<stdlib.h> void Process(double**, double*); void Process(double**A, double*B) {double s; int i, j, k; k = 0;
C++ Рекурсивная функция Вычислить элементы ряда с помощью рекурсивной функции. Порядок вычисления элементов ряда: a(1)=1, a(n)=5*(2n-1)n-a(n-1), n>0 подскажите пожалуйста как сделать, делала наброски но из этого ничего не вышло, как найти n-ый член ряда понимаю,а вычислить элементы ряда несовсем:( http://www.cyberforum.ru/cpp-beginners/thread683828.html
подскажите как поступить с делением и сложением, пожайлуста C++
как определить что число после деления получается целое? и как определить что сума чисел получается непарным числом?
C++ Вычислить значение выражения
Найти: y=min(a,b,c)/max(a,b,c).
C++ Переставить биты в обратном порядке для каждого байта http://www.cyberforum.ru/cpp-beginners/thread683796.html
Переставить биты в обратном порядке для каждого байта. Решите пожалуйста
C++ Подсчитать количество чисел массива, отличающихся от числа 3 не более чем на 0.5 Произвести следующую обработку 10 вещественных чисел: подсчитать количество чисел, отличающихся от числа 3 не более чем на 0.5, и сумму отрицательных чисел. подробнее

Показать сообщение отдельно
Байр
13 / 13 / 1
Регистрация: 09.12.2011
Сообщений: 64
31.10.2012, 17:03  [ТС]     MPI. Ошибка в выводимых данных. (Код присутствует)
Я нашел как исправить данную ошибку. Хотя, правильнее сказать, она сама как-то исправилась) Как это произошло, я не знаю.
Выкладываю результат уже готовый программы, но что я скажу, иногда в MPI может произойти ошиба, даже в логически правильном коде:
C
1
2
char Message1[]="High Voltage Rock'n'Roll!";
        /*MPI_Bsend(Message1, MesSize, MPI_CHAR, 0, MesTag, MPI_COMM_WORLD);*/
отличается от
C
1
2
/*char Message1[]="High Voltage Rock'n'Roll!";
        MPI_Bsend(Message1, MesSize, MPI_CHAR, 0, MesTag, MPI_COMM_WORLD);*/
Ну и сам код:
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>
#define ROOT 0
#define BUFFSIZE 10000
#define MesSize 25
 
int main(int argc, char **argv) 
{
    int myrank, nprocs, namelen, MesTag=0;
    char processor_name[MPI_MAX_PROCESSOR_NAME];    
    MPI_Status Status;
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &nprocs); 
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank); 
    MPI_Get_processor_name(processor_name,&namelen);
    MPI_Buffer_attach(malloc(BUFFSIZE), BUFFSIZE);
    if(myrank == 3)
    { 
        char Message1[]="High Voltage Rock'n'Roll!";
        MPI_Bsend(Message1, MesSize, MPI_CHAR, 0, MesTag, MPI_COMM_WORLD);
 
        float Message2 = 8.3;   
        MPI_Bsend(&Message2, MesSize, MPI_FLOAT, 0, MesTag+2, MPI_COMM_WORLD); 
        
        char Message3[]="Z";
        MPI_Bsend(Message3, MesSize, MPI_CHAR, 0, MesTag+3, MPI_COMM_WORLD);   
        
        int Message4;
        MPI_Recv(&Message4, MesSize, MPI_INT, 0, MesTag+1, MPI_COMM_WORLD, &Status);    
        printf("Procesor # %d : %d.\n", myrank, Message4);        
         
    }    
    if(myrank == 0)
    {
        int Message5 = 2;  
        MPI_Bsend(&Message5, MesSize, MPI_INT, 3, MesTag+1, MPI_COMM_WORLD); 
         
        char Message6[10];
        MPI_Recv(Message6, MesSize, MPI_CHAR, 3, MesTag, MPI_COMM_WORLD, &Status); 
        printf("Procesor # %d : %s.\n", myrank, Message6); 
        
        float Message7;    
        MPI_Recv(&Message7, MesSize, MPI_FLOAT, 3, MesTag+2, MPI_COMM_WORLD, &Status); 
        printf("Procesor # %d : %f.\n", myrank, Message7);
        
        char Message8[1];      
        MPI_Recv(Message8, MesSize, MPI_CHAR, 3, MesTag+3, MPI_COMM_WORLD, &Status); 
        printf("Procesor # %d : %s.\n", myrank, Message8);      
    }
    MPI_Finalize();     
    return 0;
}
 
Текущее время: 20:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru