-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
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.
Metadata
Metadata
Assignees
Labels
No labels