C multithreading mi openmp, laufzeit bestimmen

striker159

Lt. Junior Grade
Registriert
Dez. 2008
Beiträge
327
hallo. ich möchte mit openmp mit mehreren threads eine funktion aufrufen und die zeit zwischen "funktionsaufruf erster thread" und "return letzter thread" ermitteln.

dazu habe ich mir folgendes gedacht:

Code:
clock_t a;
clock_t b;

#pragma omp parallel
{
        #pragma omp single
             a = clock();
	function();
	b = clock();

       [...noch mehr code, weshalb ich nicht einfach vor und nach der parallel region messen kann...]
}

b sollte so die letzte zeit sein, aber ist a auch die erste zeit? single heißt soweit ich weiß nur, dass der code nur von einem thread ausgeführt werden soll, aber nicht, dass es der erste thread sein soll, der die anweisung erreicht.

gibt es vielleicht eine andere, bessere methode dafür?
 
Eventuell so:

Code:
#pragma omp parallel
{
    #pragma omp master
    double start = omp_get_wtime();
	
    function();
	
    #pragma omp barrier
    double end = omp_get_wtime();
}
 
Zuletzt bearbeitet:
Wenn man mit mehreren Workern arbeitet lässt man sich bei so was eigentlich gern die Prozess/Thread-Nummer geben und macht die Zeitmessung dann zB nur im ersten Thread. Um sicherzugehen, dass vorher alle beendet sind kann man so etwas wie eine Barrier (ich glaube das war das Richtige) einfügen.
 
Zurück
Oben