Aktionen

App info.xml

Aus SETI.Germany Wiki

BOINC .. BOINC installieren .. Boincsteuerung .. Boincfinetuning .. Remotezugriff


App_config.xml .. App_info.xml .. Cc_config



Eine app_info.xml ermöglicht es, für ein Projekt über die sogenannte anonyme Plattform eine andere Anwendung oder bestimmte andere Einstellungen zu verwenden, als sie normalerweise vom Projekt verschickt werden. Somit können z.B. optimierte Anwendungen benutzt, neue App-Versionen getestet oder selbst kompilierte Anwendungen für vom Projekt nicht unterstützte Betriebssysteme verwendet werden.

Damit BOINC die Datei liest, muss sie im Unterverzeichnis projects\Projekt-URL des BOINC-Datenverzeichnisses liegen (wobei Projekt-URL für die URL des jeweiligen Projektes steht).

Aufbau

Die app_info.xml beginnt mit dem Tag <app_info> und endet mit dem Tag </app_info>. Der Inhalt dazwischen lässt sich in drei Bereiche unterteilen und hat die folgende Gestalt:

<app_info>

<app>
<name>NAME_KURZ</name>
<user_friendly_name>NAME_LANG</user_friendly_name>
</app>
[...]
<file_info>
<name>DATEINAME.EXE</name>
<executable/>
</file_info>
<file_info>
<name>DATEINAME</name>
</file_info>
[...]
<app_version>
<app_name>NAME_KURZ</app_name>
<version_num>xxx</version_num>
<file_ref>
<file_name>DATEINAME.EXE</file_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>DATEINAME</file_name>
<open_name>DATEINAME2</open_name>
</file_ref>
[...]
</app_version>

</app_info>

Die Einrückungen und auch die Zeilenumbrüche dienen nur der Übersichtlichkeit und könnten genauso gut weggelassen werden.

Der <app>-Abschnitt

Für jedes Subprojekt einzeln muss ein solcher Block vorhanden sein. Zwischen dem öffnenden <app> und dem schließenden </app> befinden sich jeweils zwei Einträge:

<name>NAME_KURZ</name>
Der Kurzname des Subprojektes.
<user_friendly_name>NAME_LANG</user_friendly_name>
Der ausgeschriebene Name des Subprojektes.

NAME_KURZ ist oft Bestandteil des Namens der vom Projekt verschickten Anwendung, NAME_LANG findet man meist in der Anwendungsübersicht auf der Projektseite (Projekt-URL/apps.php). Man kann den entsprechenden <app>-Block für die gewünschten Subprojekte auch in der client_state.xml (direkt im BOINC-Datenverzeichnis) eines Rechners finden, der bereits WUs dieser Subprojekte bearbeitet hat.


Der <file_info>-Abschnitt

Jedes Programm und jede zur Ausführung erforderliche Datei (z.B. die cudart.dll für CUDA-Apps unter Windows) muss einen <file_info>-Block bekommen. Zwischen <file_info> und </file_info> befinden sich folgende Einträge:

<name>DATEINAME</name>
Der Dateiname.
<executable/>
Zu setzen, falls es sich um ein ausführbares Programm handelt.

Auch die <file_info>-Blöcke finden sich in der client_state.xml wieder (seit BOINC 7 als <file>), dort allerdings mit zusätzlichen Tags wie <nbytes> (Dateigröße) oder <url> (Download-URL). Außerdem finden sich in der client_state.xml auch Einträge für Bilddateien oder wiederverwendbare Eingabedateien für Workunits (sog. sticky-Dateien, erkennbar am Tag <sticky/>). All diese zusätzlichen Tags und Einträge müssen nicht in die app_info.xml eingefügt werden (falls man sie trotzdem mitkopiert, ist das aber auch nicht weiter schlimm).

Der Benutzer muss selbst dafür sorgen, dass sich jede mit einem <file_info>-Block definierte Datei auch im Verzeichnis befindet. Es ist nicht möglich, z.B. per <url>-Tag eine Download-URL für einen automatischen Download anzugeben.


Der <app_version>-Abschnitt

Während die vorangegangenen Abschnitte nur die Umgebung definieren, bietet der <app_version>-Block Raum für einige Einstellmöglichkeiten. Für jedes im ersten Abschnitt definierte Subprojekt muss es einen solchen Block geben, es kann sogar mehrere Blöcke für ein Subprojekt geben (z.B., falls sowohl eine CPU- als auch eine GPU-Anwendung benutzt werden soll). Zwischen <app_version> und </app_version> müssen sich folgende Einträge befinden:

<app_name>NAME_KURZ</app_name>
Wieder die Kurzform des Subprojektnamens.
<version_num>xxx</version_num>
Dreistellige Versionsnummer ohne Dezimalpunkt (also z.B. 510 statt 5.1). Falls man eine auch normal vom Projekt verschickte Anwendung benutzt, sollte man sinnvollerweise die gleiche Versionsnummer verwenden, bei optimierten Anwendungen die neueste vom Projekt verwendete Nummer.
<platform>xxx</platform>
Hier wird das Betriebssystem angegeben, für das die Anwendung kompiliert wurde. Beispiele sind windows_intelx86 für 32-Bit-Windows-Anwendungen, windows_x86_64 für Win64, i686-pc-linux-gnu für Linux32 und x86_64-pc-linux-gnu für Linux64. Eine vollständige Liste gibt es im offiziellen BOINC-Wiki.

Umschlossen von <file_ref>- und </file_ref>-Tags folgen die Verweise auf Dateien, die vorher im <file_info>-Abschnitt definiert wurden:

<file_name>DATEINAME</file_name>
Der Dateiname.
<main_program/>
Dieser Tag kennzeichnet das Programm, das von BOINC zur Bearbeitung der WUs aufgerufen werden soll. Es kann durchaus mehrere ausführbare Programme geben, auf die in einem <app_version>-Block verwiesen wird, aber nur ein Programm mit diesem Tag.
<open_name>DATEINAME2</open_name>
Manche Dateien sollen zur Laufzeit des Programms einen anderen Namen tragen, der mit diesem Tag angegeben werden kann.

Weitere (optionale) Einträge sind:

<api_version>x.x.x</api_version>
Version der BOINC-API, die von der Anwendung benutzt wird.
<coproc>
<type>TYP</type>
<count>n</count>
</coproc>
Dieser Block legt fest, dass die Anwendung nicht auf der CPU, sondern auf einem Koprozessor laufen soll. Die Möglichkeiten für TYP sind:
  • ATI (ATI-Grafikkarten)
  • CUDA (NVIDIA-Grafikkarten)
n steht für die Anzahl der zu benutzenden Koprozessoren. Es sind auch Werte kleiner 1 möglich, sodass z.B. <count>0.5</count> bewirkt, dass 2 WUs gleichzeitig pro Koprozessor laufen.
<plan_class>PLAN_CLASS</plan_class>
Es wurde schon festgelegt, ob die Anwendung auf der CPU oder einer GPU läuft. Über die plan_class werden ein paar weitere Parameter festgelegt, die aber auch wieder durch weitere Parameter in der app_info.xml überschrieben werden können. Standardmäßig gibt es folgende Werte:
  • mt (Mehrkern-/Multithread-CPU-Anwendung)
  • nci (nicht CPU-intensive Anwendung)
  • sse3 (Anwendung benötigt CPU-Befehlssatzerweiterung SSE3)
  • vbox32 / vbox64 (es wird eine Virtuelle Maschine (32-bit/64-bit) mit der Software Virtual Box gestartet, in der die Berechnungen durchgeführt werden)
  • cuda / cuda23 / cuda_fermi / cuda_opencl (verschiedene Klassen für CUDA-Anwendungen)
  • ati / ati13amd / ati13ati / ati14 (verschiedene Klassen für ATI-Anwendungen)
Für die Bedeutung der einzelnen GPU-Klassen, siehe offizielle Dokumentation. Projektseitig können auch weitere Klassen definiert werden.
<avg_ncpus>x.xxxxxx</avg_ncpus>
<max_ncpus>x.xxxxxx</max_ncpus>
Diese beiden Werte geben an, wieviele CPU-Kerne die Anwendung durchschnittlich bzw. maximal belegt. Standard ist jeweils 1, eine normale CPU-Anwendung, die einen Kern belegt. Für Anwendungen, die mehrere Kerne nutzen können, sind natürlich höhere Werte möglich, für GPU-Anwendungen sollte man einen möglichst realistischen Wert für die jeweilige Anwendung einstellen, meist deutlich kleiner als 1. Man kann aber natürlich auch absichtlich beide Werte für eine GPU-Anwendung auf 1 setzen, damit BOINC einen ganzen CPU-Kern freihält, was bei manchen GPU-Anwendungen Geschwindigkeitsvorteile bringen kann.
<flops>FLOPS</flops>
Abschätzung der Geschwindigkeit einer Anwendung, der angegebene Wert wird von BOINC bei der Laufzeitschätzung verwendet. Da hier mitunter sehr große Zahlen eingetragen werden müssen, bietet sich die wissenschaftliche Zehnerpotenz-Notation an, z.B. 2.1e11 für 210000000000 = 2,1⋅1011.
<cmdline>ARGS</cmdline>
Zusätzliche Kommandozeilenparameter, die der Anwendung beim Start übergeben werden. Hier muss man natürlich wissen, welche Parameter die Anwendung überhaupt kennt.

Dezimalbrüche müssen mit einem . geschrieben werden, nicht mit dem im deutschen Sprachraum üblichen ,!


Auch beim <app_version>-Block kann man wieder vorhandene Einträge aus der client_state.xml als Vorlage benutzen.

Bemerkungen

  • Nach dem Erstellen oder Ändern der app_info.xml muss BOINC neu gestartet werden, damit die Änderungen übernommen werden.
  • Dass die app_info.xml erkannt und verwendet wird, ist an einer Zeile Datum Projektname Found app_info.xml; using anonymous platform in der Log-Datei bzw. dem Meldungen-Tab des BOINC-Managers erkennbar. Findet sich keine solche Zeile, ist zu überprüfen, ob die Datei im richtigen Verzeichnis liegt. Falls die Datei einen Fehler enthält, gibt es weitere Fehlermeldungen.
  • Bei Verwendung einer app_info.xml werden neue Versionen der Anwendungen nicht mehr automatisch vom Projekt heruntergeladen. Deshalb muss man selbst darauf achten, dass man keine alten, mitunter inkompatiblen Versionen benutzt, und bei Bedarf die app_info.xml entsprechend aktualisieren.
Single Sign On provided by vBSSO