)]}'
{
  "commit": "4973ef2d4e19e84adf48cdb304924f78fbb141b7",
  "tree": "92228f4d0720140d4575771c27bfd6f37dcf680d",
  "parents": [
    "21c80792ed2feebb0162a1fd093cea20dd210306"
  ],
  "author": {
    "name": "Ben Vanik",
    "email": "ben.vanik@gmail.com",
    "time": "Wed Nov 29 20:02:10 2023 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Nov 30 04:02:10 2023 +0000"
  },
  "message": "Batching parameter load operations and cleaning up gather/scatter. (#15706)\n\nThis makes loads look like gathers/scatters and allows us to move the\r\n(relatively) tricky concurrency scheduling logic to the runtime. A\r\nsingle load operation can now return any number of parameters with\r\nunique storage buffers (hopefully imported/zero-copy) so long as they\r\nhave matching buffer parameters (of which all in general do). The core\r\nlogic for scheduling the batched operations has been shared such that\r\nload/gather/scatter are all going down the same path meaning that as we\r\nadd new parameter types and optimize scheduling we only have one code\r\npath to tweak. Some minor optimizations have been done to elide batch\r\noverhead but many have been deferred as compared to staging even 10MB of\r\nparameters the current profile is in the noise. The standalone\r\nread/write methods were removed to simplify the compiler\u003c-\u003eruntime\r\ninterface and implementations of `iree_io_parameter_provider_t` -\r\ncurrently the only overhead incurred is an additional queue join barrier\r\nthat we can optimize away in the future in most cases.\r\n\r\nSince load/gather use the same code path now we shouldn\u0027t have\r\ncorrectness issues unique to any particular path and can turn back on\r\nthe gather path which has much less overhead in the compiler/vmfb that\r\notherwise needs to handle independent buffers per parameter. We can\r\neventually optimize the load path to batch device buffer allocations but\r\nthe compiler/vmfb still needs to treat each as independent and we won\u0027t\r\nget savings there. The rule is that the unified memory model should only\r\nbe used when building a vmfb that targets devices that can do zero-copy\r\nloads from memory mapped files - every other case should use discrete.\r\n\r\nProgress on #15521.\r\nProgress on #15522.\r\nWorks around several issues in #15674.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7a760d10c340ea85da106ff4e3bf9e1c4e639ac5",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/IR/StreamOpFolders.cpp",
      "new_id": "0c22c10da389254681f9ea88eee6ff18d9beca27",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/IR/StreamOpFolders.cpp"
    },
    {
      "type": "modify",
      "old_id": "09b68476c8bd1f802e92f6d1861c6eac024d6410",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/IR/StreamOps.cpp",
      "new_id": "b67f6d1fa4dfac2b85043de3f8bd203fbb031f76",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/IR/StreamOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "1389eb268da5de11d1a993d68edde03146515ae3",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/IR/StreamOps.td",
      "new_id": "07be7137526d795446856ebc2ca326488be82d22",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/IR/StreamOps.td"
    },
    {
      "type": "modify",
      "old_id": "ddeb54d6ff912fd8f64b16f2d6d4e3a589e80da9",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/IR/test/parameter_folding.mlir",
      "new_id": "cb9bf80ed631d35d93ecfbef14aac16ef043aa42",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/IR/test/parameter_folding.mlir"
    },
    {
      "type": "modify",
      "old_id": "0e6ba6986151e365d1de2c2ada4bf188f9199088",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/IR/test/parameter_ops.mlir",
      "new_id": "eff0bb0f1cf5032214f553c1e97145c02d95d3f9",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/IR/test/parameter_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "de82242523dc1eb0b8b7b7cdfe959ec300dddc05",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/Transforms/PackConstants.cpp",
      "new_id": "5d4d3a14eceac737856695ddd75a1ba7139bee4b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/Transforms/PackConstants.cpp"
    },
    {
      "type": "modify",
      "old_id": "f63f41381a3b731ce09d0781412b624de9ff4809",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/ParamsToVM/Patterns.cpp",
      "new_id": "b34beb3969a539a6356a8003b6af78d7da506675",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/ParamsToVM/Patterns.cpp"
    },
    {
      "type": "modify",
      "old_id": "eaed16f730f50cad0e735e8981ad79dcf6a71e82",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/ParamsToVM/test/parameter_ops.mlir",
      "new_id": "412e810165f9834aa9b82c96eed33c987e99e21b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/ParamsToVM/test/parameter_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "817fb366bf7f6102a5f52c3f604bc3c9153faa6c",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/StreamToParams/Patterns.cpp",
      "new_id": "e483458265765a4edf4f14423cef465f0acc7141",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/StreamToParams/Patterns.cpp"
    },
    {
      "type": "modify",
      "old_id": "aab010c320583ae1159dcefe141d1250700489c8",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/StreamToParams/test/parameter_ops.mlir",
      "new_id": "eb75719565bd60bbb90875610e335ae0a9737e25",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/Conversion/StreamToParams/test/parameter_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "bae118758a7a6049b2c37f3630ed8e30cceb2a5b",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/IR/IOParametersOps.cpp",
      "new_id": "050aaf5bf3c7e5c9c4c0229c07ba57b50564d49a",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/IR/IOParametersOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "9ef672647a4d4003505505162be9d68deb709b06",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/IR/IOParametersOps.td",
      "new_id": "1f03b8f9dbed764a568195ec667f109781725768",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/IR/IOParametersOps.td"
    },
    {
      "type": "modify",
      "old_id": "98e6bbcb0f3bc65cb4be22818b89f7d2b8a96e45",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/IR/test/parameter_ops.mlir",
      "new_id": "e60c73e5591448b553bfa5f3a79be38a2e83a86e",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/IR/test/parameter_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "a062262f397d5e8a851b52a43493cde66638d116",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Modules/IO/Parameters/io_parameters.imports.mlir",
      "new_id": "4bfda085d0b6927eabf7527282fc1ea98695244a",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Modules/IO/Parameters/io_parameters.imports.mlir"
    },
    {
      "type": "modify",
      "old_id": "09f7415183bc23af40327d2e4b0dd0c00b6ec94e",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/hal/command_buffer_validation.c",
      "new_id": "71eccb979ec9bfb2792ec9676cc65f05d8da5816",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/hal/command_buffer_validation.c"
    },
    {
      "type": "modify",
      "old_id": "02f7942adbe5056b95ebbe51263940ea8a0e43ad",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/hal/drivers/local_task/task_queue.c",
      "new_id": "4609d9bf93061abcef2e8ed373760a4fa0499e0d",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/hal/drivers/local_task/task_queue.c"
    },
    {
      "type": "modify",
      "old_id": "c2bde9d203797813f07960ec51cc529f075f7cda",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/hal/utils/file_cache.c",
      "new_id": "010de5c63fe8346b9a3fb502a5c9074c7d5085c8",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/hal/utils/file_cache.c"
    },
    {
      "type": "modify",
      "old_id": "f36a1c2acd511a3ba60e1111d209db914ace73c2",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/io/parameter_index_provider.c",
      "new_id": "38b83c4b5ed807f35e769253e6f5d4fd5e4e7cbd",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/io/parameter_index_provider.c"
    },
    {
      "type": "modify",
      "old_id": "064c3aa7ec959786c2b296ba30e88f341d9dc6e1",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/io/parameter_provider.c",
      "new_id": "8014685188d06efd19309cdd49ee3b140ee93c91",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/io/parameter_provider.c"
    },
    {
      "type": "modify",
      "old_id": "76ce5dad667988eddfa68d656101bdcc58f4d040",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/io/parameter_provider.h",
      "new_id": "7d964a4880fa2f425b1e19ac7e256bf23ebfe321",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/io/parameter_provider.h"
    },
    {
      "type": "modify",
      "old_id": "6fb012582b3bfe7b7d07c13934d64f84762a7047",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/modules/io/parameters/exports.inl",
      "new_id": "6275faf37b385de99481be20230b142a737dcaba",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/modules/io/parameters/exports.inl"
    },
    {
      "type": "modify",
      "old_id": "4db143de5b6310be183a55371764994f52c6e79c",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/modules/io/parameters/module.c",
      "new_id": "e2eb0251d057ba7cadd362f212ee5a835032ab66",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/modules/io/parameters/module.c"
    },
    {
      "type": "modify",
      "old_id": "35d15441669b152ae90bf600284c4d96612a7462",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/vm/shims.c",
      "new_id": "83245cb6ec34db4c1c4782b6d3d9923e2096f847",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/vm/shims.c"
    },
    {
      "type": "modify",
      "old_id": "5519543aff6e845d1e21d7c16f95118790f58259",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/vm/shims.h",
      "new_id": "af75456a6e4884ae62552271137f0c59c5e0e975",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/vm/shims.h"
    }
  ]
}
