{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [
    {
      "id": "mlir_30",
      "type": "text",
      "x": 90,
      "y": 24,
      "width": 1220,
      "height": 36,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17030,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "MLIR IR 结构与 Dialect 核心概念",
      "fontSize": 28,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "MLIR IR 结构与 Dialect 核心概念",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_31",
      "type": "text",
      "x": 90,
      "y": 68,
      "width": 1220,
      "height": 28,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17031,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "读 IR 时先找嵌套结构，再追 SSA def-use，最后看每个 op 属于哪个 dialect",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "读 IR 时先找嵌套结构，再追 SSA def-use，最后看每个 op 属于哪个 dialect",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_32",
      "type": "rectangle",
      "x": 45,
      "y": 120,
      "width": 600,
      "height": 520,
      "angle": 0,
      "strokeColor": "#748ffc",
      "backgroundColor": "#edf2ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 35,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17032,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_33",
      "type": "text",
      "x": 85,
      "y": 140,
      "width": 520,
      "height": 28,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17033,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "嵌套结构",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "嵌套结构",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_34",
      "type": "rectangle",
      "x": 210,
      "y": 190,
      "width": 270,
      "height": 72,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17034,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_35",
      "type": "text",
      "x": 222,
      "y": 200,
      "width": 246,
      "height": 52,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17035,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "builtin.module\n顶层 Operation",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "builtin.module\n顶层 Operation",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_36",
      "type": "rectangle",
      "x": 230,
      "y": 300,
      "width": 230,
      "height": 70,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17036,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_37",
      "type": "text",
      "x": 242,
      "y": 310,
      "width": 206,
      "height": 50,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17037,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Region\nop 内部的嵌套区域",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Region\nop 内部的嵌套区域",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_38",
      "type": "rectangle",
      "x": 250,
      "y": 405,
      "width": 190,
      "height": 70,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#ffd8a8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17038,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_39",
      "type": "text",
      "x": 262,
      "y": 415,
      "width": 166,
      "height": 50,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17039,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Block\n参数 + operation 列表",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Block\n参数 + operation 列表",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_40",
      "type": "rectangle",
      "x": 190,
      "y": 515,
      "width": 310,
      "height": 78,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17040,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_41",
      "type": "text",
      "x": 202,
      "y": 525,
      "width": 286,
      "height": 58,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17041,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Operation\noperands / results / attrs / regions",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Operation\noperands / results / attrs / regions",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_42",
      "type": "arrow",
      "x": 345,
      "y": 262,
      "width": 0,
      "height": 38,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17042,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          38
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_43",
      "type": "arrow",
      "x": 345,
      "y": 370,
      "width": 0,
      "height": 35,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17043,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          35
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_44",
      "type": "arrow",
      "x": 345,
      "y": 475,
      "width": 0,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17044,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_45",
      "type": "rectangle",
      "x": 705,
      "y": 120,
      "width": 655,
      "height": 520,
      "angle": 0,
      "strokeColor": "#69db7c",
      "backgroundColor": "#ebfbee",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 35,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17045,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_46",
      "type": "text",
      "x": 745,
      "y": 140,
      "width": 575,
      "height": 28,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17046,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "语义与数据流",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "语义与数据流",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_47",
      "type": "rectangle",
      "x": 760,
      "y": 185,
      "width": 520,
      "height": 95,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#c3fae8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17047,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_48",
      "type": "text",
      "x": 772,
      "y": 195,
      "width": 496,
      "height": 75,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17048,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Dialect\n一组 op/type/attribute 的命名空间\n例：func / arith / linalg / memref / gpu / llvm",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Dialect\n一组 op/type/attribute 的命名空间\n例：func / arith / linalg / memref / gpu / llvm",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_49",
      "type": "rectangle",
      "x": 760,
      "y": 325,
      "width": 245,
      "height": 110,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#fff3bf",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17049,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_50",
      "type": "text",
      "x": 772,
      "y": 335,
      "width": 221,
      "height": 90,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17050,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Value\nSSA 值：op result 或 block argument\n每个 use 都指向一个定义",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Value\nSSA 值：op result 或 block argument\n每个 use 都指向一个定义",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_51",
      "type": "rectangle",
      "x": 1035,
      "y": 325,
      "width": 245,
      "height": 110,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#ffd8a8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17051,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_52",
      "type": "text",
      "x": 1047,
      "y": 335,
      "width": 221,
      "height": 90,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17052,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Type / Attribute / Location\n类型约束、编译期常量、源码位置\nverifier 依赖这些不变量",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Type / Attribute / Location\n类型约束、编译期常量、源码位置\nverifier 依赖这些不变量",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_53",
      "type": "rectangle",
      "x": 860,
      "y": 500,
      "width": 320,
      "height": 95,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "#ffc9c9",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 17053,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "mlir_54",
      "type": "text",
      "x": 872,
      "y": 510,
      "width": 296,
      "height": 75,
      "angle": 0,
      "strokeColor": "#1f2937",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17054,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Traits / Interfaces\n把 op 语义抽象出来\n让 generic pass 可以理解不同 dialect",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Traits / Interfaces\n把 op 语义抽象出来\n让 generic pass 可以理解不同 dialect",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "mlir_55",
      "type": "arrow",
      "x": 1020,
      "y": 280,
      "width": -110,
      "height": 45,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17055,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          -110,
          45
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_56",
      "type": "arrow",
      "x": 1020,
      "y": 280,
      "width": 140,
      "height": 45,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17056,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          140,
          45
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_57",
      "type": "arrow",
      "x": 885,
      "y": 435,
      "width": 70,
      "height": 65,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17057,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          70,
          65
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "mlir_58",
      "type": "arrow",
      "x": 1160,
      "y": 435,
      "width": -80,
      "height": 65,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 17058,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          -80,
          65
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "practice-interview-panel-mlir-ir结构与dialect核心概念-bg",
      "type": "rectangle",
      "x": 80,
      "y": 720.0,
      "width": 1280,
      "height": 300,
      "angle": 0,
      "strokeColor": "#64748b",
      "backgroundColor": "#e2e8f0",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 70,
      "groupIds": [],
      "seed": 93001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-mlir-ir结构与dialect核心概念-title",
      "type": "text",
      "x": 108,
      "y": 742.0,
      "width": 1224,
      "height": 38,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "练习题与面试题补充：MLIR compiler stack",
      "fontSize": 24,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题与面试题补充：MLIR compiler stack",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-mlir-ir结构与dialect核心概念-practice-box",
      "type": "rectangle",
      "x": 108,
      "y": 798.0,
      "width": 598.0,
      "height": 190,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#bfdbfe",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 93002,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-mlir-ir结构与dialect核心概念-practice-text",
      "type": "text",
      "x": 130,
      "y": 818.0,
      "width": 575.0,
      "height": 150,
      "angle": 0,
      "strokeColor": "#243042",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "练习题\n1. 写一个 toy op 的 verifier 和 canonicalization\n2. 用 FileCheck 验证一个 lowering pass 的前后 IR\n3. 画出 source dialect 到 linalg/gpu/llvm 的合法化边界",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题\n1. 写一个 toy op 的 verifier 和 canonicalization\n2. 用 FileCheck 验证一个 lowering pass 的前后 IR\n3. 画出 source dialect 到 linalg/gpu/llvm 的合法化边界",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-mlir-ir结构与dialect核心概念-interview-box",
      "type": "rectangle",
      "x": 734.0,
      "y": 798.0,
      "width": 598.0,
      "height": 190,
      "angle": 0,
      "strokeColor": "#7c3aed",
      "backgroundColor": "#ddd6fe",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 93003,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-mlir-ir结构与dialect核心概念-interview-text",
      "type": "text",
      "x": 756.0,
      "y": 818.0,
      "width": 575.0,
      "height": 150,
      "angle": 0,
      "strokeColor": "#243042",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "面试题\n1. Dialect、Operation、Region、Block、Value 如何组织 IR\n2. PatternRewrite 和 DialectConversion 的区别是什么\n3. 为什么 lowering 要分阶段保留语义",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "面试题\n1. Dialect、Operation、Region、Block、Value 如何组织 IR\n2. PatternRewrite 和 DialectConversion 的区别是什么\n3. 为什么 lowering 要分阶段保留语义",
      "autoResize": false,
      "lineHeight": 1.25
    }
  ],
  "appState": {
    "gridSize": null,
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}