% 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