pratikvn / schwarz-lib

Repository for testing asynchronous schwarz methods.
https://pratikvn.github.io/schwarz-lib/
BSD 3-Clause "New" or "Revised" License
5 stars 3 forks source link

Understanding the code #1

Open soumyadipghosh opened 5 years ago

soumyadipghosh commented 5 years ago

To start understanding the code, can you give a rough idea of the sequence in which I should look at the files in /source ? A brief description of what each file does would also be nice.

Also, is there a brief tutorial of gingko somewhere ? I found one but that looks incomplete.

pratikvn commented 5 years ago

I added something brief in the Wiki.

For ginkgo, one of our students was working on it, you can find it on his temporary repo. I think it will soon be moved to the main Ginkgo repo, @hartwiganzt ?

soumyadipghosh commented 5 years ago

About the bug on the enable_push_one_by_one flag, I think you have to change the (remote_put[p])[i] to i in this line because it should be the displacement of the RMA window.

Also, I did not understand the else block of the enable_push_one_by_one flag starting from this line. What is being done here?

pratikvn commented 5 years ago

From line 900, it is basically the accumulate into the send_buffer array and put that into the neighbor.

903: Loop over number of neighbors.

905: Get number of elements to send to each neighbor and make sure it is non-zero.

From 907 to 928 does the same thing as 930 to 933, but for GPU. As I need to call a GPU kernel, it becomes a bit complicated. But I think 930 to 933 is basically accumulating the local_solution vector to be sent to the different processes into the send_buffer with the correct offset of num_put and just accululating them. The MPI_Put from line 936 basically puts the send_buffer accounting for the offset into the recv_buffer of its neighbor again accounting for the offset.

In short, you can disregard lines 907 to 928 for now as they are only for GPU.

pratikvn commented 5 years ago

Another thing, please dont push anything into develop, especially the merge commits. On your local branch, you can use git rebase so that the merge commits do not appear and your history is cleaner.

soumyadipghosh commented 5 years ago

I did not push any commit to develop to the best of my knowledge. Did you see a problem ? Also, I should rebase event-based from develop, not master ?

pratikvn commented 5 years ago

Yeah, I guess when you pushed you pushed to develop as well. Its okay, not a problem. I corrected it now. For event-based, better to pull and base it on master. That is probably the safer and stable branch.

soumyadipghosh commented 5 years ago

Oh, I see the problem - I did not configure git push, so it was pushing all matching branches. So I should do a git config push.default current to push to only the branch I selected in git checkout?

pratikvn commented 5 years ago

Yes.

soumyadipghosh commented 5 years ago

Well, I just pushed something to event-based. Please verify that it is not updating the other branches. Also, git rebase master on event-based is saying that branch is up to date, which is something to be expected I guess.