• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

proger2030

Задание
Выполнить задачу распараллеливания алгоритма (на любом языке программирования.)
Дано 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. Ребята помогите. Всем заранее спс.
 
L

lazybiz

А под распараллеливанием ты что подразумеваешь? Умножение в несколько потоков?
 
L

lazybiz

Вот как создать 100 двухмерных и одномерных массивов с разными значениями ???
100 двумерных массивов, размером N строк и M столбцов типа int:
C++:
int A[100][N][M];
100 одномерных массивов, размером N элементов типа int:
C++:
int A[100][N];

Добавлено: Заполняй их как угодно.
 
R

rrrFer

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!