- Les super-noeuds : ils sont les points d'accés à la plate-forme pour les démons et les lanceurs.
- Les lanceurs : ils lancent l'exécution des tâches sur les démons et assurent le bon déroulement de l'application.
- Les démons : ils exécutent les tâches de calcul.
Avant de pouvoir utiliser la plateforme JACEP2P-V2, il faut :
- Installer le Java Development Kit (jdk)
- Télécharger les sources de la plateforme JACEP2P-V2 : Télécharger
- Extraire les scripts de lancement des démons (jaceP2Pboot et daemonP2P) et l'archive JaceP2P.tar
- Ajouter JaceP2P.tar à la variable d'environnement CLASSPATH
Avant de pouvoir exécuter une application parallèle asynchrône implémentée en Java sur JACEP2P-V2, il faut :
- Importer la librairie jaceP2P.tar dans la classe principale : import jaceP2P.*;
- La classe principale de l'application doit être une sous classe de la classe Task : public class MonAppli extends Task
- Définir la méthode jaceP2P_InitTask() qui est exécutée avant l'exécution de l'application principale et permet l'initialisation de l'application, la récupération de l'identifiant de la tâche avec la variable jaceMyId et des paramètres de l'application avec le vecteur jaceArgs
- Définir la méthode jaceP2P_ReinitTask() qui est exécutée lorsque la tâche est reinitialisée depuis une sauvegarde après une panne.
- Définir la méthode jaceP2P_SaveFromCrash() qui permet au développeur de l'application de préciser les données à sauvegarder
- Définir la méthode jaceP2P_ConvertStream(ObjectInputStream stream) qui permet de faire un casting de lobjet reçu en stream à l'application principale
- Définir la méthode getDependencies(int i) qui retourne un vecteur contenant les identifiants des tâches avec lesquelles la tâche i doit échanger des données
- Définir la méthode run() qui contiendra l'application principale et qui sera exécutée après l'initialisation avec jaceP2P_InitTask() ou jaceP2P_ReinitTask()
- l'API de JACEP2P-V2 offre plusieurs méthodes et propriétés :
- jaceP2P_Iteration : indique le numéro d'itération
- jaceP2P_globalCV_state : indique l'état global de l'application (a convergée ou pas)
- jaceP2P_Save() : sauvegarde la tâche
- jaceP2P_GlobalConvergence(boolean) : lance la détection de la convergence globale
- jaceP2P_ReinitConv() : reinitialise la détection de la convergence globale
- jaceFinalize() : termine la tâche
- jaceSend() : envoie les données en asynchrône à un noeud voisin
- jaceReceive() : reçoit les données envoyées par les voisins (non blockant)
Pour exécuter une application parallèle asynchrône sur JACEP2P-V2, il faut :
- Lancer au moins un super-noeuds : java jaceP2P.JaceP2P -SNode [nomDelaMachine] [portDeCom] rmi [fréquenceBattementDeCoeurEnMS]
- Lancer un démon jaceP2P.JaceP2P -Daemon [nomDuSuperNoeud] [portDeCom] rmi
ou lancer une liste de démons : jaceP2Pboot boot [fichierMachines] [nomDuSuperNoeud] [féquencePanneEnSeconde] - lancer un spawner avec une application : java jaceP2P.JaceP2P -Spawner [nomDuSuperNoeud] [portDeCom] rmi [nbDeDémon] file:[chemin/nomApplication] [paramètresAppli]