Mi interessa sapere se esiste un comando o una tecnica all'interno di OpenMPI per avere una chiamata atomica per scrivere su stdout (o, per altro, qualsiasi flusso).Una chiamata "atomica" al cout in MPI
Quello che ho notato è che durante l'esecuzione dei programmi MPI, le chiamate per scrivere su cout (o altri flussi) possono diventare confuse, poiché ogni proc può scrivere ogni volta che arriva a una determinata sezione di codice. Quando si riportano i risultati, una riga può essere scritta da diversi procs, confondendo il problema. Quindi 2 procs diversi potrebbe fare qualcosa di simile:
//Proc 10 - results calculated somewhere above
// result1 = 10
// result2 = 11
cout << "My results are: " << result1 << " " << resul2 << endl;
e:
//Proc 20 - results calculated somewhere above
// result1 = 20
// result2 = 21
cout << "My results are: " << result1 << " " << resul2 << endl;
Ma il risultato potrebbe essere:
My results are: 20 My results are: 10 11 21
Quello che sto cercando è qualcosa di simile a una " blocco "o cout atomico (oltre che possibilmente scrivere in altri flussi, come i flussi di file). Quindi, una volta che comincio a scrivere un to cout, esso blocca fino alla fine dell'istruzione, o finché non viene emesso un endl o un flush allo stream. Se questo fosse il caso, mi piacerebbe essere garantito che le 2 linee sarebbero separati (ma, ovviamente, ancora non saprei quale linea sarebbe venuto prima):
My results are: 20 21
My results are: 10 11
Due diversi PROCESSI o due thread? –
Mi stavo chiedendo di 2 diversi processi. –
In esecuzione sulla stessa macchina o su macchine diverse? –