i have written program runs in 2 modes,sequential , multithreaded,with purpose of running on multiple processor architectures , analyzing processors' performance , comparing them.
are there tools can me ?? find execution time,track threads , preemption,find processor executed thread(if on multicore system),the context switching overhead , other stuff.
i have basic knowledge code profiling gprof , believe not sufficient matter. i'm searching same idea lot more powerful !! ??
to more information on execution time, cache behavior, etc. there various approaches. make sure create stable compute environment first. lock processor frequency reliable measurements, e.g. in bios disable intel speedstep; avoid background processes, etc.
low-level performance counters:
- you can instrument code high-resolution counters , measure performance. take @ papi interface performance measurement.
advanced profilers:
- perf, open source. perf sample-based measurement , shows various profiling information, full support multiple threads. instance perf flamegraph gives overview of hotspots in code.
- intel vtune, commercial. show detailed cache statistics hw counters, performance per thread, etc. requires quite insight in hardware interpret data.
note above can measure power consumption.
alternatively, can have @ behavior of program on time, creating trace of thread switches in os. have @ eclipse's lttng integration.
if want see more information on actual parallel behavior of code, such data dependencies may inhibit parallelism, thread overhead , cache contention, have go @ pareon vector fabrics (disclaimer: 1 of founders of vector fabrics). not profiler, more code analysis parallelization.
Comments
Post a Comment