OpenMP startschwierigkeiten
-
Hallo,
würde gerne mit OpenMP Threads erstellen. Das will aber nicht, wie ich das will.
Wenn ich eine for Schleife nutze, mache ich das so(Das ganze läuft selbst in Endlosschleife):#pragma omp parallel for for(int i=0; i<2; i++){ do_something(i); }do_something sieht z.b. so aus:
void do_something(int threadnumber){ for(int i=0;i<10000;i++){ printf("%d\n", threadnumber); } }Hätte jetzt erwartet, dass do_something 2 mal als Thread existiert und die Ausgaben gemischt werden - mal 1 und mal 0 mehr oder weniger abwechselnd oder sowas in der Art. Aber offenbar wird schön eins nach dem anderen ausgeführt. Beide logischen CPUs sind nur ca zur Hälfte ausgelastet. Also ganz offensichtlich macht das nicht, was ich gerne hätte.
Wie geht das? (habe #include <omp.h> benutzt, aber sonst nichts besonderes in MSVS2005 eingestellt - muss man?). Compilerfehler gibt es keine.Wie kann ich das ändern, sodass es so läuft, wie ich mir das vorgestellt habe?
Danke,
Daft
-
irgendwie habe ich das Gefühl, dass mit den pragmas gar nichts angefangen wird. Ich kann auch schreiben
#pragma blablaund den Compiler stört es nicht weiter.
-
Das ist ja gerade da tolle. Nur Kompiler, die es verstehen, wenden es an und der Code bleibt auch noch für nicht kompatible Kompiler verwendbar (nur entfallen die erw+ünschten Effekte).
Gruß
Don06
-
also hab ich den falschen Compiler? Wie ändere ich den Compiler denn in VS2005?
-
-
VS2005 unterstützt auch OpenMP aber nur mit dem /openmp Switch und nicht in den Standard und Express Versionen.