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

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

Войти
Регистрация
Восстановить пароль
 
SVO
Сообщений: n/a
#1

Open MP и Несколько потоков - C++

27.02.2012, 19:55. Просмотров 482. Ответов 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
#include "stdafx.h"
#include "omp.h"
#include "time.h"
 
#define N 10
 
 
int main()
{
  clock_t time;
  float a[N], b[N], c[N];
  int i, Threads;
  omp_set_dynamic(0);      // запретить библиотеке openmp менять число потоков во время исполнения
  omp_set_num_threads(2); // установить число потоков в 10
 
  // инициализируем массивы
  for (i = 0; i < N; i++)
  {
      a[i] = i * 1.0;
      b[i] = i * 2.0;
  }
 
  // вычисляем сумму массивов
  /* Создание множества параллельных процессов */
#pragma omp parallel shared(a, b, c) private(i)
        Threads = omp_get_num_threads();
        #pragma omp for nowait
        for (i = 0; i < N/2; i++)
        {
        time = clock();
        c[i] = a[i] + b[i];
        printf("Threads = %d i= %d c[i]= %f\n", Threads, i, c[i]);
        time = clock() - time;
        printf("Time = %f\n", (double)time/CLOCKS_PER_SEC); //время выполнения
        }
        Threads = omp_get_num_threads();
        #pragma omp for
        for (i = N/2; i < N; i++)
        {
        time = clock();
        c[i] = a[i] + b[i];
        printf("Threads = %d i= %d c[i]= %f\n", Threads, i, c[i]);
        time = clock() - time;
        printf("Time = %f\n", (double)time/CLOCKS_PER_SEC); //время выполнения
        }
  return 0;
}
Сейчас реализовано разбитие на 2 потока с помощью #pragma omp for
Где потом с помощью Threads мы отслеживаем какое действие в каком потоке было выполнено...

Нужна помощь в следующем:
Нужно чтобы разбивалось на большее количество потоков (при этом чтобы количество потоков устанавливалось пользователем), при этом так же нужно чтобы все отслеживалось с помощью Threads.

Если кто то сталкивался подскажите.
За любые идеи тоже буду благодарен.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2012, 19:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Open MP и Несколько потоков (C++):

Обработать матрицу в несколько потоков - C++
Всем времени Собсно есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;ctime&gt; #include &lt;thread&gt; ...

Обработка данных в несколько потоков - C++
Подскажите. Возможно ли на языке С++ обрабатывать какие либо данные в несколько потоков одновременно? В качестве примера допустим запуск...

Несколько потоков - нужен пример программы - C++
приведите, пожалста, небольшой кодик программы , если не сложно, в которой, допустим, в одном потоке выводится что то каждые пол секунды, а...

Несколько потоков - в 98 работает, в 2000 - нет! - C++
В проге создаётся несколько потоков для каждого из которых отображается файл в память (с хендлом FFFFFFF, те выделяю память), после чего...

Thread разбить программу в несколько потоков - C++
Всем привет! Народ, такая проблема, написала программу, теперь нужно её разбить на несколько потоков. Но вот беда, не умею пользоваться...

Как связать несколько output потоков? - C++
Можно ли создать поток, который будет связан с несколькими потоками, что-бы при записи в него производиласт запись и во все связаные...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2012, 19:55
Привет! Вот еще темы с ответами:

Создать несколько потоков и произвести в них вычисления - C++
Народ помогите создать программу которая создает несколько потоков и производит в них вычисления. Количество потоков должно задаваться при...

Сортировка массива методом пузырька в несколько потоков - C++
Как ето зделать . Программа может работать и не всегда корректно, мне главное чтобы посмотреть как это происходит ...

Необходимо найти максимальный элемент матрицы, используя несколько потоков - C++
Добрый день программисты, необходимо выполнить поиск наименьшего элемента матрицы используя количество потоков равное количеству строк...

Перемножить две матрицы, причем запустить подсчет в несколько потоков - C++
Всем привет. Суть задания перемножить две матрицы, причем запустить подсчет в несколько потоков, в разное кол-во, сравнить время выполнения...


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

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

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