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 mitomp_get_max_threads()
Du musst angemeldet sein, um einen Kommentar abzugeben.
kompilieren :
and run :
Ausgabe :
Ihrem 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.
Gibt es keine Möglichkeit, zu erzwingen, OMP, etwas zu tun, in mehr threads, als Sie es sonst tun würde. Und Sie würden nicht wollen, da OMP stellt automatisch alles zu machen, führen Sie das Schnellste, was es kann.