Thursday, January 1, 2009

A new year and a new project

As per http://www.haskell.org/opensparc/ my mission is to fix the SPARC backend, and see how well we can take advantage of the multi-threaded T2 architecture. I'm aiming to post status reports on this blog at least a couple of times a week. Feel free to pitch in comments, suggestions, or to ask questions.

We have three T2 machines at our disposal:
  • sparky.ce.chalmers.se
    Generously donated by Sun to the haskell.org community. I'll setup some buildbots here in the coming weeks.

  • mavericks.anu.edu.au
    Owned by the Computer Science department here at the ANU (Australian National University) in Canberra where I am based. I'll be using this one for the main development because the latency is lowest for me. This machine has been cut into 2 virtual machines of 4 cores each. Mavericks is only one half, but it'll be fine for development. I'll do benchmarking on sparky.
  • The T2 at UNSW (University of New South Wales) which Roman should be making me an account on, any day now! :)
Today was setting up day. After abandoning a previous attempt to cross compile GHC from i386-linux to sparc-solaris, I'm using Christian Maeder's binary distro of 6.8.3.

Spent most of the day in dependency hell. The GHC distro was compiled for 32bit sparc so I've had to compile a matching version of libgmp and readline-5.2 from source. libgmp needs to be configed with --build=sparcv8-sun-solaris2.10 otherwise it defaults to 64 bit again.

After giving up on trying to get GIT working, it looks like my latest attempt at darcs 2.1.0 has succeeded. The configure incantation includes --without-curses --without-terminfo --without-manual --without-libcurl --disable-color.

I'm ignoring libcurl because that'd be another thing I'd have to fight. I'm ignoring curses because the GNU and Solaris versions don't quite match and I was getting header file problems with the Solaris version. Even when you specify --without-curses, darcs still tries to include it, so I had to patch the makefile.

Pulled down a current copy of the ghc head branch. Christian reports that GHC 6.10 is currently broken on SPARC, so I'll build 6.8.3 first to check that everything is working. I want to know that the GCC 4.2.1 installed on mavericks is good before I start fighting the head.

Spent some time reading through the SPARC architecture manual while waiting for GHC 6.8.3 to build. It's fun typing make -j32, but in stage1 each source file seems to take about 30sec on average to compile..

... it's still compiling an hour later. Roman mentioned something about "days", but I'll give it overnight before I get worried.

Check out:

ghc: 448311124 bytes, 457 GCs, 6902345/17301504 avg/max bytes residency (14 samples), 47M in use, 0.01 INIT (0.00 elapsed), 8.95 MUT (968.76 elapsed), 5.14 GC (7.63 elapsed)

woot!

No comments:

Post a Comment