{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [
    {
      "id": "title",
      "type": "text",
      "x": 250,
      "y": 15,
      "width": 500,
      "height": 40,
      "angle": 0,
      "strokeColor": "#1e1e1e",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "NCCL 通信拓扑与集合通信算法",
      "fontSize": 32,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "NCCL 通信拓扑与集合通信算法",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ring-title",
      "type": "text",
      "x": 80,
      "y": 80,
      "width": 350,
      "height": 28,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1002,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "① Ring Topology (环形拓扑)",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "① Ring Topology (环形拓扑)",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ring-gpu0-rect",
      "type": "rectangle",
      "x": 80,
      "y": 130,
      "width": 90,
      "height": 50,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1003,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ring-gpu0-txt",
      "type": "text",
      "x": 95,
      "y": 140,
      "width": 60,
      "height": 20,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1004,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 0",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 0",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ring-gpu1-rect",
      "type": "rectangle",
      "x": 280,
      "y": 130,
      "width": 90,
      "height": 50,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1005,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ring-gpu1-txt",
      "type": "text",
      "x": 295,
      "y": 140,
      "width": 60,
      "height": 20,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1006,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 1",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 1",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ring-gpu2-rect",
      "type": "rectangle",
      "x": 280,
      "y": 260,
      "width": 90,
      "height": 50,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "#ffec99",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1007,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ring-gpu2-txt",
      "type": "text",
      "x": 295,
      "y": 270,
      "width": 60,
      "height": 20,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1008,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 2",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 2",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ring-gpu3-rect",
      "type": "rectangle",
      "x": 80,
      "y": 260,
      "width": 90,
      "height": 50,
      "angle": 0,
      "strokeColor": "#e03131",
      "backgroundColor": "#ffc9c9",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1009,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ring-gpu3-txt",
      "type": "text",
      "x": 95,
      "y": 270,
      "width": 60,
      "height": 20,
      "angle": 0,
      "strokeColor": "#e03131",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1010,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 3",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 3",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ring-a0",
      "type": "arrow",
      "x": 170,
      "y": 150,
      "width": 110,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1011,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          110,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ring-a1",
      "type": "arrow",
      "x": 325,
      "y": 180,
      "width": 0,
      "height": 80,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1012,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          80
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ring-a2",
      "type": "arrow",
      "x": 280,
      "y": 285,
      "width": 110,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1013,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          -110,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ring-a3",
      "type": "arrow",
      "x": 125,
      "y": 260,
      "width": 0,
      "height": 80,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1014,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          -80
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ring-desc",
      "type": "text",
      "x": 60,
      "y": 330,
      "width": 400,
      "height": 34,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1015,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "NVLink / PCIe 双向连接, 数据沿环单向流动\n每步传输 1/N 数据, N-1 步完成",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "NVLink / PCIe 双向连接, 数据沿环单向流动\n每步传输 1/N 数据, N-1 步完成",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-title",
      "type": "text",
      "x": 550,
      "y": 80,
      "width": 330,
      "height": 28,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1016,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "② Tree Topology (树形拓扑)",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "② Tree Topology (树形拓扑)",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-root",
      "type": "rectangle",
      "x": 665,
      "y": 125,
      "width": 90,
      "height": 45,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1017,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-root-txt",
      "type": "text",
      "x": 673,
      "y": 133,
      "width": 74,
      "height": 20,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1018,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Root GPU0",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Root GPU0",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-g1",
      "type": "rectangle",
      "x": 590,
      "y": 210,
      "width": 80,
      "height": 40,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1019,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-g1-txt",
      "type": "text",
      "x": 604,
      "y": 218,
      "width": 52,
      "height": 18,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1020,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 1",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 1",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-g2",
      "type": "rectangle",
      "x": 750,
      "y": 210,
      "width": 80,
      "height": 40,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1021,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-g2-txt",
      "type": "text",
      "x": 764,
      "y": 218,
      "width": 52,
      "height": 18,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1022,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 2",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 2",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-g3",
      "type": "rectangle",
      "x": 555,
      "y": 290,
      "width": 70,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1023,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-g3-txt",
      "type": "text",
      "x": 564,
      "y": 296,
      "width": 52,
      "height": 16,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1024,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 3",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 3",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-g4",
      "type": "rectangle",
      "x": 640,
      "y": 290,
      "width": 70,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1025,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-g4-txt",
      "type": "text",
      "x": 649,
      "y": 296,
      "width": 52,
      "height": 16,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1026,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 4",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 4",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-g5",
      "type": "rectangle",
      "x": 730,
      "y": 290,
      "width": 70,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1027,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-g5-txt",
      "type": "text",
      "x": 739,
      "y": 296,
      "width": 52,
      "height": 16,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1028,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 5",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 5",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-g6",
      "type": "rectangle",
      "x": 815,
      "y": 290,
      "width": 70,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1029,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "tree-g6-txt",
      "type": "text",
      "x": 824,
      "y": 296,
      "width": 52,
      "height": 16,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1030,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU 6",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU 6",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "tree-a0",
      "type": "arrow",
      "x": 700,
      "y": 170,
      "width": 70,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1031,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          -70,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "tree-a1",
      "type": "arrow",
      "x": 720,
      "y": 170,
      "width": 70,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1032,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          70,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "tree-a2",
      "type": "arrow",
      "x": 620,
      "y": 250,
      "width": 30,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1033,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          -30,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "tree-a3",
      "type": "arrow",
      "x": 640,
      "y": 250,
      "width": 35,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1034,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          35,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "tree-a4",
      "type": "arrow",
      "x": 780,
      "y": 250,
      "width": 15,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1035,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          -15,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "tree-a5",
      "type": "arrow",
      "x": 800,
      "y": 250,
      "width": 50,
      "height": 40,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1036,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          40
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "tree-desc",
      "type": "text",
      "x": 590,
      "y": 340,
      "width": 340,
      "height": 50,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1037,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Reduce: 叶→根 逐层聚合\nBroadcast: 根→叶 逐层分发\n延迟 O(log N), 适合小消息",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Reduce: 叶→根 逐层聚合\nBroadcast: 根→叶 逐层分发\n延迟 O(log N), 适合小消息",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-title",
      "type": "text",
      "x": 50,
      "y": 420,
      "width": 600,
      "height": 28,
      "angle": 0,
      "strokeColor": "#c92a2a",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1038,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "③ Ring AllReduce 算法 (ReduceScatter + AllGather)",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "③ Ring AllReduce 算法 (ReduceScatter + AllGather)",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-init",
      "type": "text",
      "x": 50,
      "y": 455,
      "width": 500,
      "height": 20,
      "angle": 0,
      "strokeColor": "#862e9c",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1039,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "初始状态: 每个 GPU 有 4 个 chunk (a,b,c,d)",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "初始状态: 每个 GPU 有 4 个 chunk (a,b,c,d)",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-i0r",
      "type": "rectangle",
      "x": 50,
      "y": 485,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1040,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-i0t",
      "type": "text",
      "x": 55,
      "y": 491,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1041,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU0: a0 | b0 | c0 | d0",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU0: a0 | b0 | c0 | d0",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-i1r",
      "type": "rectangle",
      "x": 280,
      "y": 485,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1042,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-i1t",
      "type": "text",
      "x": 285,
      "y": 491,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1043,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU1: a1 | b1 | c1 | d1",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU1: a1 | b1 | c1 | d1",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-i2r",
      "type": "rectangle",
      "x": 510,
      "y": 485,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "#ffec99",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1044,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-i2t",
      "type": "text",
      "x": 515,
      "y": 491,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1045,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU2: a2 | b2 | c2 | d2",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU2: a2 | b2 | c2 | d2",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-i3r",
      "type": "rectangle",
      "x": 740,
      "y": 485,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#e03131",
      "backgroundColor": "#ffc9c9",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1046,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-i3t",
      "type": "text",
      "x": 745,
      "y": 491,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#e03131",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1047,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU3: a3 | b3 | c3 | d3",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU3: a3 | b3 | c3 | d3",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-ia0",
      "type": "arrow",
      "x": 250,
      "y": 503,
      "width": 30,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1048,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          30,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ar-ia1",
      "type": "arrow",
      "x": 480,
      "y": 503,
      "width": 30,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1049,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          30,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ar-ia2",
      "type": "arrow",
      "x": 710,
      "y": 503,
      "width": 30,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1050,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          30,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ar-p1",
      "type": "text",
      "x": 50,
      "y": 540,
      "width": 700,
      "height": 20,
      "angle": 0,
      "strokeColor": "#c92a2a",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1051,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Phase 1: ReduceScatter (N-1 步, 每步发送 1 个 chunk 给下一个 GPU 并累加)",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Phase 1: ReduceScatter (N-1 步, 每步发送 1 个 chunk 给下一个 GPU 并累加)",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-p1-steps",
      "type": "text",
      "x": 50,
      "y": 565,
      "width": 900,
      "height": 50,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1052,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Step 1: GPU_i 将 chunk[i] 发给 GPU_(i+1), 接收方累加\nStep 2: 继续传递上一步的累加结果\nStep 3: 最终每个 GPU 持有一个完整 reduce 的 chunk",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Step 1: GPU_i 将 chunk[i] 发给 GPU_(i+1), 接收方累加\nStep 2: 继续传递上一步的累加结果\nStep 3: 最终每个 GPU 持有一个完整 reduce 的 chunk",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-rs-label",
      "type": "text",
      "x": 50,
      "y": 625,
      "width": 300,
      "height": 18,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1053,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "ReduceScatter 结果: 每 GPU 持有 1 个完整 chunk",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "ReduceScatter 结果: 每 GPU 持有 1 个完整 chunk",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-r0r",
      "type": "rectangle",
      "x": 50,
      "y": 650,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1054,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-r0t",
      "type": "text",
      "x": 55,
      "y": 656,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1055,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU0:  A* |  .  |  .  |  .",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU0:  A* |  .  |  .  |  .",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-r1r",
      "type": "rectangle",
      "x": 280,
      "y": 650,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1056,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-r1t",
      "type": "text",
      "x": 285,
      "y": 656,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1057,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU1:  .  |  B* |  .  |  .",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU1:  .  |  B* |  .  |  .",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-r2r",
      "type": "rectangle",
      "x": 510,
      "y": 650,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1058,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-r2t",
      "type": "text",
      "x": 515,
      "y": 656,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1059,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU2:  .  |  .  |  C* |  .",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU2:  .  |  .  |  C* |  .",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-r3r",
      "type": "rectangle",
      "x": 740,
      "y": 650,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1060,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-r3t",
      "type": "text",
      "x": 745,
      "y": 656,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1061,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU3:  .  |  .  |  .  |  D*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU3:  .  |  .  |  .  |  D*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-explain",
      "type": "text",
      "x": 200,
      "y": 693,
      "width": 600,
      "height": 16,
      "angle": 0,
      "strokeColor": "#868e96",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1062,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A* = a0+a1+a2+a3  B* = b0+b1+b2+b3  C* = c0+c1+c2+c3  D* = d0+d1+d2+d3",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A* = a0+a1+a2+a3  B* = b0+b1+b2+b3  C* = c0+c1+c2+c3  D* = d0+d1+d2+d3",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-p2",
      "type": "text",
      "x": 50,
      "y": 720,
      "width": 600,
      "height": 20,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1063,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Phase 2: AllGather (N-1 步, 每步将完整 chunk 传给下一个 GPU)",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Phase 2: AllGather (N-1 步, 每步将完整 chunk 传给下一个 GPU)",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-p2-steps",
      "type": "text",
      "x": 50,
      "y": 745,
      "width": 900,
      "height": 50,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1064,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Step 1: GPU_i 将已完整的 chunk 发给 GPU_(i+1)\nStep 2: 继续传递收到的完整 chunk\nStep 3: 最终每个 GPU 拥有所有 chunk 的完整 reduce 结果",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Step 1: GPU_i 将已完整的 chunk 发给 GPU_(i+1)\nStep 2: 继续传递收到的完整 chunk\nStep 3: 最终每个 GPU 拥有所有 chunk 的完整 reduce 结果",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-final-label",
      "type": "text",
      "x": 50,
      "y": 805,
      "width": 300,
      "height": 18,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1065,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "最终结果: 每 GPU 拥有全部 reduce 结果",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "最终结果: 每 GPU 拥有全部 reduce 结果",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-f0r",
      "type": "rectangle",
      "x": 50,
      "y": 830,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1066,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-f0t",
      "type": "text",
      "x": 55,
      "y": 836,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1067,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU0: A* | B* | C* | D*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU0: A* | B* | C* | D*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-f1r",
      "type": "rectangle",
      "x": 280,
      "y": 830,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1068,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-f1t",
      "type": "text",
      "x": 285,
      "y": 836,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1069,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU1: A* | B* | C* | D*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU1: A* | B* | C* | D*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-f2r",
      "type": "rectangle",
      "x": 510,
      "y": 830,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1070,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-f2t",
      "type": "text",
      "x": 515,
      "y": 836,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1071,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU2: A* | B* | C* | D*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU2: A* | B* | C* | D*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-f3r",
      "type": "rectangle",
      "x": 740,
      "y": 830,
      "width": 200,
      "height": 36,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1072,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ar-f3t",
      "type": "text",
      "x": 745,
      "y": 836,
      "width": 190,
      "height": 18,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1073,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "GPU3: A* | B* | C* | D*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "GPU3: A* | B* | C* | D*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ar-summary",
      "type": "text",
      "x": 140,
      "y": 875,
      "width": 700,
      "height": 16,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1074,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "总通信量: 2(N-1)/N * DataSize | 总步数: 2(N-1) | 带宽最优, NCCL 默认大消息策略",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "总通信量: 2(N-1)/N * DataSize | 总步数: 2(N-1) | 带宽最优, NCCL 默认大消息策略",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "cc-title",
      "type": "text",
      "x": 50,
      "y": 920,
      "width": 350,
      "height": 28,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1075,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "④ 集合通信原语对比",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "④ 集合通信原语对比",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "bc-label",
      "type": "text",
      "x": 75,
      "y": 960,
      "width": 100,
      "height": 20,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1076,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Broadcast",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Broadcast",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "bc-b0r",
      "type": "rectangle",
      "x": 50,
      "y": 990,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1077,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "bc-b0t",
      "type": "text",
      "x": 65,
      "y": 995,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1078,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "bc-b1r",
      "type": "rectangle",
      "x": 50,
      "y": 1025,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "#e9ecef",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1079,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "bc-b2r",
      "type": "rectangle",
      "x": 50,
      "y": 1060,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "#e9ecef",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1080,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "bc-arr",
      "type": "arrow",
      "x": 115,
      "y": 1005,
      "width": 50,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1081,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "bc-a0r",
      "type": "rectangle",
      "x": 170,
      "y": 990,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1082,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "bc-a0t",
      "type": "text",
      "x": 185,
      "y": 995,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1083,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "bc-a1r",
      "type": "rectangle",
      "x": 170,
      "y": 1025,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1084,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "bc-a1t",
      "type": "text",
      "x": 185,
      "y": 1030,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1085,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "bc-a2r",
      "type": "rectangle",
      "x": 170,
      "y": 1060,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1086,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "bc-a2t",
      "type": "text",
      "x": 185,
      "y": 1065,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1087,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "bc-cap",
      "type": "text",
      "x": 55,
      "y": 1098,
      "width": 140,
      "height": 14,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1088,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "root → all 复制",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "root → all 复制",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rd-label",
      "type": "text",
      "x": 310,
      "y": 960,
      "width": 80,
      "height": 20,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1089,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "Reduce",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "Reduce",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rd-b0r",
      "type": "rectangle",
      "x": 270,
      "y": 990,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1090,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rd-b0t",
      "type": "text",
      "x": 285,
      "y": 995,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1091,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rd-b1r",
      "type": "rectangle",
      "x": 270,
      "y": 1025,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1092,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rd-b1t",
      "type": "text",
      "x": 285,
      "y": 1030,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1093,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "B",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "B",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rd-b2r",
      "type": "rectangle",
      "x": 270,
      "y": 1060,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "#ffec99",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1094,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rd-b2t",
      "type": "text",
      "x": 285,
      "y": 1065,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1095,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rd-arr",
      "type": "arrow",
      "x": 335,
      "y": 1040,
      "width": 50,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1096,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "rd-a0r",
      "type": "rectangle",
      "x": 390,
      "y": 990,
      "width": 70,
      "height": 30,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1097,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rd-a0t",
      "type": "text",
      "x": 395,
      "y": 996,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1098,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A+B+C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A+B+C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rd-a1r",
      "type": "rectangle",
      "x": 390,
      "y": 1025,
      "width": 70,
      "height": 30,
      "angle": 0,
      "strokeColor": "#868e96",
      "backgroundColor": "#e9ecef",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1099,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rd-a2r",
      "type": "rectangle",
      "x": 390,
      "y": 1060,
      "width": 70,
      "height": 30,
      "angle": 0,
      "strokeColor": "#868e96",
      "backgroundColor": "#e9ecef",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1100,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rd-cap",
      "type": "text",
      "x": 290,
      "y": 1098,
      "width": 140,
      "height": 14,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1101,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "all → root 聚合",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "all → root 聚合",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-label",
      "type": "text",
      "x": 535,
      "y": 960,
      "width": 100,
      "height": 20,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1102,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "AllGather",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "AllGather",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-b0r",
      "type": "rectangle",
      "x": 500,
      "y": 990,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1103,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ag-b0t",
      "type": "text",
      "x": 515,
      "y": 995,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1104,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-b1r",
      "type": "rectangle",
      "x": 500,
      "y": 1025,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1105,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ag-b1t",
      "type": "text",
      "x": 515,
      "y": 1030,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#2f9e44",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1106,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "B",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "B",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-b2r",
      "type": "rectangle",
      "x": 500,
      "y": 1060,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "#ffec99",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1107,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ag-b2t",
      "type": "text",
      "x": 515,
      "y": 1065,
      "width": 30,
      "height": 16,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1108,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-arr",
      "type": "arrow",
      "x": 565,
      "y": 1040,
      "width": 50,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1109,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "ag-a0r",
      "type": "rectangle",
      "x": 620,
      "y": 990,
      "width": 80,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#e7f5ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1110,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ag-a0t",
      "type": "text",
      "x": 630,
      "y": 995,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1111,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A B C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A B C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-a1r",
      "type": "rectangle",
      "x": 620,
      "y": 1025,
      "width": 80,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#e7f5ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1112,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ag-a1t",
      "type": "text",
      "x": 630,
      "y": 1030,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1113,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A B C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A B C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-a2r",
      "type": "rectangle",
      "x": 620,
      "y": 1060,
      "width": 80,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#e7f5ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1114,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "ag-a2t",
      "type": "text",
      "x": 630,
      "y": 1065,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1115,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A B C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A B C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "ag-cap",
      "type": "text",
      "x": 520,
      "y": 1098,
      "width": 160,
      "height": 14,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1116,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "各持一份 → all 拥有全部",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "各持一份 → all 拥有全部",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-label",
      "type": "text",
      "x": 760,
      "y": 960,
      "width": 130,
      "height": 20,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1117,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "ReduceScatter",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "ReduceScatter",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-b0r",
      "type": "rectangle",
      "x": 730,
      "y": 990,
      "width": 80,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1118,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rsc-b0t",
      "type": "text",
      "x": 740,
      "y": 995,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1119,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A B C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A B C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-b1r",
      "type": "rectangle",
      "x": 730,
      "y": 1025,
      "width": 80,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1120,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rsc-b1t",
      "type": "text",
      "x": 740,
      "y": 1030,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1121,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A B C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A B C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-b2r",
      "type": "rectangle",
      "x": 730,
      "y": 1060,
      "width": 80,
      "height": 30,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1122,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rsc-b2t",
      "type": "text",
      "x": 740,
      "y": 1065,
      "width": 60,
      "height": 16,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1123,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A B C",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A B C",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-arr",
      "type": "arrow",
      "x": 815,
      "y": 1040,
      "width": 50,
      "height": 0,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1124,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "endArrowhead": "arrow",
      "startArrowhead": null,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null
    },
    {
      "id": "rsc-a0r",
      "type": "rectangle",
      "x": 870,
      "y": 990,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1125,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rsc-a0t",
      "type": "text",
      "x": 882,
      "y": 995,
      "width": 36,
      "height": 16,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1126,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "A*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "A*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-a1r",
      "type": "rectangle",
      "x": 870,
      "y": 1025,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1127,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rsc-a1t",
      "type": "text",
      "x": 882,
      "y": 1030,
      "width": 36,
      "height": 16,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1128,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "B*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "B*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-a2r",
      "type": "rectangle",
      "x": 870,
      "y": 1060,
      "width": 60,
      "height": 30,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1129,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rsc-a2t",
      "type": "text",
      "x": 882,
      "y": 1065,
      "width": 36,
      "height": 16,
      "angle": 0,
      "strokeColor": "#7048e8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1130,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "C*",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "C*",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rsc-cap",
      "type": "text",
      "x": 755,
      "y": 1098,
      "width": 170,
      "height": 14,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1131,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "reduce + scatter 各持一片",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "reduce + scatter 各持一片",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "sel-title",
      "type": "text",
      "x": 50,
      "y": 1140,
      "width": 350,
      "height": 28,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1132,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "⑤ NCCL 算法选择策略",
      "fontSize": 22,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "⑤ NCCL 算法选择策略",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "sel-left",
      "type": "rectangle",
      "x": 50,
      "y": 1180,
      "width": 420,
      "height": 160,
      "angle": 0,
      "strokeColor": "#e67700",
      "backgroundColor": "#fff9db",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1133,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "sel-left-t",
      "type": "text",
      "x": 65,
      "y": 1190,
      "width": 390,
      "height": 140,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1134,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "消息大小 vs 算法选择\n\n• 小消息 (<256KB): Tree 算法\n  延迟 O(log N), 带宽利用率低\n• 大消息 (>256KB): Ring 算法\n  延迟 O(N), 带宽利用率最优 2(N-1)/N\n• NCCL 自动探测拓扑, 选最优算法\n• 环境变量: NCCL_ALGO=RING/TREE 可手动指定",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "消息大小 vs 算法选择\n\n• 小消息 (<256KB): Tree 算法\n  延迟 O(log N), 带宽利用率低\n• 大消息 (>256KB): Ring 算法\n  延迟 O(N), 带宽利用率最优 2(N-1)/N\n• NCCL 自动探测拓扑, 选最优算法\n• 环境变量: NCCL_ALGO=RING/TREE 可手动指定",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "sel-right",
      "type": "rectangle",
      "x": 510,
      "y": 1180,
      "width": 420,
      "height": 160,
      "angle": 0,
      "strokeColor": "#1971c2",
      "backgroundColor": "#d0ebff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1135,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "sel-right-t",
      "type": "text",
      "x": 525,
      "y": 1190,
      "width": 390,
      "height": 140,
      "angle": 0,
      "strokeColor": "#495057",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1136,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "NCCL 拓扑感知机制\n\n• 检测: NVLink / NVSwitch / PCIe / IB / RoCE\n• 节点内: NVLink 优先构建 ring/tree\n• 节点间: IB / RoCE 建立 channel\n• 多 ring: 利用多条 NVLink 并行传输\n• Double Binary Tree: 两棵互补树\n  同时利用上下行带宽, 带宽翻倍",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "NCCL 拓扑感知机制\n\n• 检测: NVLink / NVSwitch / PCIe / IB / RoCE\n• 节点内: NVLink 优先构建 ring/tree\n• 节点间: IB / RoCE 建立 channel\n• 多 ring: 利用多条 NVLink 并行传输\n• Double Binary Tree: 两棵互补树\n  同时利用上下行带宽, 带宽翻倍",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "sel-summary",
      "type": "text",
      "x": 140,
      "y": 1355,
      "width": 700,
      "height": 16,
      "angle": 0,
      "strokeColor": "#c92a2a",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": null,
      "seed": 1137,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "核心关系: 拓扑决定连接 → 连接决定 channel → channel 承载算法 → 算法决定通信效率",
      "fontSize": 14,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "核心关系: 拓扑决定连接 → 连接决定 channel → channel 承载算法 → 算法决定通信效率",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-nccl-通信拓扑与集合通信算法-bg",
      "type": "rectangle",
      "x": 80,
      "y": 1451.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-nccl-通信拓扑与集合通信算法-title",
      "type": "text",
      "x": 108,
      "y": 1473.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": "练习题与面试题补充：NCCL collective communication",
      "fontSize": 24,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题与面试题补充：NCCL collective communication",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-nccl-通信拓扑与集合通信算法-practice-box",
      "type": "rectangle",
      "x": 108,
      "y": 1529.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-nccl-通信拓扑与集合通信算法-practice-text",
      "type": "text",
      "x": 130,
      "y": 1549.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. 画出 ring all-reduce 在 4 卡上的 reduce-scatter/all-gather\n2. 比较 ring 和 tree 在带宽/延迟上的适用场景\n3. 列出一次 NCCL hang 的排查 checklist",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题\n1. 画出 ring all-reduce 在 4 卡上的 reduce-scatter/all-gather\n2. 比较 ring 和 tree 在带宽/延迟上的适用场景\n3. 列出一次 NCCL hang 的排查 checklist",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-nccl-通信拓扑与集合通信算法-interview-box",
      "type": "rectangle",
      "x": 734.0,
      "y": 1529.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-nccl-通信拓扑与集合通信算法-interview-text",
      "type": "text",
      "x": 756.0,
      "y": 1549.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. AllReduce 为什么可以拆成 reduce-scatter 和 all-gather\n2. 拓扑感知对多机多卡通信有什么影响\n3. 如何区分网络瓶颈和 GPU kernel 瓶颈",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "面试题\n1. AllReduce 为什么可以拆成 reduce-scatter 和 all-gather\n2. 拓扑感知对多机多卡通信有什么影响\n3. 如何区分网络瓶颈和 GPU kernel 瓶颈",
      "autoResize": false,
      "lineHeight": 1.25
    }
  ],
  "appState": {
    "gridSize": null,
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}