On Wed, Oct 1, 2014 at 9:18 AM, Kapil Agarwal <
kapi...@gmail.com> wrote:
> Hi
>
> On Tuesday, 30 September 2014 08:23:05 UTC-4, Erik Schnetter wrote:
>>
>> There is a package "MPI.jl" that allows calling MPI from Julia. With
>> this, any MPI-based algorithm can be translated to Julia, and the
>> speed of MPI should be the same as for any other language.
>>
>> -erik
>
>
> I thought Julia has its own message passing paradigm which provides
> functionality similar to MPI but in a different way. So, I wanted to
> benchmark it against a native MPI implementation. If no such benchmarks
> exist, would it be a good idea to compare MPI and Julia performance ? After
> all, you would want users to use the Julia parallel computing API rather
> than port existing libraries to Julia ?
Yes, this is correct: Julia offers a more high-level API than pure
MPI. However, when it comes to benchmarking one should probably
distinguish between two things:
(1) The high-level programming API that is offered
(2) The underlying transport mechanisms (how things are mapped to hardware)
For example, when running Julia on a cluster, there may be special
high-speed low-latency communication hardware such as InfiniBand
interconnects. Currently, Julia would not use these, but MPI would,
giving MPI an unfair advantage until Julia is using such hardware as
well.
Similarly, Julia's current cluster manager should work fine and
efficiently if you are using (say) 10 workstations. However, if you
are using many more -- say 1000 -- then Julia's current cluster
manager implementation will not scale. Again, this is only a
limitation of the current implementation, not of the high-level API
that Julia is offering, and I'm sure this will be improved in time.
I am currently working on a "cluster manager" based on MPI; see
<
https://bitbucket.org/eschnett/funhpc.jl/>. This is still in an
experimental stage, and it's not clear to me yet how this can be
merged into Julia's ClusterManager class, as certain fundamental
implementation aspects of the current ClusterManager implementation
may need to be changed. However, the high-level API is very similar.
Fortunately, this part of ClusterManager is already being redesigned.
If you want to benchmark large-scale applications, then you will
probably need to use a ClusterManager that uses an efficient
communication protocol such as MPI; otherwise, you would benchmark
implementation limitations instead of comparing the high-level API.
-erik