Version du 30/03/2015

Tutoriel pour JACEP2P-V2
La plateforme JACEP2P-V2 se constitue de trois types de noeuds :
Avant de pouvoir utiliser la plateforme JACEP2P-V2, il faut :
  1. Installer le Java Development Kit (jdk)
  2. Télécharger les sources de la plateforme JACEP2P-V2 : Télécharger
  3. Extraire les scripts de lancement des démons (jaceP2Pboot et daemonP2P) et l'archive JaceP2P.tar
  4. 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 :
  1. Importer la librairie jaceP2P.tar dans la classe principale : import jaceP2P.*;
  2. La classe principale de l'application doit être une sous classe de la classe Task : public class MonAppli extends Task
  3. 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
  4. 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.
  5. Définir la méthode jaceP2P_SaveFromCrash() qui permet au développeur de l'application de préciser les données à sauvegarder
  6. Définir la méthode jaceP2P_ConvertStream(ObjectInputStream stream) qui permet de faire un casting de lobjet reçu en stream à l'application principale
  7. 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
  8. 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()
  9. 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 :
  1. Lancer au moins un super-noeuds : java jaceP2P.JaceP2P -SNode [nomDelaMachine] [portDeCom] rmi [fréquenceBattementDeCoeurEnMS]
  2. Lancer un démon jaceP2P.JaceP2P -Daemon [nomDuSuperNoeud] [portDeCom] rmi
    ou lancer une liste de démons : jaceP2Pboot boot [fichierMachines] [nomDuSuperNoeud] [féquencePanneEnSeconde]
  3. lancer un spawner avec une application : java jaceP2P.JaceP2P -Spawner [nomDuSuperNoeud] [portDeCom] rmi [nbDeDémon] file:[chemin/nomApplication] [paramètresAppli]
Exemple d'application : Advection-diffusion en 2D
L'archive app.tar contient les fichiers sources de l'application advection-diffusion et la librairie mtj.
Vous devez ajouter la librairie mtj.jar à la variable d'environnement CLASSPATH.
Une fois téléchargée et les fichiers sources Java extraits de l'archive et compilés, l'application peut être exécutée avec les commandes suivantes :
  1. java jaceP2P.JaceP2P -SNode smiths 1098 rmi 2000 : lancer un super-noeud sur la machine smiths qui communique sur le port 1098 et exige un battement de coeur des démons chaque 2000ms
  2. jaceP2Pboot_al_D boot machinesFile smiths 60 : lancer des démons sur la liste de machine dans le fichier machinesFile. Les démons vont se connecter au super-noeud smiths et il y aura une panne chaque 60 secondes.
  3. java jaceP2P.JaceP2P -Spawner smiths 1098 rmi 4 file:/home/charr/jaceP2P/jaceP2P/Advec2D 100 2 2 5 : lancer l'application Advec2D sur 4 machines et elle prend 4 paramètres (100 2 2 5) : la taille du problème, le nb de tâches en vertical, le nb de tâches en horizontal et la fréquence des sauvegardes (1 sauvegarde chaque 5 itérations). Le spawner va se connecter au super-noeud smiths et peut communiquer à travers le port 1098.