Low-level Haskell profiling [Was: Re: [Haskell-cafe] Re: A suggestion
for the next high profile Haskell project]
Andy Georges
andy.georges at elis.ugent.be
Wed Dec 20 03:15:13 EST 2006
Hi,
> The GHC head can currently build against PAPI[1], a library for
> gathering CPU statistics.
I did not know that. I know PAPI, though I prefer using perfctr
directly, at least for what I'm doing (stuff in a JVM) [1], [2], [3].
> At the moment you can only gather such statistics for AMD Opteron
> but it shouldn't be difficult to port it to other CPUs after a bit
> of browsing around the PAPI docs. Installing PAPI requires
> installing a linux kernel driver though, so it is not for the faint
> hearted.
Well, AFAIK, PAPI abstracts away the platform dependencies quite
well, so I guess your code can be run straightforward on all IA-32
platforms (depending on the events you wish to measure, which may or
may not be present on all platforms). PowerPC, Itanium, Mips, Alpha
should work as well, IIRC. If the GHC backend can generate code
there, that is.
>
> We have used this library to find bottlenecks in the current code
> generation and we have implemented ways of correcting them, so
> expect some good news about this in the future.
>
Have you published anything about that?
> I should get around to start a wiki page about using PAPI these
> days, but meanwhile feel free to contact me if you need further
> information or help.
I've been toying with this idea for a while [4], but never had the
time to do something with it. If you have some cool stuff, let us
know. I'm very interested.
-- Andy
[1] Eeckhout, L.; Georges, A.; De Bosschere, K. How Java Programs
Interact with Virtual Machines at the Microarchitectural Level.
Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-
Oriented Programming, Systems, Languages and Applications (OOPSLA
2003). ACM. 2003. pp. 169-186
[2] Georges, A.; Buytaert, D.; Eeckhout, L.; De Bosschere, K. Method-
Level Phase Behavior in Java Workloads. Proceedings of the 19th ACM
SIGPLAN Conference on Object-Oriented Programming Systems, Languages
and Applications. ACM Press. 2004. pp. 270-287
[3] Georges, A.; Eeckhout, L.; De Bosschere, K. Comparing Low-Level
Behavior of SPEC CPU and Java Workloads. Proceedings of the Advances
in Computer Systems Architecture: 10th Asia-Pacific Conference, ACSAC
2005. Springer-Verlag GmbH. Lecture Notes in Computer Science. Vol.
3740. 2005. pp. 669-679
[4] http://sequence.complete.org/node/68
More information about the Haskell-Cafe
mailing list