Giter VIP home page Giter VIP logo

intermediate-mpi's Introduction

intermediate-mpi's People

Contributors

fspacheco avatar mabraham avatar pojeda avatar recoli avatar rkdarst avatar robertodr avatar wikfeldt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intermediate-mpi's Issues

Source code fragments should have copyright and license statements

We state that the lesson materials are CC-BY-4.0 in the text, which is good. However because we expect people to download and run the source files, that connection gets lost. We should copyright the source files by ENCCS, and state a license compatible with CC-BY-4.0.

Should we license that source code also CC-BY-4.0? Or e.g. MIT?

comment on datatypes

from Joachim:

[...] looking into the example 2 of the block Extents and sizes, you directly feed the result of MPI_Get_address into the displacements of MPI_Type_create_struct.

To my understanding MPI_Get_address, returns the address with respect to MPI_BOTTOM, however the displacement needs to be specified with respect to the beginning of the derived data type you want to sent. So you need to subtract a (typically large offset).

For my own MPI course my teaching examples, in which I subtract the offset, work against OpenMPI. Please have a look and I am happy to discuss this - or be corrected in case my reading of the standard is wrong.

Datatypes episode

To consider

  • Give less space to the communicators and groups episodes in favor of more in-depth treatment of datatypes.

To change

  • Clarify the meaning of displacements in the typemap
  • In the my_pair type-along, the addresses are relative to whatever MPI thinks is the first byte in memory. Make it so that they are relative to the first field in the data structure
  • Clarify why/when to use pack/unpack and why/when to define datatypes.
    • The former can incur overhead, e.g. calls to functions in a dynamically linked library (-lmpi) are slower than calls to functions in your executable.
    • The latter is essential if we want to perform reductions with a custom operation.

To add

  • Defining custom operations on custom datatypes. This could fit in the collective episode.
  • Short discussion of whether it is possible to automatically generate the MPI representation of custom datatypes.
    • Automatic serialization/deserialization libraries (like Cereal for C++) but using these is not exactly the same as defining datatypes, e.g. you can't do custom reductions.
    • Introspection. Possible in C++ with metaprogramming, but do you really want to go there? 😄
    • Code generation. Build is in two passes then: first generate the code (the generation of the code needs some tool to analyze the AST) then compile it.

consider more time for one-sided communication

if participants of the December 2020 workshop are representative of the intended target audience also for future workshops, we might want to give more time to one-sided communication as that was the topic most were interested in

Episode 1: derived datatypes

  • Data representation in MPI with typemaps.
  • Type constructors and life cycle of user-defined types.
  • User-defined packing and unpacking.
  • Exercise: ?

exercise might need clarification

one question that came up about the exercise "Warm up your communicators and your groups" in Communicators and groups:

  • what does this code do?

Might need some clarification on what it should do and how to know one is done

feedback from December 2020 workshop

Day 1:

  • The hint /* FIXME define the data for the move in the game */ could be made more clear. Use “initialize” instead of “define”. I assumed it was to define new derived datatypes.
  • For me making a reference to Pokemon made the exercises go out of context.

Day 2:

  • Choose a linear color gradient for the All-to-all visual
  • Add FIXME in the exercise scaffolds so that editors highlight it.
  • Maybe go deeper into the halos/border problem. Or a N-body problem for classical Molecular Dynamics and show the advantage of using non-blocking.

Day 3:

  • The visuals in third episode (synchronization) could be improved with some arrow heads. Also, the lines in the visuals have new colours (red, green & purple) which is different from the previous two episodes (red and blue).

Parameters for Get, Put, and Accumulate are not explained clearly

I had some questions on the meaning and use of the target_disp parameter in the RMA functions. For the next iteration:

  • Add figure(s) to explain how these functions compute the address on the target process using information known to the window object (disp_unit)
  • Add example(s) (they could be exercises) that require more thinking as to what should be passed for these parameters.

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.