programation multi threads
	
	
		Bonjour, j'ai fait un prgm qui résoud N systèmes d'équations différentielles non linéaires où N est une donnée de l'utilisateur. Après avoir codé une version séquentielle, j'en ai codé une autre en parallèle en utilisant MPI (sur une grappe de 26 processeurs). Comme j'ai 2 bi-processeurs sur mon PC, j'aimerais apprendre à coder en multi-thread. J'ai donc lu la page suivante http://emmanuel-delahaye.developpez.com/pthreads.htm ainsi que qq poly téléchargés du net. Mais j'ai trois questions de fond :
1) avec MPI l'exécutable est copié sur les n processeurs où n est donné comme option lors de l'exécution (mpirun -np n executable). Est-ce que par défaut, un prgm multi-thread prendra tous les processeurs du PC ou dois-je le lui dire (n'en prends que 3 sur mes 4 par exemple) ?
2) avec MPI l'exécutable est copié sur les n processeurs. Mais en multi-thread, j'ai l'impression qu'il n' y a qu'un seul exécutable. Je prends l'exemple ci-dessous (issus de  http://emmanuel-delahaye.developpez.com/pthreads.htm) :
	Code:
	
| 12
 3
 
 |  
pthread_create (&ta, NULL, task_a, NULL);
pthread_create (&tb, NULL, task_b, NULL); | 
 Comment est-ce que le PC gère  : le thrad ta est en train de se lancer, donc lancer le thread tb sur un au tre processeur ?
Avec MPI, chaque processeur a un rang et donc je faisais
	Code:
	
| 12
 3
 4
 5
 
 |  
if(rang == 0)
blabla
else if (rang == k)
blabla | 
 3) Enfin, question de pratique : le nombre de système que je dois résoudre (N) est une donnée de l'utilisateur.
Si je fais
	Code:
	
| 12
 3
 
 |  
for(i=0;i<N;++i)
lancer le thread numéro i | 
 est-ce qu'ils vont tous s'exécuter en parallèle ? Est-ce la même chose que décrire
	Code:
	
| 12
 3
 4
 5
 
 |  
pthread_create (&t1, NULL, task_1, NULL);
pthread_create (&t2, NULL, task_2, NULL);
...
pthread_create (&tN, NULL, task_N, NULL); | 
 Merci.