* * * * *
More stupid multithreaded benchmarks
> The other interesting thing to think about: at what point do we beat the
> same algorithm in C, and how hard would it be to parallelise the algorithm
> in C with pthreads …
>
“Use those extra cores and beat C today! (Parallel Haskell redux) [1]”
Since I'm doing stupid benchmarks anyway [2], why not this? I didn't use
pthreads though—I haven't used that particular API (Application Programming
Interface) in about a decade, and even then, I wasn't thrilled with it.
Nope. Instead I used a Linux specific call—clone(), wrote a small function to
wait for all the threads that were created, and basically spent about five
minutes making a parallelized C-version [3] of the Fibonacci sequence [4].
Granted, I had to do the parallelization explicitly, but it wasn't that
difficult to do.
The hard part was finding a quad-core box to test this on. Fortunately, I
know we have one at The Company (shhh—don't tell Smirk) and that's where I
spent most of my time on this—locating our single quad-core machine I could
test this on.
But find it I did. And yes, the program does run faster the more cores that
are thrown at it, but it's not a linear speed up:
Table: A Parallelized Fibonacci Sequence calculation program
# cores Runtime
------------------------------
1 0m31.468s
2 0m19.521s
4 0m17.234s
It's interesting that it appears to be bottoming out rather quickly (and
these are average times over a few runs).
[1]
http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29#smoking-4core
[2]
gopher://gopher.conman.org/0Phlog:2007/11/28.1
[3]
gopher://gopher.conman.org/0Phlog:2007/11/29/parfib.c
[4]
http://en.wikipedia.org/wiki/Fibonacci_number
Email author at
[email protected]