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

Expose values and variables in the IR #41

Open
8 of 12 tasks
ulysseB opened this issue Jul 4, 2018 · 0 comments
Open
8 of 12 tasks

Expose values and variables in the IR #41

ulysseB opened this issue Jul 4, 2018 · 0 comments
Assignees

Comments

@ulysseB
Copy link
Owner

ulysseB commented Jul 4, 2018

Data flow is currently implicit in our representation. This causes some problems:

  • we can't measure the register pressure
  • it is hard to measure the size of memory blocks. This leads to a O(n^3) search space representation.
  • we don't know when to introduce broadcasts
  • reductions are hard to manipulate and we cannot represent parallel reductions
  • we do not know when to privatise shared memory

Bellow is the modifications necessary to implement the new value system:

  • Allow accessing the value produce by an instruction with a Value object. This lays out the ground work for the rest of the modifications. WIP: Expose data-flow information in Telamon #63
    - Define a Value struct, along with accessors.
    - Allow to store the result of an instruction in a value
  • Expose values in code generation
    - Expose a specified value struct
    - Name values
  • Expose values in the .exh file
  • Add a new operand kind to read a value
    - Expose the points where a value is created and used
    - Enforce ordering constraints from the exh.
  • Make the performance model value-aware
    - Take dependencies between values uses and defs into account.
  • Handle the last operator
  • Handle dimensions mapping
  • Handle the fby operator
  • Update the builder to use values and remove inst and reduce operands.
  • Handle Lowering
  • Remove the old operand system.
    • remove instruction type
bors bot added a commit that referenced this issue Jul 17, 2018
64: replace `ir::Type::Void` by an option r=ulysseB a=ulysseB

We currently represented instructions that did not produce a value with the `ir::Type::Void` variant. However, this produced a lot of special cases where we add to test if the type was void. Instead we now use an `Option<ir::Type>` in the places where the type could before be void. This will simplify future improvements to the value system, in particular, #41 .

Co-authored-by: Ulysse Beaugnon <[email protected]>
@ulysseB ulysseB changed the title Exopose values and variables in the IR Expose values and variables in the IR Aug 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants