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

Composite Output - distributed computation #138

Open
7 of 13 tasks
alecandido opened this issue Jul 20, 2022 · 1 comment
Open
7 of 13 tasks

Composite Output - distributed computation #138

alecandido opened this issue Jul 20, 2022 · 1 comment
Assignees
Labels
output Output format and management refactor Refactor code
Milestone

Comments

@alecandido
Copy link
Member

alecandido commented Jul 20, 2022

Follow up of #105

  • add runcards subfolder and move there runcards (0.theory.yaml, 0.operator.yaml)
  • create recipes subfolder and dump instructions
  • create recipes' runner, dump into parts subfolder
  • create parts' merger

UI:

  • orchestrate eko run through CLI commands (run subcommand)

Further:

  • write runcards types (eko.runcards) and use them in eko.output.struct.EKO
  • rename output subpackage in something more appropriate (like compute or orchestration)
  • runcard dump broken: Q0 and Qref are NumPy scalars in both theory and operators card
  • functions that play with q2 should always act on existing element retrieved with a given precision (parameter of the object): if multiple object are found in the range, raise
    • __getitem__
    • __setitem__
    • __contains__
  • rename output/manipulate.py to output/rotation.py
  • move Rotation from output/struct.py to output/rotation.py
  • move Operator from output/struct.py to output/operator.py
  • move DictLike from output/struct.py to output/utils.py

Plan

Let's break all these over multiple PR:

Recipe

  • establish recipe format
    • self contained instruction to compute a part
    • do not repeat global information (like Configs and Debug) since they are always accessible for the full operator
  • with dedicated in-memory struct
  • provide recipe computer (from runcard-like input)

Parts

  • start splitting operator.grid instructions to compute parts from recipes
  • provide a part struct
  • benchmark with FFNS

Operators

  • compute full operators as well (merging separate parts)
  • move operator struct
  • benchmark with VFNS

Runner replacement

  • replace default runner, with a runner using recipes-parts-operators
  • benchmark new runner against old one, over a wide range of conditions
  • drop operator.grid

Move to Ekobox

Since at this point the runner won't be our default way to compute an EKO, and Ekobox is sufficiently good, we can move the one-line runner to Ekobox (it will actually be there for user convenience, so makes sense to be part of the UI-oriented package).

In particular, we can also include as part of the EKO CLI, i.e.:

eko run thcard.yaml ocard.yaml [output-file]

Layout

Following, the proposed layout backing the new mode:

runner.py
output/
  |-- legacy.py
  |-- struct.py
  |-- rotation.py
  |-- recipe.py
  |-- part.py
  |-- operator.py
  • runner.py: it will eventually contain a runner performing the same task of the current one, but based on recipe-part-operator rather than operator.grid
  • legacy.py: contains methods to load and dump old style EKO files (dump methods are going to be deprecated as soon as it is possible to compute a new one, load later on)
  • struct.py: contains the EKO class and simplest methods
    • for some time will also host Debug and Config
    • Config has also to be renamed, too generic
  • rotation.py: contains the Rotation class and rotation functions (xgrid, flavor, and to evolution wrapper)
  • recipe.py: contains the Recipe class and functions to compute it from runcard-like info
  • part.py: contains the Part class and functions to compute part from recipe
  • operator.py: contains the Operator class, and functions to compute operator from parts
@alecandido alecandido added this to the 1.0.0 milestone Jul 20, 2022
@alecandido alecandido added the refactor Refactor code label Jul 20, 2022
@alecandido alecandido self-assigned this Jul 20, 2022
@alecandido alecandido added the output Output format and management label Jul 20, 2022
@felixhekhorn felixhekhorn mentioned this issue Jul 28, 2022
14 tasks
@alecandido
Copy link
Member Author

@felixhekhorn whenever you open a new PR, list it (the #xx tag) in the corresponding section of the Plan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
output Output format and management refactor Refactor code
Projects
None yet
Development

No branches or pull requests

1 participant