Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 8

Распараллеливание цикла

13.12.2018, 14:52. Показов 2379. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть цикл

C++
1
2
3
4
5
6
7
for (unsigned n = 0; n < threads; n++)
        {
            func (sigma, sub_noisy[n], sub_basic[n], sub_denoised[n],
                              w_table[n], h_table[n], chnls, nWien, kWien, NWien, pWien,
                              useSD_w, color_space, tau_2D_wien, &plan_2d_for_1[n],
                              &plan_2d_for_2[n], &plan_2d_inv[n]);
        }
как его распараллелить, желательно не используя openMP
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2018, 14:52
Ответы с готовыми решениями:

Распараллеливание цикла проверки
Всем здравствуйте! У меня есть метод, который проверяет элементы массива на обладание каким то свойством, но массив достаточно большой(~1...

Работа с OpenMP. Распараллеливание цикла for
Доброго времени суток товарищи. При работе с OpenMP возник следующий вопрос Почему код int i; int Mass={0}; ...

Распараллеливание цикла For с использованием OpenMP
Всем привет. Задался целью изучить OpenMP, что бы в дальнейшем уметь распараллеливать программы. Собственно, хочу распаралеллить цикл вот...

8
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
13.12.2018, 16:11
вообще не знаю, что под функцией func, но
C++
1
2
3
4
5
6
7
8
9
#include <future>
....
for (unsigned n = 0; n < threads; n++)
{
    std::async(std::launch::async, func, sigma, sub_noisy[n], sub_basic[n], sub_denoised[n],
        w_table[n], h_table[n], chnls, nWien, kWien, NWien, pWien,
        useSD_w, color_space, tau_2D_wien, &plan_2d_for_1[n],
        &plan_2d_for_2[n], &plan_2d_inv[n]);
}
Не проверял. Если что то серьезное, лучше использовать тред пул
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 8
13.12.2018, 19:39  [ТС]
пробовал сделать так, используя ppl
C++
1
2
3
4
5
6
7
8
     parallel_for (0,threads,[&sub_noisy,&sub_basic,& w_table,&h_table,&plan_2d_for_1,&plan_2d_for_2,&plan_2d_inv](unsigned n)                                           
        {
       bm3d_1st_step(sigma, sub_noisy[n], sub_basic[n], w_table[n],
                              h_table[n], chnls, nHard, kHard, NHard, pHard, useSD_h,
                              color_space, tau_2D_hard, &plan_2d_for_1[n],
                              &plan_2d_for_2[n], &plan_2d_inv[n]);
       
        });
ругается на
1>D:\исхoдники\bm3d.cpp(103): error C3493: "sigma" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(104): error C3493: "chnls" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(104): error C3493: "nHard" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(104): error C3493: "kHard" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(104): error C3493: "NHard" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(104): error C3493: "pHard" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(104): error C3493: "useSD_h" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(105): error C3493: "color_space" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
1>D:\исхoдники\bm3d.cpp(105): error C3493: "tau_2D_hard" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
может кто знает как исправить
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
13.12.2018, 21:17
Цитата Сообщение от Vadim551 Посмотреть сообщение
может кто знает как исправить
в лямбду this забыл передать.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 8
13.12.2018, 22:26  [ТС]
не совсем понял что нужно сделать

Добавлено через 15 минут
Цитата Сообщение от lArtl Посмотреть сообщение
в лямбду this забыл передать.
не совсем понял что нужно сделать
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
13.12.2018, 23:08
Цитата Сообщение от Vadim551 Посмотреть сообщение
не совсем понял что нужно сделать
C++
1
2
3
4
5
6
7
8
parallel_for (0,threads,[this,&sub_noisy,&sub_basic,& w_table,&h_table,&plan_2d_for_1,&plan_2d_for_2,&plan_2d_inv](unsigned n)                                           
        {
       bm3d_1st_step(sigma, sub_noisy[n], sub_basic[n], w_table[n],
                              h_table[n], chnls, nHard, kHard, NHard, pHard, useSD_h,
                              color_space, tau_2D_hard, &plan_2d_for_1[n],
                              &plan_2d_for_2[n], &plan_2d_inv[n]);
       
        });
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 8
13.12.2018, 23:41  [ТС]
1>D:\исхoдники\bm3d.cpp(101): error C3482: "this" может быть использован в качестве передаваемого параметра в лямбда-выражении только с нестатической функцией-членом

Добавлено через 3 минуты
Цитата Сообщение от lArtl Посмотреть сообщение
C++
1
2
3
4
5
6
7
parallel_for (0,threads,[this,&sub_noisy,&sub_basic,& w_table,&h_table,&plan_2d_for_1,&plan_2d_for_2,&plan_2d_inv](unsigned n) 
{
bm3d_1st_step(sigma, sub_noisy[n], sub_basic[n], w_table[n],
 h_table[n], chnls, nHard, kHard, NHard, pHard, useSD_h,
 color_space, tau_2D_hard, &plan_2d_for_1[n],
 &plan_2d_for_2[n], &plan_2d_inv[n]);
});
1>D:\исхoдники\bm3d.cpp(101): error C3482: "this" может быть использован в качестве передаваемого параметра в лямбда-выражении только с нестатической функцией-членом
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
14.12.2018, 02:44
Цитата Сообщение от Vadim551 Посмотреть сообщение
1>D:\исхoдники\bm3d.cpp(101): error C3482: "this" может быть использован в качестве передаваемого параметра в лямбда-выражении только с нестатической функцией-членом
тогда попробуй так

C++
1
2
3
4
5
6
7
8
parallel_for (0,threads,[&](unsigned n)                                           
        {
       bm3d_1st_step(sigma, sub_noisy[n], sub_basic[n], w_table[n],
                              h_table[n], chnls, nHard, kHard, NHard, pHard, useSD_h,
                              color_space, tau_2D_hard, &plan_2d_for_1[n],
                              &plan_2d_for_2[n], &plan_2d_inv[n]);
       
        });
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 8
14.12.2018, 07:33  [ТС]
Цитата Сообщение от lArtl Посмотреть сообщение
тогда попробуй так
так в самом начале пробовал
1>D:\исхoдники\bm3d.cpp(108): error C2661: run_bm3d::<lambda_b051773df5291d01ebf876 aa4193e98e>::<lambda_b051773df5291d01ebf 876aa4193e98e>: нет перегруженной функции, принимающей 16 аргументов
1>D:\исхoдники\bm3d.cpp(108): error C2780: void Concurrency:: parallel_for(_Index_type,_Index_type,con st _Function &,Concurrency::affinity_partitioner &): требует аргументов: 4, имеется: 3
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ppl.h(3562): см. объявление "Concurrency:: parallel_for"
1>D:\исхoдники\bm3d.cpp(108): error C2780: void Concurrency:: parallel_for(_Index_type,_Index_type,con st _Function &,const Concurrency::simple_partitioner &): требует аргументов: 4, имеется: 3
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ppl.h(3523): см. объявление "Concurrency:: parallel_for"
1>D:\исхoдники\bm3d.cpp(108): error C2780: void Concurrency:: parallel_for(_Index_type,_Index_type,con st _Function &,const Concurrency::static_partitioner &): требует аргументов: 4, имеется: 3
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ppl.h(3484): см. объявление "Concurrency:: parallel_for"
1>D:\исхoдники\bm3d.cpp(108): error C2780: void Concurrency:: parallel_for(_Index_type,_Index_type,_In dex_type,const _Function &): требует аргументов: 4, имеется: 3
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ppl.h(3406): см. объявление "Concurrency:: parallel_for"
1>D:\исхoдники\bm3d.cpp(108): error C2780: void Concurrency:: parallel_for(_Index_type,_Index_type,_In dex_type,const _Function &,_Partitioner &&): требует аргументов: 5, имеется: 3
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ppl.h(3370): см. объявление "Concurrency:: parallel_for"

C++
1
2
3
4
5
6
7
8
9
10
11
#pragma omp parallel shared(sub_noisy, sub_basic, sub_denoised,  w_table,h_table, plan_2d_for_1, plan_2d_for_2, plan_2d_inv)
        {
            #pragma omp for schedule(dynamic) nowait
            for (unsigned n = 0; n < nb_threads; n++)
            {
                bm3d_2nd_step(sigma, sub_noisy[n], sub_basic[n], sub_denoised[n],
                              w_table[n], h_table[n], chnls, nWien, kWien, NWien, pWien,
                              useSD_w, color_space, tau_2D_wien, &plan_2d_for_1[n],
                              &plan_2d_for_2[n], &plan_2d_inv[n]);
            }
         }
c openmp все просто, вот так работает, а с ppl не совсем понятно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2018, 07:33
Помогаю со студенческими работами здесь

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

Распараллеливание
Всем добрый вечер. Если кто знает подскажите,мне надо распараллелить перемножение матриц,преподаватель сказал,что это делается просто с...

Распараллеливание
Подскажите, что не так. Есть массив из 13 элементов, мне нужно разбить на три блока, один блок может быть неполный. При этом чтоб была...

Странное распараллеливание
Добрый вечер, коллеги. У меня следующая проблема. Преподаватель сказал распараллелить программу, обрабатывающую изображения в папке....

Распараллеливание циклов
Доброго времени суток. Возникла необходимость распараллелить один численный алгоритм средствами OpenMP. В частности в этом алгоритме...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru