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

Прошу найти ошибку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ пом0гите исправить ошибки ребята http://www.cyberforum.ru/cpp-beginners/thread1054643.html
#include <stdafx.h> #include <iostream> #include <string> using namespace std; int i, j, n; struct STUDENT { string fio; int group;
C++ Чтение нескольких файлов Приветствую, уважаемые. Возникла небольшая проблемка, вот у меня есть некоторое количество файлов (чуть больше, чем до фига), и все их нужно прочитать, не подскажете как это сделать не пользуясь... http://www.cyberforum.ru/cpp-beginners/thread1054635.html
C++ потоковые классы
Ребят, помогите пожалуйста срочно. записать выходной файл, заменив каждое четное число по абсолютной величине на разность максимума и минимума с++
C++ Обработка матрицы
Конец сессии голова в кашу,а без этой задачи зачет не ставят. 1.Дана матрица T(n x m). Подучить массив S, состоящий из среднего арифметического положительных элементов каждого столбца....
C++ Поиск наиболее часто встречающегося слова http://www.cyberforum.ru/cpp-beginners/thread1054612.html
Ребят, поделитесь, пожалуйста, хоть каким-нибудь алгоритмом по сабжу. Дан файл. Произвести в файле поиск наиболее часто встречающегося слова.
C++ Блок-схема Добрый день! Помогите, пожалуйста, с блок-схемой :scratch: Дана матpица A. Определить количество "особых" элементов матрицы, считая элемент "особым", если в его строке слева от него находятся... подробнее

Показать сообщение отдельно
CepeJka
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 25

Прошу найти ошибку - C++

24.12.2013, 12:53. Просмотров 167. Ответов 0
Метки (Все метки)

Умножение матрицы на вектор с помощью MPI,Код программы работает только для нулевого процессора,на 1 процессоре он вылетает


#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <cstring>
#include "mpi.h"

const int N=100;
const int a=1;
const int b=9;

double *x, **z, *y, *buf;

int rank, size;
int m;
MPI_Status status;

int random(int min, int max){
return rand()%(max-min+1)+min;}

int main(int argc, char** argv){
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
m=N/size;
x = new double [N];
z = new double* [m];
y = new double [m];
buf= new double [m];
for(int i=0; i<m; i++){
z[i] = new double [N];}
if(rank==0){
for(int j=0; j<N; j++){
x[j]=random(a,b);
}
for(int p=1; p<size; p++){
MPI_Send(&x, N, MPI_DOUBLE, p, 2, MPI_COMM_WORLD);
}
for(int p=1; p<size; p++){
for(int i=0; i<m; i++){
//z[i] = new double [N];
for(int j=0; j<N; j++){
z[i][j]=random(a,b);
buf[i*N+j]=z[i][j];
}
}
MPI_Send(&buf, m*N, MPI_DOUBLE, p, 1, MPI_COMM_WORLD);
}
}

printf("1");
if(rank!=0){
printf("2.1");
MPI_Recv(&x, N, MPI_DOUBLE, 0,2, MPI_COMM_WORLD, &status);
MPI_Recv(&buf, m*N, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD, &status);
for(int i=0; i<m; i++){
//z[i] = new double [N];
for(int j=0; j<N; j++){
z[i][j]=random(a,b);
z[i][j]=buf[i*N+j];
}
}
printf("2.2");
}

printf("3");
for(int i=0; i<m; i++){
y[i]=0.0;
for(int j=0; j<N; j++){
y[i]+=z[i][j]*x[j];}
//printf("y[i]= %d\n", y[i]);
}

if(rank==0){
FILE* fp=fopen("result.txt", "w");
for(int p=1; p<size; p++){
MPI_Recv(&y[p*m], m, MPI_DOUBLE, p, 1, MPI_COMM_WORLD, &status);
}
for(int i=0; i<N; i++){
fprintf(fp, "y[%d]=%f\n", i, y[i]);
//fclose(fp);
}
fclose(fp);
}
else {MPI_Send(&buf, m, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD);
}

MPI_Finalize();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru