|
6 / 6 / 0
Регистрация: 27.11.2016
Сообщений: 80
|
|||||||||||
Многопоточное программирование: как распараллелить цикл?12.05.2019, 19:06. Показов 10394. Ответов 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 | |
|
многопоточное программирование на с++ Многопоточное программирование Многопоточное программирование Многопоточное программирование Не получается распараллелить цикл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|