Aktualności:

Nasz kanał IRC - Porozmawiaj z nami.

Menu główne

app_config.xml zamiast app_info.xml

Zaczęty przez apohawk, 15 Lipiec 2016, 21:28

apohawk

Trafiłem na to ostatnio, chociaż istnieje w BOINC od wersji 7.0.40.  :shame: Po angielsku jest opis na wiki boinca https://boinc.berkeley.edu/wiki/Client_configuration
Nie wiem, czy ktoś tutaj już o tym pisał. Podejrzewam, że sporo osób tutaj od dawna z tego korzysta, ale i tak postanowiłem opisać. Może się komuś przyda albo wrzuci do wiki  %)
Dla mnie głównie sterowanie, ile zadań danego projektu ma się wykonywać na jednym GPU oraz rezerwowanie rdzeni CPU dla zadań GPU. Kiedyś wykorzystywaliśmy w tym celu app_info.xml, w którym opisywało się szczegółowo wersję aplikacji, nazwę binarki, typ GPU, etc. Wraz ze zmianą wersji w projekcie, trzeba było ręcznie ściągać binarki i poprawiać app_info.xml. W wynikach na stronie projektu pokazywało się to jako "anonymous platform".
Z app_config.xml nie trzeba zarządzać wersjami aplikacji ani binarkami, samo się robi, a na stronie projektu w informacjach o WU wyświetlana jest zwykła nazwa aplikacji.
Tu mój (bardzo) stary plik app_info.xml dla POEM.

<app_info>
<app>
<name>poemcl</name>
</app>
<file_info>
<name>poemcl_1.3_windows_intelx86__opencl_ati_100</name>
<executable/>
</file_info>
<app_version>
<app_name>poemcl</app_name>
<version_num>1</version_num>
<avg_ncpus>1</avg_ncpus>
<max_ncpus>1</max_ncpus>
<plan_class>opencl_ati_100</plan_class>
<cmdline></cmdline>
<coproc>
<type>ATI</type>
<count>0.5</count>
</coproc>
<flops>1.0e11</flops>
<file_ref>
<file_name>poemcl_1.3_windows_intelx86__opencl_ati_100</file_name>
<main_program/>
</file_ref>
</app_version>
</app_info>


Teraz przesiadka na app_config.xml i mój obecny plik dla POEM do liczenia na GPU:

<app_config>
<app>
<name>poemcl</name>
<max_concurrent>1</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>1</cpu_usage>
</gpu_versions>
</app>
</app_config>


oraz obecny dla Einsteina:

<app_config>

<app>
<name>einstein_O1AS20-100I</name>
<max_concurrent>1</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>1</cpu_usage>
</gpu_versions>
</app>

<app>
<name>einsteinbinary_BRP6</name>
<max_concurrent>1</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>1</cpu_usage>
</gpu_versions>
</app>

<app>
<name>einsteinbinary_BRP4G</name>
<max_concurrent>1</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>1</cpu_usage>
</gpu_versions>
</app>

</app_config>

Tu znalazłem 3 aplikacje i dla każdej ustawiłem rezerwowanie jednego rdzenia CPU do karmienia GPU z wykonywaniem maksymalnie jednego zadania w danym czasie.

Nazwy aplikacji można wydobyć z boinc_cmd.
W folderze bin boinca (u mnie C:\BOINC\bin) odpalamy

boinccmd.exe --get_state > status.txt

Pokazuję od razu z przekierowaniem do pliku, bo jest nawet 100kB.
Interesuje nas sekcja "======== Applications ========", a w niej takie wpisy:

17) -----------
   name: einstein_O1AS20-100I
   Project: Einstein@Home
18) -----------
   name: einsteinbinary_BRP6
   Project: Einstein@Home
19) -----------
   name: einsteinbinary_BRP4G
   Project: Einstein@Home

Stąd w moim przykładzie 3 aplikacje w app_config dla Einsteina.
app_config.xml wrzucamy do folderu projektu w folderze data boinca (np. u mnie dla Einsteina C:\BOINC\data\projects\einstein.phys.uwm.edu\). Zmiany widoczne po restarcie boinca, inaczej nie testowałem.
No good deed goes unpunished.