|
1 / 1 / 0
Регистрация: 28.05.2013
Сообщений: 50
|
||||||
Многопоточное сложение элементов массива01.06.2013, 20:46. Показов 11641. Ответов 26
Метки нет (Все метки)
Здравствуйте.
Задание - сложить многопоточно элементы одномерного массива. На вход подаётся кол-во элементов и кол-во потоков. Как это реализовать? Мне понятно как создать нужное кол-во потоков. Т.е. это приблизительно выглядит так:
А вот как обрабатывать сложение элементов массива? Для каждого потока писать отдельную функцию? Но на вход подаётся случайное кол-во потоков, как тогда нужное кол-во функций создать? По сути, результат сложения будет в виде бинарного дерева, как я понимаю. (Извиняюсь, как картинку вставить я так и не понял, поэтому ссылка) Т.е. на первом уровне происходит попарное суммирование элементов, на втором - суммирование получившихся сумм и так далее до ответа. Подскажите пожалуйста, как вообще правильно разбивать элементы массива по разным потокам и передавать результат вычисления дальше, в эти же потоки?
0
|
||||||
| 01.06.2013, 20:46 | |
|
Ответы с готовыми решениями:
26
Сложение элементов массива Сложение всех элементов одномерного массива
|
|
Higher
|
|||||||
| 05.06.2013, 21:31 | |||||||
|
m0nax, ну, это совсем не читерство, а единственно эффективный вариант распараллеливания в данной ситуации. Собственно, LINQ использует его же (причем как-то очень эффективно).
С вашим кодом получилось так
Ну и 100 раз прогонять не обязательно, первые запуски нужны для того, чтобы процессор успел разогнаться до максимальной частоты. Для таких больших массивов хватит 10 раз. P.S. если кому-то понадобится, прикрепил дллку (ее нужно распаковать и положить рядом с exe'шником). Примечание - она использует sse4.2 и скомпилирована под х64, так что на старых компьютерах может не пойти(кинет SEHExcetion).
0
|
|||||||
|
Master of Orion
|
||||||
| 05.06.2013, 22:16 | ||||||
|
Алсо ради интереса:
для исходной задачи получаем 1977 тиков. То есть даже быстрее, чем на С++. Единственный минус то, что объем хранимых данных ограничен размером стека.
0
|
||||||
|
Higher
|
||||||||
| 05.06.2013, 22:24 | ||||||||
0
|
||||||||
|
Master of Orion
|
||||||
| 05.06.2013, 22:58 | ||||||
|
diagon, забавно, у меня шарп получается на порядок быстрее, чем параллельный С++
![]()
0
|
||||||
|
Higher
|
||||||
| 05.06.2013, 23:26 | ||||||
|
Psilon, PInvoke имеет достаточно большой оверхед на свой вызов. Поэтому (и не только) в моем бенчмарке берется минимум. Например, если занести обычный нативный for в цикл, (т.е. как-то так)
То есть самый первый вызов был очень тормознутым за счет подгрузки дллки, остальные пошли с заметно большей скоростью.
1
|
||||||
|
Master of Orion
|
|
| 06.06.2013, 00:20 | |
|
diagon, заинтересовало настолько, что полез в IL код смотреть... В итоге искорячил до исключения
Хотя программа на 4 строчки, из которых 2 - инициализация и reurn result Криворукий ппц
0
|
|
| 06.06.2013, 00:20 | |
|
массив string сложение элементов массива в разной последовательности, все возможные варианты Сложение двух элементов массива
Сложение элементов массива
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|