Gast
2009-03-24, 13:01:41
Hallo,
ich spiele gerade ein bischen mit paralleler Programmierung mit Threads / OpenMP / MPI unter C herum.
Um meine Algorithmen vergleichen zu können, möchte ich die benötigte Zeit messen.
Das Problem ist, dass
1. die Auflösung der Standardbibliotheken mit clock_t einfach zu gering ist.
2. für eine Parallelverarbeitung ungeignet ist.
Wie messe ich die Zeit, die mein paralleler Algorithmus benötigt?
Gibt es da Standardbibliotheken / Profiler dafür?
Für die meisten Intels gibts ja den TSC, den man mit RDTSC auslesen kann.
Nach http://en.wikipedia.org/wiki/Time_Stamp_Counter führt das auf Multi[kern/prozessor]-Systemen zu Problemen.
Bei OpenMP habe ich jedoch keine Möglichkeit, mir einen speziellen Kern "auszusuchen" der die Zeit misst, oder?
Wie verhindere ich, das Hintergrund-Tasks des Betriebssystems meine Messung beeinflussen (mehrmals messen)?
Danke im Vorraus TH
ich spiele gerade ein bischen mit paralleler Programmierung mit Threads / OpenMP / MPI unter C herum.
Um meine Algorithmen vergleichen zu können, möchte ich die benötigte Zeit messen.
Das Problem ist, dass
1. die Auflösung der Standardbibliotheken mit clock_t einfach zu gering ist.
2. für eine Parallelverarbeitung ungeignet ist.
Wie messe ich die Zeit, die mein paralleler Algorithmus benötigt?
Gibt es da Standardbibliotheken / Profiler dafür?
Für die meisten Intels gibts ja den TSC, den man mit RDTSC auslesen kann.
Nach http://en.wikipedia.org/wiki/Time_Stamp_Counter führt das auf Multi[kern/prozessor]-Systemen zu Problemen.
Bei OpenMP habe ich jedoch keine Möglichkeit, mir einen speziellen Kern "auszusuchen" der die Zeit misst, oder?
Wie verhindere ich, das Hintergrund-Tasks des Betriebssystems meine Messung beeinflussen (mehrmals messen)?
Danke im Vorraus TH