|
6 / 6 / 0
Регистрация: 27.11.2016
Сообщений: 80
|
|||||||||||
Многопоточное программирование: как распараллелить цикл?12.05.2019, 19:06. Показов 10849. Ответов 45
Здравствуйте, господа. Возможно, я сейчас спрошу глупость, но тем не менее. В интернетах найти ответа не смог.
Допустим, у меня есть цикл do-while, в котором у меня выполняются операции - функции - с большуууууущим вектором, таких функций несколько, причем эти функции принципиально последовательны, результат работы предыдущей функции влияет на выполнение последующей. Но в пределах одной функции, которая работает с вектором поэлементно вполне возможно реализовать параллельные вычисления для ускорения процесса. Вопрос! А как это сделать правильно? В каждой функции есть range-based цикл, который перебирает элементы вектора. Мне пришел в голову (тупой) вариант - просто распилить вектор, допустим, на 4 части и работать с каждой из частей, получилось примерно следующее:
Но я могу засунуть выполнение, допустим, f1(V_1..4) в разные потоки и выполнять это дело параллельно. Мой очень фиговый вариант:
потоков, и в результате вместо выигрыша в скорости от параллельных вычислений я получаю проигрыш в этой самой скорости по сравнению даже со случаем тупого последовательного счета. Я бы хотел (хотел бы я, ага...), чтобы у меня где-то в мэйне открывалось три потока, в которые я бы по мере необходимости закидывал выполнение нужных функций. Но с библиотекой thread такого добиться не получается. Находил в интернетах информацию, что можно использовать библиотеку pthread.h, но я так понял, что она типа устаревшая, я ее в моей VS-2017 даже подключить не могу. Как быть? Заранее благодарю за уделенное внимание)
0
|
|||||||||||
| 12.05.2019, 19:06 | |
|
Ответы с готовыми решениями:
45
Как распараллелить цикл while? Распараллелить цикл Многопоточное программирование |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 23.05.2019, 15:36 | ||
|
0
|
||
|
6 / 6 / 0
Регистрация: 27.11.2016
Сообщений: 80
|
||
| 23.05.2019, 15:55 [ТС] | ||
А это проблема, что изменяются несколько переменных? Они ещё и к разным ячейкам mesh могут относиться
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 23.05.2019, 16:03 | |||
|
Добавлено через 37 секунд Добавлено через 3 минуты В общем, скорее всего в классе Spher_1D_Area тебе понадобится мьютекс
0
|
|||
|
6 / 6 / 0
Регистрация: 27.11.2016
Сообщений: 80
|
||||||||
| 23.05.2019, 16:08 [ТС] | ||||||||
Добавлено через 2 минуты
0
|
||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 23.05.2019, 16:24 | ||
|
Пусть выполняют свои расчёты, сохраняют у себя промежуточные результаты, а когда закончат - пробегаешься по этим результатам (их очень мало ~кол-во процессоров) и делаешь окончательные расчёты - суммируешь и всё такое, тоже без блокировок.
0
|
||
|
6 / 6 / 0
Регистрация: 27.11.2016
Сообщений: 80
|
|||
| 24.05.2019, 08:50 [ТС] | |||
|
То есть проблема с несовпадением контрольной суммы и длинами векторов решилась, теперь все работает четко. Но мееееееедленно.... Даже в однопоточном режиме быстрее.. Добавлено через 3 минуты В любом случае, oleg-m1973, спасибо огромное за помощь, за время обсуждения моего проекта я реально многому научился) буду продолжать работать Добавлено через 3 минуты Termit779, спасибо за книгу, очень пригодилась при разбирательствах)
1
|
|||
| 24.05.2019, 08:50 | |
|
многопоточное программирование на с++ Многопоточное программирование Многопоточное программирование Многопоточное программирование Не получается распараллелить цикл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|