Форум программистов, компьютерный форум 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
29.10.2012, 22:40     MPI. Ошибка в выводимых данных. (Код присутствует)
Доброе время суток.
Программа должна пересылать данные от 3 процесса к 0, и от 0 к 3. Необхожимо использовать в работе функции передачи не вызывающие "тупиковые ситуации". Я выбрал MPI_Bsend(...) -пересылка с буферизацией. Поначалу я сделал с разделением на блоки, и программа выдавала "почти" правильный результат:
Procesor # 0 : High Voltage Rock'n'Roll!‰. //пара лишних символов
Procesor # 0 : 8.300000.
Procesor # 0 : Z.
Procesor # 3 : 2.
Как можно это исправить?

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
52
53
#include <mpi.h>
#define ROOT 0
#define BUFFSIZE 10000
#define MesSize 25
 
int main(int argc, char **argv) 
{
    int myrank, nprocs, namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];    
    int MesTag=0;
    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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru