Russian Qt Forum
Ноябрь 25, 2024, 20:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 3 4 [5] 6 7 ... 13   Вниз
  Печать  
Автор Тема: К вопросу об организации взаимодействия пула производителей и одного потребителя  (Прочитано 66105 раз)
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #60 : Сентябрь 13, 2019, 13:33 »

Это уже совсем другая задача которая требует доп данных, напр примерное/ожидаемое время выполнения каждой.

С каких пор Вам дополнительные данные потребовались? Смеющийся В своих же темах Вы постоянно жалуетесь, когда доп. данные  спрашивают, подразумеваете, что и без них можно задачу решить.  Веселый
Записан

Пока сам не сделаешь...
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #61 : Сентябрь 13, 2019, 13:49 »

Цитировать
Вы главный лифтёр и можете программировать их работу как хотите. Но времена t1 и t2 менять не можете (причём обычно t2 > t1). И ещё вы знаете, что в фае (на первом этаже) никто из N cтудентов на знает кому другому на какой этаж нужно) Ваши действия?  Улыбающийся
И да, забыл сказать, ваш алгоритм программирования лифтов студенты, конечно же, знают) Т.е. они в курсе по какому закону они ходят)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #62 : Сентябрь 13, 2019, 14:17 »

Цитировать
Вы главный лифтёр и можете программировать их работу как хотите. Но времена t1 и t2 менять не можете (причём обычно t2 > t1). И ещё вы знаете, что в фае (на первом этаже) никто из N cтудентов на знает кому другому на какой этаж нужно) Ваши действия?  Улыбающийся
И да, забыл сказать, ваш алгоритм программирования лифтов студенты, конечно же, знают) Т.е. они в курсе по какому закону они ходят)
Какой "мой" алгоритм? Я об этой задаче впервые слышу  Улыбающийся

Наверное имеется ввиду нечто типа: вот лифт № 1 ходит до 5-го этажа и останавливается на всех со 2-го по 5-й. А лифт № 2 ходит до 10-го, но останавливается с 5-го по 10-й. Так, что ли?

То критиковать других за, якобы, "кривую постановку" - ума много не надо, а сам?  Улыбающийся

Да, и Вы от дела не отвлекайтесь с посторонними задачами. Ждем Ваш вариант с упавшим  КПД
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #63 : Сентябрь 13, 2019, 14:24 »

Нет, я бы не сказал.. Есть задачи, которые можно эффективно распараллелить (если они в принципе параллелются), не интересуясь временем исполнения одной таски..
Может лучше сначала поднабраться опыта распараллеливания, а потом уж "сказал - не сказал"?  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #64 : Сентябрь 13, 2019, 14:28 »

Может лучше сначала поднабраться опыта распараллеливания, а потом уж "сказал - не сказал"?  Улыбающийся
Боже, кто это говорит, парень который еще совсем недавно не знал как работают условные переменные и предлагал везде использовать семафоры. Улыбающийся

А сейчас уже "опыт распареллеливания", так что там у заказчика с 32 ядрами? Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #65 : Сентябрь 13, 2019, 14:43 »

Цитировать
Какой "мой" алгоритм? Я об этой задаче впервые слышу  Улыбающийся
Простая жизненная задачка не из "букваря", как Вы любите выражаться  Улыбающийся

Цитировать
Наверное имеется ввиду нечто типа:
У нас есть определённый критерий правильности нашего решения: а именно время развоза всех N студентов)
Наиболее оптимальное решение соответсвтует наименьшему времени. Что ещё нужно?  Улыбающийся

Цитировать
Может лучше сначала поднабраться опыта распараллеливания, а потом уж "сказал - не сказал"?   Улыбающийся
Хотел сам ответить, но Old уже всё за меня сказал  Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #66 : Сентябрь 13, 2019, 15:25 »

У нас есть определённый критерий правильности нашего решения: а именно время развоза всех N студентов)
Наиболее оптимальное решение соответсвтует наименьшему времени. Что ещё нужно?  Улыбающийся
Это забава, которая с темой никак не связана. Если мне еще тут выяснять - то на такие забавы нет ни времени ни желания.

По теме: хотите померяться производительностью на "мелких" задачах - давайте, я найду время. Нет - нечего засорять эфир  Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #67 : Сентябрь 13, 2019, 15:38 »

Цитировать
Это забава, которая с темой никак не связана.
Она на прямую связана с темой о птребителе и пулом производителей.
Я, если хотите, могу открыть исходники, которые ещё не опубликованы (да и кто их здась будет искать..)

Цитировать
По теме: хотите померяться производительностью на "мелких" задачах - давайте, я найду время. Нет - нечего засорять эфир  Улыбающийся
Я лишь говорю о том, что в некоторых случаях (откинем OpenMP) реализация thread_pool и  concurrent_loop сопостовимы (при условии грамотной консолидации между данными), а все игры над атомиками не дадут значимый прирост в производительности..

Почему меня сподвигла идея реализовать свой алгоритм нп thread_pool отдельная история, но издержки там (при грамотном расспределении воркеров) связаны из-за доступуа к общим данным..
« Последнее редактирование: Сентябрь 13, 2019, 16:18 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #68 : Сентябрь 13, 2019, 16:29 »

Она на прямую связана с темой о птребителе и пулом производителей.
Когда нужно накидать задач - никто не будет разбираться "а какая там каждая" - слишком хлопотно. Даже очевидную оптимизацию "бОльшие задачи первыми" нередко бывает затруднительно реализовать.

Я лишь говорю о том, что в некоторых случаях (откинем OpenMP) реализация thread_pool и  concurrent_loop сопостовимы, а все игры над атомиками не дадут значимый прирост в производительности..

Почему меня сподвигла идея реализовать свой алгоритм нп thread_pool отдельная история, но издержки там (при грамотном расспределении воркеров) связаны из-за доступуа к общим данным..
Вы находитесь под впечатлением "ну вот же, получилось" что вполне простительно Улыбающийся Кстати доступ к общим данным засисяют атомарным мутексом (а не обычным). Уменьшайте кластер и сравнивайте КПД - и Вы быстро увидите "не только розы"  Улыбающийся Попробуйте напр задача = какое-нибудь заполнение std::string или QString
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #69 : Сентябрь 13, 2019, 22:03 »

Цитировать
[Когда нужно накидать задач - никто не будет разбираться "а какая там каждая
Опять нет! Кая я уже говорил, в некоторых случаях (каковой является моя проблема) можно особо не интересоваться какое время исполняется одна таска.
Весь вопрос сводится к тому,  как организовать воркеров, если вы знаете сколько в принципе у Вас ядер и тасков.. (ну ещё предположения о временах t1 и t2) Этого достаточно..

Цитировать
Кстати доступ к общим данным засисяют атомарным мутексом (а не обычным). Уменьшайте кластер и сравнивайте КПД - и Вы быстро увидите "не только розы"  Улыбающийся Попробуйте напр задача = какое-нибудь заполнение std::string или QString
Отправлено: Сегодня в 03:38Автор: m_ax
Вам в любом случае придётся усыплять и пробуждать тпотоки.. С помощью флажков или как иначе - это другой разговор.. Т.е. всё равно будет mutrex.. Покажите как с помощью только атомиков решить эту проблему? А мы потом эти два решиния сравним)

Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #70 : Сентябрь 14, 2019, 12:49 »

Вам в любом случае придётся усыплять и пробуждать тпотоки..
А можно я как-нибудь попробую без этого?  Улыбающийся

С помощью флажков или как иначе - это другой разговор.. Т.е. всё равно будет mutrex.. Покажите как с помощью только атомиков решить эту проблему? А мы потом эти два решиния сравним)
Покажу, только меряться надо на одних и тех же задачах. Мне их самому придумать? Можно и так, только чтобы потом претензий не было, мол, "не та задача". Тогда давайте "ту" Улыбающийся Подтвердите
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #71 : Сентябрь 14, 2019, 12:53 »

Цитировать
Покажу, только меряться надо на одних и тех же задачах. Мне их самому придумать? Можно и так, только чтобы потом претензий не было, мол, "не та задача". Тогда давайте "ту"  Улыбающийся Подтвердите
Да, конечно, я приведу алгоритм, который параллелю) (сегодня-завтра)
« Последнее редактирование: Сентябрь 14, 2019, 12:57 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #72 : Сентябрь 14, 2019, 14:36 »

Да, конечно, я приведу алгоритм, который параллелю) (сегодня-завтра)
Необязательно "живой" алгоритм, ни на какие секреты я не претендую. Просто он должен быть одним и тем же для тестирующих Улыбающийся и должна быть возможность уменьшить/увеличить время выполнения этой единичной задачи
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #73 : Сентябрь 14, 2019, 14:49 »

Цитировать
Необязательно "живой" алгоритм, ни на какие секреты я не претендую.
Да это, в принципе, не особый секрет.. Просто на одной конференции в одном из докладов утверждалось, что если в системе имеется более чем один тип атомов (с различным типом взаимодействия (взаимодействие зависит только лишь от расстояния между атомами..) (откинем все квантовые поправки)) то симметрия кристаллической структуры может быть отлична от треугольной.. (громкое заявление, которое хотелось бы проверить..)

У нас всегда треугольная получается)
« Последнее редактирование: Сентябрь 14, 2019, 14:58 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #74 : Сентябрь 14, 2019, 18:21 »

Взял такую задачу - простые расчеты + создание/удаление вектора
Код:
	virtual void run( void )
{
std::minstd_rand0 gen(mSeed);
std::vector<double> data(mCount * 2);
mResult = 0.0;
for (size_t i = 0; i < data.size(); ++i) {
double val = (gen() % 32768) / 32768.0;
data[i] = val * 2 - 1.0;
}
for (size_t i = 0; i < data.size(); i += 2)
mResult += atan2(data[i + 1], data[i]);

mResult /= mCount;
}
Для тестов ниже mСount = 128. Результат меня удивил. В очередной раз недооценил разработчиков Qt (из сейчас модно хаять). Ну задрочить QThreadPool конечно можно (что я и сделал), но для этого нужно давать задачи 10 МИКРО секунд и меньше. Уже на 20 все вполне норм (КПД около двойки), а на 100 и больше нет разницы с моим великом.   
Цитировать
Testing single thread
single pass 0 : time(s) = 5.960, tasks 826368, unit(ms) = 0.0072, sum = -1785.4426
single pass 1 : time(s) = 5.716, tasks 826368, unit(ms) = 0.0069, sum = -1785.4426
single pass 2 : time(s) = 5.691, tasks 826368, unit(ms) = 0.0069, sum = -1785.4426
single pass 3 : time(s) = 5.690, tasks 826368, unit(ms) = 0.0069, sum = -1785.4426

Testing QThreadPool
pool pass 0 : time(s) = 6.327, tasks 826368, unit(ms) = 0.0077, sum = -1785.4426
pool pass 1 : time(s) = 7.473, tasks 826368, unit(ms) = 0.0090, sum = -1785.4426
pool pass 2 : time(s) = 6.239, tasks 826368, unit(ms) = 0.0075, sum = -1785.4426
pool pass 3 : time(s) = 6.782, tasks 826368, unit(ms) = 0.0082, sum = -1785.4426

Pool scale = 0.860 (4 threads)

Testing AtomPool
atom pass 0 : time(s) = 2.025, tasks 826368, unit(ms) = 0.0025, sum = -1785.4426
atom pass 1 : time(s) = 2.041, tasks 826368, unit(ms) = 0.0025, sum = -1785.4426
atom pass 2 : time(s) = 2.030, tasks 826368, unit(ms) = 0.0025, sum = -1785.4426
atom pass 3 : time(s) = 2.025, tasks 826368, unit(ms) = 0.0025, sum = -1785.4426

Atom scale = 2.839 (4 threads)
Ну ладно, посмотрим с др нагрузкой
Записан
Страниц: 1 ... 3 4 [5] 6 7 ... 13   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.