Le Forum de l'Alliance Francophone

Nouvelles:

Auteur Sujet: [REALISATION] Optimiser BOINC en modifiant les fichiers config  (Lu 15123 fois)

0 Membres et 2 Invités sur ce sujet

Hors ligne arnaud25

  • Boinc'eur devant l'éternel
  • *****
  • Messages: 1162
//EDIT par LOCTET : Je commence à rassembler ici les posts sur ces diverses astuces (me MP pour m'indiquer ceux que je n'aurais pas trouvés ...) ne poster ici que les réalisations, pour les discussions voir [DISCUSSIONS] Optimiser BOINC en modifiant les fichiers config //

Salut,

A partir de la version 5.8 et notamment 5.8.2 (onglet: Avancé-> lire le fichier de config et lire le fichier de préférences), Boinc peut lire le fichier cc_config.xml et global_prefs_override.xml

Le fichier cc_config.xml:

Ce fichier permet à Boinc de faire 2 choses:
-Envoyer des messages plus précis de ce que fait Boinc et de ce que font les applications (checkpoints, pid, arrêt et reprise des applis, communications avec les serveurs, etc)
-Lui passer des options avancées.

Il est donc utile pour ceux qui font du béta-test pour leurs projets favoris, qui font tourner des projets pas très stable ou qui sont simplement curieux

Deux tutos en anglais:
http://boinc.berkeley.edu/client_msgs.php
http://boincfaq.mundayweb.com/index.php?view=91

Certaines options renvois des quantités énormes de données pas très utiles pour l'utilisateur lamba et d'autres sont assez utiles.

Typiquement le fichier se présente ainsi:
Citer

<cc_config>
<log_flags>
     <task>1</task>
     <file_xfer>1</file_xfer>
     <sched_ops>1</sched_ops>
     <state_debug>0</state_debug>
     <task_debug>1</task_debug>
     <file_xfer_debug>0</file_xfer_debug>
     <sched_op_debug>0</sched_op_debug>
     <http_debug>0</http_debug>
     <work_fetch_debug>0</work_fetch_debug>
     <unparsed_xml>0</unparsed_xml>
     <proxy_debug>0</proxy_debug>
     <time_debug>0</time_debug>
     <http_xfer_debug>0</http_xfer_debug>
     <measurement_debug>0</measurement_debug>
     <poll_debug>0</poll_debug>
     <guirpc_debug>0</guirpc_debug>
     <scrsave_debug>1</scrsave_debug>
     <rr_simulation>0</rr_simulation>
     <cpu_sched>0</cpu_sched>
     <app_msg_send>0</app_msg_send>
     <app_msg_receive>0</app_msg_receive>
     <mem_usage_debug>0</mem_usage_debug>
     <network_status_debug>0</network_status_debug>
    </log_flags>
    <options>
        <save_stats_days>N</save_stats_days>
        <dont_check_file_sizes>0|1</dont_check_file_sizes>
        <http_1_0>0|1</http_1_0>
        <ncpus>N</ncpus>
        <max_file_xfers>N</max_file_xfers>
        <max_file_xfers_per_project>N</max_file_xfers_per_project>
    </options>
</cc_config>

1: la balise est active.
0: la balise est inactive.
N: nombre

la balise <log_flags> </log_flags> permet d'avoir plus de messages
la balise <options> </options>  permet de passer les options avancées

Vous pouvez carrement supprimer les balises que vous ne voulez pas utiliser ou supprimer la partie <options> </options> si vous ne voulez pas passer d'options.

Le fichier global_prefs_override.xml

Il permet de passer outre les préférences choisies sur le site web et qui s'appliquent à plusieurs machines.
En mettant ce fichier dans le dossier Boinc de chaque machine, vous pouvez définir des préférences pour chaque machine
Exemple:
Machine 1: récupère du travail tout les jours, travaille tout le temps,....
Machine 2: récupère du travail tout les 5 jours, travaille entre 8h et 20h,...
Machine 3: récupère du travail tout les 8 jours, travaille entre 22h et 6h,.....
etc....

Typiquement ce fichier est ainsi composé:

Citer
<global_preferences>
    <run_on_batteries>0</run_on_batteries>
    <run_if_user_active>1</run_if_user_active>
    <start_hour>0</start_hour>
    <end_hour>0</end_hour>
    <net_start_hour>0</net_start_hour>
    <net_end_hour>0</net_end_hour>
    <leave_apps_in_memory>1</leave_apps_in_memory>
    <confirm_before_connecting>0</confirm_before_connecting>
    <hangup_if_dialed>0</hangup_if_dialed>
    <work_buf_min_days>0.1</work_buf_min_days>
    <max_cpus>2</max_cpus>
    <cpu_scheduling_period_minutes>60</cpu_scheduling_period_minutes>
    <disk_interval>60</disk_interval>
    <disk_max_used_gb>100</disk_max_used_gb>
    <disk_max_used_pct>50</disk_max_used_pct>
    <disk_min_free_gb>0.1</disk_min_free_gb>
    <vm_max_used_pct>75</vm_max_used_pct>
    <idle_time_to_run>3</idle_time_to_run>
    <max_bytes_sec_down>0</max_bytes_sec_down>
    <max_bytes_sec_up>0</max_bytes_sec_up>
    <cpu_usage_limit>100</cpu_usage_limit>
</global_preferences>
[ <host_venue>venue</host_venue> ]

Tuto:
http://boinc.berkeley.edu/prefs_override.php
http://boincfaq.mundayweb.com/index.php?view=92

@+
« Modifié: 04 October 2015 à 13:37 par nabz »



Hors ligne cedricdd

  • Boinc'eur devant l'éternel
  • *****
  • Messages: 1389
  •   
<app_info>
<app>
<name>collatz</name>
<user_friendly_name>collatz</user_friendly_name>
</app>
<file_info>
<name>collatz_3.11_windows_x86_64__opencl_amd.exe</name>
<executable/>
</file_info>
<app_version>
<app_name>collatz</app_name>
<version_num>311</version_num>
<flops>1.0e11</flops>
<api_version>7.0.28</api_version>
  <coproc>
  <type>ATI</type>
  <count>0.5</count>
  </coproc>
<plan_class>ati13ati</plan_class>
<avg_ncpus>0.01</avg_ncpus>
<max_ncpus>1.0</max_ncpus>
<cmdline></cmdline>
<file_ref>
<file_name>collatz_3.11_windows_x86_64__opencl_amd.exe</file_name>
<main_program/>
</file_ref>
</app_version>
</app_info>

Avec celui la tu vas avoir deux tâches en même temps aux valeurs par défaut, si tu veux essayer de régler pour avoir une seule tâche à 100% ou si même avec deux sans rien changer d'autre tu n'es pas encore à 100%, pour modifier les valeurs c'est dans les balises <cmdline></cmdline> qu'il faut le faire, en utilisant ceci:

I<items>  - Items par kernel. Doit être une puissance de 2.  65536 est la valeur par défaut. Des valeurs plus grandes utilisent plus de mémoire GPU et améliorent l'utilisation du GPU tandis que des valeurs plus basses améliorent le temps de réponse.  Il n'est pas conseillé de descendre plus bas que 8192. Utiliser une valeur trop grande peut entrainer un crash du driver. La valeur optimal est différente pour chaque modèle de GPU.

K<kernels>  - Kernels par réduction.  Doit être divisible par 2.  16 est la valeur par défaut. Des valeurs plus larges améliorent l'utilisation du GPU. La plage de valeurs conseillée est de 4 à 256. 

S<milliseconds>  - Attendre n milliseconde à chaque boucle le temps que les kernels se terminent. La valeur par défaut est 1. Affecter 0 entrainera une rapidité maximum -- mais en entrainant l'utilisation d'un CPU à 100%

Par exemple <cmdline>I65536 K16 S1</cmdline> c'est les valeurs par défaut.
« Modifié: 06 October 2012 à 03:47 par cedricdd »

Kill all my demons, and my angels might die too.


Hors ligne Spica

  • Méchant modo
  • Boinc'eur devant l'éternel
  • ******
  • Messages: 5146
  •   
voila le mien sur NVIDIA...
Citer
<app_info>
 <app>
  <name>collatz</name>
  </app>
 <file_info>
  <name>collatz_3.11_windows_x86_64__cuda42.exe</name>
  <executable/>
  </file_info>
 <file_info>
  <name>cudart64_42_9.dll</name>
  <executable/>
 </file_info>
 <app_version>
  <app_name>collatz</app_name>
  <version_num>311</version_num>
  <plan_class>cuda42</plan_class>
  <avg_ncpus>0.011</avg_ncpus>
  <max_ncpus>1</max_ncpus>
  <flops>1.0e11</flops>
 <coproc>
  <type>CUDA</type>
  <count>1</count>
  </coproc>
  <cmdline>K256 I2097152 S1</cmdline>
 <file_ref>
  <file_name>collatz_3.11_windows_x86_64__cuda42.exe</file_name>
  <main_program/>
  </file_ref>
 <file_ref>
  <file_name>cudart64_42_9.dll</file_name>
 </file_ref>
</app_version>
</app_info>
la ligne cmdline: cedric t'ecrivais par defaut : <cmdline>I65536 K16 S1</cmdline>
tu remarqueras ma ligne, elle est differente car j'ai un peu optimisé.
Pour 2 collatz ensemble, mettre
<coproc>
  <type>CUDA</type>
  <count>0.5</count>
  </coproc>

Perso, je ferais: essaie le mien tel quel: si ca plante, c'est que tu n'as pas les cudart machin... et il faut modifier. De toute facon, l'app_info que je te donne, c'est pas moi qui l'ai fait mais c'est celui qui est fabriqué quand tu vas chercher les optis sur la page des optis de Collatz. Tu essaies et si ca marche tu passe de 1 Ut à 2 ..et tu me dis si ca marche, ca lm'interesse de savoir. En ce moment, je suis en phase plutot GPU GRID mais si l'AF decide d'aller chercher la premiere place au general sur Collatz, alors...je donnerais un coup de main!
bref, tiens nous au courant.... :hello:

pour les app_info de maniere 'automatique', c'est pas faisable mais realiste, avec un peu d'experience, cedric est un pro, perso, je suis pas trop nul...


22717 SETI@home classic workunits; Redécouverte pulsar J1916+12 (le 07Nov2009) Einstein@Home.


Hors ligne LOCTET SetiOne

  • Méchant modo
  • Boinc'eur devant l'éternel
  • ******
  • Messages: 5503
  •   
    • NST
    • E-mail
Poursuite de la (tentative) de synthèse dans un post unique de l'utilisation des app_info et cc_config


1 Le fichier  cc_config.xml
- a mettre dans le dossier indiqué dès les premières lignes du Journal des événements de BOINC Manager, exemple avec une installation personnalisée sous Windows
Citer
12/04/2013 13:22:46 |  | Data directory: F:\BoincData
- pour effet immédiat des options qui y sont consignées : menu BOINC >Avancé>Lire le fichier de configuration

1.1 - Envoi immédiat des résultats (Source)
<cc_config>
<options>
<report_results_immediately>1</report_results_immediately>
</options>
</cc_config>


1.2 - CONFIG biGPU

Faire reconnaître les 2 GPU par BOINC (source 1 - source 2)

<cc_config>
 <options>
  <use_all_gpus>1</use_all_gpus>
  </options>
  </cc_config>


Attribuer un projet différent à chaque GPU (source)
Si version de BOINC > 6.13 (exemple) :

la carte 1 ne fait que du Milkyway (car device 0 exclu) et la carte 0 que du Collatz (car device 1 exclu....)
<cc_config>
<options>
<exclude_gpu>
   <url>http://boinc.thesonntags.com/collatz/</url>
   <device_num>1</device_num>
</exclude_gpu>
<exclude_gpu>
   <url>http://milkyway.cs.rpi.edu/milkyway/</url>
   <device_num>0</device_num>
</exclude_gpu>
</options>
</cc_config>

pour faire du Milky sur la carte 0 et du Collatz sur la 1  <cc_config>
<options>
<exclude_gpu>
   <url>http://boinc.thesonntags.com/collatz/</url>
   <device_num>0</device_num>
</exclude_gpu>
<exclude_gpu>
   <url>http://milkyway.cs.rpi.edu/milkyway/</url>
   <device_num>1</device_num>
</exclude_gpu>
</options>
</cc_config>



2 Le fichier  app_info.xml
- à placer dans le sous dossier "projects\nom du projet concerné", dossier qui se trouve sous le chemin indiqué dès les premières lignes du Journal des événements de BOINC Manager, exemple avec une installation personnalisée sous Windows
Citer
12/04/2013 13:22:46 |  | Data directory: F:\BoincData
   donc pour Yoyo par exemple, à placer dans F:\BoincData\projects\www.rechenkraft.net_yoyo
- il faut arrêter redémarrer BM, mais attention dans bien des cas les WU en cours seront perdues (choisissez votre moment !)

2.1 Charger vos cartes GPU à 100% exemple pour POEM (source)
Paramètres à changer selon :
 <name>poemcl_0.1_x86_64-pc-linux-gnu__opencl_ati_100</name> nom exact de l'exe présent dans le sous répertoire du projet
  <api_version>7.0.28</api_version> par le numéro exact de la version de votre BOINC Manager

- Pour Gnu/Linux avec une ATI :
<app_info>
<app>
<name>poemcl</name>
<user_friendly_name>POEM++ OpenCL</user_friendly_name>
</app>
<file_info>
<name>poemcl_0.1_x86_64-pc-linux-gnu__opencl_ati_100</name>
<executable/>
</file_info>
<app_version>
<app_name>poemcl</app_name>
<version_num>1</version_num>
<plan_class>opencl_ati_100</plan_class>
<avg_ncpus>0.5</avg_ncpus>
<max_ncpus>0.5</max_ncpus>
<flops>2.1e10</flops>
<coproc>
<type>ATI</type>
<count>0.5</count>
</coproc>
<cmdline></cmdline>
<file_ref>
<file_name>poemcl_0.1_x86_64-pc-linux-gnu__opencl_ati_100</file_name>
<main_program/>
</file_ref>
</app_version>
</app_info>

- Pour Windows avec une ATI :
<app_info>
<app>
<name>poemcl</name>
<user_friendly_name>POEM++ OpenCL</user_friendly_name>
</app>
<file_info>
<name>poemcl_0.1_windows_intelx86__opencl_ati_100</name>
<executable/>
</file_info>
<app_version>
<app_name>poemcl</app_name>
<version_num>1</version_num>
<plan_class>opencl_ati_100</plan_class>
<avg_ncpus>0.5</avg_ncpus>
<max_ncpus>0.5</max_ncpus>
<flops>2.1e10</flops>
<coproc>
<type>ATI</type>
<count>0.5</count>
</coproc>
<cmdline></cmdline>
<file_ref>
<file_name>poemcl_0.1_windows_intelx86__opencl_ati_100</file_name>
<main_program/>
</file_ref>
</app_version>
</app_info>

- Pour Windows avec une NVIDIA :
<app_info>
<app>
<name>poemcl</name>
<user_friendly_name>POEM++ OpenCL</user_friendly_name>
</app>
<file_info>
<name>poemcl_1.3_windows_intelx86__opencl_nvidia_100</name>
<executable/>
</file_info>
<app_version>
<app_name>poemcl</app_name>
<version_num>103</version_num>
<avg_ncpus>2</avg_ncpus>
<max_ncpus>2</max_ncpus>
<flops>5233400958.051761</flops>
<plan_class>opencl_nvidia_100</plan_class>
<api_version>7.0.28</api_version>
 <file_ref>
        <file_name>poemcl_1.3_windows_intelx86__opencl_ati_100</file_name>
        <main_program/>
    </file_ref>
<coproc>
<type>CUDA</type>
<count>1</count>
</coproc>
</app_version>
</app_info>


2.2 Pour les projets attribuant 1 WU par core au lieu de faire calculer 1WU par tous les cores, exemple Edges  (source, merci cedricdd)

<app_info>
<app>
    <name>public_autodock_vina_1_1_2</name>
    <user_friendly_name>Autodock VINA</user_friendly_name>
    <non_cpu_intensive>0</non_cpu_intensive>
</app>

  <file_info>
<name>public_autodock_vina_1_1_2_1.03_windows_intelx86.exe</name>
  <executable/>
  </file_info>

<file_info>
<name>public_autodock_vina_1_1_2_1.03_windows_intelx86.zip</name>
  </file_info>

<file_info>
<name>wu_script.sh_1.03_windows_intelx86</name>
  </file_info>

<app_version>
    <app_name>public_autodock_vina_1_1_2</app_name>
    <version_num>103</version_num>
    <platform>windows_intelx86</platform>
    <avg_ncpus>4.000000</avg_ncpus>
    <max_ncpus>4.000000</max_ncpus>
    <flops>2993490510.771409</flops>
    <api_version>6.1.5</api_version>
    <file_ref>
        <file_name>public_autodock_vina_1_1_2_1.03_windows_intelx86.exe</file_name>
        <main_program/>
    </file_ref>
    <file_ref>
        <file_name>public_autodock_vina_1_1_2_1.03_windows_intelx86.zip</file_name>
        <open_name>public_autodock_vina_1_1_2_1.03_windows_intelx86.zip</open_name>
    </file_ref>
    <file_ref>
        <file_name>wu_script.sh_1.03_windows_intelx86</file_name>
        <open_name>wu_script.sh</open_name>
    </file_ref>
</app_version>

</app_info>

On pourra récupérer que des tâches Vina, j'ai pas les infos pour les autres, ne pas oubliez de changer en fonction du votre nombre de CPU.


2.3 Pour forcer un projet GPU à utiliser 1 CPU entier (merci Phil1966) exemple Primgrid Genefer short ou longues (wr)

<app_config>

<app>
<name>genefer</name>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>1</cpu_usage>
</gpu_versions>
</app>

<app>
<name>genefer_wr</name>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>1</cpu_usage>
</gpu_versions>
</app>

</app_config>



2.4 Pour optimiser Einstein (merci [AF>Amis des Lapins] Jean-Luc) http://forum.boinc-af.org/index.php/topic,2265.msg378370.html#msg378370


2.5 calculer sur Milkyway avec un MAC (source) merci Prof
1° Stopper Boinc

2° Créer un app_info.xml avec le code suivant :
<app_info>
<app>
<name>milkyway_separation__modified_fit</name>
</app>
<file_info>
<name>milkyway_separation__modified_fit_1.36_x86_64-apple-darwin__opencl_ati_101</name>
<executable />
</file_info>
<app_version>
<app_name>milkyway_separation__modified_fit</app_name>
<version_num>136</version_num>
<avg_ncpus>0.040000</avg_ncpus>
<max_ncpus>0.567833</max_ncpus>
<plan_class>opencl_ati_101</plan_class>
<file_ref>
<file_name>milkyway_separation__modified_fit_1.36_x86_64-apple-darwin__opencl_ati_101</file_name>
<main_program/>
</file_ref>
<coproc>
<type>ATI</type>
<count>1.0000</count>
</coproc>
</app_version>
</app_info>

3° Télécharger l'appli milkyway_separation__modified_fit_1.36_x86_64-apple-darwin__opencl_ati_101

4°Placer l'app_info & l'appli dans le dossier milkyway du dossier Projects du dossier Boinc data

5° Prévoir sur l'appli un petit coup de "sudo chmod +x" dans le terminal pour rétablir les permissions

6° Réinstaller Boinc

7° Relancer


2.6 Pour optimiser SETI avec les LUNATICS (merci Phil1966) http://forum.boinc-af.org/index.php/topic,2282.msg407670.html#msg407670

« Modifié: 31 January 2015 à 17:52 par LOCTET SetiOne »

[AF>France>Ouest]SetiOne  Stats MT Ouest Téléchargez la tool barre de l'AF :


Hors ligne Infomat

  • Animateur fanatique
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 5319
  •   
    • Site de Claude
    • E-mail
C'est une belle tentative  :love: :jap:
Je me sers tout de suite du premier...  :kookoo:



[6c/ 12t] Intel i7-980X @3.7  2xNVidia GTX 760  AMD 6970    Windows 7 Pro x64 ou Windows 10 Pro x64 ou Linux 
ELAF= Electrons Libres de l'AF http://forum.electronslibres.boinc-af.org/


Hors ligne LOCTET SetiOne

  • Méchant modo
  • Boinc'eur devant l'éternel
  • ******
  • Messages: 5503
  •   
    • NST
    • E-mail
Pour les discussions propositions d'insertion de .xml = http://forum.boinc-af.org/index.php/topic,5056.25.html#lastPost

[AF>France>Ouest]SetiOne  Stats MT Ouest Téléchargez la tool barre de l'AF :


Hors ligne GuL

  • Boinc'eur devant l'éternel
  • *****
  • Messages: 2225
  •   
 :hello: L'équipe a le bonjour de LOCTET SetiOne qui a débloqué le fil après que je l'ai contacté par MP. Il est "retiré des affaires".

Suite à un échange avec JeromeC, je reposte ici un tutoriel où il sera plus approprié.
"libérer un thread par GPU dans les préférences locales" tu veux dire mettre x% d'utilisation CPU c'est ça ?

Et je suis désolé mais je comprends pas bien ton dernier message Gul, tu pourrais pas expliquer plus longtemps et surtout plus fort ? :siflotte:

Décidément, c'est un sujet qui est difficile à comprendre, vu que nous en avons déjà parlé à plusieurs reprises. Mais je ne te jette pas la pierre, c'est sûrement moi qui explique mal.  cocoricooo

Introducion
On va partir sur l'hypothèse d'un CPU avec 8 threads plus un GPU. Pour que le GPU ait suffisamment de travail, il faut qu'un thread CPU lui soit réservé. Même si le GPU n'utilise le CPU que par pic, il faut qu'il soit accessible dès que le GPU en a besoin pour éviter les creux d'utilisation. On va étudier trois configurations (default, app_config seul, app_config + préférences locales) et trois modes possibles (normal, haute priorité, machine virtuelle multi-thread).

A) Première configuration: default. On n'a fait aucune modification dans les fichiers de configuration et 100 % du CPU est dédié à Boinc dans les préférences locales.
1) Mode normal
Le GPU réclame 0.89 CPU (c'est un exemple), ce qui est inférieure à 1. Boinc ne connaissant que les valeurs entières de threads, il va lancer 8 tâches CPU plus une tâche GPU. Le GPU n'aura que les miettes du temps CPU et des trous de calcul seront présents.
2) Mode haute priorité
Une tâche passe en haute priorité et passe devant toutes les autres. Une tâche CPU s'arrête pour lui laisser sa place (comme quand on se lève dans le métro face à une personne âgée  ;) ). La tâche GPU continue à tourner avec moins de miettes de temps CPU que dans le cas A1.
3) Mode machine virtuelle multi-thread
La tâche demande le nombre maximum de threads disponibles, soit 8. Ce mode est équivalent au mode haute priorité pour tous les threads à la fois. Le GPU n'a presque plus de temps CPU et se tourne les puces.

B) Deuxième configuration: fichier app_config. Les préférences locales conservent 100 % du CPU dédié à Boinc. Un fichier app_config.xml a été ajouté dans le dossier de tous les projets GPU, avec pour chaque application concernée une section comportant, entre autres:
Citer
        <gpu_versions>
            <gpu_usage>1</gpu_usage>
            <cpu_usage>1</cpu_usage>
        </gpu_versions>
1) Mode normal
Le GPU réclame 1 CPU. Boinc va lancer 7 tâches CPU et réserver un thread CPU pour la tâche GPU. Le GPU sera suffisamment alimenté et n'aura pas de trous de calculs.
2) Mode haute priorité
Une tâche passe en haute priorité devant toutes les autres, y compris la tâche GPU. Cette dernière peut potentiellement repasser dans le cas A2.
3) Mode machine virtuelle multi-thread
La tâche demande le nombre maximum de threads disponibles, soit 8. C'est identique au cas A3 et le GPU se tourne les puces.


C) Troisième configuration: fichier app_config et préférences locales. Les préférences locales sont modifiées pour ne dédier que 87.5 % du CPU à Boinc, soit n-1 threads (7/8*100=87.5). Un fichier app_config.xml a été ajouté dans le dossier de tous les projets GPU, avec pour chaque application concernée une section comportant, entre autres:
Citer
        <gpu_versions>
            <gpu_usage>1</gpu_usage>
            <cpu_usage>0.05</cpu_usage>
        </gpu_versions>
1) Mode normal
Le GPU réclame 0.05 CPU. Il n'aura pas de thread supplémentaire attribué par Boinc, mais ce n'est pas grave puisque un thread est libre dans les préférences. Boinc va lancer 7 tâches CPU et une tâches GPU, qui bénéficiera des 12.5 % restant.  Le GPU sera suffisamment alimenté et n'aura pas de trous de calculs.
2) Mode haute priorité
Une tâche passe en haute priorité devant toute les autres, mais cela ne change rien pour le GPU qui n'a pas de temps CPU attribué par Boinc.
3) Mode machine virtuelle multi-thread
La tâche demande le nombre maximum de threads disponibles, soit seulement 7. Cela ne change rien non plus pour le GPU qui bénéficie toujours des 12.5 % restant du CPU. Il sera peut-être juste un peu ralenti à cause de la mémoire cache du CPU.

Conclusion
Comme on l'a vu ci-dessus, le GPU est impacté en permanence dans la configuration A. Dans la configuration B, des problèmes apparaissent dès qu'une tâche demande la priorité ou avec une VM multi-thread. Il n'y a que dans la configuration C que le GPU sera le moins impacté par les autres tâches. C'est celle que je préconise. En complément, il est possible de faire tourner deux tâches simultanées sur le GPU avec l'option <gpu_usage>0.5</gpu_usage> (1/2=0.5)



Hors ligne GuL

  • Boinc'eur devant l'éternel
  • *****
  • Messages: 2225
  •   
En complément, voici un fichier app_config.xml pour primegrid, avec l'aide de DocPhilou  :jap:, qui reprend un grand nombre de sous-projets, et qui configure à la fois les tâches GPU deux par deux et les tâches CPU multithreads, pour une machine avec 7 threads CPU et un thread réservé pour le GPU, dans les préférences locales, comme dans le cas C ci-dessus
<app_config>
    <!-- GPU applications -->
    <app>
        <name>pps_sr2sieve</name>
        <gpu_versions>
            <gpu_usage>0.5</gpu_usage>
            <cpu_usage>0.05</cpu_usage>
        </gpu_versions>
    </app>
    <app>
        <name>genefer15</name>
        <gpu_versions>
            <gpu_usage>0.5</gpu_usage>
            <cpu_usage>0.05</cpu_usage>
        </gpu_versions>
    </app>
   
    <!-- CPU multithreaded applications -->
    <app_version>
        <app_name>llr321</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrCUL</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrESP</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrGCW</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrMEGA</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrPPS</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrPPSE</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrPSP</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrSOB</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrSR5</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrTPS</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrTRP</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
    <app_version>
        <app_name>llrWOO</app_name>
        <cmdline>-t 7</cmdline>
        <avg_ncpus>7</avg_ncpus>
    </app_version>
</app_config>
« Modifié: 12 November 2018 à 13:39 par GuL »



Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31108
  •   
Il serait peut-être utile de préciser que les précos de Gul concernent surtout les projets GPU en OpenCL ?

J'ai la sensations que les projets CUDA (NVidia) n'ont pas ce besoin de CPU pour tourner correctement, du fait qu'ils sont directement compilés pour chaque carte graphique alors que l'OpenCL est générique et requiert une couche logicielle supplémentaire pour tourner (si je dis pas de bêtise). C'est ce que j'ai constaté avec la GeForce GTX 1080 de mon Shadow.

Pour AMD/Radeon je sais pas vu que sur mon vieux iMac et son merveilleux Radeon HD 4850 seuls quelques projets tournent en OpenCL.

A quoi bon prendre la vie au sérieux, puisque de toute façon nous n’en sortirons pas vivants ? (Alphonse Allais)



Hors ligne GuL

  • Boinc'eur devant l'éternel
  • *****
  • Messages: 2225
  •   
Il serait peut-être utile de préciser que les précos de Gul concernent surtout les projets GPU en OpenCL ?

J'ai la sensations que les projets CUDA (NVidia) n'ont pas ce besoin de CPU pour tourner correctement, du fait qu'ils sont directement compilés pour chaque carte graphique alors que l'OpenCL est générique et requiert une couche logicielle supplémentaire pour tourner (si je dis pas de bêtise). C'est ce que j'ai constaté avec la GeForce GTX 1080 de mon Shadow.
Je ne suis pas persuadé par ce que tu avances, mais je ne suis pas non plus suffisamment calé en programmation pour affirmer le contraire. D'après ce que j'ai compris, OpenCL compile le code (kernel) au début de l'éxécution, ce qui prend une seconde environ, tandis qu'il est compilé préalablement pour CUDA. Mais à ma connaissance, il n'y a pas de couche logiciel supplémentaire sous OpenCL.

L'utilisation ou non du CPU dépend des options utilisées pour la compilation ET pour l’exécution. Par exemple, dans la documentation de Seti Lunatics OpenCL SoG pour Nvidia, on peut augmenter ou réduire la charge CPU, ce qui aura un impact sur le temps de calcul GPU.
Citer
With NV drivers past 267.xx GPU usage can be low if CPU fully used with another loads. App performance can
  be increased by using -cpu_lock switch in this case, and CPU time savings are possible with -use_sleep switch
.

Ce qui est sûr, c'est que si on travaille sur plusieurs projets GPU, certains consomment du CPU, et d'autre non. Personnellement, je préfère utiliser une configuration systématique et ne pas me poser trop de questions, d'autant plus que ça dépend de la machine.



Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31108
  •   
Pour l'instant (depuis que j'ai le shadow) ma petite expérience en la matière m'a montré que les 2 qui ont tourné en OpenCL c'est Moo et Amicable et ils prennent un bon core CPU par tâche GPU, et GPUgrid qui tournait en Cuda ne consommait rien en CPU.

A quoi bon prendre la vie au sérieux, puisque de toute façon nous n’en sortirons pas vivants ? (Alphonse Allais)



Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31108
  •   
Laurent pourquoi tu postes ça ici ? ça n'a juste rien à voir, le sujet que tu as créé pour parler des aventures de ta config serait la bonne place, ou a minima un topic dans la section FAQ Technique  / Boinc.... ça serait gentil que tu le recopies + le vire d'ici, merci.

A quoi bon prendre la vie au sérieux, puisque de toute façon nous n’en sortirons pas vivants ? (Alphonse Allais)