Устройства Android сегодня настолько мощные, что вы можете фактически использовать их как автономный настольный компьютер. У меня есть старый ноутбук Acer 5515 с одноядерным процессором AMD, а также у меня есть четырехъядерный Android, и я хочу использовать его процессорную мощность (Android), чтобы повысить производительность моего ноутбука. Я искал в Google, но на данный момент никого нет. Так что может ли кто-нибудь здесь что-нибудь посоветовать? Я умею писать код на C# и Android, и я думал о передаче данных с помощью интерфейса USB/API.
решение1
Это фактически невозможно по нескольким причинам.
Прежде всего, это тот факт, что процессор вашего мобильного телефона и процессор ноутбука не имеют почти ничего общего. Они имеют совершенно разные архитектуры и несовместимы по коду. Любой код, который вы хотите запустить на одномне будетбыть в состоянии запустить другой безмногоработы.
Предположение, что ваш мобильный процессор такой же мощный, как и настольный, также является заблуждением. Процессоры мобильных телефонов созданы для низкого энергопотребления и обычно имеют процессоры мощностью <5 Вт, ноутбуки имеют процессоры мощностью >35 Вт, а настольные компьютеры — до 100 Вт. Эти цифры не просто означают, что настольные компьютеры чрезвычайно неэффективны, между мобильными и настольными процессорами существует разница в сложности на порядок.
Вы можете попытаться обратиться ко мне с тем, что они оба запускают Java, но Java — это интерпретируемый язык и требует JIT-компилятора на машине, на которой будет запускаться код. Этот компилятор должен быть адаптирован к архитектуре, на которой он запущен, и функции, поддерживаемые в одном, не обязательно будут поддерживаться в другом.
Даже если бы процессоры вашего телефона и ноутбука были архитектурно совместимы, это все равно непростая задача. Допустим, вы хотите, чтобы ваш телефон выполнял основную черновую работу по воспроизведению видео или чего-то еще. Декодирование видео не так просто, как вы думаете. В вашем телефоне есть специальное оборудование, способное декодировать видео, и если вы хотите посмотреть его на своем компьютере, вам придется отправлять обработанные данные обратно по сети на ваш компьютер. Это означает, что ему придется перекодировать их во что-то, ваш компьютермогкаким бы мощным вы ни считали свой мобильный телефон, эта задача достаточно сложна для многих настольных компьютеров и выходит далеко за рамки того, на что способен ваш мобильный телефон в режиме реального времени.
Вы не можете просто «упаковать» небольшие части работы и передать их куда-то еще, а затем получить их обратно без крупной инфраструктуры для ее поддержки. Причина, по которой Folding@Home делает это, заключается в том, что они могут упаковать выделенную часть программного обеспечения для запуска на каждой машине, а затем упаковать большие куски работы для каждой машины и отправить результат обратно. Для того, чтобы каждый «пакет» стоил разделения, он должен занять достаточно много времени, чтобы компенсировать стоимость упаковки в первую очередь. Не существует реалистичного способа, которым вы могли бы упаковать небольшой объем работы, например, для отображения веб-страницы, каким-либо образом, который был бы быстрее, чем просто сделать это на вашем ноутбуке в первую очередь.
решение2
Да, конечно, вы можете это сделать. Но только если у вас есть среда Linux на обоих устройствах. Если ваш мобильный процессор имеет более 4 ядер или, можно сказать, четырехъядерный. Потому что если их меньше 4, то нет смысла делать всю эту хрень. Вам нужно изучить Open MPI (открытый интерфейс передачи сообщений) для этого. Это библиотека C, разработанная Cisco и Amazon. Она также доступна на Java, но я предлагаю C, а не Java. Потому что C намного быстрее, чем Java, и здесь мы говорим о скорости. Open MPI обеспечивает распределенную обработку одной задачи. Вы также можете использовать более 1 смартфона. Где ваш один узел является главным узлом, обычно компьютер или ноутбук, а другие станут подчиненными узлами. Ваш главный узел будет решать задачу, распределять подчиненным узлам и получать вычисленные результаты от подчиненных. Вы даже можете использовать любой другой компьютер в качестве подчиненного. Но все равно это очень и очень сложная задача, потому что вам нужно разработать программу для главного, а также подчиненного узла для каждой отдельной задачи, которую вы хотите выполнить.
Извините, если я допустил грамматическую ошибку. Я не очень хорошо знаю английский.
Основная информация об Open MPI: https://en.wikipedia.org/wiki/Open_MPI
Запуск кластера MPI в локальной сети: http://mpitutorial.com/tutorials/running-an-mpi-cluster-within-a-lan/
Пример: 15418.courses.cs.cmu.edu/spring2013/article/22
Загрузить: www.open-mpi.org/software/ompi/v2.1/
решение3
На самом деле, это возможно, если у вас есть сервер сборки:-)
Лучший способ — установить полную среду Linux в Android. Приложение Complete Linux Installer может сделать это (root).
Но большинство дистрибутивов не предлагают кросс-компилятор. Кроме того, устройства ARM слишком слабы для обработки настольных задач.
Если вы хотите улучшить свой опыт компиляции, то да.
Но если судить по общему опыту, то это практически невозможно.
решение4
per software может быть возможно сделано, это должно быть конкретным и сделано per kernel element, так что, как вы закончите каждый, даже прежде, чем вы можете забыть, какую концепцию вы абстрагируете для конкретной сущности кодирования, вы уже набрали/скомпилировали, даже задокументировали исходный код. Это будет действительно кровавая задача, если вы распределите задачи всей системы, так что сделайте это по фрагментам, но сначала сделайте схему того, как система решает или расставляет приоритеты, что (в первую очередь) выделять вычислениям Затем кодируйте по агентскому устройству, ugh Было бы намного проще, если бы это было служебное программное обеспечение, распределяющее задачи вычислений ЦП, а главное устройство в этом случае действовало бы как сервер.