Skip to content

Next steps on target descriptor #934

@rengolin

Description

@rengolin

We have recently merged the target descriptor support in MLIR, and a number of comments were made that were left for follow up PRs.

Below is a list (feel free to add more if I missed anything), in order of what should be done first:

  • use strings everywhere and not have to hard-code integer/float types (signed, etc). DLTI: Simplifying getDevicePropertyValue API by returning Attribute type value llvm/llvm-project#96706
  • Move from specific attributes (ex. L1_cache_size) to string representations like datalayout. Example: cache_hierarchy = 120kb:2mb:30mb; which would just give the whole hierarchy and may be different depending on the target. [MLIR][DLTI][Transform] Introduce transform.dlti.query llvm/llvm-project#101561
  • design the hierarchy of the attributes: module/function/op, multiple/single+lookup, use symbol table/attributes [MLIR][DLTI] Introduce DLTIQueryInterface and impl for DLTI attrs llvm/llvm-project#104595
  • design a reasonable optional infrastructure where getting a property that is empty or doesn't exist need to fail gracefully.
  • Design a generic target that is just a pImpl, then passes/transforms use optional + default values (user defined?).
  • design a hook into LLVM's TTI object, via some target-triple + device + extension strings.
  • design a hook into reading configuration files (ex. LLVM's Json reader) for custom targets by name.
  • define the API for adding DLTI information from source (command line options, front-end driver, etc).
  • design a multi-target hierarchy (ex. CPU+GPU) of descriptors and how to annotate them from other ops.
  • design a composition of multiple sources for the same target (ex. TLI + Json + cmd-line) that overrides options.

These would make cost models easier and easier, but don't need to finish before we start looking into cost-models.

@rolfmorel

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions