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

Распараллеливание - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Try..catch..Throw http://www.cyberforum.ru/cpp-beginners/thread330029.html
Объясните пожалуйста разницу. Желательно с примерами, например деление на ноль, ну или чтобы было сразу несколько исключений. Расскажите пожалуйста про библиотеку exception. Заранее спасибо
C++ Оформление программы Как довести до ума программу на с++? Оформить, поменять цвет, шрифт, подписать??? http://www.cyberforum.ru/cpp-beginners/thread330026.html
C++ Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; //Вложенный класс public: class diagonal;
C++ Создать класс время с данными-членами часы, минуты, секунды
отучилась на программиста уже год, но пока что как-то тяжко с заданиями, тем более с классами, не успели пройти их... помогите пожалуйста решить Создать класс время с данными-членами часы, минуты, секунды. Перегрузить операторы сложения, вычитания(подсчет количества секунд между временем), ввода и вывода. Создать функции-члены сложения времени с заданным количеством секунд, вычитания из времени...
C++ Как послать своё сообщение другому приложению? http://www.cyberforum.ru/cpp-beginners/thread330016.html
#define WM_MYMESSAGE 2000 void main() { HWND hWnd; hWnd = ::FindWindow(NULL,"MyApp"); ::SendMessage(hWnd,WM_MYMESSAGE,0,0); }
C++ Класс "Студент", реализовать динамический список "Группа студентов" реализовать динамический список " группа студентов". Узел: -группа -фамилия Функции списка: -добавление по алфавиту -удаление указанного -очистка списка -поиск студента -печать списка подробнее

Показать сообщение отдельно
sever1313
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 61
22.07.2011, 12:38  [ТС]     Распараллеливание
Я написала с вашей помощью программу,но теперь не могу понять она работает или нет,считает то правильно,а как узнать за какое время выполнятся программа если не распараллеливать и наоборот.Ставлю time но он почему то постоянно выводит 0.
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
 
#ifdef _DEBUG
#undef _DEBUG
#include <omp.h>
#define _DEBUG
#else
#include <omp.h>
#endif
 
using namespace std;
const int n=50;
const int k=50;
const int m=50;
int mas_3[k][m];
int umn_matr(int mas_1[n][k],int mas_2[k][m])
{
    omp_set_num_threads(omp_get_num_procs()); //устанавливаем количество потоков равным количеству доступных процессоров в системе
    #pragma omp parallel for shared(result, matrix_1, matrix_2) private(i, j, k) schedule(static, N / omp_get_num_threds()) 
    // устанавливаем перемножаемые и результирующую матрицу общими для всех потоков;
     //переменные i, j, k делаем частными, т.е. для каждого потока своя;
    //устанавливаем статическое планирование распределения итераций по потокам (делим общее число итераций на потоки),
    //каждый поток будет выполнять примерно одинаковое количество итераций
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            mas_3[i][j] = 0;
            for (int k = 0; k < n; k++)
            {
                mas_3[i][j] += mas_1[i][k] * mas_2[k][j];
            }
            printf(" %i ",mas_3[i][j]);
            
        }
        printf("\n");
    }
    return mas_3[k][m];
}
int main()
{   
    time_t start_time, stop_time;
    start_time=0;
    stop_time=0;
    
    int mas_1[n][k];
    int mas_2[k][m];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            mas_1[i][j]=rand()%3;
            mas_2[i][j]=rand()%3;
            printf(" %i",mas_1[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    time(&start_time);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf(" %i",mas_2[i][j]);
        }
        printf("\n");
    }
    time(&stop_time);
    printf("TIME   %d second\n", stop_time-start_time);
    umn_matr(mas_1,mas_2);
    
    getch();
}
 
Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru