On 5 Sep 2007, at 20:00, Eric Shook wrote:
Subject: Re: [Beowulf] Erlang as a language for Beowulf applications
To: "H.Vidal, Jr." <[EMAIL PROTECTED]>

I am engaged in similar explorations and I too have found the Erlang
language as a possible solution to scaling issues. I have been
experimenting with the language for almost a month so my evidence below
is not by any means conclusive. With that said in my opinion the
language has a fatal flaw and that is data handling. According to the
documentation and my brief experience there are certain instances where
the data being passed to and from processes / functions is copied and
not referenced. You can imagine the problems if you are manipulating a
multigig data set.
You are ahead of me, but, there are claims in the HiPE (High Performance Erlang) papers (e.g. http://www.fantasi.se/jesper/ publications/TOPLAS06.pdf) that copying can be minimised with their more sophisticated approach to memory management. I have not confirmed this, though.

There are certain ways to handle bigger data sets
(mnesia, et al.) but I have not fully explored these.

If large data handling is not a problem for you I believe you will be
pleasantly surprised by Erlang. As you stated error handling and fault
tolerance are mature within the language and the lightweight processes
(300 bytes) are great for multicore machines, particularly heterogeneous
machines.
I agree strongly. This has to be experienced. It is very easy to write, and great fun.
In addition to these great features Erlang has built-in
functionality for distributed (e.g. across the network) communication.
The distributed communication is also platform independent (e.g.
Windows, Linux, etc) By combining fault-tolerance, distributed
communication, and lightweight processes one could easily enable an
application to adapt to multiple heterogeneous clusters, desktop
computers, and grid environments without modifications.
There are also interesting features to support 'live evolution' (i.e. updating specific modules of the system without stopping it), which may be handy for long running codes.

I feel this language is very promising. It will simply take an
individual or group to fully exploit the languages potential.

I haven't got any useful numbers yet, and I am still concerned that raw Erlang performance may be too far short of its competition. So, I am investigating using Erlang for distribution, fault tolerance, management, and maybe live evolution. My approach is to build a simple bridge to bits that need performance (which may cripple the 'live evolution').

I would like to add a plug for Haskell, which is a statically typed Functional language. It is beginning to show real promise on data- parallel applications (likely still a year away, but much closer than I had expected a year ago). Also, a guy (in the UK) has built some neat Haskell optimisation transformations (for simple problems), with the result that his *auto-magically transformed* Haskell code is faster than the original C (and it is horrible to implement the transformed algorithm in C).

Microsoft are supporting some of this effort, so it may come faster than I think.

I'd like to understand what experience others may have of functional programming languages on clusters, if any?

Garry

_______________________________________________
Beowulf mailing list, Beowulf@beowulf.org
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to