12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- % pi_checkpoint_ex5.m:
- % - Calcul de l'approximation de pi par la méthode de Leibniz
- % - le programme simule un job long avec des instructions "pause" inutiles
- % avec un checkpoint à intevalle de temps régulier.
- % - Il s'agit juste d'un exemple ...le choix de placer deux tests "if", une
- % éventuelle sauvegarde dans une boucle qui contient seulement 3 instructions
- % de calculs élémentaire est évidemment très critiquable!
- %
- % - Le problème des checkpoint est à prendre en considération si vous soumettez
- % des jobs de très longue durée sur le cluster ( pannes , coupures de courant,
- % jobs soumis sur des files besteffort, long ,...)
- %
- % Note: le script pi_checkpoint_ex5.m peut-être tester avec Matlab en mode
- % interactif: il suffit de le stopper avec CTRL+C (et le relancer une 2ième fois)
- %
- if exist('check.mat')
- % initialise les données au redémarrage
- fprintf('restart après arrêt\n');
- load('check.mat');
- fprintf('valeur provisoire de pi: %f et iteration %d \n',4*approxpi,n);
- % modif du flag 'passe' pour supprimer les pauses et finir le calcul
- passe = 0;
- save('check.mat');
- else
- Nmax=1000;
- approxpi=0;
- fac=1;
- n=1;
- passe=1;
- save('check.mat','Nmax','approxpi','fac','n','passe');
- end
- t = clock;
- % environ 30 secondes entre chaque checkpoint
- intervalle_checkpnt=30;
- while( n < Nmax )
- approxpi=approxpi+fac/(2*n-1);
- fac=-fac;
- n=n+1;
- % simulation d'un job long...
- if ( passe == 1 )
- pause(2)
- end
- % checkpoint
- if( etime(clock,t) >= intervalle_checkpnt )
- fprintf('checkpoint, indice de boucle = %d \n', n );
- save('check.mat','Nmax','approxpi','fac','n','passe');
- %pause( 1 );
- t = clock;
- end
- end
- approxpi=4*approxpi;
- fprintf('\n approximation de pi: %f après %d itérations\n',approxpi,Nmax);
- % suppression du fichier checkpoint
- delete('check.mat');
- % merci de quitter matlab pour libérer les jetons de licence.
- quit
|