What languages and tools do you use for cluster computing?
Most scientists seem to get by using MPI with C, C++ or Fortran. Naturally I'll learn how to do that, too, but I strongly suspect that this traditional route tends to result in sprawling, complex code that's difficult to debug. There must be a better way. Ocaml and Python have MPI interfaces, too; Scala seems to be designed for distributed computing on existing platforms.
And the platform is a limitation, too. The interactive node on this cluster shows a few stable packages to work with: GCC 3.4.6, Java 1.6, Python 2.3 (with a broken numpy), and of course the MPI suite. Nothing exotic; CVS and SVN for version control. I think this means Erlang and Haskell are ruled out, unless they're compiled to C or JVM bytecode first -- any VM must be available on all the nodes if the code's going to run. Right?
So, what do you use? Or, what would you use in this situation?
7 comments
[ 3.4 ms ] story [ 23.8 ms ] threadfortress isn't ready yet, hadoop is java-based (which means slower performance and possible code rewrite), and occam can't jump through the same flaming hoops that C/fotran can (i think -- i'm going on word of mouth). these are all great tools for HPC, but i don't think that they line up with the needs of existing scientific programming. fortress will, though, most likely, once its ready.
What kinds of algorithms are you trying to implement?
I just started a graduate program, so I'll have to do a range of things for classes -- which is why I have some leeway to pick up a new language and stagger through a few numerical programs now if it will help me get things done quickly later, when it matters.
OpenMosix is linux with a modified kernel and some user-space tools; nodes automatically join the cluster, processes get migrated across the cluster to equalize load across all the systems.
It's not as elegant as it could be, but it's quick and dirty.