Sto cercando di imparare le basi del calcolo parallelo, ma sto riscontrando un problema sul mio computer. Dai un'occhiata al mio codice qui sotto. Fondamentalmente, voglio stampare la riga "Hello World!" per ogni core del mio computer. Il mio computer ha quattro core, quindi dovrebbe stampare quella linea quattro volte. Se dovessi usare la linea "cout" commentata invece della linea "printf", l'output sarebbe tutto confuso. Questo perché il comando \ n 'escape viene eseguito separatamente da "Hello World!", Quindi il nuovo output di riga si verificherebbe in modo casuale. La linea 'printf' è una soluzione a questo problema, perché la linea viene eseguita tutto in una volta (non divisa in parti come la linea 'cout'). Tuttavia, quando uso 'printf', il mio output è ancora tutto confuso come se usassi 'cout'. Non ho idea del motivo per cui lo fa. Ho provato lo stesso identico codice su un altro computer, e funziona perfettamente. È solo il mio computer che continua a confondere l'output con 'printf'. Ho mandato un'email al mio professore di CS e non ha idea del perché lo stia facendo sul mio computer. So di aver installato OpenMP sul mio computer correttamente. Qualcuno con esperienza di calcolo in parallelo sa perché questo sta rovinando il mio computer?Calcolo parallelo - output confuso?
#include <omp.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
#pragma omp parallel
{
printf("Hello World!\n");
//cout << "Hello World!\n" << endl;
}
return 0;
}
Per mostrare di cosa sto parlando, qui è l'uscita dal momento in cui ho eseguito il codice di cui sopra sul mio computer:
Ciao Wo
Ciao Mondo!
rld!
Ciao mondo!
Ho appena provato con 'cout' e ha funzionato in modo impeccabile: http://ideone.com/dPPQeO –
La parte' endl' potrebbe essere la fonte di problemi, poiché svuota il buffer di output. –
Questo è praticamente ciò che dovresti aspettarti quando esegui le cose in parallelo. Non c'è nulla che impedisca l'esecuzione di printf di Core 1 nel mezzo di Core 2. Questo è il motivo per cui la programmazione parallela è difficile. – immibis