Coder Social home page Coder Social logo

Comments (2)

christopherwharrop-noaa avatar christopherwharrop-noaa commented on August 31, 2024

Adding MPI will be a large change. If possible, it would be easier to evaluate and make progress if it could be broken down into smaller pieces. It isn't clear to me yet what those pieces should be. We can discuss here. To start, I'm going to throw out an initial breakdown for us to discuss and refine.

  1. Implement halos for the existing code. This would simply extend the dimensions of existing arrays without adding any parallelism. The code would not run in parallel, and would loop over the same indices as it does in serial, but the arrays would be properly dimensioned for halos.
  2. Implement calculation of domain decomposition for a default processor grid (as square as possible) for an arbitrary number of MPI ranks. This would be a routine that computes the local indices and allocates arrays for each tile. Allocations and loop indices would be adjusted as needed. Still no parallelism, but addition of tests to verify that the decomposition works would be added.
  3. Add MPI_Init() and implement a halo exchange. This would be a routine for exchanging the data in the halo. Add a test to verify that the halo exchange works for multiple numbers of MPI ranks. Add tests to show running with different MPI ranks produces the same results.

This is just a starting point. Please comment/suggest adjustments as needed. Breaking parallelization down into smaller pieces may prove quite difficult. However, the smaller we can make the steps toward the final goal, the easer it will be to both implement, review, merge each step along the way.

from sena-c_sw.

christopherwharrop-noaa avatar christopherwharrop-noaa commented on August 31, 2024

A decision was made to not pursue a full MPI parallelization. Instead a simulation of parallel execution (see #35) is provided by running N copies of the kernel with MPI including simulating the work of a halo exchange operation using the N copies of the serial kernel. Since no further work on MPI will be pursued, this issue is being closed.

from sena-c_sw.

Related Issues (9)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.