Log in

No account? Create an account

Previous Entry | Next Entry

Erlang vs MPI benchmark shootout


MPI is shown to clearly outperform Erlang in terms of message passing overhead (as can be seen in the IMB benchmarks) and computational performance (as can be seen in the Monte Carlo kernel benchmark). Erlang, however, seems to outperform MPI when sending messages with large payloads, as the majority of the IMB benchmarks show. It should be understood, however, that while the data payload in MPI consists of raw data allocated using malloc, the data in Erlang was prepared using Erlang's bit-packing method. We don't understand Erlang internals sufficiently to know whether the bit-packing method engages in some form of compression. It is very possible that the actual magnitude of Erlang's data payloads are smaller than MPI's. If this is the case, then Erlang is shown to be more efficient at sending lists of values and raw data structures than MPI. It could also be the case that Erlang's virtual machine is allocating processes in such a way that they are able to transmit data efficiently across the test platform.

Despite its lower raw performance speed, Erlang might still find a home in high performance computing. Very large supercomputers suffer great performance penalties due to hardware failures. Erlang might be used as a monitoring system for jobs running on such a system or even as a communications layer wrapped around compiled C or Fortran applications that perform the heavy computation.

So, nobody will be re-implementing BLAST in erlang and hope to beat MPI-BLAST. One point not mentioned is that it's easier and more compact to develop in erlang than MPI-C, and that the erlang code can be patched on the fly. I guess that means erlang could be a kind of glue language in parallel computing like perl in bioinformatics, using linked-in libraries that call C code for fast computation.

BioErlang. I like the sound of that. I hope we don't make serious mistakes when designing the architecture.