Android-Geräte sind heute so leistungsstark, dass Sie sie praktisch als eigenständigen Desktop verwenden können. Ich habe einen alten Acer 5515-Laptop mit einem Single-Core-AMD-Prozessor und außerdem einen Quad-Core-Android, und ich möchte dessen Prozessorleistung (Android) nutzen, um die Leistung meines Laptops zu steigern. Ich habe bei Google gesucht, aber bisher ist noch niemand da. Kann also jemand hier etwas vorschlagen? Ich kann in C# und Android programmieren und dachte daran, Daten über eine USB-Schnittstelle/API zu übertragen.
Antwort1
Dies ist aus mehreren Gründen praktisch unmöglich.
Zunächst einmal haben Handy-Prozessoren und Laptop-Prozessoren fast nichts gemeinsam. Sie sind völlig unterschiedliche Architekturen und nicht codekompatibel. Jeder Code, den Sie auf einem davon ausführen möchten,wird nichtin der Lage sein, den anderen zu betreiben, ohneeine Mengeder Arbeit.
Auch die Annahme, dass Ihr mobiler Prozessor so leistungsstark ist wie ein Desktop-Prozessor, ist ein Trugschluss. Handy-Prozessoren sind auf geringen Stromverbrauch ausgelegt und haben im Allgemeinen weniger als 5 Watt, Laptops haben mehr als 35 Watt und Desktops bis zu 100 Watt. Diese Zahlen bedeuten nicht nur, dass Desktop-Prozessoren massiv ineffizient sind, sondern es gibt auch einen um eine Größenordnung größeren Unterschied in der Komplexität zwischen mobilen und Desktop-Prozessoren.
Sie können versuchen, mir einzureden, dass beide Java ausführen, aber Java ist eine interpretierte Sprache und erfordert einen JIT-Compiler auf dem Rechner, der den Code ausführen soll. Dieser Compiler muss auf die Architektur zugeschnitten sein, auf der er ausgeführt wird, und Funktionen, die auf dem einen Compiler unterstützt werden, werden nicht unbedingt auch auf dem anderen unterstützt.
Selbst wenn die Prozessoren Ihres Telefons und Ihres Laptops architekturkompatibel wären, ist dies immer noch keine leichte Aufgabe. Angenommen, Sie möchten, dass Ihr Telefon die Hauptarbeit übernimmt, nämlich die Wiedergabe eines Videos oder Ähnlichem. Die Videodekodierung ist nicht so einfach, wie Sie denken. Ihr Telefon verfügt über dedizierte Hardware, die Videos dekodieren kann, und wenn Sie es auf Ihrem Computer ansehen möchten, müssen Sie die verarbeiteten Daten über das Netzwerk an Ihren Computer zurücksenden. Das bedeutet, dass es sie in etwas neu kodieren muss, das Ihr ComputerkönnteSo handhabbar und leistungsstark Sie Ihr Mobiltelefon auch einschätzen, diese Leistung ist für viele Desktops schon schwierig genug und geht weit über die Leistungsfähigkeit Ihres Mobiltelefons in Echtzeit hinaus.
Sie können nicht einfach kleine Arbeitspakete „verpacken“, sie an einen anderen Ort weiterleiten und sie dann zurückerhalten, ohne dass eine größere Infrastruktur vorhanden ist, die dies unterstützt. Folding@Home macht das, weil sie ein dediziertes Stück Software verpacken können, das auf jedem Rechner ausgeführt wird, und dann große Arbeitspakete für jeden Rechner verpacken und das Ergebnis zurücksenden können. Damit sich die Aufteilung jedes „Pakets“ lohnt, muss die Erstellung einigermaßen lange dauern, um die Kosten für die Verpackung überhaupt auszugleichen. Es gibt keine realistische Möglichkeit, die kleine Arbeitsmenge zu verpacken, um beispielsweise eine Webseite anzuzeigen, und zwar auf eine Weise, die schneller wäre, als dies einfach auf Ihrem Laptop zu tun.
Antwort2
Ja, das können Sie auf jeden Fall tun. Aber nur, wenn Sie auf beiden Geräten eine Linux-Umgebung haben. Wenn Ihr mobiler Prozessor mehr als 4 Kerne hat, oder sagen wir Quad-Core, dann hat dieser ganze Scheiß keinen Sinn. Sie müssen hierfür Open MPI (Open Message Passing Interface) lernen. Das ist eine C-Bibliothek, die von Cisco und Amazon entwickelt wurde. Sie ist auch in Java verfügbar, aber ich schlage C vor Java vor, denn C ist viel schneller als Java und hier sprechen wir von Geschwindigkeit. Open MPI ermöglicht die verteilte Verarbeitung einer einzelnen Aufgabe. Sie können auch mehr als ein Smartphone verwenden. Wobei Ihr ein Knoten der Masterknoten ist, normalerweise ein Computer oder Laptop, und die anderen werden zu Slaveknoten. Ihr Masterknoten entscheidet über die Aufgabe, verteilt sie an die Slaves und bekommt die berechneten Ergebnisse von den Slaves zurück. Sie können sogar jeden anderen Computer als Slave verwenden. Aber es ist trotzdem eine sehr, sehr schwierige Aufgabe, weil Sie für jede Aufgabe, die Sie ausführen möchten, ein Programm für den Master und auch für die Slaves entwickeln müssen.
Es tut mir leid, wenn ich einen Grammatikfehler gemacht habe. Ich kann nicht viel Englisch.
Grundlegende Informationen zu Open MPI: https://en.wikipedia.org/wiki/Open_MPI
Betrieb eines MPI-Clusters in einem LAN: http://mpitutorial.com/tutorials/running-an-mpi-cluster-within-a-lan/
Beispiel: 15418.courses.cs.cmu.edu/spring2013/article/22
Herunterladen: www.open-mpi.org/software/ompi/v2.1/
Antwort3
Tatsächlich ist es möglich, wenn Sie einen Build-Server haben:-)
Am besten ist es, eine vollständige Linux-Umgebung unter Android zu installieren. Dies kann eine App namens „Complete Linux Installer“ (Root) tun.
Die meisten Distributionen bieten jedoch keinen Cross-Compiler. Außerdem sind ARM-Geräte zu schwach, um Desktop-Aufgaben zu verarbeiten.
Wenn Sie Ihre Kompilierungserfahrung verbessern möchten, ja.
Aber wenn es um Gesamterfahrung geht, ist das fast unmöglich.
Antwort4
pro Software kann möglicherweise gemacht werden, es muss spezifisch sein und pro Kernelelement gemacht werden, damit Sie jedes fertigstellen, noch bevor Sie vielleicht vergessen, welches Konzept Sie für eine bestimmte Codierungseinheit abstrahiert haben, Sie haben den Quellcode bereits getippt/kompiliert, sogar dokumentiert. Es wird eine wirklich knifflige Aufgabe, wenn Sie Aufgaben des gesamten Systems verteilen würden, also machen Sie es pro Fragment, aber machen Sie zuerst eine Gliederung, wie das System entscheidet oder priorisiert, was (zuerst) mit der Berechnung belegt wird. Dann codieren Sie pro Agentengerät, pfui. Es wäre viel einfacher, wenn es sich um eine Dienstprogrammsoftware handelt, die CPU-Berechnungsaufgaben verteilt und das Mastergerät in diesem Fall wie ein Server fungiert.