)]}'
{
  "commit": "b5851565e0bf0197ce50f530a284d3ea2ceb66a3",
  "tree": "cfddc820778f833e265d832269b2c479f8db0313",
  "parents": [
    "bbb9eab49fbe516b7c5feebcd1b596a5018c03c7"
  ],
  "author": {
    "name": "Ben Vanik",
    "email": "benvanik@google.com",
    "time": "Mon Nov 08 08:36:28 2021 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 08 08:36:28 2021 -0800"
  },
  "message": "Adding -iree-stream-schedule-execution + -concurrency passes. (#7549)\n\nThe passes themselves are rather simple and call into a partitioning\r\nroutine that performs the real work with the intent being that we\r\ncan have many and specify which one to use based on scoped attributes\r\nin the IR (kind of like lowering configs in codegen). Today there\u0027s\r\njust a reference implementation that does a single level of concurrency.\r\nThe hope is that someone who actually knows how to write a good\r\npartitioning algorithm can contribute something better, but it\u0027s at\r\nleast no worse than what we have today and better than simple ML\r\nsystems that have no concurrency.\r\n\r\nThough the passes are similar they operate at different scopes and\r\nwill have different partitioning algorithms. I thought about trying\r\nto unify them however keeping them separate allows us to do things\r\nlike use a more complex execution partitioning pass while using the\r\nsame generic concurrency scheduling etc - including disabling the\r\nconcurrency scheduling entirely for debugging or environments where\r\nthere may be no benefits to such scheduling (single core execution,\r\netc). It\u0027s easy enough to reason about how they could be unified that\r\nI wanted to err on the side of flexibility until we have an owner and\r\nat least one or two more algorithms we can use to feel out the shape of\r\nthings.\r\n\r\nA benefit of the independent execution and concurrency partitioning is\r\nthat debugging either is much simpler (and there\u0027s pretty good `-debug`\r\noutput). Since the concurrency scheduling operates only within the\r\nscheduled execution regions there\u0027s no need to worry about host/device\r\ninteractions or the parent op CFG.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ad307dc93d8c0addc92223e6d8924dd3d60da2d4",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Analysis/BUILD",
      "new_id": "b8e7ce80a325ed96c371f2b5772378ecd2d7c2c3",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Analysis/BUILD"
    },
    {
      "type": "modify",
      "old_id": "2fbacefd63451d20fcf0463daa47308cea507d09",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Analysis/CMakeLists.txt",
      "new_id": "7cff2f21f27f699787c9d50d3ce134db2afb96cb",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Analysis/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "104e6512c39a7dfab670120de612ec820b2d7f0a",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Analysis/Partitioning.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49f7608a4f09d77d4d9f9251b0dcf50310b1f4d6",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Analysis/Partitioning.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1d157b5d65bf764954dbad08a1c9a074823bcb4b",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Analysis/Partitioning/ReferencePartitioning.cpp"
    },
    {
      "type": "modify",
      "old_id": "c3d8fe1be6c7f15024643a2875965fa25b5682f5",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/BUILD",
      "new_id": "754a920116c8d97abb0b892a73a5d9c14235349a",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/BUILD"
    },
    {
      "type": "modify",
      "old_id": "91f94702f981d6f6040da0d0c7a44150e3738df4",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/CMakeLists.txt",
      "new_id": "32ab4a8ae833712d30884df5ca7e7f4ca44aa73b",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "49da4e68b540081f44ca9bb34be3bb4fb87734eb",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/Passes.cpp",
      "new_id": "aa3ac013eead2bc7ebf7761929b1f20ac99fa5c4",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/Passes.cpp"
    },
    {
      "type": "modify",
      "old_id": "8f6981899385904cc4ffcce8c8570d4b6227a939",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/Passes.h",
      "new_id": "7d3ba8d97e0cce3c0491ad5bd68993b9c1d299d7",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/Passes.h"
    },
    {
      "type": "modify",
      "old_id": "a9c9701100ec71171b7940534b5526e1b3574a20",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/Passes.td",
      "new_id": "f60c7e40577d21de71c138e35221c39b643f4800",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/Passes.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "577ed25193cdc7a9a0e945a796d6a68891f2ad5a",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/ScheduleConcurrency.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8c5c4e5e74a0e83bbd27dcad35dd28c1358b8123",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/ScheduleExecution.cpp"
    },
    {
      "type": "modify",
      "old_id": "16765b22e3d7ddf3add1469fc3cf6b3e94055df7",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/test/BUILD",
      "new_id": "c9a1c8172e15793eecbc6d1397f1d35d393d3fea",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/test/BUILD"
    },
    {
      "type": "modify",
      "old_id": "3317a4da47fae6e5fd0bc6158b00f2c6a635d595",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/Stream/Transforms/test/CMakeLists.txt",
      "new_id": "f83d356f790cfa96226e83f7baee2cc370b000ac",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2cd287ae8c133aed98c83f96dbd9ed012c7d48f1",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/test/schedule_concurrency.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f1b70b2671157435cf303745daad8d1dfbc58fd",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/Stream/Transforms/test/schedule_execution.mlir"
    }
  ]
}
