Умножение Матриц На Вектор

  • Автор темы proger2030
  • Дата начала
P

proger2030

Гость
#1
Задание
Выполнить задачу распараллеливания алгоритма (на любом языке программирования.)
Дано 100 матриц и 100 векторов, умножение каждой матрицы на каждый вектор.
Пока решил так:
C++:
#include <iostream>
#include <stdlib.h> 
#include <conio.h> 
#include <stdio.h> 
#include <time.h>


int main() 
{
const int straka = 2;
const int stolbes = 2;	
const int kordinat = 2;
char AnswerForM;
char AnswerForV;
int MasA[straka][stolbes];
int VectorB[straka];
int Solution[straka];


srand(time(NULL));

for(int i = 0; i < straka; i++)
{
for(int j = 0; j < stolbes; j++)
{
MasA[i][j] = rand()%100 + 1;
}

}


//Иницализация векторов

for(int i = 0; i < straka; i++) {VectorB[i] = rand()%50 + 1;}

//Вывод матриц

std::cout << "Pokazat ishodnoi matrisu? (najmite y ili Y): ";
std::cin >> AnswerForM;

if(AnswerForM == 'y' || AnswerForM == 'Y')
{
std::cout << "Ishodnoi matrix: \n";

for(int i = 0; i < straka; i++)
{
for(int j = 0; j < stolbes; j++)
{
std::cout << MasA[i][j] << ' ';
}

std::cout << std::endl;
}

}

std::cout << "Pokazat kordinaty vectorov?: ";
std::cin >> AnswerForV;

if( AnswerForV == 'y' || AnswerForV == 'Y')
{
for(int i = 0; i < straka; i++)
{
std::cout << VectorB[i] << ' ';
}

std::cout << "Vector: "<< KolMas << "\)" << std::endl;
std::cout << std::endl;
}

//Расчеты. Умнажаем матрицу на вектор

for(int j = 0; j < straka; j++)
{
Solution[j] = 0;
for(int i = 0; i < stolbes; i++)
Solution[j] += MasA[j][i]*VectorB[i];
}

//Вывод решения
for(int i = 0; i < straka; i++)
std::cout << i << ' ' << Solution[i] << std::endl;

return 0;
Да тут последовательно но... Хотя бы это)
У меня тут только умножает матрицу на вектор. А по заданию мне надо их по 100. Ребята помогите. Всем заранее спс.
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#2
А под распараллеливанием ты что подразумеваешь? Умножение в несколько потоков?
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#4
Вот как создать 100 двухмерных и одномерных массивов с разными значениями ???
100 двумерных массивов, размером N строк и M столбцов типа int:
C++:
int A[100][N][M];
100 одномерных массивов, размером N элементов типа int:
C++:
int A[100][N];
Добавлено: Заполняй их как угодно.
 
R

rrrFer

Гость
#5
погугли ОРС(Открытая Распараллеливающая Система), например.
(ну это автоматическое распараллеливание, результат не очень, но зато максимально просто и быстро xD )