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

[REVIEW]: ppiclF: A Parallel Particle-In-Cell Library in Fortran #1400

Closed
36 tasks done
whedon opened this issue Apr 22, 2019 · 65 comments
Closed
36 tasks done

[REVIEW]: ppiclF: A Parallel Particle-In-Cell Library in Fortran #1400

whedon opened this issue Apr 22, 2019 · 65 comments
Assignees
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review

Comments

@whedon
Copy link

whedon commented Apr 22, 2019

Submitting author: @dpzwick (David Zwick)
Repository: https://github.com/dpzwick/ppiclF/
Version: v1.0.0
Editor: @jedbrown
Reviewer: @iljah, @markadams
Archive: 10.5281/zenodo.2667285

Status

status

Status badge code:

HTML: <a href="http://joss.theoj.org/papers/af8a524242ba0c072ef4c42f816b76df"><img src="http://joss.theoj.org/papers/af8a524242ba0c072ef4c42f816b76df/status.svg"></a>
Markdown: [![status](http://joss.theoj.org/papers/af8a524242ba0c072ef4c42f816b76df/status.svg)](http://joss.theoj.org/papers/af8a524242ba0c072ef4c42f816b76df)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@iljah & @markadams, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.theoj.org/about#reviewer_guidelines. Any questions/concerns please let @jedbrown know.

Please try and complete your review in the next two weeks

Review checklist for @iljah

Conflict of interest

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Version: v1.0.0
  • Authorship: Has the submitting author (@dpzwick) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the function of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Authors: Does the paper.md file include a list of authors with their affiliations?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • References: Do all archival references that should have a DOI list one (e.g., papers, datasets, software)?

Review checklist for @markadams

Conflict of interest

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Version: v1.0.0
  • Authorship: Has the submitting author (@dpzwick) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the function of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Authors: Does the paper.md file include a list of authors with their affiliations?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • References: Do all archival references that should have a DOI list one (e.g., papers, datasets, software)?
@whedon
Copy link
Author

whedon commented Apr 22, 2019

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @iljah, it looks like you're currently assigned as the reviewer for this paper 🎉.

⭐ Important ⭐

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

@whedon
Copy link
Author

whedon commented Apr 22, 2019

Attempting PDF compilation. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Apr 22, 2019

@jedbrown
Copy link
Member

@iljah @markadams 👋 Welcome and thanks for agreeing to review! The comments from @whedon above outline the review process, which takes place in this thread (possibly with issues filed in the ppiclF repository. I'll be watching this thread if you have any questions.

@markadams
Copy link

I think having the data lurk in common blocks will limit the extensibility of this project. I would suggest a more object oriented approach like provide a particle list object and iterators of some sort, and methods that operate on these lists. For instance, using multiple species of particles does not look feasible now. I don't know what the long term goal of this project is but it is young and I am suggesting a major refactoring -- the longer you wait the harder it will be to do.

@dpzwick
Copy link

dpzwick commented Apr 23, 2019

Thank you, that is a good suggestion. Indeed I think we may head that direction in the future. Either by upgrading to Fortran 90 or possibly even a while C++ overhaul.

While this would be helpful, it shouldn't hinder the current capabilities of ppiclF. Multiple species can be done already since the user can solve whichever equations they want and also store arbitrary numbers of properties in their simulation.

I will keep this in mind for future versions though.

@iljah
Copy link

iljah commented Apr 27, 2019

Documentation (README.md as far as I can tell) could use a bit longer statement of need and is missing installation instructions and community guidelines.

@iljah
Copy link

iljah commented Apr 27, 2019

According to my instructions there should be API documentation but I don't see any in the repository. Where can I learn e.g. how ppiclc_solve_InitBoxFilter works?

@iljah
Copy link

iljah commented Apr 27, 2019

Readme also doesn't say anything about testing the library.

@iljah
Copy link

iljah commented Apr 27, 2019

One more: dpzwick/ppiclF#28

@dpzwick
Copy link

dpzwick commented Apr 27, 2019

Thank you for the feedback @iljah. I think issues dpzwick/ppiclF#25, dpzwick/ppiclF#26, and dpzwick/ppiclF#28 are a simple misunderstanding of not being able to see the documentation website.

While the link to the website was in the compiled JOSS pdf, I made it more clear in the README.md file along with your previous suggestions to that file (see this commit).

As for issue dpzwick/ppiclF#27, I agree. It was confusing that even when a different compiler is specified gslib would compile with a hard-coded mpicc. I updated the source so gslib will use the same compiler as the main ppiclF Makefile. Although I also note that the only supported compilers currently are mpicc, mpif77 and mpif90.

@dpzwick
Copy link

dpzwick commented Apr 27, 2019

Also, to address your question above about where to find information about items such as: ppiclc_solve_InitBoxFilter, there is extensive information on the documentation website here.

@iljah
Copy link

iljah commented Apr 29, 2019

Documentation on external website should be ok now that there's also a link to it in readme but it's also missing a statement of need or at least the target audience.

About performance: is there are particular reason why ghost particle send doesn't seem to scale past 1000 ranks, or at all? Also how many particles / s does ppiclF process on one core?

A link to vulcan page at LLNL in performance section would be nice.

@dpzwick
Copy link

dpzwick commented Apr 29, 2019

Thank you for the feedback. I updated the readme to include a target audience in this commit and this commit.

Regarding the ghost particles, the reason for this is the underlying all-to-all communication. At best all-to-all communication can be log_2 (R) where R is number of MPI ranks unless some very specific refactoring of communication patterns is done. In the weak scaling, the particles per rank is fixed so it is expected to see this log scaling.

Regarding the number of particles on a single core, the number is only limited by the available memory per core. In the performance section it was varied between 256 - 24,576 when the strong scaling was done, although it could have been higher if needed.

I also added a link to Vulcan on the website in this commit so it is updated now.

@iljah
Copy link

iljah commented Apr 29, 2019

Thanks, I was asking about solved particles per second per core not number of particles.

What fraction of CPU time was used by the fluid solver and was that included in timings provided in performance section? I can imagine with only 300 particles per process the fluid solution would take much more time than particles which would improve particle scaling since time spent transferring particle data would could be masked by fluid computation.

@dpzwick
Copy link

dpzwick commented Apr 29, 2019

In the scaling cases the fluid was not timed. Since Nek5000 was used, the times for the fluid solver are highly dependent on problem setup since the fluid solver will iterate on a pressure poisson system. For this reason, the times on the scaling plots are only for ppiclF and not for any part of the fluid solver that it was coupled to.

@iljah
Copy link

iljah commented Apr 30, 2019

So there was no ppiclF communication going on while fluid solver was running?

In any case I think all checklist items have been addressed so @jedbrown to me this looks good to go. Thanks!

@dpzwick
Copy link

dpzwick commented Apr 30, 2019

There were barriers set so that just the timings for ppiclF could be tested. In real applications there may be some overlap of communication with computation though.

Thanks for your insight and suggestions @iljah and @markadams!

@jedbrown
Copy link
Member

jedbrown commented May 2, 2019

@dpzwick Some minor tweaks to the paper:

  1. No need to cite the repository for this software; it appears in the margin.
  2. Please check [-@ and @ syntax for your references. https://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html#citation_syntax
  3. The displayed equation is completely general, but presumably one would not use this when Y is exclusively mesh-based field data, for example. A couple sentences about what particle-in-cell methods are and how ppiclF interfaces with field-based solvers would be useful. This could cite traditional publications that would be relevant to a user interested in further details or applications.
  4. It would be useful to mention some other PIC software and how ppiclF compares to them. Note that some (e.g., geodynamics) use only a handful of particles per cell while others (like plasma applications) use many thousands of particles per cell. A library might be better in one regime than another. Underworld and XGC1 are familiar to me, and there are others likely to turn up if a prospective user searches.

@dpzwick
Copy link

dpzwick commented May 2, 2019

@whedon generate pdf

@whedon
Copy link
Author

whedon commented May 2, 2019

Attempting PDF compilation. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented May 2, 2019

@dpzwick
Copy link

dpzwick commented May 2, 2019

Thanks for the feedback @jedbrown .

I updated the PDF based on your suggestions.

@jedbrown
Copy link
Member

jedbrown commented May 2, 2019

Thanks. The ICPP booktitle field needs case protection. For the Nek5000 and CMT-nek references, I would use this style, ... Navier-Stokes solver Nek5000 [-@nek5000] ....

@dpzwick
Copy link

dpzwick commented May 2, 2019

@whedon generate pdf

@whedon
Copy link
Author

whedon commented May 2, 2019

Attempting PDF compilation. Reticulating splines etc...

@jedbrown
Copy link
Member

jedbrown commented May 4, 2019

@whedon set 10.5281/zenodo.2667285 as archive

@whedon
Copy link
Author

whedon commented May 4, 2019

OK. 10.5281/zenodo.2667285 is the archive.

@jedbrown
Copy link
Member

jedbrown commented May 4, 2019

@whedon set v1.0.0 as version

@whedon
Copy link
Author

whedon commented May 4, 2019

OK. v1.0.0 is the version.

@jedbrown
Copy link
Member

jedbrown commented May 4, 2019

@whedon check references

@whedon
Copy link
Author

whedon commented May 4, 2019

Attempting to check references...

@whedon
Copy link
Author

whedon commented May 4, 2019


OK DOIs

- 10.1109/IPPS.1996.508039 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@jedbrown
Copy link
Member

jedbrown commented May 4, 2019

@whedon accept

@whedon
Copy link
Author

whedon commented May 4, 2019

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented May 4, 2019

Check final proof 👉 openjournals/joss-papers#659

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#659, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true

@whedon
Copy link
Author

whedon commented May 4, 2019


OK DOIs

- 10.1109/IPPS.1996.508039 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@jedbrown
Copy link
Member

jedbrown commented May 4, 2019

@openjournals/joss-eics 👋 over to you.

@danielskatz
Copy link

@whedon accept deposit=true

@whedon
Copy link
Author

whedon commented May 4, 2019

Doing it live! Attempting automated processing of paper acceptance...

@whedon
Copy link
Author

whedon commented May 4, 2019

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited 👉 Creating pull request for 10.21105.joss.01400 joss-papers#660
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.01400
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

Any issues? notify your editorial technical team...

@danielskatz
Copy link

This DOI doesn't yet resolve for me - once it does, I will close this issue, and the publication process will be complete

@danielskatz
Copy link

@arfon - does this DOI work for you? It doesn't for me, 5-6 hours after it should have been created ...

@kyleniemeyer
Copy link

This one does not work for me either, just now.

@arfon
Copy link
Member

arfon commented May 5, 2019

@kyleniemeyer @danielskatz - looks like the Crossref deposit API is down (http://status.crossref.org/incidents/psyzb7txpwbq) - suggest not accepting any papers until this is resolved.

@kyleniemeyer
Copy link

@arfon it looks as though that issue was only temporary; can we try depositing again? I imagine this would have be done manually.

@arfon
Copy link
Member

arfon commented May 5, 2019

@arfon it looks as though that issue was only temporary; can we try depositing again? I imagine this would have be done manually.

I tried already. Unfortunately Crossref are actually having major issues with their deposit API, they just don't seem to have posted publicly about it. Perhaps no-body is on call over the weekend :-\ ?

@arfon
Copy link
Member

arfon commented May 6, 2019

Looks like the DOI is resolving now.

@danielskatz
Copy link

Thanks @iljah & @markadams for reviewing and @jedbrown for editing!

@whedon
Copy link
Author

whedon commented May 6, 2019

🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](http://joss.theoj.org/papers/10.21105/joss.01400/status.svg)](https://doi.org/10.21105/joss.01400)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.01400">
  <img src="http://joss.theoj.org/papers/10.21105/joss.01400/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: http://joss.theoj.org/papers/10.21105/joss.01400/status.svg
   :target: https://doi.org/10.21105/joss.01400

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

@whedon whedon added published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. labels Mar 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review
Projects
None yet
Development

No branches or pull requests

8 participants