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

Распараллеливание потоков для нахождения суммы матрицы <omp.h> - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти координаты числа в бесконечной спирали из чисел http://www.cyberforum.ru/cpp-beginners/thread990640.html
Дана бесконечная во все стороны спираль из чисел, в центре которой - единица, нужно найти координаты числа по самому числу. (Прикрепил) В общем-то идея только одна, строить спираль в массиве Знаю, что должна быть формула.
C++ Написать программу, организующую заполнение целого массива из n элементов случайными значениями Написать программу, организующую заполнение целого массива из n элементов случайными значениями (n – целая переменная) и корректный вывод массива. http://www.cyberforum.ru/cpp-beginners/thread990633.html
Компрессия данных C++
Я хочу написать программу (что-то наподобие FreeARC) которая хорошо сжимает данные. Помогите мне подобрать алгоритмы компрессии для текстовой информации и картинок (всех типов), самое главное чтобы после обработки данные имели минимально возможный размер и по возможности бистро розархивировались. Также буду благодарен за предоставление исходных кодов этих (компрессорных) алгоритмов и их...
Определить численную характеристику массива C++
– Создать масив заданым способом; – определить численную характеристику; – сформировать новый масив на основе созданого Объясните суть работы! Раньше не изучал программирование, поэтому ничего не могу понять! Что нужно сделать? напишите тезисно
C++ Ошибка при вводе двумерного массива http://www.cyberforum.ru/cpp-beginners/thread990613.html
Здравствуйте! Нужно: 1. Написать программу с использованием двумерного массива для сохраниния данных о месячных продажах книжек (количество книжек, не деньги) за 3 года. 2. Требуется выдать общую сумму (к-во книжек) продаж за каждый год и за все годы вместе. Последнего я не сделал да и программа выдает ошибку под конец ввода. Вот сама программа #include <iostream>
C++ Создать рекурсивную функцию Водится любое целое число b и вещественныеa, c. Вычислить z=ab +cb, используя рекурсивную функцию xn1, если n = 0 xn= 1/ xn , если n< 0 xxn-1 , если n> 0 Как написать прогу на С++ по этой задаче? подробнее

Показать сообщение отдельно
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
28.10.2013, 17:27     Распараллеливание потоков для нахождения суммы матрицы <omp.h>
Доброго дня. Сегодня слушал занимательную лекцию об распараллеливание потоков и получил задание: есть матрица 10,10 инициализированная рандомными числами -> сделать параллельные потоки для нахождения сумы.
Пробовал так:
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
#include "stdafx.h"
#include <iostream>
#include <omp.h>
#include <stdlib.h>
 
using namespace std;
 
int main()
{   
    int i,j, thread1,thread2,sum = 0;
    int mas[10][10];
    double start_time, end_time, time;
 
    for (i = 0; i<10; i++)
        for (j = 0; j<10; j++)
            mas[i][j] = rand() % 10;    
    for (i = 0; i<10; i++)
    {
        for (j = 0; j<10; j++)
            cout<<mas[i][j]<<" ";
        cout<<"\n";
    }
    i = 0; j = 0;
    omp_set_num_threads(4);
    start_time = omp_get_wtime();
#pragma omp parallel
    {
        #pragma omp for schedule(static,2);
        
        for (i = 0; i<10; i++)
        {
                thread1 = omp_get_thread_num();
                if (i==j) sum+=mas[i][j];
                cout<<"\ni : "<<i<<" thread1 : "<<thread1;
        }
 
        for (j = 0; j<10; j++)
        {
                if (i==j) sum+=mas[i][j];
                thread2 = omp_get_thread_num();
                cout<<"\nj : "<<j<<" thread2 : "<<thread2;
        }
        
 
    }
    end_time = omp_get_wtime();
    time = end_time - start_time;
    cout<<"\nsum : "<<sum<<"\n";
    cout<<"time : "<<time<<"\n";
    system("pause");
    return 0;
}
Но видимо чего то не понял и не правильно сделал, как переделать тело #pragma omp parallel? По началу я думал, что после исполнения первой итерации в первом цикле, включится второй поток во втором и так по очереди, но не тут то было. Благодарю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru