Ещё немного про вычисления в программе Boinc на Android!
Полгода назад, на новогодних каникулах внезапно понял, что у меня простаивают аж 10 ядер - в планшете и смартфоне. Вроде бы не очень мощных, но, всё-таки 10! А может быть и не таких уж и слабых? Надо было проверить!
Проектов, рассылающих задания для Android немного, но уже тогда среди них были World Community Grid, Einstein@Home и SETI@home. На некоторое время появлялись задания и в Rosetta@Home.
Планшет начал обрабатывать workunit-ы SETI@home, а смартфон был подключен к WGC и Rosetta. С самого запуска вычислений экспериментальным путём искал ответы на вопросы:
1. Насколько мощные (или слабые) CPU в мобильных устройствах? Имеет ли вообще смысл их подключать?
2. Как будет вести себя устройство при наличии вычислительной нагрузки? Не будет ли зависать, как будет принимать сообщения, звонки и т.д.? Как вообще будет идти процесс вычислений, ведь это, всё-таки мобильное устройство?
3. Что будет с аппаратной платформой? Не "расплавится" ли? Не начнутся ли проблемы с аккумуляторами, о которых все так наслышаны?
И особенно из-за п. 3 поначалу было несколько страшновато.

В эксперименте участвовали:
Планшет Samsung Galaxy Tab 3 Lite SM-T111: CPU - 2 ядра Broadcom BCM21664T 1.2 ГГц, 1 Gb RAM, 8 Gb flash-памяти, Android 4.3, выпуска начала 2014 года;
Смартфон Samsung Galaxy A5 (2016): CPU - 8 ядер Samsung Exynos 7580 1.6 ГГц (технологический процесс - 28 нм), 2 Gb RAM, 16 Gb flash-памяти, Android сейчас обновлён уже до 7.0, выпуск первой половины 2016 года.
(Оба устройства, как вы видите были уже далеко не новые, что несколько снижало тревогу от предполагавшихся потерь от пункта № 3).
Очень краткие итоги (если кому интересно - могу дополнить в комментариях или в отдельной новости):
1. С устройствами ничего не произошло. Как и с ещё одним, добавившимся к ним чуть позже. Планшет (просто в силу того, что он большой, а CPU в нём - слабый) на ощуть кажется чуть-чуть теплее окружащей среды, но не более того. Смартфон - греется, но не перегревается из-за того, что при тёплой окружающей среде частота CPU сбрасывается до 1.2 ГГц. Зимой, на улице или подоконнике частота стабильно держалась на 1.6 ГГц. Так как для выполнения расчётов устройство должно быть подключено к зарядному устройству (USB или обычная розетка), а power bank с собой всё время носить не удобно (хотя иногда - специально для вычислений - брал с собой), то можно и оценить, как работает батарея при обычной работе смартфона. Как работала, так и работает. Заряд от ~ 15% до 0% падает довольно быстро, на насколько помню, примерно тоже самое было и в самом начале его эксплуатации. А вот если зарядить его до 100%, то за один час чтения заряд падает всего на несколько процентов (где-то 3 или 4). И это при том, что смартфон до этого уже работал в обычном режиме 2.5 года, а сейчас ему уже все 3. Приходя на работу втыкаю смартфон в USB-разъём компьютера и за несколько часов (хоть и при питании от USB), но при вычислительной нагрузке на все 8 ядер - он постепенно разряжается, а за час до ухода - подключаю его к розетке и он заряжается обратно до 100%.
2. Система работат нормально. При нагрузке на 8 ядер, переключения между окнами могут выполняться с небольшой (до 1 секунды) задержкой, каких-то проблем со звонками, мессенджерами, приложениями типа VK, 2Gis и т.д.- не замечено. При этом, когда на смартфон приходили задания Rosetta, они: а) иногда падали с ошибкой; б) замедления в работе смартфона становились более заметными; в) иногда задания начинали беспорядочно останавливаться и запускаться. Небольшое исследование ситуации в виде захода в "оптимизатор", показывающий занятость RAM показало, что никаких "глюков" и мистики в этом нет, просто задания от Rosetta@home по мере выполнения вычислений потребляют всё больше RAM из-за чего BOINC начинает останавливать одни задания и запускать другие, а из-за того, что общий объём свободной памяти в системе - уменьшается, смартфон и начинает работать медленнее. Иногда, видимо, в моменты, когда памяти становилось совсем мало (хоть BOINC и старался регулировать её потребление) задания от Rosetta и завершались с ошибкой. Тогда, получив несколько заданий от Rosetta (от 4 до 6) я просто блокировал получение новых и ошибки сразу исчезли. Возможно, что в более новых смартфонах (где RAM уже в разы больше) такой проблемы не будет вообще. Увы, сама Rosetta, сейчас задания под Android не выдаёт - нельзя проверить. Дня 3 назад временно перестали выдаваться задания для Android и со стороны World Community Grid (они были у под проекта Open Zika, который на некоторое время прекратил выдачу заданий, о чём уведомил участников на форуме: [
https://www.worldcommunitygrid.org/f...wcg/viewthr..] ) и сейчас все задействованные у меня Android-устройства дружно считают SETI@home.
3. Вычислительная мощность смартфона на 8-ядерном, 1.6 ГГц Exynos 7580 (технология 28 нм), оказалась примерно равной вычислительной мощности 2-ядерного AMD APU A6-6400K 3.9 ГГц (архитектура Richland, технология 32 нм, выпущен в середине 2013 года). В холодное время года - выработка была повыше (т.к. больше времени он работал на частоте 1.6 ГГц), в тёплое время - может быть и пониже. Но компьютер работает 24/7, а вот смартфон не всегда "на зарядке».
Да, CPU с архитектурой Richland - не самый сильный соперник. Но, если в 2016 году, только что выпущенный CPU Samsung-а был примерно на том же техпроцессе, что и CPU от AMD образца 2013 года, то сейчас ситуация значительно изменилась - вовсю продаются устройства на ARM, созданных по "технологии" 14 нм и 10 нм, а "7-нанометровые Ryzen" только поступают в продажу.
Не напоминает ли вам это то, что в истории вычислительной техники были уже не раз?