Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide documentation about MPL SendRecv call signature #35

Open
frozenfrank opened this issue Nov 11, 2024 · 3 comments
Open

Provide documentation about MPL SendRecv call signature #35

frozenfrank opened this issue Nov 11, 2024 · 3 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@frozenfrank
Copy link
Contributor

frozenfrank commented Nov 11, 2024

Overview

As an experience programmer, but entirely new to the MPL/MPI systems and programming styles, a student should be provided with introductory information and helpful examples. Some of the key ideas are demonstrated in the MountainSolveMPI.hpp file; however, the call signatures demonstrated cannot be leveraged by the students and no direction is provided to help them figure it out.

Prior Research

Online searches for the documentation provide little or misleading help. The results are mostly for MPI resources, and the call signatures are different.

The overview provided in the MPI > Communication section is insufficient. It provides some working code, but gives no explanation as to what it does or why. This lack of explanation makes it very difficult for students to figure out how they can change the materials to work in a different context.

There is an additional section with a sample comm_world.send() function; however, translating it to sendrecv() is a non-trivial endeavor— even for an experience programmer. The compile errors thrown give no clues about what data types need to be provided, and online searches provide little help.

The MPI reading provides (most unhelpful) a link to the documentation for data layouts. This resources describes all the possible kinds of data layouts that could be sent over MPI, without ever showing how the resources can be used. In this case, it provides the depth of knowledge that students don't actually need and skips over the knowledge required to begin.

Expectations

I would expect either the reading or the project page to contain a working and documented example of the call signature that students will need to use on the project.

I would expect the course reading to self-contain all the basic principles and information necessary to complete the project.

I would expect the reading to link to useful resources can use to solve the problem at hand, or to satisfy a curious mind. Raw documentation fulfills neither of these purposes.

@frozenfrank frozenfrank added the documentation Improvements or additions to documentation label Nov 11, 2024
@frozenfrank
Copy link
Contributor Author

The following drawing represents a visual organization of the data being transferred by the exchangeHalos() function. A clear visualization of the process with direct connections to the code would greatly help students understand what is going on under the hood.

image

@paigeid-orc
Copy link
Contributor

We can add in the visualization (I can work on that. I have an idea for it already on the project page). I'm in agreement that we should add some more information, but I don't think that's it's impossible. I know of at least 2 students who have completed the assignment early. Reading the raw documentation (which we need to link to better, I found a better section) is an important skill that a grad student should have.

@frozenfrank
Copy link
Contributor Author

Here is another diagram laying out the assignments of the each row for the Tiny wave assuming 8 threads. This diagram shows the total rows needed by each process, including the halo rows.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants