|
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
|
|
Выигрышь в скорости с несколькими потоками?..08.06.2009, 09:08. Показов 3328. Ответов 19
Метки нет (Все метки)
Программу (связана с рассчётом) написал в двух видах: последовательном и многопоточном.. В случае с одним потокм создаётся один класс проводящий рассчёты, в многопоточном варианте - параллельно несколько классов. Проблема в том, что нет выигрыша во времени рассчёта. При этом в однопотчном случае проц. загружен на 50%, а в многопоточном на 100% (не особо зависит от количества потоков). Проц. хороший Intel 2-х ядерный 3.. Гига на ядро.
0
|
|
| 08.06.2009, 09:08 | |
|
Ответы с готовыми решениями:
19
Работа с несколькими потоками Запись в файл несколькими потоками Закачка файла несколькими потоками. |
|
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
|
| 08.06.2009, 09:10 | |
|
код-то давай.
![]() может распараллелено неправильно.
0
|
|
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 08.06.2009, 23:09 | |
|
А с чего тут быть выигрышу в скорости? Переключение между потоками занимает процессорное время.Ну,на два ядра можно более-менее безболезненно распараллелить,но большее количество потоков и теоретически выигрыша не даст. Поправьте меня,если я не прав.
Именно поэтому некоторые вычисления переносят на графический процессор - видеокарту,проще говоря.Она просто создана для параллельных вычислений - в буквальном и переносном смысле.
0
|
|
|
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
|
|
| 09.06.2009, 23:05 | |
|
XuTPbIu_MuHTAu, не морочь людям голову
0
|
|
|
Администратор
87888 / 53209 / 249
Регистрация: 10.04.2006
Сообщений: 13,767
|
|
| 09.06.2009, 23:17 | |
|
0
|
|
|
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
|
|
| 09.06.2009, 23:20 | |
|
я так понимаю, что в случае 2х потоков, каждый должен в 2 разща меньше считать, ес ли код правильный, нее?
но код, видимо, неправильный
0
|
|
|
|
||
| 09.06.2009, 23:27 | ||
|
0
|
||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
||
| 10.06.2009, 01:22 | ||
|
0
|
||
|
7 / 7 / 1
Регистрация: 01.03.2009
Сообщений: 33
|
|
| 10.06.2009, 17:28 | |
|
Вообще выйгрыш может и получится, только на другой машине! При использовании распаралеливания нужно учитывать внутреннюю реализацию, а не поверхностую... Один из факторов - это КЭШ-память... Если она общая, то это одно дело... Если нет - то прироста в производительности и скорости выполнения может вообще не быть
0
|
|
|
7 / 7 / 1
Регистрация: 01.03.2009
Сообщений: 33
|
|
| 11.06.2009, 16:16 | |
|
Хорошо, я выражусь небольшим примером.
Допустим есть программа с двумя потоками, есть один массив, один из потоков работает с чётными элементами, другой - с нечётными. Напрямую из оперативки с массивом процессор работать не может, будет загружать в КЭШ, но и один элемент загрузить в КЭШ невозможно, допустим загружается 4 элемента! Так вот, если КЭШ различный, то при обращении к первому элементу массива будет выполняться первый поток, первый процессор (из двух) задействуется и загрузит сразу 4 элемента массива в свой КЭШ, второй процесс в это время готов обработать второй элемент, но он не может сделать это пока первые четыре не освоболит первый процессор... После освобождения второй процесс будет делать тоже самое, что и первый ранее! Получается огромный простой! И с данной задачей намного быстрее справятся либо два процессора с общим КЭШем или вообще машина с одним процессором. Поэтому нельзя однозначно говорить о скорости работы многопоточного приложения на компьютерах с различной архитектурой!
0
|
|
|
|
|
| 11.06.2009, 16:37 | |
|
> Поэтому нельзя однозначно говорить о скорости работы
> многопоточного приложения на компьютерах с различной архитектурой! Когда говорят о многопотомчном приложении, то говорят о нормальнонаписанной программе. "Нормальная" - это когда потоки практически всё время работают с независимыми данными. Два потока над одним массивом - так вообще-то не делают. Потому как наиболее узкое место многопроцессорных машин - работа с общей памятью. Тут геморрой как на уровне контроллера памяти (который должен обслуживать несколько процессоров и перупорядочивать запросы в память), так и на уровне кэшей - наворачивается здоровенная штука,обеспечиващая когенернтность кэшей между всеми процессорами. И в итоге ты делаешь программу, которая работает в режиме, наиболее неудобном дла аппаратуры.
0
|
|
|
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
||
| 11.06.2009, 16:47 | ||
|
не только делают, но и Intel официально рекомендует именно так писать приложения: запускать несколько экземпляров одного и того-же кода. обсуждать не берусь, но такова официальная рекомендация.
0
|
||
|
|
||
| 11.06.2009, 16:54 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
|
||||
| 12.06.2009, 23:17 [ТС] | ||||
|
Добавлено через 2 минуты 24 секунды Добавлено через 9 минут 26 секунд
0
|
||||
|
|
||||
| 13.06.2009, 23:25 | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
|
|||||||
| 15.06.2009, 12:33 [ТС] | |||||||
|
А вот и исходник:
0
|
|||||||
|
|
|
| 15.06.2009, 13:50 | |
|
Когда пишешь какой-то исходник - пользуйся BB-кодами, а то читать невозможно
Я с трудом себе представляю, как это безобразие под виндами работает. Но одна вещь мне не совсем понятна. У тебя используется один семафор. При создании каждого потока идёт опрос этого семафора, который сбрасывается внутри потока. Т.е. получается, что ты поток создаёшь, а в основной задаче ждёшь его завершения. Так чтоли получается? Добавлено через 3 минуты 38 секунд Ну и лирическое отступление. Семафор - всё-таки средство синхронизации для разных процессов, которые не имеют общего ресурса кроме диска. Потоки имеют общую глобальную память, а потому для синхронизации потоков принято использовать mutex'ы - они и работают быстрее. т.к. для их поддержки не требуется вмешательство ОС, и диск не насилуют (на одном только обращении к диску теряется десятки, а то и сотни тысяч тактов)
0
|
|
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
||||||
| 15.06.2009, 20:25 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 16.12.2008
Сообщений: 12
|
||
| 24.06.2009, 21:28 [ТС] | ||
|
Добавлено через 18 минут 26 секунд 4 Alexandoros Нелзя использовать CriticalSection, т.к. мне не просто надо запретить использовать ресурсы во время записи - очередное рассчитаное значение должно записываться только за предыдущим, т.е. i-ое - рассчитано, i+1 -ое ещё нет, а i+2 -ое, например, уже также рассчиталось (если объем вычислений упал), то i+2 -ое значение должно ждать рассчёта i+1 - го... И я чёт не понял с главным циклом. У меня там было изменение главного параметра T (от Tmin до Tmax с шагом dT), а здесь, как вижу, цикл создания потоков.
0
|
||
| 24.06.2009, 21:28 | |
|
Помогаю со студенческими работами здесь
20
Обработка базы данных несколькими потоками Использование несколькими потоками одной функции Синхронизации задач с несколькими потоками выполнения Запись данных в файл несколькими потоками. Генерация случайных чисел несколькими потоками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|