)]}'
{
  "commit": "d136a6d33c51a5688728a166f835af2d5b3bf92b",
  "tree": "c24b05a83cf47ebc35cfe1c73faff06731d06afa",
  "parents": [
    "3d489d6c08dd08dd32fdcdbb178411f4a9d12d8c"
  ],
  "author": {
    "name": "Manish Gupta",
    "email": "manigupta@google.com",
    "time": "Tue Mar 28 12:28:07 2023 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Mar 28 12:28:07 2023 -0700"
  },
  "message": "Improvements Dispatch Generator - MLIR Source Generation and Defining Dispatches (#12792)\n\nThis PR is in series of smaller PRs to iteratively improve IREE dispatch\r\nprofiler. The improvements captured in this PR are as follows:\r\n- `EmitSourceMLIR` instead of `EmitMatmulSourceMlir`: Once the\r\n`operation` and `configuration` are properly abstracted out, there was\r\nvery little matmul-specific code for emitting dispatch (operation +\r\nconfiguration). Thus, moved EmitSourceMLIR into its own structure which\r\ncan be potentially used by new dispatches.\r\n\r\n- Dispatches are **generated** and **profiled** from a predefined\r\nshapes, datatypes, and tuning configurations. Both generation and\r\nprofiling loads the predefined dispatches for a specific data type in a\r\n`Manifest` object. The definitions of dispatches are operation- and\r\ndevice-specific. Thus, abstracted out into its own structure `class\r\nMatmulGenerator`. Which can be loaded using `Manifest.load()`.\r\n\r\n- Additionally, `class MatmulGenerator` executes a few simple checks to\r\nskip dispatches that a user might naively define but not supported\r\nbecause of architectural constraints (e.g. shared memory capacity) or\r\nunsupported codegen path (e.g. unaligned matmuls on CUDA tensor core\r\nbackend).",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a2afb129cc29e12059e718b2ab3ba56a2c494462",
      "old_mode": 33188,
      "old_path": "experimental/dispatch_profiler/generator.py",
      "new_id": "6154b411dd003ea30d876ba7cb4847868a826cb5",
      "new_mode": 33188,
      "new_path": "experimental/dispatch_profiler/generator.py"
    },
    {
      "type": "modify",
      "old_id": "04da059facd8645e418e95ed359f1eaef7deb50b",
      "old_mode": 33188,
      "old_path": "experimental/dispatch_profiler/manifest.py",
      "new_id": "8623141fef6a220cf3c5a48c0bac669244392c8f",
      "new_mode": 33188,
      "new_path": "experimental/dispatch_profiler/manifest.py"
    },
    {
      "type": "modify",
      "old_id": "78844d5be62af2372831c1bcf1d221c3f5a79d4d",
      "old_mode": 33188,
      "old_path": "experimental/dispatch_profiler/matmul.py",
      "new_id": "66cb0b36dfc5e3ec2814eb898e258c5fe6871766",
      "new_mode": 33188,
      "new_path": "experimental/dispatch_profiler/matmul.py"
    },
    {
      "type": "modify",
      "old_id": "c264b7a5e030b6789e75901c0b20b12f33db6aae",
      "old_mode": 33188,
      "old_path": "experimental/dispatch_profiler/profiler.py",
      "new_id": "3092cd86623677d1babd76ab30c9b73214e752e7",
      "new_mode": 33188,
      "new_path": "experimental/dispatch_profiler/profiler.py"
    }
  ]
}
