Trixi.jl icon indicating copy to clipboard operation
Trixi.jl copied to clipboard

Use enum instead of symbols for indexing

Open benegee opened this issue 1 year ago • 5 comments

Some containers in Trixi.jl contain symbols, e.g. node_indices in P4estInterfaceContainer. Symbols are not isbits, which could e.g. prevent GPU offloading.

benegee avatar Nov 25 '24 12:11 benegee

Review checklist

This checklist is meant to assist creators of PRs (to let them know what reviewers will typically look for) and reviewers (to guide them in a structured review process). Items do not need to be checked explicitly for a PR to be eligible for merging.

Purpose and scope

  • [ ] The PR has a single goal that is clear from the PR title and/or description.
  • [ ] All code changes represent a single set of modifications that logically belong together.
  • [ ] No more than 500 lines of code are changed or there is no obvious way to split the PR into multiple PRs.

Code quality

  • [ ] The code can be understood easily.
  • [ ] Newly introduced names for variables etc. are self-descriptive and consistent with existing naming conventions.
  • [ ] There are no redundancies that can be removed by simple modularization/refactoring.
  • [ ] There are no leftover debug statements or commented code sections.
  • [ ] The code adheres to our conventions and style guide, and to the Julia guidelines.

Documentation

  • [ ] New functions and types are documented with a docstring or top-level comment.
  • [ ] Relevant publications are referenced in docstrings (see example for formatting).
  • [ ] Inline comments are used to document longer or unusual code sections.
  • [ ] Comments describe intent ("why?") and not just functionality ("what?").
  • [ ] If the PR introduces a significant change or new feature, it is documented in NEWS.md with its PR number.

Testing

  • [ ] The PR passes all tests.
  • [ ] New or modified lines of code are covered by tests.
  • [ ] New or modified tests run in less then 10 seconds.

Performance

  • [ ] There are no type instabilities or memory allocations in performance-critical parts.
  • [ ] If the PR intent is to improve performance, before/after time measurements are posted in the PR.

Verification

  • [ ] The correctness of the code was verified using appropriate tests.
  • [ ] If new equations/methods are added, a convergence test has been run and the results are posted in the PR.

Created with :heart: by the Trixi.jl community.

github-actions[bot] avatar Nov 25 '24 12:11 github-actions[bot]

Codecov Report

:x: Patch coverage is 97.97980% with 2 lines in your changes missing coverage. Please review. :white_check_mark: Project coverage is 96.36%. Comparing base (0046123) to head (033a817). :warning: Report is 341 commits behind head on main.

Files with missing lines Patch % Lines
src/solvers/dgsem_p4est/containers_3d.jl 94.12% 2 Missing :warning:
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2178   +/-   ##
=======================================
  Coverage   96.36%   96.36%           
=======================================
  Files         480      480           
  Lines       38230    38230           
=======================================
  Hits        36840    36840           
  Misses       1390     1390           
Flag Coverage Δ
unittests 96.36% <97.98%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

codecov[bot] avatar Nov 25 '24 14:11 codecov[bot]

@sloede @ranocha @vchuravy @jmark

Introducing an enum as discussed seems to work.

benegee avatar Nov 25 '24 15:11 benegee

Thanks for taking care of this! Once you're ready, please mark this PR as ready for review and request one from me.

sloede avatar Nov 27 '24 05:11 sloede

After speaking with @maleadt in Lausanne and we decided that we might be able to permit Symbols being passed to the GPU https://github.com/JuliaGPU/GPUCompiler.jl/pull/650

vchuravy avatar Nov 27 '24 15:11 vchuravy