Bon, j’ai fait l’aller-retour à la Défense hier pour aller chercher les badges, donc on peut pas vraiment dire que ça commence. Mais quand même, on s’est plantés en réglant le réveil hier, en réglant l’alarme ça a décalé l’heure (plein de réveils que je connais font ça, quelqu’un sait pourquoi ? À part que c’est de la meeeeeeerde ?) et du coup il est 6h et pas 7. Bon, ben je serai à l’heure…
Mois : janvier 2006
Des fois le hasard, c’est bien.
Ce soir en rentrant, je passe devant la librairie… j’hésite à y passer, je me dis « bon, si j’ai mon portefeuille j’y vais, sinon j’y vais pas » – le portefeuille était pas dans mon blouson, je pensais l’avoir oublié au labo, et en fait non, il était dans mon sac. Chouette, je rentre. Je monte à l’étage, comme d’habitude, je traîne un peu, bof bof, rien de bien tentant, quand soudain… là sur une table, « mmh, j’ai déjà vu cette couverture quelque part… MAIS OUIIIII ! C’est le dernier bouquin de Martin Winckler !!! J’avais même pas vu qu’il était sorti ! » (mais j’avais déjà vu la couv sur le site web…)
Du coup j’embarque le premier de la pile, je paye, et je m’en vais attaquer ça dans la rue sous la bruine :o) À peine commencé, mais ça a l’air prometteur. J’vous en recause quand j’ai fini de le dévorer :o)
Quelques expériences avec MPI
Ça y est, ça marche. J’y suis depuis hier, mais ça marche. Petit compte-rendu de manipes pour faire tourner un programme MPI entre deux machines Linux (apparemment, entre mon Mac et un Linux ça a pas l’air de vouloir. Tant pis).
Primo : écrire un programme MPI. J’ai trouvé çuilà sur le web :
#include "mpi.h" #include <math.h>
int main(argc,argv) int argc; char *argv; { int done = 0, n, myid, numprocs, i, rc; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x, a;
MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); while (!done) { if (myid == 0) { printf("Enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += 4.0 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
if (myid == 0) printf("pi is approximately %.16f, Error is %.16f ", pi, fabs(pi - PI25DT)); } MPI_Finalize(); }
Ça vaut ce que ça vaut, il me fallait juste un petit exemple.
Après avoir installé ce qu’il faut, on compile le bousin :
$ mpicc.mpich -o test3.LINUX test3.c
et on vérifie que ça marche sur un proc :
$ mpirun test3.LINUX Enter the number of intervals: (0 quits) 45 pi is approximately 3.1416338058529365, Error is 0.0000411522631434 Enter the number of intervals: (0 quits) 0 $
Bon. Ensuite, pour que l’exécution se passe correctement entre les deux machines, faut pouvoir s’y connecter. On configure donc l’authentification par clé entre les deux machines (de machine1 vers machine2). Il se trouve que machine1 et machine2 partagent le home par NFS, je ne transfère donc pas la clé (mais normalement, il faut) :
machine1 $ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
(mettre une passphrase, tout ça)
machine2 $ cat id_rsa.pub >> ~/.ssh/authorized_keys
On vérifie que ça marche :
machine1 $ ssh machine2 Enter passphrase for key '/home/balise/.ssh/id_rsa': machine2 $ exit
Sur ce, on revient à la machine1, on lance ssh-agent :
machine1 $ nohup ssh-agent -s | grep -v echo > ~/.ssh-agent machine1 $ source ~/.ssh-agent Agent pid 3665
On rajoute une paire de trucs dans le profile :
[ -z "$SSH_CLIENT" ] && . $HOME/.ssh-agent alias keyon="ssh-add -t 10800" alias keyoff='ssh-add -D' alias keylist='ssh-add -l'
ce qui permet de lancer keyon, après avoir re-sourcé le profile :
machine1 $ source ~/.bash_profile machine1 $ keyon Enter passphrase for /home/balise/.ssh/id_rsa: Identity added: /home/balise/.ssh/id_rsa (/home/balise/.ssh/id_rsa) Lifetime set to 10800 seconds
On vérifie que tout est OK pour le login avec clé :
machine1 $ ssh machine2 machine2 $ exit
o/.
On édite alors le fichier /usr/lib/mpich/share/machines.LINUX
pour y mettre
machine1 machine2
Un petit export de variable :
machine1 $ export P4_RSHCOMMAND=/usr/bin/ssh
et voila :
machine1 $ mpirun -np 2 test3.LINUX Enter the number of intervals: (0 quits) 42 pi is approximately 3.1416398947081130, Error is 0.0000472411183199 Enter the number of intervals: (0 quits) 0
Juste pour vérifier ce qui est effectivement exécuté :
machine1 $ mpirun -np 2 -t test3.LINUX Procgroup file: machine1 0 /home/balise/mpi/test3.LINUX machine2 1 /home/balise/mpi/test3.LINUX "/home/balise/mpi/test3.LINUX" -p4pg "/home/balise/mpi/PI7009" -p4wd "/home/balise/mpi"
Et voila, on est content, on peut faire la danse de l’ingénieur.
J’ai lu plein de blogs ces jours-ci…
Ça commence toujours pareil : on va voir une url qui traîne dans une conversation IRC, c’est un blog, on clique sur un premier lien « le blog de machine », qui passe sur « le blog de truc » pour finir sur « encore un blog »… Et du coup, j’ai beaucoup bouquiné sur le web ces temps-ci, parce que je me suis envoyé les archives des 4 blogs suivants :
- celui de Ron, l’infirmier des stars – et des autres ; parfois déprimant, parfois très drôle, toujours très sympa à lire
- celui de Peace of Cake, la téléphage enragée – j’ai un peu l’impression de lire ce que je pourrais écrire en regardant la télé, c’est rigolo – et en plus, elle a très bon goût en matière de séries télé :p
- celui d’Artefact, dont j’aime beaucoup le style, elle écrit wachement bien Artefact
- et celui de Melie qui me fait également beaucoup rire, des fois moins, mais qui m’intéresse toujours aussi, du premier au dernier billet.
Voila, ce sont les quatre feuilletons que je suis en ce moment :o)
On ne va PAS faire dans l’original.
Donc, comme je disais : on ne fait PAS dans l’original : je vous souhaite à tous une très bonne année 2006 – qu’elle vous apporte de belles et bonnes choses. Je pense particulièrement à certaines personnes qui me sont chères et pour qui l’année 2005 a pas forcément été des plus joyeuses… bises à vous – et à tous, et encore une fois meilleurs voeux.