Hi, and thanks for your reply.

How difficult would you consider it to be to write such domain map? I looked at 
the already available distributions and was surprised by how much code was 
needed, I would have thought that all that would be needed would be functions 
to map between global indices and rank, local index-pairs....

Also, do you think there is some other language, library or framework that 
would suit my needs better?

02.11.2014, 19:15, "Brad Chamberlain" <[email protected]>:
> Hi John --
>>  I would need to distribute execution across multiple consumer-grade
>>  desktop computers. All computers will be x86 architecture machines. It
>>  would be nice if I could mix 32 and 64 bit machines, however it's not
>>  necessary.
>
> Currently Chapel creates a single binary that it executes across all
> machines, so if you had a mix of 32- and 64-bit machines, you'd probably
> need to compile for 32-bit in order to use both together.  Other than
> that, the differences between machines shouldn't be a problem as long as
> you compile for an ISA that works across all of them.
>>  Ability to use OpenCL and possibly CUDA would be rather
>>  important.
>
> At present, Chapel doesn't have any integrated support for OpenCL and
> CUDA.  A past academic project from UIUC did a proof-of-concept to map
> Chapel to GPUs, but that code never firmed up enough to make it into the
> trunk of the project.  Doing so remains future work.  As a result, the
> best way to make use of OpenCL and CUDA at present in Chapel would be to
> create such code as a library that exports a C interface and call into
> those C routines using Chapel's support for extern procedures and types. I
> don't personally have enough experience with OpenCL or CUDA to know how
> easy or hard this would be.
>>  Machines will have very different kinds of processors and
>>  GPUs, so an ability to balance loads will be paramount.
>
> Chapel does not have any built-in load balancing capabilities across
> locales (nodes).  Tasks execute where they are placed, either explicitly
> via on-clauses or implicitly via parallel operations over distributed
> domains (index sets) or arrays.  To do dynamic load balancing, one would
> either need to explicitly write it by creating something like task queues
> and moving work around themselves using on-clauses, or by creating a
> domain map (distribution for a domain and its arrays) that managed the
> load balancing.  (Probably the domain map would be doing the same kind of
> task queueing management under the covers, so would just be abstracting it
> away from user code for things like distributed iterations or array
> operations.
>>  Computers are
>>  connected via LAN and applications will exhibit fine-grained parallelism
>>  (Solving Navier-Stokes equations would be one application).
>>
>>  If Chapel would suit my needs, my first question would be how can I
>>  distribute array so that computers can get different sized chunks of
>>  data? Ability to dynamically change the distribution would be nice,
>>  however I think it would be just fine to be able to choose the
>>  distribution at the beginning of the execution.
>
> Because the machines we are most focused on are not as heterogeneous as
> you are describing, we have not yet written any domain maps that partition
> different amounts of work/data to different locales.  The domain map
> framework should be sufficient to do this, but to my knowledge, nobody has
> written such a domain map as of yet.  We were recently challenged to write
> such a domain map based not on architectural diversity, but rather
> workload diversity, but have not yet found the time to take on that
> challenge, unfortunately.
>
> Best wishes,
> -Brad

------------------------------------------------------------------------------
_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users

Reply via email to