Tanks for your tip Bogdan, but that i already knows.
I print MPI_provided and i get 2 = MPI_THREAD_SERIALIZED. OK, it is good to me, but program not run.
Do I must use some flag in ./configure to indicate the use of threads?
I don't knows why it stop, no deadlock possible.
Tanks
Foguer
---------- Cabeçalho original -----------
> Hi all, i write a simple code to teste MPI and Threads, but it don't work and i don't have any ideia why. I
> think that my problem is the installation. Regular thread programs work. MPI programs without threads work to.
>
> I'm using LAM/MPI 7.1.1
> gcc 3.2.2
> Linux Red Hat e kernel 2.4.29
> on a Intel PC cluster
>
> My installation:
> ./configure --with-boot=rsh --with-rsh=ssh
> make
> make install
>
> mpicc -showme
> gcc -I/opt/lam-7.1.1/include -pthread -ldl -lpthread -L/lib -L/opt/lam-7.1.1/lib
> -llammpio -llamf77mpi -lmpi -llam -laio -laio -lutil -lcr -ldl
>
> mpicc mpi_helo_thread.c -o helo_thread
> no error or warning reported
>
> My output is:
> Master call...
> Slave 1.
>
> And stop! I need kill program CTRL+C.
> Any suggestion is welcome.
> Tank you.
>
> Foguer
>
> My source.
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <pthread.h>
> #include <mpi.h>
>
> void * Hello (void * arg) {
> printf("Hello!\n");
> return 0;
> }
>
> int main (int argc, char ** argv) {
>
> int MPI_provided;
> int my_rank;
> pthread_t pt;
>
> MPI_Init_thread (NULL, NULL, MPI_THREAD_SERIALIZED, &MPI_provided);
> MPI_Comm_rank (MPI_COMM_WORLD, &my_rank);
>
> if (my_rank == 0) {
> printf("Master call...\n");
> }
> else {
> printf("Slave %d.\n", my_rank);
> pthread_create(&pt, NULL, Hello, NULL);
> pthread_join(pt, NULL);
> fprintf(stderr, "Joined.\n");
> }
>
> MPI_Barrier(MPI_COMM_WORLD);
> MPI_Finalize();
>
> return 0;
> }
>
>
>
>
>
|