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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Лилиана1992
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 10
#1

Расспаралеллеливание - найти минимальную сумму элементов по строкам - C++

17.04.2013, 17:54. Просмотров 436. Ответов 8
Метки нет (Все метки)

Дан двумерный массив. Найти минимальную сумму элементов по строкам. Последовательно я решила ,а как решить решить параллелельно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 17:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расспаралеллеливание - найти минимальную сумму элементов по строкам (C++):

Дан двумерный массив.посчитать сумму элементов в кажой строке. найти максимальную и минимальную сумму и помень эти строки местами. - C++
Дан двумерный массив.посчитать сумму элементов в кажой строке. найти максимальную и минимальную сумму и помень эти строки местами. Я...

Найти минимальную сумму положительных элементов диагоналей, параллельных побочной диагонали - C++
Помогите решить. 1. построить упорядоченный массив a из элементов массива b и c. Массивы b и c предварительно упорядочены по возрастанию....

Найти сумму элементов квадратной матрицы по строкам и вывести на экран - C++
найти сумму элементов квадратной матрицы по строкам и вывести на экран

Найти минимальную сумму - C++
задача: у компании есть m поставщиков молока. известно,что каждый i - ый поставщик может продать ровно a литров по цене p за литр. за...

Найти x и y и минимальную сумму x и y - C++
дано k чисел T(0) T(1)..T(k) найти x и y, где 1<=x<y<=k, и минимальную сумму x и y T(x)..T(y)

Найти двухмерный динамический массив и найти его минимальную сумму по столбцам - C++
Как найти двухмерный динамический массив и найти его минимальную сумму по столбцам?

8
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,095
17.04.2013, 18:12 #2
В условии оговорено какими средствами распараллеливать?
0
Лилиана1992
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 10
17.04.2013, 18:13  [ТС] #3
нет
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,095
17.04.2013, 18:13 #4
Общая идея: разбить данные на равные порции, для каждой выполнить вычисления в отдельном потоке/процессе (сумма, поиск минимума), затем собрать все минимумы в один поток и найти среди них минимальный элемент.
1
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.04.2013, 18:20 #5
Для полного распраллеливания нужно много ядер/процесоров, а лучше параллелный процессор. На первом шаге цикла параллельно считаешь попарные суммы чётных элементов с нечётными, на каждом следующем попарные суммы чётных и нечётных сумм предыдущего шага и за 40 шагов получаешь суммы в строках до 1 099 511 627 776 элементов штука. Потом второй цикл, на первом его шаге выбираешь минимумы в каждой паре строк, а на каждом следующем в каждой паре минимумов предыдущего шага. За те же 40 шагов получишь минимум по 1 099 511 627 776 строкам и того за 80 шагов обработаешь матрицу 1 099 511 627 776x1 099 511 627 776 элементов. Всё, что можно сделать на обычном 12-ти ядернике - это только простой параллелизм с делением матрицы на фрагменты, обрабатываемые последовательно, а в начале поста описан массированный.
1
Лилиана1992
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 10
17.04.2013, 18:21  [ТС] #6
ды мне самое простое надо. чтоб просто сравнить время выполнения параллельной программы и последовательной.
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.04.2013, 18:26 #7
Так время и различается. Простой параллелизм раз 12 и ускорит даже на маке, а то и в 11, а массиврованный на 80 шагов примерно в 15 111 572 745 182 900 000 000 раз. И при простом параллелизме коэффициент определяется количеством ядер, а при массированном - обрабатываемых данных. И с размерностью задачи растёт очень быстро.
0
Лилиана1992
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 10
17.04.2013, 18:33  [ТС] #8
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
53
54
55
56
57
58
59
60
61
62
63
#include "stdafx.h"
#include "iostream"
#include <conio.h>
#include <stdlib.h>
#include <omp.h>
#include <time.h>
using namespace std;
int **mas,a,b,i,j,sum,min,num1;
 
int main()
    {srand(time(NULL));
     double start_time,end_time,time;
        setlocale(LC_ALL,"");
    int k,l,min;
    k=0;l=0;
    cout<<"Введите размер маcссива a x b:"<<endl<<"a = ";
    cin>>a;
    cout<<endl<<"b = ";
    cin>>b;
    cout<<endl;
    
    mas=new int *[a];
    
    start_time = omp_get_wtime();
    #pragma omp parallel private(i)
    for (int i=0;i<a;i++)
        *(mas+i)= new int [b];
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
        mas[i][j]=rand()%10;
            cout<<mas[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0;i<a;i++)
    {
        int sum=0;
        for(int j=0;j<b;j++)
        {
            sum=sum+mas[i][j];
        }
               
        if(i==0){ min=sum; num1=i;}
 
        else if(min>sum) {min=sum; num1=i;}
    }
    cout<<"Номер строки с минимальной суммой "<<num1<<endl;
    cout<<endl;
    cout<<"Минимальная сумма "<<min<<endl;
    cout<<endl;
 
    end_time = omp_get_wtime();
 
cout<<endl<<endl;
time=end_time-start_time;
 
cout <<"Time= "<<time;
    return 0; 
 
}

вот это не правильно?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.04.2013, 18:52 #9
Это последовательно.
0
17.04.2013, 18:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 18:52
Привет! Вот еще темы с ответами:

Определить, какой столбец массива имеет минимальную сумму элементов - C++
Дан двумерный массив из 5 строк и 6 столбцов. Определить, какой столбец массива имеет минимальную сумму элементов (считать, что столбцов с...

Вычислить сумму элементов матрицы по строкам - C++
4.Данный целочисленный массив В. Вычислить сумму элементов этого массива по строкам.

Найти минимальную сумму в матрице по условию. Написать комментарий - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #define N 3 int main() { int A; int i, j, z, sum,...

Упорядочить строки матрицы, найти минимальную сумму строк - C++
Нужна помощь: 1. Дана вещественная матрица размером 4х8. Упорядочить ее строки по неубыванию сумм их элементов. 2. Дана матрица...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru