Russian Qt Forum
Ноябрь 26, 2024, 19:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Параллельные вычисления (проблемы)
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Параллельные вычисления (проблемы) (Прочитано 22369 раз)
vaprele07
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #15 :
Декабрь 11, 2009, 05:11 »
Вот здесь много материалов по теме:
http://software.intel.com/ru-ru/
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #16 :
Декабрь 11, 2009, 06:33 »
Табличку скачать не получается
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #17 :
Декабрь 11, 2009, 07:10 »
Все равно многого не понятно.
Такие принципы могу предложить:
1. Принцип равноправных узлов - один поток, изначально создает все потоки, необходимые для выполнения всех задач, причем этот поток считается рабочим потоком, поскольку он не осуществляет никакого делегирования. Все потоки имеют одинаковый статус/приоритет/задачу.
(наипростейший вариант)
2. Принцип делегирования - один поток(управляющий) создает другие потоки(рабочие) и назначает им задания(т.е. распределяет исходные данные поровну). Управляющий поток, ожидает до тех пор, пока каждый рабочий поток не завершит свое задание.
(предпочтительный вариант)
3. Принцип конвейера - данные обрабатываются поэтапно. Полная обработка данных разделяется на N-этапов равных кол-ву потоков. Первый поток выполняет некоторое действие над данными, после передает их следующему потоку, тот в свою очередь - следующему.
(наипредпочтительнейший вариант)
Выбирайте.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Параллельные вычисления (проблемы)
«
Ответ #18 :
Декабрь 11, 2009, 07:43 »
У меня в чистом виде реализован вариант "2". Ну можно еще добавить что относительно небольшая часть расчетов (5-10%) не распараллелена и выполняется главной ниткой
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #19 :
Декабрь 11, 2009, 07:54 »
Если это так, и принцип делегирования реализован !правильно!, то самое время подумать над кластером.
п.с.
могу помочь.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Параллельные вычисления (проблемы)
«
Ответ #20 :
Декабрь 11, 2009, 08:31 »
Цитата: niXman от Декабрь 11, 2009, 07:54
Если это так, и принцип делегирования реализован !правильно!, то самое время подумать над кластером.
Про делегирование ничего не слышал
Главная нитка помещает задачи в очередь. Как только в очереди окажется N (размер кластера) задач - все рабочие нитки снимаются со своих семафоров и начинают брать задачи из очереди (также кластером из N задач). N в моих руках, управляемо. Послав все задачи, главная нитка засыпает на семафоре но перед этим досылает еще по одной "псевдо-задаче" (для каждой рабочей нитки). Получив задачу-терминатор, рабочая нитка засыпает на своем семафоре. Последняя засыпающая открывает семафор главной нитке. Это все
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #21 :
Декабрь 11, 2009, 08:39 »
Из описания правильно.
Допустим. У вас 4 ядра, и 4 рабочих нитки.
1. скажите, рабочие нитки загружены на 100 процентов?
2. сколько раз(за время своей жизни), в сумме, происходит блокировка разделяемого ресурса нитками?
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #22 :
Декабрь 11, 2009, 09:44 »
Цитировать
Про делегирование ничего не слышал
Из википедии:
Цитировать
# передача, уступка полномочий. Делегирование - такая организация работы, при которой руководитель распределяет между подчиненными конкретные задания. Также делегирование есть передача подчиненному задачи или действия, которое должен осуществить руководитель, вместе с необходимыми для этого полномочиями.
Цитировать
Как только в очереди окажется N (размер кластера)
Под словом кластер, я подразумевал аппаратный кластер. Во имя достижения большего кол-ва аппаратных процессоров.
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #23 :
Декабрь 11, 2009, 09:48 »
Цитата: vaprele07 от Декабрь 11, 2009, 05:11
Вот здесь много материалов по теме:
http://software.intel.com/ru-ru/
Вот было любопытно, посмотреть, что вы такого порекомендовали. Но, оказалось, что ваша ссылка, равносильна этой:
http://www
.*
Очень познавательно
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Параллельные вычисления (проблемы)
«
Ответ #24 :
Декабрь 11, 2009, 14:02 »
Цитата: niXman от Декабрь 11, 2009, 08:39
Из описания правильно.
Допустим. У вас 4 ядра, и 4 рабочих нитки.
1. скажите, рабочие нитки загружены на 100 процентов?
2. сколько раз(за время своей жизни), в сумме, происходит блокировка разделяемого ресурса нитками?
1) Увы, совсем не на 100% (принимаем 100% = все 4 загружены до упора). Типичная загрузка только 65-70%, а очень хотелось бы большего. Остальное idle, а когда N неудачно - появляется довольно мощный overhead (монитор показывает его как "system" красным).
2) Блокировки конечно есть для I/O и.т.п. Но в тестах реально работает только одна - для выборки ниткой следующей пачки задач из очереди. Реализация QSpinLockLock/QSpinLockUnlock (это OSX аналог QAtomicInt).
Тесты показывают что "львиная доля" тратится на подъем/усыпление рабочих ниток на семафорах. Не вижу возможности сделать 1 семафор для всех ниток (получается каждая должна иметь свой) да и неясно помогло бы это - ведь усыпление все равно будет.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Параллельные вычисления (проблемы)
«
Ответ #25 :
Декабрь 18, 2009, 15:38 »
Добрый день
Попробовал OpenMP. Впечатление очень приятное, библиотека сделана по уму, пользоваться легко и удобно, ничего переделывать не пришлось.
К сожалению, OpenMP никак не быстрее ручной реализации. На совсем маленьких расчетах время примерно то же самое (хотя с OpenMP диаграмма загрузки выглядит гораздо стабильнее). А вот с увеличением числа расчетов OpenMP начинает проигрывать. Не так уж много но заметно, например 87 секунд против 76
Сейчас качаю Intel компилятор, хочу проверить еще с ним.
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #26 :
Декабрь 18, 2009, 16:39 »
не думаю что твое видение решения, окажется верным. тут проблема в архитектуре/реализации.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Параллельные вычисления (проблемы)
«
Ответ #27 :
Декабрь 18, 2009, 17:15 »
Цитата: niXman от Декабрь 18, 2009, 16:39
не думаю что твое видение решения, окажется верным. тут проблема в архитектуре/реализации.
Трудно понять, мудрено выражаетесь
Так в архитектуре или реализации? (часто это употребляется в смысле стратегия/тактика). Насчет видения - ну я пока ничего не вижу, буду благодарен за свежие идеи (пусть и экспериментальные).
Записан
niXman
Гость
Re: Параллельные вычисления (проблемы)
«
Ответ #28 :
Декабрь 18, 2009, 18:13 »
Цитировать
Трудно понять, мудрено выражаетесь
даже и не думал.
Цитировать
Так в архитектуре или реализации?
возможно и там, и там..
Цитировать
(часто это употребляется в смысле стратегия/тактика)
не понял сравнения.
Цитировать
Насчет видения - ну я пока ничего не вижу, буду благодарен за свежие идеи (пусть и экспериментальные).
я лишь хочу сказать, что многие думают: вот заюзаю MPI[CH] и все, избавлю себя от проблем с синхронизацией/распределением/реализацией в такой-то задаче. но нет, если бы все было так просто
я задавал вопрос:
Цитировать
сколько раз(за время своей жизни), в сумме, происходит блокировка разделяемого ресурса нитками?
вы так и не ответили.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Параллельные вычисления (проблемы)
«
Ответ #29 :
Декабрь 18, 2009, 18:48 »
Цитата: niXman от Декабрь 18, 2009, 18:13
сколько раз(за время своей жизни), в сумме, происходит блокировка разделяемого ресурса нитками?
Извините за возможные непонятки, мой ответ был
Цитата: Igors от Декабрь 11, 2009, 14:02
2) Блокировки конечно есть для I/O и.т.п. Но в тестах реально работает только одна - для выборки ниткой следующей пачки задач из очереди. Реализация QSpinLockLock/QSpinLockUnlock (это OSX аналог QAtomicInt).
То есть при использовании OpenMP блокировок нет вообще, все потери на синхронизации. Повторюсь также про трудоемкость 1 пикселя (для вычисления которого привлекаются все нитки)
32 sec / (80 * 1000)
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...