OMP Für den parallel-thread ID Hallo Welt

Ich versuche den Einstieg mit basic-OpenMP-Funktionen in C. Mein grundlegendes Verständnis von 'omp parallel for' führt mich zu glauben, dass die folgenden verteilen sollte den folgenden Iterationen der Schleife zwischen threads und sollten parallel ausgeführt werden. Die Ausgabe die ich erhalte ist wie folgt. - Code Unten. Gibt es etwas subtile ich bin, fehlt in meinem Beispiel "hello world"?

Hallo Welt von omp-thread 0
Hallo Welt von omp-thread 0
Hallo Welt von omp-thread 0
Hallo Welt von omp-thread 0
Hallo Welt von omp-thread 0
Hallo Welt von omp-thread 0
etc..

 int HelloFunc()
{
    int i;
    int numthreads = 8;
#pragma omp parallel for default(none) num_threads(numthreads) private(i)
    for (i = 0; i < 100; i++)
    {
        int tid = omp_get_thread_num();
        printf("Hello world from omp thread %d\n", tid);
    }
    return -1;
}

int main()
{
    int result = HelloFunc();
}
  • Ihr computer ist wahrscheinlich nur ein thread, um dieses Programm auszuführen. OMP nicht zwingen, es laufen mehrere threads, es zeigt nur, dass der compiler, dass es kann und stellt die notwendige Umgebung, um Sie geschehen.
  • Ich denke, ich kann machen, dass eine Antwort, wenn Sie es als eine da es beantwortet meine Frage. Es gibt keine Möglichkeiten, um dieses Verhalten zu erzwingen, würde ich entnehme deiner Antwort?
  • Sie können verlangen, dass OpenMP verwenden Sie eine bestimmte Anzahl von threads, die durch die Einstellung der OMP_NUM_THREADS Umgebungsvariable. Die maximale Anzahl der threads, die abgefragt werden können, die von innen den code mit omp_get_max_threads()
InformationsquelleAutor Oliver | 2015-03-05
Schreibe einen Kommentar