распараллеливание вычислений между двумя Arduino

VGAtoHDMI
Offline
Зарегистрирован: 11.12.2016

Всем доброго дня,

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

У меня появилась идея вынести часть вычислений на вторую ардуино, но на данный момент я не понимаю как это сделать. В интернете много информации про распараллеливание процессов, но про распараллеливание вычислений ничего. Буду очень рад, если вы дадите ссылку на источник, в котором можно пичитать про (костыль) данную тему.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Как минимум стоит почитать: https://www.ozon.ru/context/detail/id/3505961/

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

зачем? отдай часть функций одной, часть другой. параллельно какой смысл. все равно одна должна собирать данные

b707
Offline
Зарегистрирован: 26.05.2017

VGAtoHDMI пишет:

В интернете много информации про распараллеливание процессов, но про распараллеливание вычислений ничего.

Хм... а разве вычисление - это не процесс?

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот здесь есть список литературы - https://parallel.ru/info/books_rus.html

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

Ну и, наконец, надо смотреть на задачу. Если она плохо параллелится, Вы много от двух ядер не выиграете, т.к. закон Амдала никто не отменял, а можете даже и потерять, т.к. накладные расходы тоже никто не отменял.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

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

Кск сказать. Вот распбери уже и в Лос-Аламосе служит.

Logik
Offline
Зарегистрирован: 05.08.2014

VGAtoHDMI пишет:

Всем доброго дня,

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

Привет.

Вы бы подробней расказали о проекте, что да как. Потому как оно конечно может и не хватает производительности, но чаще из-за кривого подхода к задаче такое. Чел алгоритмы отстойные заложит и/или накосячит в коде, вот и тормозня идет. А основанием для такого моего предположения в данном случае служит какраз ваша идея о распаралеливании. Фигня все это. Если реально контролер не тянет задачу - берется более мощный контроллер, а не два чахлых связываются, т.к. связь их будет вечным узким местом и ресурсов займет тоже существенно. 

ПС. Ссылки выше Вам нипомогутниразу. Ничем. Прогноз на попытку "пичитать" - начнете но ни кончите и ,обломаетесь проект делать.

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Мда. Блинк с выносом вычислений на другую ардуину это жесть. Мол я не успеваю, у меня delay стоит, а еще куча работы. В общем сообщишь, когда мне светодиод переключить.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

И сайтик хороший и список литературы интересный. Тоже спасибки, далеко не всё читал оказывается.. :)

Автору: Вам верно пишут. Если задача подлежит распараллеливанию, то опишите хотя-бы в общих чертах. Если это косой алгоритм или реализация, то "мертвому припарка". Ну и ещё: дуньки - все-таки управляющие машинки, а не счетные. Проще взять камень мощнее, собирая в него инфу из нескольких управляющих дунек.

Как пример исключительно (жду приезда деталек, не делал ещё): с сыном собираем "Луноход", возможно пойдет на кубок РТК, но уже не уверены. Там запланировано 4 пары ведущих колес. Каждый такой блок будет иметь пару BLDC моторов + электромагнит блокировки качалки пары колес + эл.магнит вытаскивания грунтозацепов из под колесной шины + 2 серводвигателя для изменения положения в пространстве этой пары колес + датчики давления на грунт на каждом колесе + ИК датчики, смотрящие вперед по ходу и вбок между парой. Всем этим барахлом на каждой паре будет управлять своя ATmega128a (ног много и стоит недорого). Связь с "главным процессором" по I2C или SPI, не определились ещё. Плюсом у Лунохода планируется 2 руки, "багажник" с люками, датчики дыма, газа, ультразвуковые, цвета, манипуляторы и по камере на каждой "руке".

В качестве главного камня пока взята плата "Искра" от амперки (она просто есть, разбираемся что и как может). Это будет "командный" процессор и он будет отправлять команды и собирать данные с датчиков и периферийных дунек. А каждая из них будет сама решать как ей крутить колеса согласно текущей ситуации и команде (в т.ч и функции ESC-контроллера пары бесколлекторников) .. или фиксировать вращение и "шагать" колесами на сервах.

Это как пример распараллеливания задачи.