Le Forum de l'Alliance Francophone

Nouvelles:

  • Projet du Mois FB: DENIS@home

Auteur Sujet: Applications sporadiques  (Lu 5491 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31240
  •   
le: 13 October 2023 à 19:03
David Anderson n'est pas mort, il est toujours en train de bosser sur boinc.

Applications sporadiques

BOINC a été conçu à l'origine comme un système de traitement par lots : vous soumettez des tâches, elles s'exécutent (indépendamment les unes des autres) et finissent par se terminer. Mais certaines utilisations potentielles de l'informatique distribuée ne correspondent pas à ce modèle. Elles peuvent nécessiter que les applications s'exécutent simultanément sur différents ordinateurs, et éventuellement qu'elles communiquent directement les unes avec les autres. Il s'agit par exemple du calcul parallèle de type MPI et de l'apprentissage automatique distribué. Le mécanisme d' "application sporadique" de BOINC est conçu pour prendre en charge ces types de systèmes et leur permettre de coexister avec le traitement par lots.

Dans ce schéma, il existe un système distribué - appelons-le "système invité" - qui existe en dehors de BOINC. Le système invité possède généralement son propre serveur qui traite les demandes et les transmet aux "nœuds de travail" qui exécutent le client BOINC. La partie "serveur" du système invité fonctionne comme une application sporadique sur ces nœuds. Les instances peuvent communiquer directement entre elles - de pair à pair ou par l'intermédiaire d'un relais - ainsi qu'avec le serveur.

Le système invité utilise BOINC pour
  • Distribuer et exécuter en toute sécurité son code de travail (l'application sporadique).
  • Appliquer les préférences informatiques des volontaires (quand calculer, combien d'unités centrales utiliser, etc.)
  • Pour les volontaires qui utilisent déjà BOINC, répartir la puissance de calcul entre les projets.

Le système invité n'utilise pas les fonctions de traitement par lots de BOINC.

Les tâches d'une application sporadique s'exécutent (c'est-à-dire qu'elles sont présentes en mémoire) en permanence, comme les tâches non gourmandes en CPU (nci), mais elles ne calculent qu'une partie du temps. Comme les applications classiques, une application sporadique peut avoir plusieurs versions. Chacune d'entre elles possède une classe de plan, qui détermine l'utilisation du processeur (CPU et GPU) de ses tâches. Le planificateur BOINC d'un projet peut envoyer plusieurs tâches pour une application sporadique donnée, en utilisant la même version d'application ou des versions différentes.

Un projet BOINC peut fournir n'importe quelle combinaison d'applications régulières, sporadiques et non gourmandes en CPU (nci). Un client peut être connecté à plusieurs projets avec des applications sporadiques.

Comme les tâches régulières, une tâche sporadique ne peut calculer que lorsque BOINC l'autorise, c'est-à-dire :
  • le calcul (et le calcul GPU le cas échéant) est activé par les préférences de l'utilisateur
  • il y a suffisamment de ressources de traitement et de RAM

En outre, un travail sporadique ne peut calculer que lorsque le système invité le lui demande. Ainsi, un travail sporadique converse à la fois avec le client BOINC et avec le serveur du système invité ; il ne calcule que lorsque le serveur le lui demande et lorsque le client dit qu'il peut le faire.


L'API pour les applications sporadiques

Le protocole entre le client BOINC et une application sporadique utilise les messages suivants :

Client à l'application :

DONT_COMPUTE : l'application ne peut pas calculer maintenant (par exemple parce que les ressources ne sont pas disponibles)
COULD_COMPUTE : l'application peut potentiellement calculer
COMPUTING : l'application est en train de calculer en ce qui concerne le client.

L'application au client :

DONT_WANT_COMPUTE : l'application ne veut pas calculer maintenant
WANT_COMPUTE : l'application veut calculer

Le protocole entre l'application et le serveur invité n'est pas spécifié. Il peut être basé sur l'interrogation de l'application ou sur des requêtes bidirectionnelles.

Un scénario typique est le suivant :

 
boinc spo1.png


Les étapes sont les suivantes :
  • Dans un premier temps, le client indique à l'application qu'il ne peut pas calculer, peut-être parce que l'utilisateur a suspendu le calcul.
  • L'application transmet cette information au serveur, ce qui lui indique de ne pas envoyer de requêtes. Le serveur peut savoir quels nœuds de travail sont disponibles pour le calcul à un moment donné.
  • L'utilisateur finit par activer le calcul ; le client transmet un message COULD_COMPUTE à l'application, et l'application le transmet au serveur, indiquant qu'elle peut désormais accepter des requêtes.
  • Le serveur envoie une requête à l'application, lui demandant d'effectuer un calcul (et éventuellement une communication réseau avec d'autres travailleurs).
  • L'application envoie WANT_COMPUTE au client.
  • Le client réserve les ressources informatiques nécessaires et envoie COMPUTING à l'application
  • L'application effectue le calcul. Lorsqu'elle a terminé, elle envoie DONT_WANT_COMPUTE au client.
  • Le client (en supposant que le calcul n'est pas suspendu) envoie COULD_COMPUTE

Il est également possible que l'application doive arrêter le calcul avant la fin de la requête - par exemple, parce que l'utilisateur suspend le calcul.
Dans ce cas,
  • Le client envoie DONT_COMPUTE à l'application.
  • L'application notifie au serveur qu'elle ne peut pas terminer la requête (ou elle peut attendre avant de le faire, au cas où le calcul serait réactivé rapidement).
    L'application doit donc vérifier en permanence si le client lui envoie un message, même lorsqu'elle est en train de calculer.

Les interfaces API permettant de communiquer avec le client sont les suivantes :

enum SPORADIC_CA_STATE {
    CA_NONE             = 0,
    CA_DONT_COMPUTE     = 1,
    CA_COULD_COMPUTE    = 2,
    CA_COMPUTING        = 3
};

enum SPORADIC_AC_STATE {
    AC_NONE                 = 0,
    AC_DONT_WANT_COMPUTE    = 1,
    AC_WANT_COMPUTE         = 2
};

extern void boinc_sporadic_set_ac_state(SPORADIC_AC_STATE);
extern SPORADIC_CA_STATE boinc_sporadic_get_ca_state();


Communication en réseau

Les applications sporadiques qui communiquent avec le réseau doivent respecter les règles d'accès au réseau. Elles ne doivent pas, par exemple, communiquer lorsque les préférences de l'utilisateur l'interdisent.


Priorité aux applications sporadiques

Dans l'implémentation initiale des applications sporadiques (client BOINC version 7.26), les applications sporadiques ont une priorité stricte sur les applications régulières. Ainsi, si une application sporadique effectue beaucoup de calculs, elle peut affamer une application régulière. Si plusieurs applications sporadiques sont en concurrence pour une ressource (par exemple, un GPU), la priorité entre elles est fixe ; l'une d'entre elles peut priver les autres de ressources.

Dans une version ultérieure, les applications sporadiques seront programmées en utilisant le même schéma que celui utilisé pour les applications régulières, dans lequel le partage des ressources du projet détermine la priorité et la famine est éliminée.


Scoop : DA élimine la famine dans le monde !!

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



Hors ligne [AF>Libristes] alain65

  • Boinc'eur Confirmé
  • ***
  • Messages: 477
  •   
    • E-mail
Réponse #1 le: 13 October 2023 à 20:48
Salut Jéjé  :kookoo:

Merci pour la traduction et la mise en forme.  :gloiraseti:

C'est très intéressant. Mais pour que je comprenne de quoi il s'agit, as tu un exemple de ces applications sporadiques?
A quoi je les reconnais?   

In a world without walls and fences, who needs windows and gates?


Et Aussi : PC5 : AMD Ryzen 5 3500X 4GHz | CG: GTX 970 | Ram : 8GB |OS : Debian 10.5 | K: 5.1

PC are like air conditioning, they becomes useless when you open Windows (L.T)


Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31240
  •   
Réponse #2 le: 14 October 2023 à 12:32
Excellente question, je pense que le truc est très récent, il évoque pas de candidat.

J'ai trouvé un fil de discussion sur GitHub qui pose une question technique sur ces sporadic apps, à laquelle DA a répondu, j'ai donc posé la question.

J'ai trouvé aucune mention de ça sur le forum de boinc@berkeley.

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



Hors ligne [AF>Libristes] alain65

  • Boinc'eur Confirmé
  • ***
  • Messages: 477
  •   
    • E-mail
Réponse #3 le: 14 October 2023 à 17:51
J'ai trouvé aucune mention de ça sur le forum de boinc@berkeley.
ha? Ok...Wait and see, alors

In a world without walls and fences, who needs windows and gates?


Et Aussi : PC5 : AMD Ryzen 5 3500X 4GHz | CG: GTX 970 | Ram : 8GB |OS : Debian 10.5 | K: 5.1

PC are like air conditioning, they becomes useless when you open Windows (L.T)


Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31240
  •   
Réponse #4 le: 15 October 2023 à 17:17
A la question "Has any project expressed an interest in using this system so far?" DA a répondu "Yes, a couple" ce qui est gentil de sa part mais relativement maigre comme information... j'ai donc tenté de glaner plus d'infos, nous verrons.

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



Hors ligne modesti

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 19101
  •   
    • Brocantes en Bourbonnais
    • E-mail
Réponse #5 le: 15 October 2023 à 17:31
Est-ce que ça pourrait être lié à l'apparition d'un projet "BOINC Central" dans la liste des projets sélectionnables lorsqu'on veut en ajouter un nouveau ?


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


In memoriam Jip - In memoriam Cocagne


Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31240
  •   
Réponse #6 le: 15 October 2023 à 19:10
:??:

Aucune idée.

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



Hors ligne [AF>Libristes] alain65

  • Boinc'eur Confirmé
  • ***
  • Messages: 477
  •   
    • E-mail
Réponse #7 le: 15 October 2023 à 20:14
Aucune idée.

Maintenant que tu as soulevé le lièvre, il va falloir creuser (le terrier)  :lol:
« Modifié: 16 October 2023 à 16:08 par [AF>Libristes] alain65 »

In a world without walls and fences, who needs windows and gates?


Et Aussi : PC5 : AMD Ryzen 5 3500X 4GHz | CG: GTX 970 | Ram : 8GB |OS : Debian 10.5 | K: 5.1

PC are like air conditioning, they becomes useless when you open Windows (L.T)


Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31240
  •   
Réponse #8 le: 16 October 2023 à 14:32
DA a répondu à ma question "Interesting, any more information about what project / their plans (if any at this stage) ?" :

"Distributed neural net training. Planning stages AFAIK."

Je comprends du coup que ça serait un nouveau projet, qui n'en est qu'à une phase de planification.

Mais bon je vais cesser de lui demander vu qu'à chaque fois il répond avec un nombre minimal de mots, ça veut dire qu'il a pas envie d'en dire plus, et j'ai pas envie de gratter forever non plus.

Pour le "BOINC central" j'ai posé la question sur le fofo boinc.

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: 31240
  •   
Réponse #9 le: 22 October 2023 à 11:39
Modesti la réponse à ta question : la réponse est oui :)

Mais bon c'est pas clair quand même... comment on choisirait ce qu'on veut faire alors ?
« Modifié: 22 October 2023 à 11:43 par JeromeC »

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



Hors ligne modesti

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 19101
  •   
    • Brocantes en Bourbonnais
    • E-mail
Réponse #10 le: 22 October 2023 à 13:17
Merci beaucoup, Jéjé. Du coup, ce serait un wrapper idéal pour les projets de Natalia :ange: :siflotte:


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


In memoriam Jip - In memoriam Cocagne


Hors ligne JeromeC

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 31240
  •   
Réponse #11 le: 22 October 2023 à 18:52
Vade retro !!!

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: 31240
  •   
Réponse #12 le: 25 October 2023 à 19:37
Merci beaucoup, Jéjé. Du coup, ce serait un wrapper idéal pour les projets de Natalia :ange: :siflotte:
Du coup je n'avais pas du tout compris la réponse, mais ils ont développé ensuite dans la conv, et je comprends ce que tu voulais dire aussi :)

Un projet générique pour les petits projets qui n'ont pas les moyens de faire leur serveur : https://boinc.berkeley.edu/central/
avec plein d'app pour tous les OS https://boinc.berkeley.edu/central/apps.php
sauf que y'a pas de taff https://boinc.berkeley.edu/central/server_status.php
parce que y'a pas de projets dedans !

J'ai peur que cette magnifique idée arrive un peu tard dans le monde ralentissant de boinc ?

Mais modesti parles-en à Natalia... si jamais tu veux rendre fous les admins de ce truc :D

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



Hors ligne modesti

  • CàA
  • Boinc'eur devant l'éternel
  • *****
  • Messages: 19101
  •   
    • Brocantes en Bourbonnais
    • E-mail
Réponse #13 le: 25 October 2023 à 21:05
:lol:
On va essayer de ne pas tuer le projet dans l’œuf ;) :siflotte:


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


In memoriam Jip - In memoriam Cocagne


Hors ligne kasur

  • Boinc'eur devant l'éternel
  • *****
  • Messages: 3143
  •   
    • E-mail
Réponse #14 le: 02 April 2024 à 13:01
Très intéressant, merci  :jap:


et 194 SETI@home classic workunits (4 764 hours) :p