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]: FlowFPX: Nimble Tools for Debugging Floating-Point Exceptions #148

Open
editorialbot opened this issue Apr 25, 2024 · 47 comments
Open
Assignees

Comments

@editorialbot
Copy link
Collaborator

editorialbot commented Apr 25, 2024

Submitting author: @ashton314 (Ashton Wiersdorf)
Repository: https://github.com/utahplt/juliacon2023-paper
Branch with paper.md (empty if default branch):
Version: v1.0.0
Editor: @lucaferranti
Reviewers: @JeffreySarnoff, @dpsanders
Archive: Pending

Status

status

Status badge code:

HTML: <a href="https://proceedings.juliacon.org/papers/338a66061153419be896c7f7aab449ac"><img src="https://proceedings.juliacon.org/papers/338a66061153419be896c7f7aab449ac/status.svg"></a>
Markdown: [![status](https://proceedings.juliacon.org/papers/338a66061153419be896c7f7aab449ac/status.svg)](https://proceedings.juliacon.org/papers/338a66061153419be896c7f7aab449ac)

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

@JeffreySarnoff & @dpsanders, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review.
First of all you need to run this command in a separate comment to create the checklist:

@editorialbot generate my checklist

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @lucaferranti know.

Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest

Checklists

📝 Checklist for @JeffreySarnoff

📝 Checklist for @dpsanders

@editorialbot
Copy link
Collaborator Author

Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.

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

@editorialbot commands

For example, to regenerate the paper pdf after making changes in the paper source files, type:

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

Software report:

github.com/AlDanial/cloc v 1.90  T=0.05 s (851.6 files/s, 387691.8 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
TeX                                     11            464            403          14638
SVG                                     29              0              0           3232
Windows Module Definition                1              0              0           1593
Ruby                                     1              8              4             45
Racket                                   1              5              5             38
YAML                                     1              0              0             34
Julia                                    1              3              0             14
---------------------------------------------------------------------------------------
SUM:                                    45            480            412          19594
---------------------------------------------------------------------------------------

Commit count by author:

    90	Ashton Wiersdorf
    37	Ben Greenman

@editorialbot
Copy link
Collaborator Author

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1145/103162.103163 is OK
- 10.1109/IEEESTD.1985.82928 is OK
- 10.1029/2020MS002246 is OK
- 10.1145/3316279.3316281 is OK
- 10.1109/MCSE.2014.90 is OK
- 10.1145/3579990.3580020 is OK
- 10.11588/ans.2015.100.20553 is OK
- 10.1145/3324989.3325721 is OK
- 10.1145/2998441 is OK
- 10.1515/jnum-2012-0013 is OK
- 10.1145/3330345.3330346 is OK
- 10.1016/j.parco.2021.102870 is OK
- 10.1002/0471028959 is OK
- 10.1109/Correctness56720.2022.00006 is OK
- 10.1109/Correctness54621.2021.00007 is OK
- 10.1145/3520313.3534655 is OK
- 10.1109/XLOOP56614.2022.00010 is OK
- 10.1145/3588195.3592991 is OK
- 10.21105/joss.02018 is OK
- 10.1109/ASE.2019.00118 is OK
- 10.1109/IISWC55918.2022.00014 is OK
- 10.5281/ZENODO.5115765 is OK
- 10.1109/MCSE.2014.11 is OK
- 10.1145/2737924.2737959 is OK
- 10.1145/3586183.3606819 is OK
- 10.1109/IPDPS.2007.370254 is OK
- 10.1109/MC.2019.2926614 is OK
- 10.1145/3369583.3392673 is OK
- 10.1007/978-3-319-76526-6 is OK
- 10.48550/arXiv.2209.05433 is OK

MISSING DOIs

- No DOI given, and none found for title: Handling IEEE 754 Invalid Operation Exceptions in ...
- No DOI given, and none found for title: Low-Precision Climate Computing: Preserving Inform...
- 10.2307/2317055 may be a valid DOI for title: The Art of Computer Programming, Volume 2: Seminum...
- No DOI given, and none found for title: OrdinaryDiffEq.jl
- No DOI given, and none found for title: DUNE Numerics
- No DOI given, and none found for title: Open Source Reports
- No DOI given, and none found for title: Issue Search: \textttNaN+infinity
- No DOI given, and none found for title: IEEE Working Group P3109 Interim Report on 8-bit B...

INVALID DOIs

- 10.1007/978-3-031-08751-6\_9 URL is INVALID

@editorialbot
Copy link
Collaborator Author

Paper file info:

📄 Wordcount for paper.tex is 4728

🔴 Failed to discover a Statement of need section in paper

@editorialbot
Copy link
Collaborator Author

License info:

🔴 Failed to discover a valid open source license

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@lucaferranti
Copy link
Member

lucaferranti commented Apr 25, 2024

@JeffreySarnoff, @dpsanders (cc @ashton314) thank you for volunteering as reviewers! 🙏 I'll be the editor handling this submission and you can ask me questions any time.

For start, you can generate your reviewer checklist by commenting

@editorialbot generate my checklist

(do not include other text in the message where you run that command)

Note: In this submission, the paper is in its own repository instead of being in the software repository. This is allowed. You can find the software here: https://github.com/utahplt/FloatTracker.jl

As you go through the checklist, you can leave your review comments either as issues in the paper/software repository or directly here. If you have any questions, ping me

@JeffreySarnoff
Copy link

JeffreySarnoff commented Apr 26, 2024

Review checklist for @JeffreySarnoff

Conflict of interest

  • I confirm that I have read the JuliaCon conflict of interest policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JCon for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the https://github.com/utahplt/juliacon2023-paper?
  • License: Does the repository contain a plain-text LICENSE or COPYING file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@ashton314) 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 functionality 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

Paper format

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

Content

  • Context: is the scientific context motivating the work correctly presented?
  • Methodology: is the approach taken in the work justified, presented with enough details and reference to reproduce it?
  • Results: are the results presented and compared to approaches with similar goals?

@JeffreySarnoff
Copy link

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@JeffreySarnoff
Copy link

JeffreySarnoff commented Apr 26, 2024 via email

@lucaferranti
Copy link
Member

You can add notes as comment in this thread. When I've reviewed, I generally collect all my notes/feedback in a single comment which I post in the review issue (this one). If you want to recommend changes in the paper / code you can also directly open issues in the repositories. In that case, please do mention this issue also there.

For your question of the statement of need. It is not strictly necassary to have a section with that name, but there should be a clear motivation for the software and the problem it is trying to solve. If you feel this is well described in the abstract/introduction, then you can tick the box

@JeffreySarnoff
Copy link

I am quizzical. The checklist is written for papers that are all about a Julia repository. FlowFPX is the "hook" yet there is no FlowFPX.jl afaik. I do see that this is a toolkit, still, having FlowFPX.jl that has the individual tools as [deps] (or subsets) along with a place for the docs to live together would be nice. Meanwhile -- I don't know what to do with the unchecked boxes .. they seem not applicable or to be considered at a later evolution. Nonetheless I appreciate the capabilities you have made available.

@bennn
Copy link

bennn commented May 10, 2024

Great point, there really should be a FlowFPX repo that brings the toolbox together. We'll see what we can do. (Unfortunately, all the students involved have graduated or moved on since JuliaCon'23.)

@bennn
Copy link

bennn commented May 28, 2024

The best we can do now is a loose coupling, basically with a readme. Putting at all together in a robust-cross-platform Julia package is tough because the different components of FlowFPX use different languages & hardware (C for CSTGs, Nvidia GPUs for GPUFPX).

@JeffreySarnoff
Copy link

JeffreySarnoff commented May 28, 2024 via email

@bennn
Copy link

bennn commented May 31, 2024

Added a landing page link to the paper: https://utahplt.github.io/flowfpx

@bennn
Copy link

bennn commented May 31, 2024

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@lucaferranti
Copy link
Member

Hi @dpsanders 👋 ,

were you able to start the review? Any projected timeline for it?

@dpsanders
Copy link
Collaborator

Apologies, not yet. I hope to get to it soon.

@dpsanders
Copy link
Collaborator

dpsanders commented Jul 4, 2024

Review checklist for @dpsanders

Conflict of interest

  • I confirm that I have read the JuliaCon conflict of interest policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JCon for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the https://github.com/utahplt/juliacon2023-paper?
  • License: Does the repository contain a plain-text LICENSE or COPYING file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@ashton314) 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 functionality 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

Paper format

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

Content

  • Context: is the scientific context motivating the work correctly presented?
  • Methodology: is the approach taken in the work justified, presented with enough details and reference to reproduce it?
  • Results: are the results presented and compared to approaches with similar goals?

@dpsanders
Copy link
Collaborator

Here are some observations from my review. Apologies for the delay.
I consider that a few of these comments are blocking for the publication of the paper in the JuliaCon proceedings. Others are just general suggestions for improving the package!

In general, this is a nice idea and a very nice package, thanks! :)

  • As Jeffrey Sarnoff already mentioned, it’s not too clear what “FlowFPX” is, or what a “toolkit” is, and what the relationship of FloatTracker.jl is to that.

  • I only just understood where the abbreviation “FPX” comes from; this should be made explicit in the paper.

  • Consider renaming the package to TrackedFloats.jl, since it defines the TrackedFloat type. This would be more standard in the Julia ecosystem.

  • CSTG has no software license.

  • Consider rewriting CSTG in Julia...

  • You can use floatmax(Float64) instead of prevfloat(typemax(Float64)) (in the paper).

  • Use a parametrized type TrackedFloat{T <: AbstractFloat}
    or just Tracked{T}.

  • Consider allowing to track Ints for overflow and underflow.

  • Allow to write logs to an in-memory array instead of a file

  • Think about thread-safety for the logging

  • —odds::Int64 inject if rand(odds) == 1. I don’t understand this. How is it used?

  • “Since FloatTracker instruments Julia programs, it cannot help directly [with GPUs]."
    Conceivably there could be a way to use FloatTracker with Julia’s GPU ecosystem (CUDA.jl et al.), but the way that logging works would need to be rethought. This seems like it would be a big project thoug!

  • In the paper, refer to package names with their .jl termination, e.g. FloatTracker.jl and ShallowWaters.jl, since this is part of the package name.

  • How injection works does not seem well explained.

  • “For GPUs it relies on GPU-FPX, through the connection between these tools is loose.” There doesn’t seem to be any connection at all? :)

  • There don’t seem to be any guidelines for contributing to the package.

  • After looking at the code it seems like there is an in-memory LogBuffer, but I don’t see any docs on how to use it.

  • Currently all docs are in the README. Consider having actual structured docs.

  • There is a lack of consistency in the function names: some start with ft, while others do not, such as config_logger.
    I suggest instead not exporting these functions, so they would then be called as

FloatTracker.config(…)
FloatTracker.flush_logs()

etc.
This would be more standard for the Julia ecosystem.

  • There don’t seem to be API docs.

  • To use CSTG it seems like a command-line program needs to be called. This should be callable as a function from the Julia package.

  • Ideally the CSTG package itself would be provided as a package via BinaryBuilder (or rewritten in Julia, as suggested above :) )

@lucaferranti
Copy link
Member

Thank you @dpsanders for the thorough review. @ashton314 , please note the comments. Feel free to ask questions to the reviewers or myself if you have further questions / comments

@bennn
Copy link

bennn commented Jul 8, 2024

Thanks @dpsanders ! We'll push an update this month that incorporates review comments.

@lucaferranti would you clarify what you need to see in a revised paper? What are the blockers from your perspective --- we'd like our next revision to be something you and the reviewers can quickly approve.

@lucaferranti
Copy link
Member

lucaferranti commented Jul 9, 2024

Thank you @dpsanders and @JeffreySarnoff for the review!

@bennn , the JuliaCon proceedings review is by nature an iterative process, unfortunately I cannot give a strict list of necessary and sufficient conditions to guarantee that next reviewers will approve quickly. If you are unclear, I suggest that you ping the reviewers and comment up-front what changes you are going to do and what changes you are leaving for future work. You can also use this to ask clarifying questions in what changes the reviewers expect to see if it's unclear. If you think some comments would better be left as future work and need not ot be addressed here, it would be good to give a clear motivation for the reasoning behind it. Note, however, that the reviewers may disagree and reply to your rebuttal :) However, I would expect the discussion to converge after 1-2 iterations

@bennn
Copy link

bennn commented Jul 11, 2024

@lucaferranti ok.

@dpsanders @JeffreySarnoff many thanks for the reviews.

We propose the following changes to the paper and its software:

Paper TODO

  • clarify what the FlowFPX toolkit is and its relationship to FloatTracker.jl ("TF.jl" for short)
  • rename FloatTracker.jl to TrackedFloats.jl
  • explicitly say there is no formal link between TF.jl and GPU-FPX
  • spell out FPX = Floating Point eXception, somewhere
  • clarify the explanation of how injection works, explain how odds is used
  • fix the floatmax issue
  • acknowledge the threat with thread safety

Software TODO

  • rename FloatTracker.jl to TrackedFloats.jl
  • add contributor guidelines
  • add a license to CSTG
  • add structure to the TF.jl documentation
  • make sure TF.jl has appropriate API documentation.
    * @dpsanders we need clarification here. TF.jl has docstrings already; what needs to happen to turn those into API documentation? https://docs.juliahub.com/General/FloatTracker/stable/autodocs/
  • export only functions that start with ft_

Future Work

Each of the following needs a matching GitHub issue. @dpsanders opened issues for several of these --- maybe all. Thanks!!! We'll confirm, put links below, and then mark these as completed.

  • add tracked Ints (this is a great first issue for a future new contributor)
  • create an in-memory logging interface (exposing the current one may suffice)
  • fix the thread safety issue
  • explore Cuda.jl for GPU integration
  • add firm CSTG integration (rewrite in Julia, use BinaryBuilder.jl, or
    write a loose Julia API)

Please comment to let us know whether these TODOs sound good, or if you need to see other changes in the next revision.

@bennn
Copy link

bennn commented Jul 22, 2024

ping @dpsanders @JeffreySarnoff

@JeffreySarnoff
Copy link

JeffreySarnoff commented Jul 22, 2024 via email

@dpsanders
Copy link
Collaborator

That all sounds great, thanks!

@bennn
Copy link

bennn commented Jul 23, 2024

thank you both! we'll get started

@ashton314
Copy link

Status update: lots of concerns addressed; currently waiting for registering the package rename to TrackedFloats on JuliaHub: JuliaRegistries/General#112323

@bennn
Copy link

bennn commented Aug 7, 2024

@editorialbot generate pdf

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@bennn
Copy link

bennn commented Aug 8, 2024

@JeffreySarnoff @dpsanders the latest PDF has fixes for everything except the juliahub package URL in section 3.

@ashton314
Copy link

@editorialbot generate pdf

@ashton314
Copy link

@JeffreySarnoff @dpsanders @bennn the JuliaHub URL has been updated to point to the new package.

@JeffreySarnoff
Copy link

!

@editorialbot
Copy link
Collaborator Author

👉📄 Download article proof 📄 View article proof on GitHub 📄 👈

@ashton314
Copy link

How extensive must the contribution guidelines be? I've added a section to our README advising bug reporters to report issues on GitHub and to open PRs there if they have code they'd like to contribute.

@JeffreySarnoff
Copy link

While I don't know the answer to your question, referring to this guidance from SciML or copying what may be most salient for you is one way to go.

@JeffreySarnoff
Copy link

by the way, the message "⚠️ NOTICE ⚠️ we are in the process of renaming FloatTracker → TrackedFloats to bring this inline with Julia package naming conventions. Please be patient." at the top of the README for TrackedFloats.jl is not useful any longer (imo).

@lucaferranti
Copy link
Member

lucaferranti commented Aug 28, 2024

Hi everyone, 👋 ,

just checking in on how this review is going.

@dpsanders @JeffreySarnoff I believe @ashton314 has updated the paper and software to address your concerns. Could you take a second look and let the author know if any further changes are needed?

@ashton314 I see you have some unticked boxes in your TODO list, do you have an estimate of the timeline?

@ashton314
Copy link

@lucaferranti I'm gearing up for a talk at ECOOP in September. I hope to make a little progress before then, but it might not be finished until after the conference.

@ashton314
Copy link

Timeline update: today I've got a little time and I'll try making sure everything exported gets a tf_ and the beginning.

Could I get some suggestions on what constitutes "adding structure to the documentation"? Moreover—this isn't a big package; I don't think the README is that long and it serves the need for documentation adequately. Is that really going to be a blocker?

@ashton314
Copy link

So, concretely: I have a little more work to do today on the software; depending on how we feel about the state of documentation, it might take me until late September when I have some time after ECOOP.

@lucaferranti
Copy link
Member

@ashton314 the timeline sounds good, thanks for the updates.

For your question, I would understand it as setting up Documenter.jl and have an API documentation by collecting exported functions docstrings as well as a couple of tutorials, but do feel free to ask @dpsanders directly to clarify what he meant if it's not clear to you

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

No branches or pull requests

6 participants