-
Notifications
You must be signed in to change notification settings - Fork 11
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
Poisson 2D Jacobi solver benchmark with Python, Cython, C, and Fortran code #9
Conversation
Thank you @arunningcroc! @milancurcic, @LKedward, @awvwgk, how should we proceed? My goal is to just start adding benchmarks, even if we don't (yet) have an infrastructure for it, and then simply later adding some tools to run them easily (with different compilers and options), etc. |
Hey all, long time no see... If I may, I have three remarks:
|
Thank you @arunningcroc! My suggestion is to add only Fortran code, until we have a clear plan on whether, why, and how to include other languages. |
We discussed quite a few times, e.g. in #2, to include other languages. Why: to actually have a comparison across languages. I expect that across Fortran/C/C++ perhaps even Julia one can fiddle with the code to eventually get similar speed. And we should have that final code. But also what would be interesting (for me) would be code that you would reasonably write as a domain expert, say a physicist. And we should have those codes too. How: that has to be discussed, for now let's have it in some form, such as in this PR. I expect we'll have benchmarks for smaller arrays, that have to be run many times. I have a runner for that somewhere, I'll see if I can contribute it. Then I expect to have longer running tests, such as this PR, which are not as sensitive to how it is timed. |
I opened #10. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a few suggestions in formatting the table.
We should also note what hardware and OS was this run on.
I suggest .f95 -> .f90, at least until we reclaim .f.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me to merge.
I am going to wait for @milancurcic to be ok with it.
I approved earlier, I think it's great. Thank you! |
@arunningcroc, we go some feedback on the code. When compiling with There should be a verification phase (not part of the benchmark) to ensure the result is actually correct, and that will help when people writing alternative implementations to check that their code is correct. Preferably a solution that works for all M. The final feedback we got was that the documentation could be improved in README, it would be good to document the numerical method a bit, the boundary/initial condition, etc. @arunningcroc I can help with this. Let me know. |
Should this pull request be reopened? I can't do it. I prompted @certik's most recent comment so I'm pasting a transcript below showing the non-deterministic output. I didn't use any optimization in the transcript below, but Regarding documentation, I suggest one short comment per "major" construct, wherein my personal definition of "major" includes modules; procedures or procedure interfaces, and derived types.
|
Never mind the issue of non-deterministic results! I just realized the that first number is simply the CPU time. I really hope that submitted codes will use more obvious variable names and add even just a small number of comments in addition to providing results-verification. |
We could revert master and open a new PR, but I wouldn't bother. But we'll fix this, even if I have to do it myself. But if @arunningcroc has time, he can help me. |
As discussed in the discourse group.