BOINC@ARM: Unterschied zwischen den Versionen
Koschi (Diskussion | Beiträge) |
Koschi (Diskussion | Beiträge) |
||
(30 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
− | Von Nischenbetriebssystemen abgesehen teilt sich die ARM Welt grob in 2 Teile. Der Großteil der ARM Systeme kommt sicherlich mit Android vorinstalliert, schlanke Linuxbasierte ARM-Systeme sind jedoch ebenfalls breit verfügbar. Letztere lassen sich einfach für eigene (Selbstbau-)Projekte verwenden und sind daher bei Bastlern beliebt. | + | Von Nischenbetriebssystemen abgesehen, teilt sich die ARM Welt grob in 2 Teile. Der Großteil der ARM Systeme kommt sicherlich mit Android vorinstalliert, schlanke Linuxbasierte ARM-Systeme sind jedoch ebenfalls breit verfügbar. Letztere lassen sich einfach für eigene (Selbstbau-)Projekte verwenden und sind daher bei Bastlern beliebt. |
Obwohl Android im Kern auf Linux basiert, kann es keine Linux@ARM Anwendungen ausführen, das gleiche gilt im Umkehrfall. Im Idealfall bietet ein Projekt also für beide Umgebungen eigene Anwendungen an. | Obwohl Android im Kern auf Linux basiert, kann es keine Linux@ARM Anwendungen ausführen, das gleiche gilt im Umkehrfall. Im Idealfall bietet ein Projekt also für beide Umgebungen eigene Anwendungen an. | ||
+ | ===Welche Projekte laufen auf Android/Linux@ARM=== | ||
+ | |||
+ | Folgende Übersicht basiert auf der offiziellen BOINC Projektübersicht erweitert um bekannte 3rd party apps. | ||
+ | Soweit bekannt, darf hier eine grobe Einordung Projektintern (ARM vs. x86) sowie zwischen den Projekten vorgenommen werden. Bei Android wird primär zwischen non-PIE and PIE (Position Independend Executable - Vorraussetzung für Android => 5) Versionen unterschieden. non-PIE Versionen laufen unter Android 5 und 6 nicht mehr, brechen daher mit Berechnungsfehlern ab. | ||
+ | |||
+ | |||
+ | {| | ||
+ | | '''Projekt''' || '''Plattform''' || '''Anwendung''' || '''Effizienz/Ausschüttung''' || '''Kommentar''' | ||
+ | |- | ||
+ | | [https://albert.phys.uwm.edu/apps.php Albert@home] || [[Bild:Android_robot.png]] || Binary Radio Pulsar Search || || PIE & non-PIE jeweils mit NEON verfügbar | ||
+ | |- | ||
+ | | [https://albert.phys.uwm.edu/apps.php Albert@home] || [[Bild:Logo_Linux.gif]] || Binary Radio Pulsar Search || || plain oder mit NEON Support | ||
+ | |- | ||
+ | | [http://asteroidsathome.net/boinc/apps.php Asteroids] || [[Bild:Android_robot.png]] || Period Search Application || Sehr schlecht! || PIE & non-PIE | ||
+ | |- | ||
+ | | [http://asteroidsathome.net/boinc/apps.php Asteroids] || [[Bild:Logo_Linux.gif]] || Period Search Application || Im Projektkontext schlecht, jedoch markant mehr als bei WCG || | ||
+ | |- | ||
+ | | [http://boinc.thesonntags.com/collatz/apps.php Collatz] || [[Bild:Android_robot.png]] || Micro Collatz Conjecture || || Apps für Android@ ARM, x86 und MIPS! | ||
+ | |- | ||
+ | | [http://boinc.thesonntags.com/collatz/apps.php Collatz] || [[Bild:Logo_Linux.gif]] || Micro Collatz Conjecture || || | ||
+ | |- | ||
+ | | [http://boinc.thesonntags.com/collatz/apps.php Collatz] || [[Bild:Android_robot.png]] || Collatz Sieve || Gut || PIE und non-PIE support, läuft damit auf Android 4 und 5 | ||
+ | |- | ||
+ | | [http://csgrid.org/csg/apps.php CSGRID] || [[Bild:Android_robot.png]] || SubsetSUM || Sehr gut || Läuft nur bis Android 4.4 (non-PIE) | ||
+ | |- | ||
+ | | [http://csgrid.org/csg/apps.php CSGRID] || [[Bild:Logo_Linux.gif]] || SubsetSUM || Gut || 3rd party app, erfordert app_info.xml | ||
+ | |- | ||
+ | | [https://einstein.phys.uwm.edu/apps.php Einstein] || [[Bild:Android_robot.png]] || Binary Radio Pulsar Search (Arecibo) || Gering || PIE & non-PIE verfügbar, +vfp, +neon | ||
+ | |- | ||
+ | | [https://einstein.phys.uwm.edu/apps.php Einstein] || [[Bild:Logo_Linux.gif]] || Binary Radio Pulsar Search (Arecibo) || Leicht besser als Android || plain oder mit NEON Support | ||
+ | |- | ||
+ | | [http://www.enigmaathome.net/apps.php Enigma] || [[Bild:Android_robot.png]] ||Enigma 0.76b ||Sehr gut || Läuft nur bis Android 4.4 (non-PIE) | ||
+ | |- | ||
+ | | [http://www.enigmaathome.net/apps.php Enigma] || [[Bild:Logo_Linux.gif]] ||Enigma 0.76b ||Gut || | ||
+ | |- | ||
+ | | [http://findah.ucd.ie/apps.php FiND@Home] || [[Bild:Logo_Linux.gif]] || Autodock Vina || || | ||
+ | |- | ||
+ | | [http://goofyxgridathome.net/apps.php GoofyxGrid@Home] || [[Bild:Android_robot.png]] || Monkeys v1 - Random generator A || NCI - minimale Credits || PIE & non-PIE | ||
+ | |- | ||
+ | | [http://goofyxgridathome.net/apps.php GoofyxGrid@Home] || [[Bild:Android_robot.png]] || Monkeys v2 - Word seeker A || NCI - minimale Credits || PIE & non-PIE | ||
+ | |- | ||
+ | | [http://goofyxgridathome.net/apps.php GoofyxGrid@Home] || [[Bild:Logo_Linux.gif]] || Monkeys v1 - Random generator A || NCI - minimale Credits || | ||
+ | |- | ||
+ | | [http://goofyxgridathome.net/apps.php GoofyxGrid@Home] || [[Bild:Logo_Linux.gif]] || Monkeys v2 - Word seeker A || NCI - minimale Credits || | ||
+ | |- | ||
+ | | [http://www.gpugrid.net/apps.php GPUgrid] || [[Bild:Android_robot.png]] || Android || || | ||
+ | |- | ||
+ | | [http://moowrap.net/apps.php Moo! Wrapper] || [[Bild:Android_robot.png]] ||Distributed.net Client || || ARMv7, PIE & non-PIE | ||
+ | |- | ||
+ | | [http://radioactiveathome.org/boinc/apps.php Radioactive@home] || [[Bild:Logo_Linux.gif]] || Radioactivity Monitor || NCI - ohne Credits || | ||
+ | |- | ||
+ | | [http://boinc.bakerlab.org/rosetta/apps.php Rosetta] || [[Bild:Android_robot.png]] || Rosetta Mini for Android || Mittelmaßig, über WCG Niveau || Läuft mit Berkely BOINC auf Android 4 & 5<br />Lässt sich nicht im NativeBOINC hinzufügen (Zertifikatsproblem) | ||
+ | |- | ||
+ | | [http://qcn.caltech.edu/sensor/apps.php Quake-Catcher Network] || [[Bild:Android_robot.png]] || QCN Sensor || NCI - ohne Credits || | ||
+ | |- | ||
+ | | [http://qcn.caltech.edu/sensor/apps.php Quake-Catcher Network] || [[Bild:Logo_Linux.gif]] || QCN Sensor || NCI - ohne Credits || | ||
+ | |- | ||
+ | | [http://setiathome.berkeley.edu/apps.php SETI@home] || [[Bild:Android_robot.png]] || SETI@home v8 || Gering || Zahlreiche PIE & nonPIE, ARMv6+v7, vfp&neon Versionen für Android@ARM <br /> PIE & nonPIE für Android x86 verfügbar | ||
+ | |- | ||
+ | | [http://setiathome.berkeley.edu/apps.php SETI@home] || [[Bild:Logo_Linux.gif]] || SETI@home v8 || Gering || Teils als Paket in Distributionen vorhanden, das aktuelle orginal lohnt i.d.R. aber mehr | ||
+ | |- | ||
+ | | [http://pogs.theskynet.org/pogs/apps.php Skynet POGS] || [[Bild:Android_robot.png]] || fitsedwrapper || Gute Ausbeute und Effizienz || PIE & non-PIE verfügbar | ||
+ | |- | ||
+ | | [http://pogs.theskynet.org/pogs/apps.php Skynet POGS] || [[Bild:Logo_Linux.gif]] || fitsedwrapper || Gut - Sehr gut || 3rd party app, erfordert app_info.xml | ||
+ | |- | ||
+ | | [http://universeathome.pl/universe/apps.php Universe] || [[Bild:Android_robot.png]] ||Universe X-ray sources || Lange Laufzeiten - Geringe Ausbeute, <br />lohnt gegenüber BHspin und ULX nicht || | ||
+ | |- | ||
+ | | [http://universeathome.pl/universe/apps.php Universe] || [[Bild:Logo_Linux.gif]] || BHspin || Hohe Ausbeute, gute Effizienz || | ||
+ | |- | ||
+ | | [http://universeathome.pl/universe/apps.php Universe] || [[Bild:Logo_Linux.gif]] || ULX || Noch besser als BHspin, <br />nur selten WUs verfügbar || | ||
+ | |- | ||
+ | | [http://www.worldcommunitygrid.org/help/viewTopic.do?shortName=minimumreq WCG] || [[Bild:Android_robot.png]] || Outsmart Ebola together || Ordentlich, über ZIKA || | ||
+ | |- | ||
+ | | [http://www.worldcommunitygrid.org/help/viewTopic.do?shortName=minimumreq WCG] || [[Bild:Android_robot.png]] || OpenZika || Mittelmäßig || | ||
+ | |- | ||
+ | | [http://bearnol.is-a-geek.com/wanless2/apps.php WEP-M+2 Project] || [[Bild:Logo_Linux.gif]] || Random-base WEP Factorization || Gut || | ||
+ | |- | ||
+ | | [http://www.rechenkraft.net/yoyo/apps.php yoyo@home] || [[Bild:Android_robot.png]] || Cruncher ogr || || | ||
+ | |- | ||
+ | | [http://www.rechenkraft.net/yoyo/apps.php yoyo@home] || [[Bild:Logo_Linux.gif]] || Cruncher ogr || || 3 Versionen für Linux verfügbar, Unterschied unklar | ||
+ | |} | ||
+ | |||
+ | ===Welche Projekte laufen am besten=== | ||
+ | |||
+ | Analog zur x86 Welt profitieren jene Projekte am meisten, die eine gute Linuxunterstützung haben. | ||
+ | Universe@home und SubsetSum@Home (ein Citizen Science Grid Unterprojekt) laufen unter Linux signifikant schneller, eine schnelle ARM CPU kann es hier fast mit Windows basierten Hosts aufnehmen. | ||
+ | Projekte wie WCG oder WuProp (die interne Medaillen vergeben), profitieren natürlich ebenfalls von vielen, wenn auch langsameren Kernen. | ||
==Welche Projekte unterstützen ARM== | ==Welche Projekte unterstützen ARM== | ||
Zeile 20: | Zeile 107: | ||
Jenseits der offiziellen seitens des Projektes, gibt es auch im ARM Umfeld die Möglichkeit selbst kompilierte oder gar optimierte Anwendungen per app_info.xml zu verwenden. | Jenseits der offiziellen seitens des Projektes, gibt es auch im ARM Umfeld die Möglichkeit selbst kompilierte oder gar optimierte Anwendungen per app_info.xml zu verwenden. | ||
So hält (Stand Mai 2016) der Blog Burde View [http://burdeview.blogspot.de/p/raspberry-pi-boinc-project-ive-created.html] zB. Linux@ARM Anwendungen für die Projekte Subset SUM, theSkyNetPOGS & Milkyway@home bereit. | So hält (Stand Mai 2016) der Blog Burde View [http://burdeview.blogspot.de/p/raspberry-pi-boinc-project-ive-created.html] zB. Linux@ARM Anwendungen für die Projekte Subset SUM, theSkyNetPOGS & Milkyway@home bereit. | ||
+ | |||
+ | |||
+ | ==Welche Hardware ist empfehlenswert== | ||
+ | |||
+ | Natürlich ist jede abgelieferte Arbeitseinheit wichtig, langfristig zählt für viele Cruncher aber auch die Effizienz bzw. wieviel Durchsatz pro eingesetztem € möglich ist. | ||
+ | |||
+ | Neben den Anschaffungskosten für den Minicomputer, kommen hier i.d.R. noch eine hochwertige SD Karte, die Stromversorgung (1x 2A USB Port + Kabel), ein LAN-Kabel und auch ein Switch Port hinzu. Gehen wir einmal von zusammen 15€ für diese zusätzlichen Komponenten aus. | ||
+ | Da diese Kosten pro Platine anfallen, relativieren sie den Preis von vermeintlichen "Schnäppchen" wie zB. dem Orange Pi PC. | ||
+ | |||
+ | Letzterer wird zb. als Quad Core 1.6GHz verkauft, läuft aber nur mit 1.2GHz und großzügiger passiver Kühlung "BOINC-stabil". Der verbaute Allwinner H3 Prozessor basiert zudem auf relativ langsamen ARM Cortex A7 Kernen. Alles in allem bleibt eine Geschwindigkeit zwischen Raspberry Pi 2 und 3. Hochtaktende A53 Kerne (64bit ARMv8) oder gar die performanten Cortex A15 & A17 (32bit ARMv7) sowie Cortex A57 & A72 Kerne (64bit ARMv8) rechnen nicht selten um den Faktor 2 schneller. Um auf deren Produktionsrate zu kommen, müssten mindestens 2 Orange Pi PC (je 14€) eingesetzt werden. Dazu kommen je 2 mal Speicher, Energie und Netzwerk. Schnell sind 58€ zusammengekommen. Ein einzelner, jedoch ebenso schneller Odroid C2 mit 4 Cortex A53 Kernen (2GHz) würde mit ca. 63€ zu Buche schlagen, seinen Passivkühler bereits mitbringen und den halben Administrationsaufwand bedeuten. | ||
+ | Ähnlich könnte man nun den Odroid C2 gegen den Odroid XU4 abwägen, letzterer nutzt einen 8-Kern Prozessor der auf 4 Cortex A15 2Ghz und 4 Cortex A7 Kerne zurückgreifen kann. Damit zeigt er ca. den 1.5x-2x Durchsatz bei knapp dem doppelten Preis, ohne bisher die Speicher und die Kabelei berücksichtigt zu haben. | ||
+ | |||
+ | Wie auch in der x86-Welt gilt es zu vergleichen, um schließlich den besten Prozessor + Ecosystem zum angemessenen Preis zu finden. | ||
+ | Zur groben Einordnung der per-Core-Performance bitte folgenden Artikel konsultieren: [http://www.cnx-software.com/2015/04/09/relative-performance-of-arm-cortex-a-32-bit-and-64-bit-cores/ Relative performance of ARM Cortex 32bit and 64bit cores] | ||
+ | |||
+ | |||
+ | Grob lässt sich sagen dass Stand 2016 minimum Quad Core Cortex A9 (zB. Amlogic S812) oder A53 (Amlogic S905) empfehlenswert sind, besser noch Quad Core A17 (Rockchip RK3288), Octa Core A53 (Rockchip RK3368) oder BIG.little CPUs wie der Mediatek MT8693, die 2 sehr schnelle A72 und 4 gute A53 Kerne bieten. | ||
+ | |||
+ | |||
+ | Folgend eine grobe Einschätzung aktuell verfügbarer Systeme (work in progress): | ||
+ | |||
+ | |||
+ | '''Single board computer''' | ||
+ | {| | ||
+ | |Name||Prozessor||RAM||OS||Einschätzung | ||
+ | |- | ||
+ | | Orange Pi One<br /> Orange Pi Mini <br /> Orange Pi PC<br />Orange Pi 2<br />Orange Pi Plus ||Allwinner H3<br /> 4x1.6GHz A7 || 0.5-2 GB || Linux & Android 4.4 ||Eher schlechte Performance (zwischen RPi2 und 3), läuft nur mit 1.2GHz stabil. <br />Linuxkernel 3.4 zu alt für Collatz. <br />Kaum Herstellersupport. <br />Vertrieb nur über aliexpress. | ||
+ | |- | ||
+ | | Raspberry Pi 2||Broadcom BCM2836 <br />4x 0.9GHz A7 || 1 GB || Linux ||Eher schlechte Performance, neu kaufen lohnt angesichts des verfügbaren Pi3 nicht | ||
+ | |- | ||
+ | | Raspberry Pi 3||Broadcom BCM2837 <br /> 4x 1.2GHz A53 || 1 GB || Linux ||Mittlere Performance, ansonsten das ARM-Referenzsystem schlechthin. | ||
+ | Alle Linux@ARM Projekte sollten problemlos laufen | ||
+ | |- | ||
+ | | Odroid XU4 || SAMSUNG Exynos 5422 <br />4x2.0 GHz A15 +<br />4x 1.4GHz A7 || 2 GB || Linux & Android 4.4 || Sehr gute Performance, derzeit schnellstes Board am Markt. <br />Benötigt Aktivkühlung. | ||
+ | |- | ||
+ | | Odroid U3 || Samsung Exynos 4412 <br /> 4x1.7 GHz A9 || 2 GB || Linux & Android 4.4 || Gute Performance, Aktivkühlung notwendig | ||
+ | |- | ||
+ | | Odroid C2 || Amlogic S905 <br /> 4x2.0 GHz A53 || 2 GB || Linux & Android 5.1 || Gute Performance, 64bit Plattform erfordert teils app_info.xml um Arbeit zu bekommen | ||
+ | |- | ||
+ | | Banana PI M1, M1+, M2, M2+, M3|| Allwinner CPU mit 2-8x A7 || 1-2 GB || Linux & Android || Eher lahm, M3 durch Octacore evtl. akzeptabel. Android buggy. Alter Linuxkernel 3.4. | ||
+ | |- | ||
+ | | Nvidia Jetson TK1 || Tegra K1 SOC <br />4x2.32 GHz A15 || 2 GB || Linux || Sehr gute Performance, leider teuer<br />192 SM3.2 CUDA cores noch ungenutzt | ||
+ | |- | ||
+ | | || || || || || | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Android TV Boxen & Sticks''' | ||
+ | {| | ||
+ | |Name||Prozessor||RAM||OS||Einschätzung | ||
+ | |- | ||
+ | | Z68 TV Box || RK3368 8x1.5GHz A53 || 2 GB || Android 5.1 || 1.5GHz nur als Turbo bei geringer Gesamtlast. Vollast nur bei ~816MHz stabil. FAIL. | ||
+ | |- | ||
+ | | Q8 TV Box || RK3288 4x1.8GHz A17 || 2 GB || Android 4.4 || Sehr schnell, einfache Verwaltung durch NativeBOINC <br /> Passivkühler verwenden! | ||
+ | |- | ||
+ | | || || || || | ||
+ | |- | ||
+ | | || || || || | ||
+ | |} | ||
+ | |||
+ | |||
+ | Androidboards oder TV-Boxen basierend auf Intel Prozessoren sind derzeit nicht zu empfehlen, es gibt für diese keine BOINC-Anwendungen. | ||
+ | |||
+ | == Performanceübersicht == | ||
+ | |||
+ | Die folgende Tabelle soll einmal die tatsächliche Performance der Platinen und Architekturen aufzeigen. Da zB. POGS WUs variabler Länge (jedoch mit festen Credit Ratio) hat, aber auch Prozessoren auf das BIG.little Konzept setzen, sehen wir davon ab tatsächliche Laufzeiten anzugeben, sondern verwenden den maximal möglichen Durchsatz per Core und Gesamtsystem in Credits als Referenz. Stand Juni 2016: | ||
+ | {| | ||
+ | | System || CPU || OS || SubsetSum<br /> C/d/Core || SubsetSum<br /> C/d || POGS<br /> C/d/Core || POGS<br /> C/d || PRJ C || PRJ C || PRJ D || PRJ D | ||
+ | |- | ||
+ | | Orange Pi (H3) (¹)|| 4x1.2 GHz A7 || [[Bild:Logo_Linux.gif]] || 280 || '''1120''' || 288 || '''1152''' || || || || | ||
+ | |- | ||
+ | | Raspberry Pi 3 (¹) || 4x1.2 GHz A53 || [[Bild:Logo_Linux.gif]] || 330 || '''1320''' || 420 || '''1680''' || || || || | ||
+ | |- | ||
+ | | Odroid C2 (²)|| 4x2.0 GHz A53 || [[Bild:Logo_Linux.gif]] || 431 || '''1724''' || 480 || '''1920''' || || || || | ||
+ | |- | ||
+ | | Odroid U3 (²)|| 4x1.7 GHz A9 || [[Bild:Logo_Linux.gif]] || 782 || '''3128''' || 620 || '''2480''' || || || || | ||
+ | |- | ||
+ | | Q8 Box (RK3288) (¹) || 4x1.78 Hz A17 || [[Bild:Android_robot.png]] || 941 || '''3764''' || 740 || '''2960''' || || || || | ||
+ | |- | ||
+ | | Odroid XU4 (²)|| 4x 2.0 GHz A15 +<br />4x 1.4GHz A7 || [[Bild:Logo_Linux.gif]]<br />[[Bild:Android_robot.png]] || 466<br /><br />962 || '''3728'''<br /><br />'''7696''' || 594 || '''4752''' || || || || | ||
+ | |- | ||
+ | | Nivida Jetson TK1 (¹) || 4x2.32 GHz A15|| [[Bild:Logo_Linux.gif]]<br />[[Bild:Android_robot.png]] || 885<br /><br />1880 || '''3540'''<br /><br />'''7520''' ||<br /> || <br /> || || || || | ||
+ | |- | ||
+ | | || || || || || || || || || || | ||
+ | |- | ||
+ | | || || || || || || || || || || | ||
+ | |- | ||
+ | | Intel Core 2 Q9550 || 4x2.83 GHz || [[Bild:Logo_Linux.gif]] || 1281 || '''5124''' || 2170 || '''8680''' || || || || | ||
+ | |} | ||
+ | |||
+ | Teils basieren die Daten auf einzelnen Hosts mit wenigen Resultaten, teils auf dutzenden Hosts mit tausenden von Resultaten. | ||
+ | Die Auswertung erfolgte automatisiert. | ||
+ | (¹) geringe Datenbasis | ||
+ | (²) umfangreiche Datenbasis | ||
+ | Die Performance nicht gelisteter Platinen lässt sich hieraus teilweise ableiten. Mit Raspberry Pi 3 und C2 als Basis, ist anzunehmen dass ein 8 Kern 1.5GHz A53 wohl ca. 3000 Punkte täglich bei SubsetSum bringen könnte. Tendenziell eher weniger als mehr, da verfügbare Speicherbandbreiten durch mehr Kerne geteilt werden müssen. Die Performance eines Dualcore A7 (zB. Banana Pi) wird hingegen bei ca. der Hälfte der Orange Pi Performance liegen. | ||
==Tipps und Tricks== | ==Tipps und Tricks== | ||
− | + | ===BOINC auf Android installieren=== | |
+ | Stand Mai 2016 gibt es 2 BOINC Clients für die Android Plattform, beide können über den Google Play Store bezogen werden. Langfristig "empfehlenswert" ist derzeit der offizielle | ||
+ | [https://play.google.com/store/apps/details?id=edu.berkeley.boinc BOINC Client aus Berkeley]. | ||
+ | Leider fehlen hier gegenüber dem großen BOINC Einstellungsmöglichkeiten und auch der RPC Zugriff zur Fernverwaltung. | ||
− | = | + | |
+ | [https://play.google.com/store/apps/details?id=sk.boinc.nativeboinc NativeBOINC] - seit 2013 nicht mehr weiterentwickelt, läuft daher nicht auf aktuellen Android Versionen (> 5.0). | ||
+ | Wer noch Geräte mit altem Softwarestand hat, kann sich auf umfangreichere Einstellungsmöglichkeiten und auch RPC Zugriff freuen. | ||
===32bit Anwendungen auf 64bit Linux OS verwenden=== | ===32bit Anwendungen auf 64bit Linux OS verwenden=== | ||
Zeile 48: | Zeile 235: | ||
Für Yoyo sollte auch das Paket 'libsfstdc++6' nachinstalliert werden. | Für Yoyo sollte auch das Paket 'libsfstdc++6' nachinstalliert werden. | ||
+ | |||
===Einstein@home einrichten bei nicht erkannter NEON Unterstützung=== | ===Einstein@home einrichten bei nicht erkannter NEON Unterstützung=== | ||
Zeile 91: | Zeile 279: | ||
Bereits für ältere Anwendungsversionen geladene Workunits gehen hierbei verloren, es sind neue anzufordern. | Bereits für ältere Anwendungsversionen geladene Workunits gehen hierbei verloren, es sind neue anzufordern. | ||
− | |||
− | |||
==Anregungen für Unterartikel== | ==Anregungen für Unterartikel== |
Aktuelle Version vom 5. Juli 2016, 08:26 Uhr
BOINC auf der ARM Plattform
ARM Prozessoren finden sich heutzutage in immer größerer Zahl in immer mehr Einsatzbereichen wieder. Seien es Smartphones, set-top Boxen, NAS oder Single Board Computer wie der Raspberry Pi, ihre Zahl wächst ständig. Oft verfügen diese Geräte bereits über Multikernprozessoren und laufen dank geringem Energieverbrauch mehr oder weniger 24/7, damit eigentlich ideal für BOINC.
Von Nischenbetriebssystemen abgesehen, teilt sich die ARM Welt grob in 2 Teile. Der Großteil der ARM Systeme kommt sicherlich mit Android vorinstalliert, schlanke Linuxbasierte ARM-Systeme sind jedoch ebenfalls breit verfügbar. Letztere lassen sich einfach für eigene (Selbstbau-)Projekte verwenden und sind daher bei Bastlern beliebt.
Obwohl Android im Kern auf Linux basiert, kann es keine Linux@ARM Anwendungen ausführen, das gleiche gilt im Umkehrfall. Im Idealfall bietet ein Projekt also für beide Umgebungen eigene Anwendungen an.
Welche Projekte laufen auf Android/Linux@ARM
Folgende Übersicht basiert auf der offiziellen BOINC Projektübersicht erweitert um bekannte 3rd party apps. Soweit bekannt, darf hier eine grobe Einordung Projektintern (ARM vs. x86) sowie zwischen den Projekten vorgenommen werden. Bei Android wird primär zwischen non-PIE and PIE (Position Independend Executable - Vorraussetzung für Android => 5) Versionen unterschieden. non-PIE Versionen laufen unter Android 5 und 6 nicht mehr, brechen daher mit Berechnungsfehlern ab.
Projekt | Plattform | Anwendung | Effizienz/Ausschüttung | Kommentar |
Albert@home | Binary Radio Pulsar Search | PIE & non-PIE jeweils mit NEON verfügbar | ||
Albert@home | Binary Radio Pulsar Search | plain oder mit NEON Support | ||
Asteroids | Period Search Application | Sehr schlecht! | PIE & non-PIE | |
Asteroids | Period Search Application | Im Projektkontext schlecht, jedoch markant mehr als bei WCG | ||
Collatz | Micro Collatz Conjecture | Apps für Android@ ARM, x86 und MIPS! | ||
Collatz | Micro Collatz Conjecture | |||
Collatz | Collatz Sieve | Gut | PIE und non-PIE support, läuft damit auf Android 4 und 5 | |
CSGRID | SubsetSUM | Sehr gut | Läuft nur bis Android 4.4 (non-PIE) | |
CSGRID | SubsetSUM | Gut | 3rd party app, erfordert app_info.xml | |
Einstein | Binary Radio Pulsar Search (Arecibo) | Gering | PIE & non-PIE verfügbar, +vfp, +neon | |
Einstein | Binary Radio Pulsar Search (Arecibo) | Leicht besser als Android | plain oder mit NEON Support | |
Enigma | Enigma 0.76b | Sehr gut | Läuft nur bis Android 4.4 (non-PIE) | |
Enigma | Enigma 0.76b | Gut | ||
FiND@Home | Autodock Vina | |||
GoofyxGrid@Home | Monkeys v1 - Random generator A | NCI - minimale Credits | PIE & non-PIE | |
GoofyxGrid@Home | Monkeys v2 - Word seeker A | NCI - minimale Credits | PIE & non-PIE | |
GoofyxGrid@Home | Monkeys v1 - Random generator A | NCI - minimale Credits | ||
GoofyxGrid@Home | Monkeys v2 - Word seeker A | NCI - minimale Credits | ||
GPUgrid | Android | |||
Moo! Wrapper | Distributed.net Client | ARMv7, PIE & non-PIE | ||
Radioactive@home | Radioactivity Monitor | NCI - ohne Credits | ||
Rosetta | Rosetta Mini for Android | Mittelmaßig, über WCG Niveau | Läuft mit Berkely BOINC auf Android 4 & 5 Lässt sich nicht im NativeBOINC hinzufügen (Zertifikatsproblem) | |
Quake-Catcher Network | QCN Sensor | NCI - ohne Credits | ||
Quake-Catcher Network | QCN Sensor | NCI - ohne Credits | ||
SETI@home | SETI@home v8 | Gering | Zahlreiche PIE & nonPIE, ARMv6+v7, vfp&neon Versionen für Android@ARM PIE & nonPIE für Android x86 verfügbar | |
SETI@home | SETI@home v8 | Gering | Teils als Paket in Distributionen vorhanden, das aktuelle orginal lohnt i.d.R. aber mehr | |
Skynet POGS | fitsedwrapper | Gute Ausbeute und Effizienz | PIE & non-PIE verfügbar | |
Skynet POGS | fitsedwrapper | Gut - Sehr gut | 3rd party app, erfordert app_info.xml | |
Universe | Universe X-ray sources | Lange Laufzeiten - Geringe Ausbeute, lohnt gegenüber BHspin und ULX nicht |
||
Universe | BHspin | Hohe Ausbeute, gute Effizienz | ||
Universe | ULX | Noch besser als BHspin, nur selten WUs verfügbar |
||
WCG | Outsmart Ebola together | Ordentlich, über ZIKA | ||
WCG | OpenZika | Mittelmäßig | ||
WEP-M+2 Project | Random-base WEP Factorization | Gut | ||
yoyo@home | Cruncher ogr | |||
yoyo@home | Cruncher ogr | 3 Versionen für Linux verfügbar, Unterschied unklar |
Welche Projekte laufen am besten
Analog zur x86 Welt profitieren jene Projekte am meisten, die eine gute Linuxunterstützung haben. Universe@home und SubsetSum@Home (ein Citizen Science Grid Unterprojekt) laufen unter Linux signifikant schneller, eine schnelle ARM CPU kann es hier fast mit Windows basierten Hosts aufnehmen. Projekte wie WCG oder WuProp (die interne Medaillen vergeben), profitieren natürlich ebenfalls von vielen, wenn auch langsameren Kernen.
Welche Projekte unterstützen ARM
Erste Anlaufstelle kann die offizielle BOINC Projektübersicht sein. [1] Projekte mit Androidunterstützung sind dort mit dem grünen Androidroboter, Anwendungen für Linux@ARM (Raspberry Pi, Odroid u.a.) mit einer Himbeere gekennzeichnet.
Auch WUProp gibt Aufschluss welche Projekte auf ARM laufen, zudem weist es die Rechenzeiten auf verschiedenen Geräten aus.
[2]
Jenseits der offiziellen seitens des Projektes, gibt es auch im ARM Umfeld die Möglichkeit selbst kompilierte oder gar optimierte Anwendungen per app_info.xml zu verwenden.
So hält (Stand Mai 2016) der Blog Burde View [3] zB. Linux@ARM Anwendungen für die Projekte Subset SUM, theSkyNetPOGS & Milkyway@home bereit.
Welche Hardware ist empfehlenswert
Natürlich ist jede abgelieferte Arbeitseinheit wichtig, langfristig zählt für viele Cruncher aber auch die Effizienz bzw. wieviel Durchsatz pro eingesetztem € möglich ist.
Neben den Anschaffungskosten für den Minicomputer, kommen hier i.d.R. noch eine hochwertige SD Karte, die Stromversorgung (1x 2A USB Port + Kabel), ein LAN-Kabel und auch ein Switch Port hinzu. Gehen wir einmal von zusammen 15€ für diese zusätzlichen Komponenten aus. Da diese Kosten pro Platine anfallen, relativieren sie den Preis von vermeintlichen "Schnäppchen" wie zB. dem Orange Pi PC.
Letzterer wird zb. als Quad Core 1.6GHz verkauft, läuft aber nur mit 1.2GHz und großzügiger passiver Kühlung "BOINC-stabil". Der verbaute Allwinner H3 Prozessor basiert zudem auf relativ langsamen ARM Cortex A7 Kernen. Alles in allem bleibt eine Geschwindigkeit zwischen Raspberry Pi 2 und 3. Hochtaktende A53 Kerne (64bit ARMv8) oder gar die performanten Cortex A15 & A17 (32bit ARMv7) sowie Cortex A57 & A72 Kerne (64bit ARMv8) rechnen nicht selten um den Faktor 2 schneller. Um auf deren Produktionsrate zu kommen, müssten mindestens 2 Orange Pi PC (je 14€) eingesetzt werden. Dazu kommen je 2 mal Speicher, Energie und Netzwerk. Schnell sind 58€ zusammengekommen. Ein einzelner, jedoch ebenso schneller Odroid C2 mit 4 Cortex A53 Kernen (2GHz) würde mit ca. 63€ zu Buche schlagen, seinen Passivkühler bereits mitbringen und den halben Administrationsaufwand bedeuten. Ähnlich könnte man nun den Odroid C2 gegen den Odroid XU4 abwägen, letzterer nutzt einen 8-Kern Prozessor der auf 4 Cortex A15 2Ghz und 4 Cortex A7 Kerne zurückgreifen kann. Damit zeigt er ca. den 1.5x-2x Durchsatz bei knapp dem doppelten Preis, ohne bisher die Speicher und die Kabelei berücksichtigt zu haben.
Wie auch in der x86-Welt gilt es zu vergleichen, um schließlich den besten Prozessor + Ecosystem zum angemessenen Preis zu finden. Zur groben Einordnung der per-Core-Performance bitte folgenden Artikel konsultieren: Relative performance of ARM Cortex 32bit and 64bit cores
Grob lässt sich sagen dass Stand 2016 minimum Quad Core Cortex A9 (zB. Amlogic S812) oder A53 (Amlogic S905) empfehlenswert sind, besser noch Quad Core A17 (Rockchip RK3288), Octa Core A53 (Rockchip RK3368) oder BIG.little CPUs wie der Mediatek MT8693, die 2 sehr schnelle A72 und 4 gute A53 Kerne bieten.
Folgend eine grobe Einschätzung aktuell verfügbarer Systeme (work in progress):
Single board computer
Name | Prozessor | RAM | OS | Einschätzung | |
Orange Pi One Orange Pi Mini Orange Pi PC Orange Pi 2 Orange Pi Plus |
Allwinner H3 4x1.6GHz A7 |
0.5-2 GB | Linux & Android 4.4 | Eher schlechte Performance (zwischen RPi2 und 3), läuft nur mit 1.2GHz stabil. Linuxkernel 3.4 zu alt für Collatz. Kaum Herstellersupport. Vertrieb nur über aliexpress. | |
Raspberry Pi 2 | Broadcom BCM2836 4x 0.9GHz A7 |
1 GB | Linux | Eher schlechte Performance, neu kaufen lohnt angesichts des verfügbaren Pi3 nicht | |
Raspberry Pi 3 | Broadcom BCM2837 4x 1.2GHz A53 |
1 GB | Linux | Mittlere Performance, ansonsten das ARM-Referenzsystem schlechthin.
Alle Linux@ARM Projekte sollten problemlos laufen | |
Odroid XU4 | SAMSUNG Exynos 5422 4x2.0 GHz A15 + 4x 1.4GHz A7 |
2 GB | Linux & Android 4.4 | Sehr gute Performance, derzeit schnellstes Board am Markt. Benötigt Aktivkühlung. | |
Odroid U3 | Samsung Exynos 4412 4x1.7 GHz A9 |
2 GB | Linux & Android 4.4 | Gute Performance, Aktivkühlung notwendig | |
Odroid C2 | Amlogic S905 4x2.0 GHz A53 |
2 GB | Linux & Android 5.1 | Gute Performance, 64bit Plattform erfordert teils app_info.xml um Arbeit zu bekommen | |
Banana PI M1, M1+, M2, M2+, M3 | Allwinner CPU mit 2-8x A7 | 1-2 GB | Linux & Android | Eher lahm, M3 durch Octacore evtl. akzeptabel. Android buggy. Alter Linuxkernel 3.4. | |
Nvidia Jetson TK1 | Tegra K1 SOC 4x2.32 GHz A15 |
2 GB | Linux | Sehr gute Performance, leider teuer 192 SM3.2 CUDA cores noch ungenutzt | |
Android TV Boxen & Sticks
Name | Prozessor | RAM | OS | Einschätzung |
Z68 TV Box | RK3368 8x1.5GHz A53 | 2 GB | Android 5.1 | 1.5GHz nur als Turbo bei geringer Gesamtlast. Vollast nur bei ~816MHz stabil. FAIL. |
Q8 TV Box | RK3288 4x1.8GHz A17 | 2 GB | Android 4.4 | Sehr schnell, einfache Verwaltung durch NativeBOINC Passivkühler verwenden! |
Androidboards oder TV-Boxen basierend auf Intel Prozessoren sind derzeit nicht zu empfehlen, es gibt für diese keine BOINC-Anwendungen.
Performanceübersicht
Die folgende Tabelle soll einmal die tatsächliche Performance der Platinen und Architekturen aufzeigen. Da zB. POGS WUs variabler Länge (jedoch mit festen Credit Ratio) hat, aber auch Prozessoren auf das BIG.little Konzept setzen, sehen wir davon ab tatsächliche Laufzeiten anzugeben, sondern verwenden den maximal möglichen Durchsatz per Core und Gesamtsystem in Credits als Referenz. Stand Juni 2016:
Teils basieren die Daten auf einzelnen Hosts mit wenigen Resultaten, teils auf dutzenden Hosts mit tausenden von Resultaten. Die Auswertung erfolgte automatisiert.
(¹) geringe Datenbasis (²) umfangreiche Datenbasis
Die Performance nicht gelisteter Platinen lässt sich hieraus teilweise ableiten. Mit Raspberry Pi 3 und C2 als Basis, ist anzunehmen dass ein 8 Kern 1.5GHz A53 wohl ca. 3000 Punkte täglich bei SubsetSum bringen könnte. Tendenziell eher weniger als mehr, da verfügbare Speicherbandbreiten durch mehr Kerne geteilt werden müssen. Die Performance eines Dualcore A7 (zB. Banana Pi) wird hingegen bei ca. der Hälfte der Orange Pi Performance liegen.
Tipps und Tricks
BOINC auf Android installieren
Stand Mai 2016 gibt es 2 BOINC Clients für die Android Plattform, beide können über den Google Play Store bezogen werden. Langfristig "empfehlenswert" ist derzeit der offizielle BOINC Client aus Berkeley. Leider fehlen hier gegenüber dem großen BOINC Einstellungsmöglichkeiten und auch der RPC Zugriff zur Fernverwaltung.
NativeBOINC - seit 2013 nicht mehr weiterentwickelt, läuft daher nicht auf aktuellen Android Versionen (> 5.0).
Wer noch Geräte mit altem Softwarestand hat, kann sich auf umfangreichere Einstellungsmöglichkeiten und auch RPC Zugriff freuen.
32bit Anwendungen auf 64bit Linux OS verwenden
64bit Plattformen wie die Odroid C2 mit 64bit Ubuntu bekommen ohne weiteres von Projekten keine Arbeit zugewiesen.
Im Log findet sich dann folgende Meldung:
Message from server: This project doesn't support computers of type aarch64-unknown-linux-gnu
Hier hilft es dem Server vorzugaukeln, es handele sich um eine herkömmliches ARM System. Dies geschieht über einen Eintrag in der cc_config.xml:
<options> <alt_platform>arm-unknown-linux-gnueabihf</alt_platform> </options>
Anschließend muss der BOINC Client durchgestartet werden.
Unter Umständen wird man nun keine Arbeit für native 64bit Anwendungen bekommen, Stand Mai 2016 gibt es diese aber ohnehin noch nicht.
Für Yoyo sollte auch das Paket 'libsfstdc++6' nachinstalliert werden.
Einstein@home einrichten bei nicht erkannter NEON Unterstützung
Auf Odroid C2, sicher auch anderen Computern kommt es vor das die NEON Erweiterung nicht erkannt wird. Dies führt dazu das vom BOINC Server eine unoptimierte Binary ausgeliefert, bei Einstein@home erzeugt diese zudem noch reihenweise Berechnungsfehler.
Auch hier kann man sich mit dem anonymous plattform Mechanismus behelfen, folgende Zeilen sind als app_info.xml im Verzeichnis /var/lib/boinc-client/projects/einstein.phys.uwm.edu/ abzulegen:
<app_info> <app> <name>einsteinbinary_BRP4</name> </app> <file_info> <name>einsteinbinary_BRP4_1.47_arm-unknown-linux-gnueabihf__NEON_Beta</name> <executable/> </file_info> <app_version> <app_name>einsteinbinary_BRP4</app_name> <version_num>147</version_num> <file_ref> <file_name>einsteinbinary_BRP4_1.47_arm-unknown-linux-gnueabihf__NEON_Beta</file_name> <main_program/> </file_ref> </app_version>
</app_info>
Die Einsteinanwendung ist manuell zu laden, anschließend wird BOINC neu gestartet um die Konfigurationsdatei einzulesen. Die folgenden Kommandos sollten dazu als root ausgeführt werden:
cd /var/lib/boinc-client/projects/einstein.phys.uwm.edu/
wget http://einstein-dl3.phys.uwm.edu/download/einsteinbinary_BRP4_1.47_arm-unknown-linux-gnueabihf__NEON_Beta
chmod 755 einsteinbinary_BRP4_1.47_arm-unknown-linux-gnueabihf__NEON_Beta
chown boinc:boinc einsteinbinary_BRP4_1.47_arm-unknown-linux-gnueabihf__NEON_Beta
service boinc-client restart
BOINC sollte die app_info nun erkennen, dies lässt sich im BOINC Log leicht nachvolllziehen.
Bereits für ältere Anwendungsversionen geladene Workunits gehen hierbei verloren, es sind neue anzufordern.
Anregungen für Unterartikel
Systemoptimierungen (abschaltbare Services, entfernbare Pakete)
Verwaltung einer ARM Farm
Hardwarethemen zu Kühlung, Stromversorgung, Gehäuse etc...