0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 5
1

Как распараллелить цикл?

11.11.2020, 05:25. Показов 1306. Ответов 3

Author24 — интернет-сервис помощи студентам
Здравствуйте! Нужна помощь с OpenMP, не могу понять как распараллелить цикл.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void gammaCoding(fstream& input, string& gamma, fstream& result) {
   
    for (int i = 0, j = 0; i < ITARATION_COUNT; i++, j++) {
        if(j == gamma.length() - 1) j = 0;
        
        int Ti = input.get() - FIRST_SYMBOL;
        int Gi = gamma[j] - FIRST_SYMBOL;
 
        const char BUFF = FIRST_SYMBOL + (Ti + Gi) % SYMBOL_NUMBER;
        result << BUFF;
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2020, 05:25
Ответы с готовыми решениями:

Распараллелить цикл со сложной индексацией используя OpenMP
Пусть есть такой цикл, преобразующий массив: #define N 6 #define RADIUS 1 int arr; int...

Не удается распараллелить цикл через OpenMP в Fortran
Здравствуйте! Пытаюсь распараллелить цикл do в Фортране (Inteal Parallel Studio поверх MSVS) на 6...

Как распараллелить цикл
темя не создаётся Добавлено через 1 минуту Так вот:::::; Привет, к примеру, есть такой...

Как распараллелить цикл while?
Доброго времени суток. При распараллелировании применять технологии Openmp. Было бы здорово, если...

Как правильно распараллелить цикл?
Есть процедура в которой выполняется цикл. Хотелось бы его правильно распараллелить. Попытка...

3
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.11.2020, 09:30 2
Цитата Сообщение от Twentyss31 Посмотреть сообщение
Здравствуйте! Нужна помощь с OpenMP, не могу понять как распараллелить цикл.
Для начала убери из эттого цикла ввод/вывод - input.get() и result << BUFF, иначе нет никакого смысла его распараллеливать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void gammaCoding(fstream& input, const string& gamma, fstream& result) 
{
#pragma omp parallel for
    for (int i = 0; i < ITARATION_COUNT; i++) 
    {
#pragma omp critical
        {
            int Ti = input.get() - FIRST_SYMBOL;
            int Gi = gamma[i % gamma.size()] - FIRST_SYMBOL;
 
            const char BUFF = FIRST_SYMBOL + (Ti + Gi) % SYMBOL_NUMBER;
            result << BUFF;
        }
    }
}
1
0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 5
11.11.2020, 15:56  [ТС] 3
Вот в этом и проблема. Я не знаю где мне тогда брать большие входные данные, кроме как не из файла, чтобы увидеть ускорение.
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.11.2020, 19:46 4
Цитата Сообщение от Twentyss31 Посмотреть сообщение
Вот в этом и проблема. Я не знаю где мне тогда брать большие входные данные, кроме как не из файла, чтобы увидеть ускорение.
Из файла ты ускорение точно не увидишь, скорее увидишь замедление.
Надо брать данные из массива и сохранять результат тоже в массиве
0
11.11.2020, 19:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2020, 19:46
Помогаю со студенческими работами здесь

Как распараллелить цикл с помощью Parallel.For?
Подскажите, как данный цикл for (int i = 0; i &lt; round_segments; i++) ...

Подскажите как правильно распараллелить цикл
Есть цикл: for (int i = 8; i &lt; inputBytes.Length; i = i + 8) { ...

Многопоточное программирование: как распараллелить цикл?
Здравствуйте, господа. Возможно, я сейчас спрошу глупость, но тем не менее. В интернетах найти...

Как правильно с использованием MPI функций распараллелить простой цикл?
добрый вечер!подскажите пожалуйста,как правильно с использованием MPI функций распараллелить...

Распараллелить цикл
Распараллелить цикл: For(i=2;i&lt;N;i++) For(j=2;i&lt;N;j++) A =A +A; #include &lt;iostream&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru