# Comment utiliser le cluster du LIP6 ? Ceci suppose qu'on soit sur une machine LIP6, i.e. portable enregistré au LIP6, et à partir du réseau LIP6. Si on est à la maison, il faut créer un tunnel ssh avant, qui crée une sorte de VPN. Le code suppose aussi que le login est le même sur la machine locale que sur le serveur big. Sinon, il faut précéder `big` de `login@`. ## Pour ne pas saisir sa passphrase tout le temps ```bash eval $(ssh-agent) ssh-add #(une fois) ``` ## Copier le programme vers le cluster ```bash scp lp.py big.lip6.fr: ``` ## Ouvrir une session sur le cluster ```bash ssh big.lip6.fr oarsub -I ``` ## Créer un environement ```bash module load python conda create --name lp python pulp scipy conda activate lp ``` ## Problèmes - pulp nécessite CBC qui n'est pas installé - conda ne peut pas charger gurobipy - conda peut charger lp_solve. Mais ensuite python ne connait pas le module lpsolve55, comme indiqué dans les documentations. ## Mon idée On utilise Gurobi. Pour cela - on charge le module avec `module load gurobi` - on écrit des fichiers de modèles, qui décrivent de manière générique le programme linéaire pour des paramètres `n` et aussi `C` et des facteurs de tuninig de l'ensemble `U` des valeurs d'enchères possibles. - Puis on exécute ces programmes linéaires avec `gurobi_cl`. - On doit apprendre à faire des boucles pour différents `C`. - Ou mieux écrire le LP pour avoir `R` fixé et minimiser `C`. ## Expérience vendredi 13 - J'ai ajouté `pb.writeLP("tmp.lp")` dans `lower_bound_LP.py`. - Ensuite j'ai copié ce fichier sur `big` et je l'ai résolu avec Gurobi utilisant ```bash module load gurobi gurobi_cl tmp.lp ``` - On a la même valeur objectif (heureusement) - Mais localement avec C=1.5 et n=160 l'exécution via Pulp et CBC a mis 15 secondes sur ma machine - Alors que sur `big` elle a pris 32 secondes ! - Pour C=1.5 et n=240 les temps étaient identiques à 90 secondes. - Idée: si on utilise Pulp, on peut créer le modèle qu'une seule fois et on ne change que la variable C à chaque itération sur C. Ça sera plus rapide. - On peut utiliser Julia avec le package JuMP. J'ai l'impression qu'on n'a pas de problème d'installation et c'est juste long à la première utilisation car il doit installer les packets. Ça pourrait être notre solution.