0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 9
1

ОпенМП расспаралелить скалярное произведение двух n-мерных векторов (массивов)

21.03.2015, 22:55. Показов 1952. Ответов 8
Метки нет (Все метки)

Существует следующий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    setlocale(LC_ALL, "Russian");
    size_t n;
    cout << "Введите размерность пространства" << endl;
    cin >> n;
    vector<vector<int> > matrix(2, vector<int>(n));
    for (vector<vector<int> >::iterator i = matrix.begin(); i != matrix.end(); ++i)
    {
        cout << "Введите вектор" << endl;
        for (vector<int>::iterator j = i->begin(); j != i->end(); ++j)
            cin >> *j;
    }
    vector<int> vec;
    for (size_t i = 0; i < n; ++i)
        vec.push_back(matrix[0][i] * matrix[1][i]);
    cout << "Скалярное произведение " << accumulate(vec.begin(), vec.end(), 0) << endl;
 
    _getch();
Прошу его подробно прокоментировать,или подсказать другие возможные решения данной задачи.
И соответственно прошу помощи в распаралеливании
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2015, 22:55
Ответы с готовыми решениями:

Найти скалярное произведение двух n-мерных векторов
У меня вообще не понимаю. И ничего не получился! Задача СИ : Написать программу, которая находит...

Скалярное произведение двух векторов
Даны два вектора (одномерных массива), содержащих n вещественных элементов. Найти скалярное ...

Вычислить скалярное произведение двух векторов
7.6.1. Помогите, пожалуйста, решить задачу в С++. Вычислить скалярное произведение двух...

Вычислить модули и скалярное произведение двух векторов
Вычислить модули и скалярное произведение двух векторов a и b размерностью n=10.

8
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
21.03.2015, 23:16 2
N73dp, а это для учебы или вам надо в реальном проекте?
Я просто недавно смотрел на ютубе про алгоритм перемножения матриц, для очень-очень-очень больших матриц.
0
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 9
22.03.2015, 17:44  [ТС] 3
Это для учёбы,есть несколько примитивных задач,нужна помощь в понимании и реализации...
Я не прошу сделать за меня,просто накидайте пожалуйста примеров,желательно с подробными комментариями.

Добавлено через 1 час 39 минут
Помогите пожалуйста,ребятаа....
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
22.03.2015, 18:29 4
Чего тебе накидать?
0
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 9
22.03.2015, 20:08  [ТС] 5
Как распаралелить предположим мой код с помощью опен мп,распаралеливание других мат вычислений.
Если есть знания в области MPI, то интересует примитивная паралельная передача сообщений между N- количеством процессов, т.е. 0 передает 1,1-2,2-0, предположим так.
0
Evg
Эксперт CАвтор FAQ
21235 / 8248 / 636
Регистрация: 30.03.2009
Сообщений: 22,600
Записей в блоге: 30
22.03.2015, 20:11 6
https://www.cyberforum.ru/blog... g2965.html
0
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 9
22.03.2015, 23:48  [ТС] 7
По поводу MPI есть какие нибудь идеи?
Я прошу набросать код который вы возможно использовали и который легко использовать и понять.Примеры с комментариями

Добавлено через 1 час 57 минут
Консоль вылетает с ошибкой которую не успеваю прочесть,помогите пожалуйста.
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
int main(int argc, char *argv[])
{
    int myid, numprocs;
    int tag,source,destination,count;
    int buffer;
    MPI_Status status;
    MPI_Request request;
 
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    tag=1234;
    source=0;
    destination=1;
    count=1;
    request=MPI_REQUEST_NULL;
    if(myid == source){
      buffer=5678;
      MPI_Isend(&buffer,count,MPI_INT,destination,tag,MPI_COMM_WORLD,&request);
    }
    if(myid == destination){
        MPI_Irecv(&buffer,count,MPI_INT,source,tag,MPI_COMM_WORLD,&request);
    }
    MPI_Wait(&request,&status);
    if(myid == source){
      printf("processor %d  sent %d\n",myid,buffer);
    }
    if(myid == destination){
      printf("processor %d  got %d\n",myid,buffer);
    }
    MPI_Finalize();
 
 
}
0
Evg
Эксперт CАвтор FAQ
21235 / 8248 / 636
Регистрация: 30.03.2009
Сообщений: 22,600
Записей в блоге: 30
23.03.2015, 15:53 8
Цитата Сообщение от N73dp Посмотреть сообщение
По поводу MPI есть какие нибудь идеи?
Есть хорошая идея пойти, наконец, почитать матчасть, но, подозреваю, тебе такая идей не понравится. Других идей нет
0
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 9
24.03.2015, 02:56  [ТС] 9
Честно говоря никогда не понимал таких людей как вы...Вы думаете что я не умею пользоваться поиском или предоставленные ссылки открыли для меня что то новое?Нет...Я просил конкретные возможные примеры решения данных задач.

Добавлено через 4 минуты
К примеру код предоставленный мной выше,могли бы объяснить что с ним не так и как возможно реализовать данную задачу по другому.Я не ору на весь форум "Помогите,курсач горит!!!",просто нужен знающий человек,ссылки я и сам потыкать могу.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2015, 02:56
Помогаю со студенческими работами здесь

Выбрать пару векторов или массивов, которая даст минимальное скалярное произведение
Добрый день, подскажите пожалуйста как создать n векторов или массивов, если изначально не известно...

Найдите сумму, разность и скалярное произведение двух векторов
помогите пожалуйста с задачей Найдите сумму, разность и скалярное произведение двух векторов в...

Определите функцию, которая возвращает скалярное произведение двух векторов на плоскости
Ребят помогите пожалуйста. Определите функцию, которая возвращает скалярное произведение двух...

Скалярное произведение двух массивов
не могли бы подсказать, что в коде программы надо дописать, вышло только просто произведение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru