Перейти к содержимому


Фотография

Реальная "Многопоточность"!

[OC]

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 52

#31 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 09 Март 2017 - 15:45

А если задача накроет ноду? :D Нода умрёт и её нужно будет в ручную запускать.

 

Думаю такие штуки надо детектить и будить ноду. Например через Wake-On-LAN.



#32 Оффлайн   Quant

Quant
  • Пользователи
  • 537 сообщений
  • Городinterface IQuant

Отправлено 09 Март 2017 - 19:37

Специально для КвериМЭН-а:

  Есть задачи, которые распарралелить нельзя( нахождение чисел Фибоначчи), а есть те,которые очень сильно выигрывают(нейросети, рендер)

Если бы это было не так, видеокарт бы не было. Вот прям совсем. А так получается ускорение с 3-х часов до десяти минут..



#33 Онлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • 1 484 сообщений
  • ГородCity17

Отправлено 09 Март 2017 - 21:14

Если бы это было не так, видеокарт бы не было.

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

Вот и выходит. Что ускорение ускорением (тут я не спорю, что есть в нём смысл), но задачи более серьёзные они просто не могут решить.

А люди ведь надеются на это. Недавно вон отписался игрок, который думал что генетика в Forestry сложная и её можно решить многопоточностью. Если бы она была реально сложная, многопоточность бы не помогла.

 

Теперь насчёт задачи, мне очень любопытно как вы её собираетесь решить.

Скажем так, для примера у нас есть 5 чисел. (не больше, не меньше) Каждое число является одним из 10 символов специального алфавита. Нам нужно пройтись брутом по всем вариантам перемножения этих чисел. Но мы знаем, что от перемены мест слагаемых значение суммы не меняется, а значит например комбинации 14444, 41444, 44144, 44414, 44441 будут считаться за одну.

Тут возникает дилемма. Проходиться по лишним комбинациям и использовать многопоточность, чтобы распределить брут и быстрее решить задачу? Либо решать на одной машине, но не проходить по лишним комбинациям, используя более логичный цикл?

Что выберете вы? И можно ли со вторым случаем как либо подрубить многопоточность? Я так понимаю что нет, но может вы откроете мне глаза на какой-то чудесный алгоритм многопоточности для этого случая?

 

Так то выходит, что второй алгоритм работает тем эффективнее, чем больше у нас цифр нужно перемножить. То есть это заставит работать больше компов одновременно используя первый алгоритм, чтобы догнать один комп использующий второй алгоритм.

 

На примере таблицы умножения. Обычный комп решит задачу за t времени, два компа с алгоритмом для многопоточности решат задачу за те же t времени. Но их нужно два. И если их поставить 4, то они решат за t/2 времени. Что как бы довольно быстрее чем один комп. Но по эффективности нагрузки, они проигрывают в 2 раза обычному компу.


Сообщение отредактировал qwertyMAN: 09 Март 2017 - 21:17


#34 Оффлайн   NEO

NEO
  • Пользователи
  • 1 815 сообщений
  • ГородСолнце

Отправлено 09 Март 2017 - 21:26

Я читал недавно статью, там полностью на гпу физику обсчитывали, а это не только 2+2


Сообщение отредактировал NEO: 09 Март 2017 - 21:27


#35 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • 156 сообщений

Отправлено 09 Март 2017 - 21:33

Думаю такие штуки надо детектить и будить ноду. Например через Wake-On-LAN.


А если подзадачу на 2 ноды отправить сразу, чтоб если одна вылетела, то 2я смогла выполнить

#36 Оффлайн   HixOff

HixOff
  • Пользователи
  • 168 сообщений

Отправлено 09 Март 2017 - 21:36

А если подзадачу на 2 ноды отправить сразу, чтоб если одна вылетела, то 2я смогла выполнить

это уже какое-то резервное разделение вычислительных центров

пригодится для расчета каких-нибудь траекторий ядреных ракет и тнт пушек :D

но в данном случае логичнее перед распределением задач получать список нод и после этого уже раскидывать, чем использовать в 2 раза больше пк без повышения производительности



#37 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • 156 сообщений

Отправлено 09 Март 2017 - 22:03

Это если подзадача конкретно влияет но скорость вычислений

#38 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 09 Март 2017 - 22:42

...

 

Давай для начала определим, что такое сложная задача.

При решении любой сложной задачи, первое, что делает человек - это разбивает её на множество простых задач. В этом практически основа программирования.

Любой серьезный алгоритм нахождения чего-нибудь нужного в итоге сведётся к тому, что компьютер будет делать 1+1, или 0+1, или 0+0.

 

Теперь по поводу задачи.

В рамках этой темы, мы не собираемся решать никаких задач, за исключением задачи организации распределённых вычислений.

Твоя задача интересна, и ты можешь создать математический топик, где все неравнодушные к математике могут попробовать её решить. Но здесь это оффтоп.



#39 Оффлайн   Quant

Quant
  • Пользователи
  • 537 сообщений
  • Городinterface IQuant

Отправлено 09 Март 2017 - 22:54

Ну, то есть? На видеокартах считают кучу различных сложных систем, от физики до нейросетей. И эти задачи получают некий профит от многопоточности. Мы тут не пытаемся нацепить некую задачу на неё, и показать что это плохо. Всё равно, что сказать про неэффективность ракет для перемещения в пределах одной планеты.



#40 Оффлайн   ivan52945

ivan52945
  • Пользователи
  • 156 сообщений

Отправлено 09 Март 2017 - 22:54

За примером далеко ходить не буду, тот же реактор: один комп смотрит за реакторами , второй отрабатывает результаты , чтобы роботу было проще ходить и можно продолжить до бесконнчности

#41 Оффлайн   Ingr

Ingr
  • Пользователи
  • 188 сообщений
  • ГородМинск

Отправлено 09 Март 2017 - 23:33

@ivan52945, тут как я понимаю речь идет несколько о другой многозадачности.



#42 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 10 Март 2017 - 10:37

Здесь просто многозадачность.

В принципе, можно использовать и так как ivan52945 описал. Если наладить нормальное взаимодействие с подзадачами.



#43 Оффлайн   Kartze

Kartze
  • Пользователи
  • 528 сообщений
  • ГородКрасноярск

Отправлено 10 Март 2017 - 13:04

Здесь просто многозадачность.

В принципе, можно использовать и так как ivan52945 описал. Если наладить нормальное взаимодействие с подзадачами.

Кхм, так это немного не то, о чем мы изначально говорили. Тут у компов разные задачи, а мы вроде как о распараллеливании одной задачи.


  • qwertyMAN это нравится

#44 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 10 Март 2017 - 13:21

Кхм, так это немного не то, о чем мы изначально говорили. Тут у компов разные задачи, а мы вроде как о распараллеливании одной задачи.

 

А какая принципиальная разница?

 

Я же уже ответил Квертику - мы не будем решать конкретных задач. Мы напишем либу, которая позволит организовать параллельное вычисление.

Мультипоточность.

 

Кто сказал, что потоки обязаны обрабатывать похожие задачи?  :lol:



#45 Онлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • 1 484 сообщений
  • ГородCity17

Отправлено 10 Март 2017 - 14:20

Кто сказал, что потоки обязаны обрабатывать похожие задачи? 

Например, в доме у Васи стоит комп который отображает MineOS, а у Гендальфа тоже в доме комп и грузит он всеми любимую Redcontrol

А у Фродо есть комп который грузит OpenOS.

 

Что ж это выходит? Все эти компы являются частью мультипоточной системы??? Хотя они и не соединены между собой никак. По вашей логике это так?

Ведь при аналогичном примере:

За примером далеко ходить не буду, тот же реактор: один комп смотрит за реакторами , второй отрабатывает результаты , чтобы роботу было проще ходить и можно продолжить до бесконнчности

Компы просто работают и просто сообщаются между собой. Где тут вы многопоточность увидели?



#46 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 10 Март 2017 - 14:54

Ну да. Просто кучка компьютеров, которые работают сами по себе, и решают каждый свою задачу.

Ты раскусил нашу идею. (Ещё можно было внимательно прочесть первые посты.)

 

Идея состоит в том, чтобы написать библиотеку-менеджер для кластера из компьютеров,

соединённых вместе и готовых выполнять задачи.

 

Использовать эту штуку можно будет по разному.

- вычислять что-то параллельно, разбив задачу на части,

- запустить несколько разных задач одновременно,

- запилить публичный сервис, который предоставляет вычислительные ресурсы всем желающим, балансируя полученные задачи

и нагрузку по кластеру

 

Зачем стягивать себя рамками определений?  :D



#47 С мобильного устройства Онлайн   1Ridav

1Ridav

    Орден К.А.

  • Администраторы
  • 280 сообщений

Отправлено 10 Март 2017 - 21:17

Прочитал все посты внимательно

 

Многопоточность даёт плюс в скорости вычислений лишь при количестве потоков = количеству физических ядер процессора. (4 ядра смогут максимально эффективно обслужить лишь 4 потока, слишком большое количество потоков лишь замедлит вычисления в виду переключения потоков между собой для выполнения на физическом ядре)

 

Так же не забывайте, что если задача выполняется за t, то задача разделенная на 2 потока не будет выполняться за t/2. Максимальный коэффициент прироста производительности будет в районе 0,8-1,7, в зависимости от эффективности распараллеливания. 0,8 - это замедление, да, такое тоже есть

Использовать многопоточность для вычислений в майне бесполезно. Сервер запущен на 4 ядерном хосте, для мода выделяется 1 поток. Увеличивая дальнейшее количество потоков не увеличит скорости, но увеличит задержку.

 

С другой стороны распределять задачи между компами - идея хорошая. Но над этим нужно так же думать, чтобы максимально эффективно использовать ивентную базу openos

 

PS:

Говорю на основе опыта использования POSIX, CUDA, на языке Си в системах Linux/Unix/Windows


  • Totoro, eu_tomat, qwertyMAN и еще 1 это нравится

#48 Оффлайн   MeXaN1cK

MeXaN1cK
  • Автор темы
  • Пользователи
  • 43 сообщений
  • ГородМосква

Отправлено 10 Март 2017 - 21:43

...
 

Вот сразу видно - толковый программист пришел и пояснил по теме =) 1ridav, если будут какие-либо решения по распараллеливанию задачи, то напиши пожалуйста, будем очень благодарны. 



#49 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 10 Март 2017 - 22:03

...

 

Я полностью с тобой согласен.

Только надо учесть ещё один момент. Компьютер в ОС не даёт использовать в полную мощь даже те фейковые "немногопоточные" потоки, которые он выделяет.

Ведь там есть ещё одно искусственное ограничение - на количество команд / тик для одного процессора.

 

Если же распределить задачу на два процессора, мы уменьшим этот кап вдвое.  :)


  • 1Ridav и Fingercomp это нравится

#50 Онлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • 1 484 сообщений
  • ГородCity17

Отправлено 11 Март 2017 - 07:40

Я полностью с тобой согласен.

Только надо учесть ещё один момент. Компьютер в ОС не даёт использовать в полную мощь даже те фейковые "немногопоточные" потоки, которые он выделяет.

Ведь там есть ещё одно искусственное ограничение - на количество команд / тик для одного процессора.

 

Если же распределить задачу на два процессора, мы уменьшим этот кап вдвое.  :)

Но есть ограничения по распараллеливанию. После определённого количества компов, они начнут выжирать все соки из сервера и будут только замедлять его работу. Или работу самих прог.



#51 Онлайн   Totoro

Totoro
  • Модераторы
  • 1 828 сообщений

Отправлено 11 Март 2017 - 13:03

 После определённого количества компов, они начнут выжирать все соки из сервера и будут только замедлять его работу.

 

Эта фраза абсолютно истинна, причём не только в рамках этой темы.



#52 Оффлайн   Doob

Doob
  • Пользователи
  • 815 сообщений

Отправлено 11 Март 2017 - 15:18

Есть еще проблема с самим назначением задачи, например: сервер послал задачу, ноды ее выполняют и тут... сервер отваливается, задача решается, но результата не будет.

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



#53 Оффлайн   ALeXeR

ALeXeR
  • Пользователи
  • 204 сообщений
  • ГородОдесса

Отправлено 19 Март 2017 - 14:20

ну по поводу "выжимания соков из сервера" - это равносильно тому что у тебя будет много компов, лагодромом это трудно назвать, что кластер - что прочто куча работающих независимо компов - без разницы)

а сама идея интересная) я питался писать либу для подобного, но наткнулся на то, что между компами передавать инфу быстро не получится, как в ФС так и в сети есть задержки, но вот использовать их для совместного вывода на моник - это круто) уже проводил тесты)


Сообщение отредактировал ALeXeR: 19 Март 2017 - 14:20





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных