Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79

    [C] deadlock tra processi

    Salve,Apro questo topic per chiedere un consiglio riguardante il seguente frammento di codice mpi:
    codice:
    #include #include #include #include #define PROC_MASTER 0typedef struct double_int{	double val;	int proc_id;}double_int;int main(int argc, char **argv){	int n_proc, proc_id;	double *x = (double *)malloc(10*sizeof(double));	MPI_Init(&argc, &argv);	MPI_Comm_size(MPI_COMM_WORLD, &n_proc);	MPI_Comm_rank(MPI_COMM_WORLD, &proc_id);	double_int num;	double_int num_min;	srand(time(NULL));		int i;	for(i = 0; i < 1000; i++){		if(i == 20 && proc_id == 2){			MPI_Finalize();			exit(EXIT_SUCCESS);		}		if(proc_id == PROC_MASTER){			num.val = rand()/(double)RAND_MAX;			num.proc_id = proc_id;		}		else if(proc_id == 1){			num.val = rand()/(double)RAND_MAX;			num.proc_id = proc_id;		}		else if(proc_id == 2){			num.val = rand()/(double)RAND_MAX;			num.proc_id = proc_id;		}		else if(proc_id == 3){                	num.val = rand()/(double)RAND_MAX;                	num.proc_id = proc_id;		}				MPI_Allreduce(&num, &num_min, 1, MPI_DOUBLE_INT, MPI_MINLOC, MPI_COMM_WORLD);		if(proc_id == PROC_MASTER){			printf("iter %d: ricevuto f = %f dal processo %d\n", i, num_min.val, num_min.proc_id);		}		MPI_Bcast(x, 10, MPI_DOUBLE, num_min.proc_id, MPI_COMM_WORLD);	}	MPI_Finalize();	exit(EXIT_SUCCESS);}
    In pratica il funzionamento del programmino è il seguente:Ho 4 processi che eseguono tutti quanti un ciclo iterativo, ad ogni iterazione ogni processo genera un numero random; successivamente tramite la funzione Allreduce trasferisco in broadcast l'id del processo che ha generato il valore minimo (tramite l'operazione MPI_MINLOC); infine, tramite la funzione Bcast, il processo che ha generato il valore minimo deve passare "qualcosa" a tutti gli altri processi..(in questo caso il vettore x).La cosa che non riesco a capire è il fatto che se termino prima degli altri un processo (es dopo 20 iterazioni), tutti gli altri processi finiscono in deadlock..

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Codice illeggibile.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    è vero chiedo scusa, non so perchè ma inserendo il codice nel tag code mi viene fuori così, volevo editare il post ma non riesco..Comunque nel caso ho inserito il codice anche qui http://pastebin.com/K0GuRwDhvi ringrazio per eventuali risposte

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    This paste has been removed!
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    quello corretto è questo: http://pastebin.com/K0GuRwDh scusate per i tremila post, ma non riesco ad editare..
    Ultima modifica di HeroGian; 21-05-2015 a 13:37

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Suggerimento... quando devi incollare del codice che proviene da un IDE (che, generalmente, ha anche della formattazione extra), fai un passaggio molto semplice: apri il Blocco Note, incolla il codice lì dentro, poi selezionalo dal blocco note, copialo ed incollalo nel forum (in questo modo la formattazione dell'IDE viene rimossa ed il forum non si arrabbia).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.