pi_checkpoint_ex5.m 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. % pi_checkpoint_ex5.m:
  2. % - Calcul de l'approximation de pi par la méthode de Leibniz
  3. % - le programme simule un job long avec des instructions "pause" inutiles
  4. % avec un checkpoint à intevalle de temps régulier.
  5. % - Il s'agit juste d'un exemple ...le choix de placer deux tests "if", une
  6. % éventuelle sauvegarde dans une boucle qui contient seulement 3 instructions
  7. % de calculs élémentaire est évidemment très critiquable!
  8. %
  9. % - Le problème des checkpoint est à prendre en considération si vous soumettez
  10. % des jobs de très longue durée sur le cluster ( pannes , coupures de courant,
  11. % jobs soumis sur des files besteffort, long ,...)
  12. %
  13. % Note: le script pi_checkpoint_ex5.m peut-être tester avec Matlab en mode
  14. % interactif: il suffit de le stopper avec CTRL+C (et le relancer une 2ième fois)
  15. %
  16. if exist('check.mat')
  17. % initialise les données au redémarrage
  18. fprintf('restart après arrêt\n');
  19. load('check.mat');
  20. fprintf('valeur provisoire de pi: %f et iteration %d \n',4*approxpi,n);
  21. % modif du flag 'passe' pour supprimer les pauses et finir le calcul
  22. passe = 0;
  23. save('check.mat');
  24. else
  25. Nmax=1000;
  26. approxpi=0;
  27. fac=1;
  28. n=1;
  29. passe=1;
  30. save('check.mat','Nmax','approxpi','fac','n','passe');
  31. end
  32. t = clock;
  33. % environ 30 secondes entre chaque checkpoint
  34. intervalle_checkpnt=30;
  35. while( n < Nmax )
  36. approxpi=approxpi+fac/(2*n-1);
  37. fac=-fac;
  38. n=n+1;
  39. % simulation d'un job long...
  40. if ( passe == 1 )
  41. pause(2)
  42. end
  43. % checkpoint
  44. if( etime(clock,t) >= intervalle_checkpnt )
  45. fprintf('checkpoint, indice de boucle = %d \n', n );
  46. save('check.mat','Nmax','approxpi','fac','n','passe');
  47. %pause( 1 );
  48. t = clock;
  49. end
  50. end
  51. approxpi=4*approxpi;
  52. fprintf('\n approximation de pi: %f après %d itérations\n',approxpi,Nmax);
  53. % suppression du fichier checkpoint
  54. delete('check.mat');
  55. % merci de quitter matlab pour libérer les jetons de licence.
  56. quit