‹header›
‹date/time›
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹footer›
‹#›
I’ll talk about the project of higher level parallel programming language in our lab. Charm++/AMPI and the powerful concept of migratable object has proven itself through various successful applications, However, some very complicated parallel programs, under this framework, suffer from obscure overall flow of control due to the huge amount of parallel objects and asynchronous method invocation. To solve this problem, we design and develop an orchestration language that allows the expression of global view of control flow in a parallel program, and a shared array mechanism to provide a restricted view of global shared data.
Decomposition done by programmer, everything else like mapping and scheduling is automated Achieve high productivity and performance by Seeking optimal division of labor between programmer and the system
Typically larger than number of processors
Asynchronous method invocation
Chares and Charearrays
In traditional MPI paradigm. The number of partitions of both modules is typically equal to the number of processor P And although the ith elements of fluid module and solid module are not connected geometrically in the simulation, they are glued together on the Ith processor. Under Charm++/AMPI framework, the two modules each get their own set of parallel objects. And the size of the arrays are not restricted or related.
The benefit of this is performance optimizations and better modularity.
Problem: due to the asynchronous method invocation, the flow of control is buried deep into the object code
The overall flow of control is complicated and concurrent operations among different sets of parallel objects
It would be ideal to have a higher-level control flow specification
User code doesn’t contain parallel control flow, eg. Physics, computation,
Distinction between this and HPF FORALL
When there’s no need for barrier
Compared to what would it look like in Charm++
Integrated with Charm modules and user libraries