Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Cleaning project.
[mapping.git] / src / and / Mapping / LSM.java
diff --git a/src/and/Mapping/LSM.java b/src/and/Mapping/LSM.java
deleted file mode 100644 (file)
index c193bc8..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-package and.Mapping ;
-
-
-import java.util.ArrayList;
-
-
-
-
-/**
- * Mapping algorithm based on the Edge-Cut principles
- * @author Sébastien Miquée
- *
- */
-public class LSM extends Algo
-{
-       private static final long serialVersionUID = 1L;
-       
-       
-       private ArrayList<GTask> atraiter ;
-       private ArrayList<GTask> encours ;
-       private ArrayList<GTask> fait ;
-//     private Architecture archi ;
-       private ArrayList<Architecture> liste_archi ;
-       private double dep_min ;
-       ArrayList<GTask> mappees ;
-       
-       
-       /**
-        * Default constructor.
-        */
-       public LSM()
-       {
-               super() ;
-               
-               atraiter = new ArrayList<GTask>() ;
-               encours = new ArrayList<GTask>() ;
-               fait = new ArrayList<GTask>() ;
-//             archi = new Architecture() ;
-               liste_archi = new ArrayList<Architecture>() ;
-               dep_min = 0 ;
-               mappees = null ;
-       }
-       
-       
-       /**
-        * Constructor.
-        * @param _gr Application graph to be mapped on
-        * @param _gl Grid graph
-        */
-       public LSM( Graph _gr, Grid _gl )
-       {
-               super( _gr, _gl ) ;
-               
-               atraiter = new ArrayList<GTask>() ;
-               encours = new ArrayList<GTask>() ;
-               fait = new ArrayList<GTask>() ;
-//             archi = new Architecture() ;
-               liste_archi = new ArrayList<Architecture>() ;
-               dep_min = 0 ;
-               mappees = null ;
-       }
-       
-       
-       /**
-        * Constructor.
-        * @param _gr Application graph to be mapped on
-        * @param _gl Grid graph
-        * @param _dep_min Minimum amount of local dependencies
-        */
-       public LSM( Graph _gr, Grid _gl, double _dep_min )
-       {
-               super( _gr, _gl ) ;
-               
-               atraiter = new ArrayList<GTask>() ;
-               encours = new ArrayList<GTask>() ;
-               fait = new ArrayList<GTask>() ;
-//             archi = new Architecture() ;
-               liste_archi = new ArrayList<Architecture>() ;
-               dep_min = _dep_min ;
-               mappees = null ;
-       }
-       
-       
-       @SuppressWarnings("unchecked")
-       @Override
-       public void map() 
-       {
-               System.out.println( "***********************************" ) ;
-               System.out.println( "* Launching the Edge-Cuts Mapping *" ) ;
-               System.out.println( "***********************************\n\n" ) ;
-
-               /* Si le mapping est possible ... */
-               if( gr.getNbGTask() <= gl.getNbGNode() )
-               {
-                       atraiter = (ArrayList<GTask>) gr.getGraph().clone() ;
-                       
-                       liste_archi = construireArchi( gl, gr.getNbGTask() ) ;
-                       
-                       tri_dep() ;
-                       
-                       int indice = -1 ;
-                       int nb_ok = 0 ;
-                       double places = 0 ;
-                       double dep = -1 ;
-                       
-//                     double moy = gr.getAverageDep() ;
-                       GTask tmp = null ;
-                       Cluster cl = null ;
-
-                       boolean change_cluster = false ;
-                       
-//                     System.out.println("nb cluster : "+liste_archi.get(0).getNbClusters() );
-                       
-
-                       while( nb_ok < gr.getNbGTask() )
-                       {                               
-                               if( places == 0 || change_cluster )
-                               {
-                                       if( change_cluster )
-                                       {
-                                               // Ajout du mapping
-                                               mp.addMapping( cl, mappees ) ;
-                                       }
-                                       
-                                       if( nb_ok < gr.getNbGTask() )
-                                       {
-                                               // Changement de cluster
-                                               indice ++ ;
-                                               
-                                               if( indice == liste_archi.get(0).getNbClusters() )
-                                               {
-                                                       System.out.println( "No more cluster !! Impossible to respect constrains !! " ) ;
-                                                       //System.exit( 2 ) ;
-                                                       mp.initMapping() ;
-                                                       return ;
-                                               }
-                                               
-                                               cl = null ;
-                                               cl = liste_archi.get(0).getArchi().get( indice ) ;
-                                               places = cl.getNbGNode() ;
-                                               change_cluster = false ;
-                                               mappees = null ;
-                                               mappees = new ArrayList<GTask>() ;
-                                       }
-                               }
-                               
-                               if( ( atraiter.size() + encours.size() ) <= places )
-                               {
-                                       for( int i = 0 ; i < atraiter.size() ; i++ )
-                                       {
-                                               mappees.add( atraiter.get( i ) ) ;
-                                               nb_ok++ ;
-                                               places-- ;
-                                       }
-                                       
-                                       for( int i = 0 ; i < encours.size() ; i++ )
-                                       {
-                                               mappees.add( encours.get( i ) ) ;
-                                               nb_ok++ ;
-                                               places-- ;
-                                       }
-                                       
-                                       atraiter = null ;
-                                       encours = null ;
-                                       
-                                       atraiter = new ArrayList<GTask>() ;
-                                       encours = new ArrayList<GTask>() ;
-                                       
-                                       mp.addMapping( cl, mappees ) ;
-                               }
-                               
-                               if( encours.size() == 0 && atraiter.size() > 0 )
-                               {
-                                       encours.add( atraiter.get(0) ) ;
-                               }
-                               
-                               if( encours.size() > 0 ) 
-                               {
-                                       tmp = encours.get( 0 ) ;
-                               }
-                               
-                               
-//                             if( ( calc_dep( tmp )* dep_min * moy ) <= places && places > 0 )
-                               dep = calc_dep( tmp ) ;
-                               
-                               if( dep != -1 && 1 + ( dep * dep_min ) <= places && places > 0 )
-                               {
-                                       places -- ;
-                                       nb_ok ++ ;
-                                       
-                                       ajoutDep( tmp ) ;
-                                       
-                                       mappees.add( tmp ) ;
-                                       fait.add( tmp ) ;
-                                       
-                                       atraiter.remove( tmp ) ;
-                                       encours.remove( tmp ) ;
-                               } else {
-                                       change_cluster = true ;
-                               }
-                               
-                               if( places == 0 )
-                               {
-                                       change_cluster = true ;
-                               }
-                               
-                               tmp = null ;
-                               
-//                             try {
-//                                     Thread.sleep( 1000 ) ;
-//                             } catch( InterruptedException e ) {
-//                                     e.printStackTrace() ;
-//                             }
-//                             
-//                             mp.affiche() ;
-//                             System.out.println( "reste : " + places + " sur " + cl.getNom() ) ;
-//                             System.out.println( "nb_ok = " +nb_ok);
-//                             System.out.println("etat : "+encours);
-//                             System.out.println("etat2 : "+mappees);
-//                             System.out.println( "etat3 : "+atraiter);
-                       }
-                       
-               
-               } else {
-                       System.out.println( "\n\n!!! Mapping impossible ! There are more tasks than nodes !!!\n" ) ;
-               }
-               
-               /** Update in cluster the status of nodes **/
-               updateGrid() ;
-       }
-       
-       /**
-        * 
-        * @param _t
-        */
-       private void ajoutDep( GTask _t ) 
-       {
-               if( _t != null )
-               {
-                       GTask tmp = null ;
-                       
-                       for( int i = 0 ; i < _t.getNbDep() ; i++ )
-                       {
-                               tmp = _t.getDependencies().get( i ) ;
-                               
-                               if( ! fait.contains( tmp ) && ! encours.contains( tmp ) 
-                                               && tmp.getNbDep() < _t.getNbDep() )
-                               {
-//                                     System.out.println("haha => "+tmp.getNum() ) ;
-                                       int j = 0 ;
-                                       for( j = 0 ; j < encours.size() ; j++ )
-                                       {
-                                               if( tmp.getNbDep() < encours.get( j ).getNbDep() )
-                                               {
-                                                       encours.add( j, tmp ) ;
-                                                       j = encours.size() + 10 ;
-                                               }
-                                       }
-                                       
-                                       if( j == encours.size() )
-                                       {
-                                               encours.add( tmp ) ;
-                                       }
-                                       
-                                       atraiter.remove( tmp ) ;
-                                       
-                                       tmp = null ;
-                               }
-                       }
-               }
-       }
-
-       
-       /**
-        * 
-        * @param _t
-        * @return
-        */
-       private double calc_dep( GTask _t ) 
-       {
-               int dep = 0 ;
-               int ext = 0 ;
-               
-               double res = -1 ;
-               
-               if( _t != null )
-               {
-                       for( int i = 0 ; i < _t.getNbDep() ; i++ )
-                       {
-                               if( ! fait.contains( _t.getDependencies().get( i ) ) )
-                               {
-                                       dep ++ ;
-                               } else {
-                                       if( ! mappees.contains( _t.getDependencies().get( i ) ) )
-                                       {
-                                               ext++ ;
-                                       }
-                               }
-                               
-                       }
-                       
-                       if( ( dep + ext ) < _t.getNbDep() * dep_min )
-                       {
-                               res = 0 ;
-                       } else {
-                               res = dep + ( ext * 0.5 ) ;
-                       }
-                       
-//                     System.out.println("dep de "+t.getNum()+" => " + res);
-                       
-               }
-               
-               
-               return res ;
-       }
-               
-
-       /**
-        * 
-        * @param _gl
-        * @param _nbGTask
-        * @return
-        */
-       @SuppressWarnings("unchecked")
-       private ArrayList<Architecture> construireArchi( Grid _gl, int _nbGTask ) 
-       {
-               ArrayList<Architecture> ar = new ArrayList<Architecture>() ;
-               
-               ArrayList<Cluster> cl = (ArrayList<Cluster>) gl.getClusters().clone() ;
-               
-               
-               // Méthode à faire !
-               Architecture a = new Architecture() ;
-               
-               for( int i = 0 ; i < cl.size() ; i ++ )
-               {
-                       a.addCluster( cl.get( i ) ) ;
-               }
-
-               ar.add( a ) ;
-               
-               return ar ;
-       }
-       
-       /**
-        * 
-        */
-       @SuppressWarnings("unchecked")
-       private void tri_dep()
-       {
-               int nb_tache = gr.getNbGTask() ;
-               int nb_tri = 0 ;
-               int niveau = 0 ;
-               int niveau_fait = -1 ;
-               int temp = 0 ;
-               
-               ArrayList<GTask> tmp = new ArrayList<GTask>() ;
-               ArrayList<Integer> tab = new ArrayList<Integer>() ;
-
-               while( nb_tri < nb_tache )
-               {               
-                       // Recherche du niveau en décroissant
-                       for( int i = 0 ; i < nb_tache ; i++ )
-                       {
-                               temp = atraiter.get(i).getNbDep() ; 
-                               
-                               if( niveau < temp )
-                               {
-                                       if( niveau_fait != -1 )
-                                       {
-                                               if( temp < niveau_fait )
-                                               {
-                                                       niveau = temp ;
-                                               }
-                                       } else {
-                                               niveau = temp ;
-                                       }
-                               }
-                       }
-                       
-                       // Recherche des taches du niveau courrant
-                       for( int i = 0 ; i < nb_tache ; i++ )
-                       {
-                               if( atraiter.get( i ).getNbDep() == niveau )
-                               {
-                                       tmp.add( atraiter.get( i ) ) ;
-                                       tab.add( atraiter.get( i ).getNum() ) ;
-                                       
-                                       nb_tri ++ ;
-                               }
-                       }
-                       
-                       niveau_fait = niveau ;
-                       niveau = 0 ;
-                       
-               }
-               
-               atraiter = (ArrayList<GTask>) tmp.clone() ;
-               
-//             for( int i = 0 ; i < nb_tache ; i++ )
-//             {
-//                     System.out.print( atraiter.get(i).getNum() +" " ) ;
-//             }
-//             System.out.println();
-       }
-
-
-       @Override
-       public GNode replaceNode( GNode _dead, ArrayList<GNode> _ag ) 
-       {
-               /** Update in cluster the status of nodes **/
-               updateGrid() ;
-               
-               return null;
-       }
-
-
-       @Override
-       public GNode getOtherGNode( ArrayList<GNode> _ag ) {
-               // TODO Auto-generated method stub
-               return null;
-       }
-       
-}
-
-/** La programmation est un art, respectons ceux qui la pratiquent !! **/