Programming with MPI on Gridrs

Programming with MPI on Gridrs

Programming with MPI on GridRS Dr. Márcio Castro e Dr. Pedro Velho Science Research Challenges Some applications require tremendous computing power - Stress the limits of computing power and storage - Who might be interested in those applications? - Simulation and analysis in modern science or e-Science Example LHC Large Hadron Collider (CERN) LHC Computing Grid Worldwide collaboration with more than 170 computing centers in 34 countries A lot of data to store: 1 GByte/sec Need high computing power to obtain results in feasible time How can we achieve this goal? Old school high performance computing • Sit and wait for a new processor – Wait until CPU speed doubles – Speed for free • Don’t need to recompile or rethink the code • Don’t need to pay a computer scientist to do the job Unfortunately this is not true anymore... The need for HPC Moore’s Law (is it true or not?) - Moore said in 1965 that the number of transistors will double approximately every 18 months - But, it’s wrong to think that if the number of transistors doubles then processors run two times faster every 18 months - Clock speed and transistor density are not co-related! Can I buy a 20GHz processor today? Single processor is not enough – Curiously Moore’s law is still true • Number of transistor still doubles every 18 months – However there are other factors that limit CPU clock speed: • Heating • Power consumption – Super computers are too expensive for medium size problems The solution is to use distributed computing! Distributed Computing - Cluster of workstations • Commodity PCs (nodes) interconnected through a local network • Affordable • Medium scale • Very popular among researchers - Grid computing • Several cluster interconnected through a wide area network • Allows resource sharing (less expensive for universities) • Huge scale This is the case of GridRS! Distributed Programming - Applications must be rewritten • No shared memory between nodes (processes need to communicate) • Data exchange through network - Possible solutions • Ad Hoc: Work only for the platform it was designed for • Programming models: Ease data exchange and process identification Portable solution Examples: MPI, PVM, Charm++ Message Passing Interface (MPI) - It is a programming model • Not a specific implementation or product • Describes the interface and basic functionalities - Scalable • Must handle multiple machines - Portable • Socket API may change from one OS to another - Efficient • Optimized communication algorithms MPI Programming - MPI implementations (all free): • OpenMPI (GridRS) http://www.open-mpi.org/ • MPICH http://www.mpich.org • LAM/MPI http://www.lam-mpi.org/ MPI Programming - MPI References • Books MPI: The Complete Reference, by Snir, Otto, Huss- Lederman, Walker, and Dongarra, MIT Press, 1996. Parallel Programming with MPI, by Peter Pacheco, Morgan Kaufmann, 1997. • The standard: http://www.mpi-forum.org MPI Programming – SPMD model: Single Program Multiple Data • All processes execute the “same source code” • But, we can define specific blocks of code to be executed by specific processes (if-else statements) – MPI offers: • A way of identifying processes • Abstraction of low-level communication • Optimized communication – MPI doesn't offer: • Performance gains for free • Automatic transformation of a sequential to a parallel code MPI Programming Possible way of parallelizing an application with MPI: MPI Programming Possible way of parallelizing an application with MPI: Start from sequential version MPI Programming Possible way of parallelizing an application with MPI: Start from Split the application sequential version in tasks MPI Programming Possible way of parallelizing an application with MPI: Start from Split the application Choose a sequential version in tasks parallel strategy MPI Programming Possible way of parallelizing an application with MPI: Start from Split the application Choose a sequential version in tasks parallel strategy Implement with MPI MPI Programming Possible way of parallelizing an application with MPI: Start from Split the application Choose a sequential version in tasks parallel strategy Some parallel strategies • Master/Slave • Pipeline Implement with MPI • Divide and Conquer Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Request Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Task 1 Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Request Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Task 2 Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Result 2 Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Result 1 Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Finish Finish Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is one process that centralizes all tasks - Slaves request tasks when needed - Master sends tasks on demand Slave 1 Master Slave 2 Parallel Strategies Master/Slave - Master is often the bottleneck - Scalability is limited due to centralization - Possible to use replication to improve performance - Good for heterogenous platforms Parallel Strategies Pipeline - Each process plays a specific role (pipeline stage) - Data follows in a single direction - Parallelism is achieved when the pipeline is full Time Parallel Strategies Pipeline Task 1 - Each process plays a specific role (pipeline stage) - Data follows in a single direction - Parallelism is achieved when the pipeline is full Time Parallel Strategies Pipeline Task 1 - Each process plays a specific role (pipeline stage) Task 2 - Data follows in a single direction - Parallelism is achieved when the pipeline is full Time Parallel Strategies Pipeline Task 1 - Each process plays a specific role (pipeline stage) Task 2 - Data follows in a single direction Task 3 - Parallelism is achieved when the pipeline is full Time Parallel Strategies Pipeline Task 1 - Each process plays a specific role (pipeline stage) Task 2 - Data follows in a single direction Task 3 - Parallelism is achieved when the pipeline is full Task 4 Time Parallel Strategies Pipeline - Scalability is limited by the number of stages - Synchronization may lead to “bubbles” Example: slow sender and fast receiver - Difficult to use on heterogenous platforms Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Work(40) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Work(40) Work(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Work(40) Work(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Work(40) Work(20) Result(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Work(40) Work(20) Result(20) Result(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Result(40) Work(40) Work(20) Result(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks - Or process the task if it is “small enought” Work(60) Result(40) Work(40) Work(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - Recursively “breaks” tasks into smaller tasks Result(60) - Or process the task if it is “small enought” Work(60) Work(40) Work(20) Work(20) Work(20) Parallel Strategies Divide and Conquer - More scalable - Possible to use replicated branches - In practice it may be difficult to “break” tasks - Suitable for branch and bound algorithms Hands-on GridRS 1) Log in for the first time on GridRS - $ ssh [email protected] 2) Configure the SSH and

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    80 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us