Auteur Sujet: Comment donner la priorité au calcul GPU ?  (Lu 578 fois)

0 Membres et 1 Invité sur ce sujet

[AF>Amis des Lapins] Jean-Luc

  • Messages: 1890
  • Boinc'eur devant l'éternel
  • *****
  •   
J'ai un souci depuis longtemps qui m'agace !

Sur ma CM, j'ai une NVidia GTX 680 et une ATI R9 290 X. Cela fonctionne très bien.

Typiquement, je fais du Einstein avec l'ATI (je réserve 1 CPU), et du PrimeGrid avec la NVidia, où je fais tourner 2 WUs simultanément avec 0.5 CPU pour chacune.
Je sais, 0.5 CPU pour 1/2 GPU sur PrimeGrid c'est trop, mais la machine chauffe un peu moins et elle tourne à fréquence un peu plus haute, je ne perds donc quasiment rien en puissance de calcul.

Par contre, je fais aussi tourner un autre projet sur mes 10 threads CPU restants (j'ai 12 threads au total) : par exemple yoyo, projet OGR.

MAIS,

Je suis obligé de mettre un fichier app_config pour limiter à 10 le nombre de threads utilisés par yoyo :

<app_config>
   <app>
   <name>crunch</name>
   <max_concurrent>10</max_concurrent>
   </app>
</app_config>

Si je ne fais pas cela, les threads qui commandent mes GPU peuvent être mis en pause et du coup, mes GPU ne tournent plus, mais j'ai 12 threads yoyo qui tournent.

Ma question :

Existe-t-il des instructions à mettre dans le cc_config je suppose, qui rendent les travaux GPU prioritaires, c'est-à-dire une instruction qui évite à tout prix que ce soit le WUs GPU qui se mettent en pause ?


Car c'est super pénible de toujours devoir jongler et chercher les noms courts des WUs des différents projets et de devoir rajouter des fichiers app_config.


Rédacteur d'un article sur BOINC, adresse :
http://www.astrocaw.eu/?p=605
Créateur d'un site actif de recherche sur les suites aliquotes :
http://www.aliquotes.com/

Xe120

  • CàA
  • Messages: 1183
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #1 le: 01 mai 2018 à 11:18 »
Montre tes fichiers de conf.  :hello:

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #2 le: 01 mai 2018 à 11:55 »
Mais pourquoi, ton app_config il fait le taff avec yoyo, non ?

Et si tu limites le nombre de cores utilisables en CPU avec le paramètre du boinc manager (utiliser au maximum x% des processeurs) aucun projet CPU ne pourra les utiliser de toutes façons, à part les projets GPU... donc ?

C'est pas ça que tu fais quand tu dis "(je réserve 1 CPU)" ?
Parce que c'était lui, parce que c'était moi.

[AF>Amis des Lapins] Jean-Luc

  • Messages: 1890
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Re : Comment donner la priorité au calcul GPU ?
« Réponse #3 le: 01 mai 2018 à 13:58 »
Montre tes fichiers de conf.  :hello:

En fichier joint, mon fichier de conf. Le plus simple qui soit !

En autre fichier joint, mon app, mais c'est le même que celui de mon premier post ci-dessus.
Ainsi, je n'utilise que 5 threads pour OGR et 5 autres pour Perfect Cuboïd, soit au total 10 threads, ce qui m'en laisse 2 pour mes GPU : 1 thread pour Collatz et 2 * 0.5 thread pour 2 WUs PrimeGrid en parallèle.
C'est le seul moyen que j'ai trouvé pour que mes WUs GPU ne soient jamais mises en pause.


Mais pourquoi, ton app_config il fait le taff avec yoyo, non ?

Et si tu limites le nombre de cores utilisables en CPU avec le paramètre du boinc manager (utiliser au maximum x% des processeurs) aucun projet CPU ne pourra les utiliser de toutes façons, à part les projets GPU... donc ?

C'est pas ça que tu fais quand tu dis "(je réserve 1 CPU)" ?

Si je ne mets pas d'app pour yoyo, il fait parfois tourner 12 threads et me met les WUs GPU en pause, ce que je ne veux pas !

Si je limite le nombre de CPU avec le % processeur, le problème ne fait que se déplacer avec moins de cores au total.
Les cores utilisés pour gérer les WUs GPU sont inclus dans les cores CPU autorisés.

Quand je dis je réserve un CPU pour mes tâches GPU, je mets 1 app pour le projet PrimeGrid :

<app_config>
<app>
<name>pps_sr2sieve</name>
<gpu_versions>
<gpu_usage>0.5</gpu_usage>
<cpu_usage>0.5</cpu_usage>
</gpu_versions>
</app>
</app_config>

Einstein réserve un CPU tout seul !





Rédacteur d'un article sur BOINC, adresse :
http://www.astrocaw.eu/?p=605
Créateur d'un site actif de recherche sur les suites aliquotes :
http://www.aliquotes.com/

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #4 le: 01 mai 2018 à 19:00 »
Les cores utilisés pour gérer les WUs GPU sont inclus dans les cores CPU autorisés.
Ben je suis pas d'accord avec ça. Je prétends même le contraire :)

C'est pas boinc qui "s'occupe" de donner "du CPU" au calcul GPU en cours, c'est le principe qu'un calcul GPU a lieu et a besoin "d'un certain % de CPU" pour fonctionner efficacement qui fait qu'en enlevant justement une partie du CPU à boinc, ce CPU est disponible pour le calcul GPU.

Quelqu'un pour départager ?
Parce que c'était lui, parce que c'était moi.

[AF>Libristes] Pascal

  • CàA
  • Messages: 1661
  • Boinc'eur devant l'éternel
  • *****
  •   
    • Forum de la M-T Libristes de L'AF
Re : Comment donner la priorité au calcul GPU ?
« Réponse #5 le: 01 mai 2018 à 19:26 »
Tout à fait d'accord avec toi JeromeC :+1:

PC ; GNU/Linux ubuntu-mate 16.04 LTS (xenial) - AMD FX8350 x8 - 32Go DDR3 - GTX 1060 et GTX 1080 Ti parfois
Raspberry Pi : RaspBian (dérivé de Debian Wheezy) - ARMv6 - carte flash SD 8Go
« Un peuple prêt à sacrifier un peu de liberté pour un peu de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux. » Benjamin Franklin
« La droite dit : la première liberté, c'est la sécurité. Nous disons au contraire : la première sécurité, c'est la liberté. » Pierre Mauroy.

modesti

  • CàA
  • Messages: 15004
  • Boinc'eur devant l'éternel
  • *****
  •   
    • Brocantes en Bourbonnais
Re : Comment donner la priorité au calcul GPU ?
« Réponse #6 le: 01 mai 2018 à 19:39 »
Ça dépend des projets. Je donne à Boinc 6 cœurs des 8 de mon ordinateur. N'empêche que certaines UT Einstein (pas toutes bizarrement) font que je n'ai que 5 UT CPU qui tournent avec 1 UT Einstein GPU. :spamafote:

Viendez chez nous, cause qu'on est les meilleur(e)s :D


In memoriam Jip

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #7 le: 01 mai 2018 à 19:44 »
Donc ça veut dire qu'il y a des applications (de projets) qui savent (= ont été conçues pour) se réserver elle même un core CPU, c'est à dire le soustraire au réglage de boinc... c'est encore un autre niveau.

Ça ne veut pas dire que ce que je disais plus haut n'est pas vrai :)
Parce que c'était lui, parce que c'était moi.

Xe120

  • CàA
  • Messages: 1183
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #8 le: 01 mai 2018 à 20:34 »
Ton cas est vrai quand le total de la charge CPU demandé par les UTs GPU est inférieur à 1 CPU.
« Modifié: 02 mai 2018 à 06:53 par Xe120 »

[AF>Amis des Lapins] Jean-Luc

  • Messages: 1890
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #9 le: 01 mai 2018 à 20:42 »
En tout cas, chez moi ça ne marche pas.
Si je mets 84% (sur 12 threads), il me met deux WUs de côté en attente et je n'ai plus que 10 threads qui tournent au total, dont 2 pour gérer mes GPU !


Rédacteur d'un article sur BOINC, adresse :
http://www.astrocaw.eu/?p=605
Créateur d'un site actif de recherche sur les suites aliquotes :
http://www.aliquotes.com/

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #10 le: 03 mai 2018 à 14:15 »
Je ne te suis pas : 84% de 12 = 10,08, donc 10 cores, donc 10 thread qui tournent au total c'est normal non ? et comment sais-tu que 2 de ces 10 cores sont utilisés pour gérer tes GPU et que les 2 derniers ne servent pas du tout à boinc / GPU ?
Parce que c'était lui, parce que c'était moi.

[AF>Amis des Lapins] Jean-Luc

  • Messages: 1890
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #11 le: 03 mai 2018 à 14:32 »
Je sais qu'il n'y en a que 10 d'utilisés parce que j'ai juste 8 WUs qui font tourner par exemple yoyo OGR et encore 1 tache GPU à 1 cpu et encore 2 taches 0.5 GPU avec 0.5 CPU chacune.
8 + 1 + 0.5 + 0.5 = 10.
Et il y a 2 WUs qui se mettent en pause, car quand j'avais 100 %, il y en avait 12.
Si je passe à 84%, il n'y en a donc plus que 10 au total au lieu de 12, avec les 2 qui gèrent les GPU incluses dedans.


Rédacteur d'un article sur BOINC, adresse :
http://www.astrocaw.eu/?p=605
Créateur d'un site actif de recherche sur les suites aliquotes :
http://www.aliquotes.com/

[AF>Libristes] Pascal

  • CàA
  • Messages: 1661
  • Boinc'eur devant l'éternel
  • *****
  •   
    • Forum de la M-T Libristes de L'AF
Re : Comment donner la priorité au calcul GPU ?
« Réponse #12 le: 03 mai 2018 à 19:15 »
 :kookoo:
N'aurais-tu pas un app_config.xml dans le dossier projet GPU qui réserverait du cpu pour les gpu et empêcherait ainsi de laisser les 10 cœurs aux seules tâches CPU?

PC ; GNU/Linux ubuntu-mate 16.04 LTS (xenial) - AMD FX8350 x8 - 32Go DDR3 - GTX 1060 et GTX 1080 Ti parfois
Raspberry Pi : RaspBian (dérivé de Debian Wheezy) - ARMv6 - carte flash SD 8Go
« Un peuple prêt à sacrifier un peu de liberté pour un peu de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux. » Benjamin Franklin
« La droite dit : la première liberté, c'est la sécurité. Nous disons au contraire : la première sécurité, c'est la liberté. » Pierre Mauroy.

[AF>Amis des Lapins] Jean-Luc

  • Messages: 1890
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #13 le: 03 mai 2018 à 21:09 »
Si, j'ai un app_config.xml mais que pour PrimeGrid, pas pour Einstein.
C'est pour pouvoir faire 2 WUs en parallèle. 600 000 points par jour.
Sinon "que" 400 000 points par jour.


Rédacteur d'un article sur BOINC, adresse :
http://www.astrocaw.eu/?p=605
Créateur d'un site actif de recherche sur les suites aliquotes :
http://www.aliquotes.com/

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #14 le: 03 mai 2018 à 22:58 »
Mmmm ben c'est bizarre alors, il me semblait avoir lu plein de fois ici des crunchers qui utilisaient ce % pour cette finalité et ça le faisait... si y'en a qui pouvaient confirmer ça serait bath, pour ma part je n'ai pas ces soucis car les 2 seuls applis GPU que je peux utiliser font du 0,0x quelque chose de CPU (en tous cas c'est ça qu'ils déclarent dans le BM) donc je sais pas... ou alors ça dépend vraiment des projets / applications et tous n'utilisent pas les CPU de la même façon ? tout ceci est fort étrange.
Parce que c'était lui, parce que c'était moi.

GuL

  • Messages: 1413
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #15 le: 11 mai 2018 à 08:03 »
 :hello:
Pour éclairer votre lanterne:

1) il est vrai que le GPU a besoin du CPU pour lui donner à manger et pour gérer les transferts de mémoire. Certains projets sont très gourmands (Moo), d'autres beaucoup moins (collatz). Le problème est double : l'occupation du cpu dépend d'une part du type d'opérations mathématiques effectuées sur le GPU, et d'autre part de la qualité du codage de l'application.

2) BOINC limite le nombre de cœurs CPU utilisés grâce au % de processeurs utilisés dans les préférences. Ce nombre est prioritairement alloué au CPU. En particulier, si tu as des applications dont la deadline approche, elles passent en calcul haute priorité et utilisent ce %. Il en est de même pour les applications Virtualbox ou multithread, qui utilisent le nombre de cœurs dans les préférences. Donc si tu laisses 100% des processeurs et que tu veux faire du GPU avec une appli MT, tu vas te retrouver avec trop peu de ressources pour le GPU et 100% pour l'application MT.

3) Le fichier app_config te permet de préallouer du temps sur le CPU, mais ne prévaut pas du temps réellement utilisé. Si la somme des ressources demandées dans le app est supérieure ou égale à 1, le GPU va réserver 1 CPU parmi le % des préférences, et laisser un cœur vide. Par contre en cas d'application MT ou de haute priorité, il sera réclamé par le CPU.

La solution est donc, pour 12 threads et 2 GPU, 84 % dans les préférences, 0.5 / 1 GPU et 0.05 CPU (5 %) dans les app_config

A+
« Modifié: 11 mai 2018 à 09:56 par GuL »

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #16 le: 11 mai 2018 à 10:21 »
Mmm compliqué cette affaire, en lisant ton point 2 je comprends que boinc n'utilisera que le % de CPU alloué en partage tâches CPU + besoins du GPU, donc que les cores non déclarés pour boinc ne seront jamais utilisés par boinc (même GPU) et en lisant ton point 3 je comprends l'inverse... et du coup je comprends pas ta conclusion notamment "0.5 / 1 GPU et 0.05 CPU (5 %)" (en ayant déclaré 10 cores sur 12 pour boinc)  :pt1cable:
Parce que c'était lui, parce que c'était moi.

GuL

  • Messages: 1413
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #17 le: 11 mai 2018 à 11:02 »
C'est la subtilité : tu as d'un côté ce qui est réservé et de l'autre ce qui est utilisé, et qui peut être totalement différent.  :pt1cable:
Tant que le taux de cpu cumulé dans les app_config est inférieur à 1, il n'est pas compté dans les cœurs alloués, il est au-delà. C'est le cas avec 0.05 CPU par UT, ça reste en dessous de 1. Rien n'empêche après l'UT d'utiliser plus de CPU si elle en a besoin, en l’occurrence les deux cœurs disponibles. :gniak:

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #18 le: 11 mai 2018 à 22:09 »
Ahhhhhhhhh "la somme des déclarations d'utilisation de CPU [pour le GPU ?] dans les divers app_config" !! bon sang mais c'est bien sûr  :pt1cable:

Et si y'a pas de app_config du tout ? la règle est "si la somme de l'utilisation de cores CPU effective par les tâches GPU est inférieure à 1 core alors ce sont les core en dehors de la quantité réservée à boinc (dans la mesure où ce n'est pas 100%) qui sont utilisés" ??? :gni:
Parce que c'était lui, parce que c'était moi.

GuL

  • Messages: 1413
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Re : Comment donner la priorité au calcul GPU ?
« Réponse #19 le: 11 mai 2018 à 23:00 »
Ahhhhhhhhh "la somme des déclarations d'utilisation de CPU [pour le GPU ?] dans les divers app_config" !! bon sang mais c'est bien sûr  :pt1cable:
Pas tous les app_config, que ceux des UT GPU en cours  :warf:
Citer
Et si y'a pas de app_config du tout ? la règle est "si la somme de l'utilisation de cores CPU effective par les tâches GPU est inférieure à 1 core alors ce sont les core en dehors de la quantité réservée à boinc (dans la mesure où ce n'est pas 100%) qui sont utilisés" ??? :gni:
Non, dans ce cas c'est la valeur par défaut du projet, voire celle de l'ancien fichier app_config qui a été supprimé :hap:. Mais oui, c'est le principe : tant que c'est en dessous de 1, ce n'est pas compté dans ce qui est réservé à Boinc

Dit autrement, boinc réserve ce qu'on lui dit dans les fichiers de config, mais l'UT gpu s'en fiche et utilise ce dont elle a besoin, à condition que le processeur soit en partie disponible. Pour prendre deux exemples avec la même UT collatz qui utilise peu de CPU, pour un 8 cores et 1 GPU:
1) 100 % dans les préférences, 0.01 CPU dans le app_config --> les 8 cœurs sont pris par le projet CPU, le GPU prend quelques miettes.
2) 100 % dans les préférences, 8 CPU dans le app_config --> les 8 cœurs se tournent les pouces, le GPU prend quelques miettes.

Un autre exemple avec Moo Wrapper :
3) 75 % dans les préférences, 0.01 CPU dans le app_config --> 7 cœurs sont pris par le projet CPU, le GPU demande moins de 1 CPU mais a besoin d'un cœur entier, le CPU est utilisé à 100 %.

C'est plus clair ? :sinon:

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #20 le: 12 mai 2018 à 16:54 »
"8 CPU dans le app_config" : tu veux dire 8 cores réservés pour le projet GPU ?? c'est un exemple théorique je suppose ? je comprends pas ce que ça démontre... que si tu laisses plus aucun core pour le projet CPU via un app_config qui les réserve pour le projet GPU, ben le projet CPU n'a plus de cores ??  :pt1cable: La Palice ??

J'ai l'impression de régresser dans la compréhension en fait, et vu que je n'utilise pas tout ça au final je crois que je me fais du mal, je t'embête plus c'est bon !! :D
Parce que c'était lui, parce que c'était moi.

GuL

  • Messages: 1413
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #21 le: 13 mai 2018 à 10:07 »
Oui, l'exemple avec 8 CPU inactifs était purement théorique, pour montrer ce qu'il ne faut pas faire, et la différence entre ce qui est attribué et l'usage réel.
En clair, ce que je suggère:
  • 1 cœur en moins par GPU, en pourcentage dans les préférences
  • 0.05 CPU dans le app_config
A+

JeromeC

  • CàA
  • Messages: 21091
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Comment donner la priorité au calcul GPU ?
« Réponse #22 le: 13 mai 2018 à 13:16 »
Bon résumé :jap:
Parce que c'était lui, parce que c'était moi.