{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d3544f2f",
   "metadata": {},
   "source": [
    "\n",
    "# GPU 架构与执行模型可视化\n",
    "\n",
    "> 目标：通过可复现的 Python 图形，理解 NVIDIA GPU 的硬件层级（SM、CUDA Core、Warp Scheduler）与软件执行层级（Grid、Block、Warp、Thread）。\n",
    "\n",
    "## 目录\n",
    "\n",
    "1. GPU 整体结构：从 GPU 到 SM 到 CUDA Core\n",
    "2. 执行层级：Grid → Block → Warp → Thread\n",
    "3. Warp Scheduler 与 Latency Hiding\n",
    "4. SIMT、Warp Divergence 与 Memory Coalescing\n",
    "5. Occupancy 计算与交互式探索\n",
    "6. 总结与自查清单\n",
    "\n",
    "**运行环境**：本 Notebook 使用 `Note/lec6/.venv`（Python 3.11 + PyTorch + matplotlib + ipywidgets）。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6f349c2",
   "metadata": {},
   "source": [
    "\n",
    "## Part 1：GPU 整体结构\n",
    "\n",
    "NVIDIA GPU 可以抽象为：\n",
    "\n",
    "- **GPU**：整张显卡，包含多个 SM、DRAM、L2 Cache。\n",
    "- **SM (Streaming Multiprocessor)**：计算核心单元，每个 SM 包含 Warp Scheduler、CUDA Cores、Register File、Shared Memory / L1。\n",
    "- **CUDA Core (SP)**：执行单个 thread 的标量运算单元。\n",
    "\n",
    "我们用 matplotlib 画一个简化版 GPU 架构图。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "59fe0b9a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1200x700 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "\n",
    "\n",
    "def draw_gpu_overview():\n",
    "    fig, ax = plt.subplots(figsize=(12, 7))\n",
    "\n",
    "    # GPU outer box\n",
    "    gpu_rect = patches.FancyBboxPatch((1, 1), 14, 8, boxstyle=\"round,pad=0.1\",\n",
    "                                       facecolor=\"#e8f0f8\", edgecolor=\"#2c3e50\", linewidth=2)\n",
    "    ax.add_patch(gpu_rect)\n",
    "    ax.text(8, 9.2, \"NVIDIA GPU\", ha=\"center\", fontsize=18, fontweight=\"bold\")\n",
    "\n",
    "    # SMs\n",
    "    sm_rows, sm_cols = 4, 7\n",
    "    for r in range(sm_rows):\n",
    "        for c in range(sm_cols):\n",
    "            x = 2 + c * 1.8\n",
    "            y = 5.5 - r * 1.3\n",
    "            rect = patches.FancyBboxPatch((x, y), 1.5, 1.0, boxstyle=\"round,pad=0.05\",\n",
    "                                          facecolor=\"#4a90d9\", edgecolor=\"#2c3e50\")\n",
    "            ax.add_patch(rect)\n",
    "            ax.text(x + 0.75, y + 0.5, \"SM\" + chr(10) + str(r*sm_cols+c), ha=\"center\", va=\"center\",\n",
    "                    fontsize=7, color=\"white\", fontweight=\"bold\")\n",
    "\n",
    "    # Memory components\n",
    "    ax.add_patch(patches.FancyBboxPatch((2, 1.3), 4, 1.0, boxstyle=\"round,pad=0.05\",\n",
    "                                        facecolor=\"#b39ddb\", edgecolor=\"#2c3e50\"))\n",
    "    ax.text(4, 1.8, \"L2 Cache\", ha=\"center\", va=\"center\", fontsize=11, fontweight=\"bold\")\n",
    "\n",
    "    ax.add_patch(patches.FancyBboxPatch((7, 1.3), 4, 1.0, boxstyle=\"round,pad=0.05\",\n",
    "                                        facecolor=\"#ffab91\", edgecolor=\"#2c3e50\"))\n",
    "    ax.text(9, 1.8, \"DRAM (HBM/GDDR)\", ha=\"center\", va=\"center\", fontsize=11, fontweight=\"bold\")\n",
    "\n",
    "    ax.add_patch(patches.FancyBboxPatch((12, 1.3), 2.5, 1.0, boxstyle=\"round,pad=0.05\",\n",
    "                                        facecolor=\"#c5e1a5\", edgecolor=\"#2c3e50\"))\n",
    "    ax.text(13.25, 1.8, \"PCIe\", ha=\"center\", va=\"center\", fontsize=11, fontweight=\"bold\")\n",
    "\n",
    "    # Arrows\n",
    "    ax.annotate(\"\", xy=(8, 2.3), xytext=(8, 5.2),\n",
    "                arrowprops=dict(arrowstyle=\"<->\", color=\"#666\", lw=2))\n",
    "    ax.text(8.3, 3.8, \"L2 / DRAM\" + chr(10) + \"access\", fontsize=9, color=\"#555\")\n",
    "\n",
    "    ax.set_xlim(0, 16)\n",
    "    ax.set_ylim(0, 10)\n",
    "    ax.set_aspect(\"equal\")\n",
    "    ax.axis(\"off\")\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "draw_gpu_overview()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bbcfa07",
   "metadata": {},
   "source": [
    "\n",
    "### 关键观察\n",
    "\n",
    "1. **SM 是并行计算的基本单位**：一个 kernel 的 grid 会被划分成多个 block，block 再被分配到各个 SM。\n",
    "2. **内存分层**：Register < L1/Shared Memory < L2 < DRAM。越靠近 SM 越快、越小。\n",
    "3. **PCIe 是瓶颈**：CPU ↔ GPU 数据传输比 GPU 内部 DRAM 访问慢得多。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba73e6d0",
   "metadata": {},
   "source": [
    "\n",
    "## Part 2：SM 内部结构\n",
    "\n",
    "一个 SM 内部主要包含：\n",
    "\n",
    "| 组件 | 作用 |\n",
    "|------|------|\n",
    "| Warp Scheduler | 选择 ready warp，派发指令 |\n",
    "| Dispatch Unit | 把指令分发到具体执行单元 |\n",
    "| CUDA Cores (FP32/INT) | 执行标量运算 |\n",
    "| Tensor Cores | 加速矩阵乘/卷积 |\n",
    "| SFU | 特殊函数（sin, cos, exp, rsqrt） |\n",
    "| Load/Store Units | 内存读写 |\n",
    "| Register File | 给活跃 thread 保存寄存器 |\n",
    "| Shared Memory / L1 | 同 block threads 共享的快速存储 |\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7f252f04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAALSCAYAAAAMSmIIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAArwFJREFUeJzs3QV4FNfXx/Ff3AVNgODu7u4U2lJa6gJ16u7vvy5Uqbe0VKgrpS2leHGKu2vwICFAhPj73JtmSSBAgGR3k3w/z7NldmZ35+ydnTR7cu4Zj8zMzEwBAAAAAAAATuTpzJ0BAAAAAAAABkkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADgdSSkAAAAAAAA4HUkpAAAAAAAAOB1JKQAAAAAAADidt/N3CQAAzkZMTIyeeeYZx/1mzZpp2LBhDKIbjSvHCGcrMTFRjzzyiNLT0+395557ThEREW49kIcPH9bjjz+uzMxMeXh46OWXX1apUqVcHRYAoAgjKQUAOG/mC/nEiRO1bt06HTlyRAEBAQoJCVGZMmVUo0YNe6tVq5a8vLwY7XNw6NAhjRw50nF/4MCBRS4pdddddzm+fGe79tpr1blz5zwf/8cff2j8+PG51pUvX17PP/+8W45rcThGcK633npLH374oV1u27btKRNS5/rztTDOubCwMG3ZskWTJk2y94ODg/X666+f4wgAACB5ZJo/dQAAcA7S0tL02GOP6d1337XLp7N06VJbiZLTK6+8oujoaMf9d955R35+fhyLE5gvo/Xr18+V8Bg7dmyRGidvb++TviB3795d06ZNO+mx5leTevXqacOGDbnW16xZU5s2bXLquOb3M1ocjhGcZ//+/fbzfPToUXv/t99+0yWXXFKgP18L65ybPn26fR3D399f69evV5UqVfL1vgEAOBGVUgCAc3bfffc5/tJv9OnTR126dFFgYKA2btxo//K+a9euUz7/119/1eLFix3333jjDZJSJcg///yj1atXq2HDhrnWT5gw4aQvx67CZxSF4f3333ckpCIjI3XxxRcX+M/XwjrnunXrptq1a9sYjh07phEjRtgbAADngqQUAOCc7NixQx9//LHj/o033qjPP/8812Pee+89fffdd7YHCc6d+dL60UcfOe5Xr169WH05z/nesj83RU1xPkYoWKZ66bPPPnPcv/zyy+Xp6em0n68Fcc5deeWVevHFF+3y119/reHDh/MHBQDAOSEpBQA4J3PmzFFGRobjfteuXU96jOlxcv3119sqgJyzxc1f/1esWKHt27fnevz9999vp5zkfJz5snaqJtKbN2+2U6TM61SqVEmPPvportc7ePCgpkyZolWrVikuLs72YWncuLH69et32ua8ppmvmeJiKgrMNBsjPDzcTm/p1auXypUrd9Jzdu/enav3SnaMa9eu1ZgxY3TgwAGbqLjiiitsAsNISkqy03bM1Bszlia2wYMH2z4tOSUnJ2vZsmWnjPdU47Nnzx798ssvdpxMdUX79u01YMCAk74AZzNThP7880/9+++/9otzo0aNdNlll9lxu+eee5SamuroK/Pqq6/qXJnPRfa0IvOF1kyRM+NrmKlCpmrjxMflZc2aNXZqUzZTRXLNNdfkej933323437lypX11FNP5SvGs/2MnusxMq9vqrHMFEEzBn379rXHKb/PP9M5YD6/kydPtmNlPtfms2X6D5nPcdWqVU87BvHx8Zo6daqWL19uzyVz3E2FzIUXXnjK8+dczzlzrpkqHjMOZizNOWKmhJleS2afBfWccxmTcx37UzH9mHJWOJlzviB/vhbmOZcz5uyklDnmpmrLJNcAADhrpqcUAABna+TIkeZbkON27bXXZmZkZOTruQMGDMj13FPdUlNT7ePXrl2ba/3AgQMzX3/99Uxvb2/HurZt2zpePzk5OfOxxx7LDAgIyPN1Q0JCMt966608Y+vevXumj4/PKWMy+3z00UdPeq8rV648Kcbhw4dnenl5nbTvcePGZS5evDizevXqJ71+pUqV7PvNKa/3f6btX3zxRWZQUNBJr9+xY8fMhISEk973jh07Mps2bZpnPP/++2+mn5+fY11ERETm2co5DmFhYZk9e/Z03M95LO677z7H+sGDB+eKpWbNmrle8++//861fdiwYbm2JyUl5dpu3l9+x7UgPqNn2tf777+fa1yzb1dffbX9DJ/p+ac7B8x7f+CBB/J8fXPz9PTMvO666zIPHTp00rEy7+n555/PDA0NzfO55rwy539O53rOJSYmZl522WWnHeO6devmOifO5TnnMyZnO/ZnYmLI+fPEvJ+C/PlamOdctvT09Mzg4GDH42699dazig0AgGxUSgEAzsmJjW2//fZbWx1x9dVXq0OHDmrRooWCgoLyfK65KpSptjB/rc9ZifL222/nmgJyqqv1zZo1S7///rutEOjUqZOtxsi+cpWpLjB/sTd/uc9mqoNMpYGpADJVS6aXy4MPPmj/wp/91/5spvKiQYMG6tixo6Kiomw1wd69e201i+m5YqpvXnvtNXvlq9NVRpgYzWs9/PDD9tLpb775pq00Mvs2V8Ay1TalS5e2+zcVOT/99JN9nqmguO222zRz5kydK1NlYa6iddNNN9nqIDNVaOvWrY5t5jLuOd+36QtjKllM5Uk2UyFlrtJl4jDbztRo+WyZyitThWN88MEHtgIpISFBX375Za7HmEqv/DLjXFDO9zN6JrNnz7YVM3feeaf9nP3www9auHCh3fb999/byrZRo0ad8vmnOwdMpcugQYMc1S+GuW/OAVP1ZMbYnCfffPONPebmGGdX55mKG3MO5xx3c65fd911Klu2rK2qya4yynY+55wZX3NuZTfNNp9901w7NjbWjrt5n6aRtjkHTaXiuT7nfMbkbMY+P8zzs5lqRHM1vYL8+eqMc85UB7Zs2VIzZsyw97P/BQDgrDnSUwAAnIVjx45l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Sy+7wvaiAgAAAEoiklIoMa7o3chWAc1buVPRe+J0WY/6tuF5qf8uN2+aM//y2pVaum6P1mzdrxqVSql9k8qOqXEvDOuR6/UGda9vr4KXfeW6r1+4VGu27NPKTfsUFOCjTs2qKDwk67WDAnw1a9SN9sp2RxNT9Oo9vbVl1yH916PcXgVwwehbNfHfTUpPz9Rr9/bW+uiD8vHOKmZsWKO8ht/dy7HvM+0vr3jz8tp9fWyF1fINMbrx4ua2WoyeUkDhqFK1mu598BFNnzZFUydP1Lo1q/XG5pfVf8BFatehkz2vAQAAgJKEpBRKFH8/H3VvVf20jzFX48u+Il+2ahVL2VtObRtFnfTcBjXK21teTOKpX4fauabs5RTg76NLuh1vghyZYype5cgwXde/ab73l1e8p9KiXkV7A1D4vL291atPPzVu0lS//PSDordt1dgxv9jpfIOvvFoREcf7xAEAAADFHX+WBQDAySIiK+iOu+/TJZcOlq+fn01Ovf3Gq5o88W+lpZ36ggsAAABAcUJSCgAAV/wP2NNTHTp10UOPPqF69RsoPT3dJqXeeet1m6QCAAAAijuSUgAAuFCpUqV14y236+rrhigoKEgxe/fow/fe1h+//ark5GSODQAAAIotklIAALiYh4eHmrdoqYcfe0otWrVWZmamZs+aobdee0Xr1611dXgAAABAoSApBQCAmwgKDtZV11yvm28dZiuoDh2K1WeffKQfvvtaCfHxrg4PAAAAKFAkpQAAcDN16zfQg48+oU6du9oqqiWLFuqN1162V+kzVVQAAABAcUBSCgAAN+Tn56eLB12mO++5316tz1RKff/NaH0xaqStoAIAAACKOpJSAAC4sarVquu+Bx9Rn3795eXlpXVr1+jN117RnFkzlZGR4erwAAAAgHNGUgoAADfn7e2tXn366f6HHrVJqpTkZP3+2y/66P13FBOz19XhAQAAAOeEpBQAAEWEmcZ3x9336ZJLB8vXz0/R27bq7Tde1eSJfystLc3V4QEAAABnhaQUALgJT09PpaXTxLooMcfLy8vT6Z+TDp266KFHn1C9+g2Unp5uk1LvvPW6TVIBAAAARQVJKQBwExHly2j77ngdS053dSjIpw1bjyiyfBmXjFepUqV14y236+rrhigoKEgxe/fow/fe1h+//ark5GSXxAQAAACcDZJSAOAmurRv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dfrum9G2wXnrtu004KKBVMkBAACgRCEpBQCAk0Vv26rRX4xSenq6Gjdtpssuv4qEFAAAAEocklIAADjRnt279PmnHys1JUV16tbT1ddeL09P/ncMAACAkoffggEAcJID+/fr05EfKikpSVWrVdcNQ2+Wt7cP4w8AAIASiaQUAABOcDguTp9+/IHijx5VhQoVdeMtt8vXz4+xBwAAQIlFUgoAgEKWEB+vT0d+oEOHYlWmbDndMuxOBQYGMu4AAAAo0UhKAQBQiI4dO6bPPv1Y+2JiFBYWptuG3aWQkFDGHAAAACUeSSngPCxdt0cLVu3MtW7LzliNnb5WySlpjnXmku+/T1+nfbHxjDdQgqSmpmr0559q547tCgoK0i3D7lKp0qVdHRYAAADgFkhKAedh+uJtuv7p33KtGz56ti595EfNWb7dsW7lphhd8vAPSklNZ7yBEiI9PV3ffvWFNm/aKD8/P9182x2KiIh0dVgAAACA2/B2dQBAUdazTXU9OGKidsYcVlREmF03dcFWDepW3/7bo3UNx7o6VcrYxyxbv0fb9sTJQx6KighV41rl5etz/FSct2KHypUKVJmwQK3YGGMfsy82wa4rFRKgFZtiFFU+VLWrlHHZ+wZwehkZGfr5h2+1ZvUqe3W9oTffpqjKVRg2AACA/MjMZJxKCJJSwHloXCtC5UsHaerCrRpyYTNt231IRxKSde9VbfXYe5P1knrax01duEW92mYlqOYs36HJ8zfbn7Mbth+Up6eHJr1/vSqVz+ox89yn05WalqFtu+NUr1pZDbuslT74eYGtstq885BqVS6tRWt26/r+TfT+YwM4foCbMdN1/xg7RksWL5Knp6euG3KjataqLXfj4+Ot5GPJrg4DAADgJMeOJcvX14eRKQGYvgecBw8PD/VoVV1TF2xxVER1b1VN7ZtEac3W/Tocf0xpaemauTRaPVtXt4+564o2Gvvm1fr9rau19pe71b5xlF7+Ylau1929/6iWfTdMf71zrS7qUteu27QjVku+uV1TPxpit305bpkmztvE8QPczKQJ4zV39kz78+GKq69Vg4aN5I5q16imHTt3KTb2kKtDAQAAcDC/m+zctVu1qldlVEoAklLAeerVpoamLdpql82/JkllpuO1bRil6Yu2aeGa3UpISlX3VllJKWP3/iP6Z9FW2/y8XKkgLVy9K9dr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",
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "def draw_sm_internals():\n",
    "    fig, ax = plt.subplots(figsize=(12, 8))\n",
    "\n",
    "    # SM box\n",
    "    sm_rect = patches.FancyBboxPatch((1, 1), 13, 7, boxstyle=\"round,pad=0.1\",\n",
    "                                      facecolor=\"#f0f4f8\", edgecolor=\"#2c3e50\", linewidth=2)\n",
    "    ax.add_patch(sm_rect)\n",
    "    ax.text(7.5, 8.2, \"Streaming Multiprocessor (SM)\", ha=\"center\", fontsize=16, fontweight=\"bold\")\n",
    "\n",
    "    # Warp schedulers\n",
    "    for i in range(4):\n",
    "        y = 6.0 - i * 1.3\n",
    "        ax.add_patch(patches.FancyBboxPatch((1.5, y), 2.5, 0.9, boxstyle=\"round,pad=0.05\",\n",
    "                                            facecolor=\"#ffcc80\", edgecolor=\"#2c3e50\"))\n",
    "        ax.text(2.75, y + 0.45, f\"Warp\" + chr(10) + f\"Scheduler {i}\", ha=\"center\", va=\"center\", fontsize=9)\n",
    "\n",
    "    # Dispatch units\n",
    "    for i in range(4):\n",
    "        y = 6.15 - i * 1.3\n",
    "        ax.add_patch(patches.FancyBboxPatch((4.5, y), 1.3, 0.6, boxstyle=\"round,pad=0.05\",\n",
    "                                            facecolor=\"#fff59d\", edgecolor=\"#2c3e50\"))\n",
    "        ax.text(5.15, y + 0.3, \"Dispatch\", ha=\"center\", va=\"center\", fontsize=8)\n",
    "\n",
    "    # Execution units\n",
    "    ax.add_patch(patches.FancyBboxPatch((6.5, 4.0), 7.0, 3.5, boxstyle=\"round,pad=0.05\",\n",
    "                                        facecolor=\"#e3f2fd\", edgecolor=\"#2c3e50\"))\n",
    "    ax.text(10, 7.2, \"Execution Units\", ha=\"center\", fontsize=12, fontweight=\"bold\")\n",
    "\n",
    "    # Draw tiny CUDA cores\n",
    "    for r in range(3):\n",
    "        for c in range(14):\n",
    "            x = 6.8 + c * 0.45\n",
    "            y = 4.3 + r * 0.6\n",
    "            ax.add_patch(patches.Rectangle((x, y), 0.35, 0.45, facecolor=\"#64b5f6\", edgecolor=\"#1976d2\"))\n",
    "\n",
    "    # Register file\n",
    "    ax.add_patch(patches.FancyBboxPatch((6.5, 1.5), 3.0, 2.0, boxstyle=\"round,pad=0.05\",\n",
    "                                        facecolor=\"#c5e1a5\", edgecolor=\"#2c3e50\"))\n",
    "    ax.text(8, 2.5, \"Register\" + chr(10) + \"File\", ha=\"center\", va=\"center\", fontsize=11, fontweight=\"bold\")\n",
    "\n",
    "    # Shared Memory / L1\n",
    "    ax.add_patch(patches.FancyBboxPatch((10.0, 1.5), 3.5, 2.0, boxstyle=\"round,pad=0.05\",\n",
    "                                        facecolor=\"#b39ddb\", edgecolor=\"#2c3e50\"))\n",
    "    ax.text(11.75, 2.5, \"Shared Memory\" + chr(10) + \"/ L1 Cache\", ha=\"center\", va=\"center\", fontsize=11, fontweight=\"bold\")\n",
    "\n",
    "    # Arrows scheduler -> dispatch\n",
    "    for i in range(4):\n",
    "        y = 6.45 - i * 1.3\n",
    "        ax.annotate(\"\", xy=(4.5, y), xytext=(4.0, y),\n",
    "                    arrowprops=dict(arrowstyle=\"->\", color=\"#666\", lw=1.5))\n",
    "\n",
    "    # Arrows dispatch -> execution\n",
    "    for i in range(4):\n",
    "        y = 6.45 - i * 1.3\n",
    "        ax.annotate(\"\", xy=(6.5, 6.0 - i * 0.7), xytext=(5.8, y),\n",
    "                    arrowprops=dict(arrowstyle=\"->\", color=\"#666\", lw=1.5))\n",
    "\n",
    "    ax.set_xlim(0, 15)\n",
    "    ax.set_ylim(0, 9)\n",
    "    ax.set_aspect(\"equal\")\n",
    "    ax.axis(\"off\")\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "draw_sm_internals()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95384329",
   "metadata": {},
   "source": [
    "\n",
    "## Part 3：执行层级 Grid → Block → Warp → Thread\n",
    "\n",
    "- **Grid**：一个 kernel 启动的所有 thread 的总集合。\n",
    "- **Block**：Grid 的子集，内部 threads 可通过 shared memory 和同步原语协作。\n",
    "- **Warp**：Block 被硬件切成的 32-thread 小组，是调度的基本单位。\n",
    "- **Thread**：单个执行实例。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "68223fd2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAHqCAYAAADrpwd3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgLlJREFUeJzt3Qd0G1X2x/Hr7jjFTu+9d3onkAChhN770ll6XxYWdvkvLH2Bpfe+dAIBQggdQklIQhohvffuxIl7+Z/fy46QHY0tl9iS/P2co2NlNJqZN/Oike7cuS+upKSkxAAAAAAAAAAAwA7id5wEAAAAAAAAAAAIogMAAAAAAAAAUA4y0QEAAAAAAAAA8EEQHQAAAAAAAAAAHwTRAQAAAAAAAADwQRAdAAAAAAAAAAAfBNEBAAAAAAAAAPBBEB0AAAAAAAAAAB8E0QEAAAAAAAAA8EEQHfXGlVdeaXFxce7x9NNPVzj/t99+G5j/0EMPrZVtrG8qe0yibX0AgMjz2WefBc4FRx99dMytDwAAoKpefvnlwPeWiy66KCp35NatWwNtyMjIqOvNQQwhiI6ItWXLFvvPf/7jAtitW7e25ORka9q0qfXu3dtOOOEEFwTdvHmzxapNmzbZCy+8YEcddVSg/Z06dbIjjjjCxo4dW2PrKSgosPfee8+OOeYY69KlS2A/77PPPnb//fdbXl5eWMt55JFHAicq75GQkOBOWnvssYfdeeedtm3bthrbbgDAzqPPa32uH3TQQdaiRQtLSkqy5s2b25AhQ+yhhx5yP04iwfz583c49+iRlpZmvXr1sosvvtjNg/K9+eabpfafLjpXZN26dYH5GzZs6L5PePRc07zX33nnnVLvPfvsswOvPf/88xweAChj0qRJdv7551uPHj3cOU2P7t2725/+9CebMGFCROyvK664IvBZ/q9//avUa3fddVfgtX79+vmeuzt06GD1yXfffefOgYpppKamWqNGjWzgwIF20003ufNqMP0O/+CDD+yMM86wzp07u9/pigvst99+9tJLL1lhYWGF61PsINT3pFAPLvQDFUsMYx6g1v3000926qmn2ooVK0pNz8zMdI+5c+fahx9+aH369LGDDz44Jo/QddddZ6+88kqpacuWLXMPBdHvuOMO+8c//lHt9YwaNcpOOeWUUtO0j/XlTI9x48bZxx9/XKVlFxcXuwsdkydPdg8t6/PPP6/2NgMAdh6dY/VDat68eaWmb9y40X2O6/Hkk0/aJ5984s7DkSgnJ8dtvx4jR4603377zdq2bVvXmxWR5syZY5dcckml39eyZUvr27evzZo1y7Kzs23ixInuh73ouaYFBw30vc7z/fffB57rwgwA4A9///vfXRC6pKSk1G5ZuHChe7z22mv217/+1e6+++463W260K7vA97n/N/+9reQn/M6TyhArPNGfT4HLF68eIfYhQLl+o6ihwLm06ZNcxeh5bnnnrOrrrqq1Pxr1651j59//tl9v6nq73QAVUMmOiKOfvAeeeSRgQC6MqIVeFVmelZWljvBKLh82GGHuUzncD3++OPui4gef/7zny0aNGvWzJ544gnbsGGDC54rA9+jL1aaHmzp0qU2dOhQW7RoUciAgrLNv/7661LTU1JSXKbe+PHj3T5es2aNXX/99YHXFSRZvnx5pb9QaT8rE+2NN94ITP/iiy9swYIFlVoWAKD25Obm2ogRIwIB9AMOOMD9oPN+5OkcI/os151SwYHSSKDvCTr//P777y5bywv+l82Exh/fDXQhXXcWVOWCiM73HgVQPMEBkrL/1ncUfaeRNm3auDsGAADb6e4c3cGrc5nuAtNvWN2hrMSkZ5991v1202v33HNPnZenDD4HKAnOuyNJGdIK8vqdB4LPF8HLiHVetrdiG7qooN/eOqbx8fGB71b6vRxMfeDWW2+1JUuWuO8zt9xyS6nf6WV/24cqKefFQPS49NJLA6/pefBrWh6A8hFER8S57bbb3AlFdGvTN9984wLmjRs3drc79e/f384991x38jnwwAN9610rU33AgAHuxKNyJeXVw/70009dyRHdUqXb5FRGpa6p7VOnTrXLL7/cBdN1q5u2S9vvfTnRVf1g//d//+dquesKd3Ag3Qug68So5QXf+qXpOnnvvffebh+3atWqVBaBl1FeFYmJie72M9165lm/fn1Y79X268Su4+Hd6rbbbrvZvffe64I8Zemii4L/yorT7Y4qP6BA0I8//ljuevLz8+3EE08M9A091/L1RUW3UOrWOX1ZVRmD/fff332pXblyZRX2BgBEPt0e7JU/0WepsqIGDRrkPsd1/tW/09PTA5/TypIKVfd71apV7vNU5xWVItPdVToXBdNnrcqG6fyr+fRZq9vWr776andBtzp0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fT/RuVeZ6DrnaQBQjUem7zEVnb+970/KVNfv2Z1Jd+zre5TKCWlgeU/ZsdvKOx4333xzoEygBq3X90MdD33vEvU73VFflb6g71teFQNl+OvudD387mj07sjQHRQqWavvA9qn2i7dxQhUqMIwO1CLli5dGvLKetlMrlAZZMFZxsqSKytU1vP8+fMD05QBr8xkzzPPPFPprK6d6bvvvgtkZ+tqsLLM/Sj7XFdove3v0KGDa2t5vAz24IeyE+64446wti84gy3UIy4uruSUU05x21beMZk1a1apjIngY/LJJ58EXuvbt28g29Cblpyc7K7o+wlen5btbdejjz5aaj5loiszQq/36NGj5JFHHin59NNPK9yHABDtBg4cGPicvP3220POo0wzbx7dtVP2HK07oYqKigKfp6mpqYHXvLuRystI8h7KLKpsJnqoh84XOrdUlImuTChv+meffRaYrsxmZS57r3kZ8jo/eNPeeecd320MXp937tHj+OOPd8uuC8p+1zY89thjgWlVyUSXiy66qFRm2r///W/3fN9993WvP/jgg+7fu+22W8myZcsC8zZr1sz1D48yw0877TR315zO52WPo/qmJzjTPPgug1CvB2ewL1myJDBd2ef6jvHzzz+Xylh84YUXSr799tuStWvXVmnfAkBVvf/++4HPI2Un6y7tUILPq2+++eYOmejPP/98yHP2dddd56b997//rfDcqYeyyCuyfPnywPz6rZqXlxfIRB47dqz7PqBMYP37o48+KrngggsC8//nP/8JLEdtve+++1yWtc7/oe4U1/4pm/msO8jKCn59yJAhpV47//zzK/yes7MpOzvU/tbd9Np/fvT9w/vuofPkl19+Wel1VzYTfY899ghM1+9sb7q+F4WaP9TxKO8Oc++hOxir0heCs969O8zK3tURnImuTHlv2l133eXukpsxY4a7kw4IB5noiCgaYMq7OiyqX+bR1VldiXz33XfDqiceDl0h9agWuOq2eYJrk9U1XfU95JBD3BVbZbspo7xr166+8+vKtjLAPMqurmgQVmWrKxtBV201yrrer3/fcccdbqCYqgwsqvfPnTvX1Rnzjp2X5e4n+KqxMtz8jokyDIP/iur5qZZfOJSNIcqMLzsqvPbf+++/72q2qQbctdde6zL6VX9O2R+RUDMfAHaG4Kw3v4GglQ1U3rlSWeDe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1NatW61fv34uePrNN98Eph933HFu2gEH/DF43fTp0wOB1hUrVtTJkfj0009t1113tQEDBrgM6EaNGtnpp59uWVlZ5b5PFwjuuusui4+Pt6uuuirs5enCwXPPPedeHzx4cGCea665xmW2l+e0005z++rxxx+3WHTttde6/fP3v/+9rjcFAAAACCCIDgAAgBrVokULlxkt3377rfurALKXXbx06VJbtGhRqdfbtm1rvXr1sgULFgQy0zVPcCZ7cMmP4Mx1ZbbrednpK1eurDAoLdOmTbNPPvnEZYRr/Y0bN7a3337bBcjLM2rUKJddf9BBB7ntD3d5atOMGTNs7Nixbhvnzp3rysE8+uijdu+99/quT2VjlOUvykT39lEoWm52dnZY+82jZWtaqKz4cI6LKACuiyHFxcW+7cjJyXGZ6Xl5eTu8Nnz4cGvWrJmNGTPG9RMAAAAgEhBEBwAAQI07+OCDSwXJf/jhBxecVcBZvvvuu1Kve/NfeOGFdvzxx9uxxx7rMrXT09PtxhtvDFm65IorrrAuXbrYYYcdZhMnTgxMV1a4/uq1jIwMe+GFF8rd1ltuucXat2/vnnfo0MGVExEFwcvz0Ucfub/Dhg2r1PKSk5NdwNybR7XUlbkevF9COf/8810gXN566y23n7QPgo0cOdIGDhzolql9d99991W43xT01/5XsH+vvfZyNdWvv/76QMA+3OOiwHfr1q2tU6dO7oKI2hhMZW3OOusst57999/fzXvkkUe6Cwoe1U3XnQoKwutCBAAAABAJCKIDAACgxnlB8UmTJrlsZy9Yfscdd7i/+reylr///nv3by+4runKdlZ29po1a1yw99///rcLDpelbOZZs2a5+b31ecHq3377zaZMmeICwZdccokLFJdH69J7VNt88uTJ1qRJkx0C1GWpbTJo0KBqLU9Z5V6WfnkDaqreucq/eLXD1W6VjgmmLPCpU6faO++847Lwb731Vldex2+/qeyO9p2C9++++67LrD/vvPPs4YcfLlWipqLjomkqNaMa7x9++KHLmi9bC17b+sYbb9hRRx3ljtHGjRvt6quvtgkTJpSaz2vjL7/84rsvAAAAgNpEEB0AAAA1TkHxuLg4V/bjxx9/dEHaNm3auIBt79693b9VD12BVAkOgqvMh8qKKCCsjGbxgvDBFBxXGZSyzjnnHEtISHCZ17vt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5r/wwgvt+OOPt2OPPdZlaqenp9uNN95YatkK0CsbW2VUunTpYocddphNnDgxMF1Z4fqr1zIyMuyFF17w3U6VWVHwun379u7fnTt3dlnkwdvo56OPPnJ/hw0bVmq6Srt4y+vQoYP17NnTPVdQvTrrPP/88wOlb9566y23n7QPgo0cOdIGDhzolql9d99991W43xT01/5XsH+vvfZyJXWuv/76QMA+3OOiwHfr1q2tU6dO7oKI2li2RvpZZ53l1rP//vu7eY888kh3QcGj0j+6U0FBeF2IAAAAACIBQXQAAADUOC8ortrWynb2guV33HGH+6t/K2v5+++/d//2guuarmxnZWevWbPGBXv//e9/u+BwWcpmnjVrlpvfW58XrP7tt99sypQpLhB8ySWXuEBxOJTh7WXMq8xKedQ2GTRo0A6vadu1Dc8884xNnjzZmjRpskPAu7LrHDdunCv/4tUOV7tVOiaYssCnTp1q77zzjsvCv/XWW115Hb/9prI72ncK3r/77rsus/68886zhx9+uFSJmoqOi6ap1IxqvH/44Ycua15B82Da1jfeeMOOOuood4w2btxoV199tU2YMKHUfF4bf/nlF999AQAAANQmgugAAACocQqKx8XFubIfP/74owvStmnTxgVse/fu7f6teugKpEpwEFxlPlRWRAFhZTSLF4QPpuC4yqCUdc4557hBOpV5rcEpldX83nvvVbjNCrifeuqpbkBQlWe5/fbby51fgWMJHuDTo5rnqgGvILGC2cq49jLSq7POinhtVza6qO1la80H77f333/frbtp06bWp08fFyjfe++93WuvvfZaqUB4ecdFWegq2aMM9WOO2T7w1LnnnltqvYmJie6vjv11111nL774osvUv+iii0rN5+3P1atXV2tfAAAAADVl+zdZAAAAYCfURVc2tspyKBv7pJNOcq8NHTrUnn76aXvllVfcvxVcV2BdQdgLLrjA1RpXkFdBZWVGi/c3mAK/oSiQ61E5F1m7dm2526sA8QknnOAGQlWW9RdffBEot+JHZVkkVH3w2267zT10kUDlXlQTfdOmTa4OenXWWRGvvV7AWpTx77fflDkuqp+uci0eHQ/ZvHmzpaamVnhcvOWE2vceZaDfcMMN9uqrr9ojjzwSmH7xxRfbs88+G/i3F7j39i8AAABQ18hEBwAAwE7hZZc///zz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AWUve3W1t23c6gbiVCmUkuLoDaKr721audF+euMHW7NgjbXq2spSG6e6muH67FT992ilAWB//3amKwvljYvx/cvf2rcvfG1v3/KGdRpcP8vuEUQHAABAjTv44INLBcl/+OEHV9plyJAh7t/fffddqdcPOugg9/ecc85xWeHDhw932ezp6en217/+NWTpEmV/d+nSxQWxJ0yYEJh+zTXXWN++fV1gWwHZV155ZaccYQXB5ZBDDik1/bbbbnMZ6KK/aod4AW8FzJ988slA3e9u3brZbrvtVmp/hHLGGWfYrFnbs5pef/11t58uvvjiHbZp4MCBrjZ648aN7cEHH6xwv/3222926KGHumD/oEGDXFb8X/7yl1JB+HCOy+eff+4uhuih9aiNwRQ0/9Of/uQy83fffXd3seWYY46xmTNnBuZR3fQDDjjAXfz45JNPwjoOAGqW6jAfe/NxLojeeZcuduR1I2JqFyuwpcDdwRcNs0MvG26x0qbGLRq746UsXxl+1RHWc79e1m3P7nbk9SOifgBHlTVxAxqWlIScFq10vDr072AZbTLccdRFnV2P3s3i4uNc26I5EKvBJxOSEqzPkL5WWLC9HdsHpixyd4Sc++h5UT0egdrS/5ABgbaq1rvqpOsx5PyDrf+w7a9FI/W7Zu2bWbs+7f44dgVF7v/anifubQddMNTqo9i7LwQAAAAREUR/4oknXMa1sp294LDKdCjorH+fe+65gRreXhB93LhxgWVs2bLF9tprL5edvc8++9jxxx9fah3Kiv799993GEhTNc0VGFZwdtddd7ULL7zQ/VWAuCZNmjTJ/R08ePAOr61fv949fvzxR5s8ebILTF922WUhl6Oscq8GuILbfn7++We3HxT4vvrqq+2OO+7YYR61ferUqfbhhx+60i8KdP/5z3926w+131QPXsF11WZ/77337KSTTnJ1yR944AG3/59++umwjosy30855RT32gcffOCmnX/++aW27dNPP7VXX33Vjj76aJfFr4sqY8aMcfuof//+gfm0P/W62um3zwDsXF126+oesajnvr3cI5b02LunewRLSEywPY4LrzxZJGuY0TAw0GawUNOiUahjFCtta9envXsE2/OEvSxWlHecor2dwQPAeoZdXDpppD6K3ks+AAAAiOggurKplH2sIKkyz1u3bm3Dhg1zmcz6t+qhb9iw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",
      "text/plain": [
       "<Figure size 1500x500 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "def draw_execution_hierarchy():\n",
    "    fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
    "\n",
    "    # Grid\n",
    "    ax = axes[0]\n",
    "    for r in range(2):\n",
    "        for c in range(3):\n",
    "            rect = patches.FancyBboxPatch((c * 1.2, r * 0.9), 1.0, 0.7, boxstyle=\"round,pad=0.05\",\n",
    "                                          facecolor=\"#4a90d9\", edgecolor=\"#2c3e50\")\n",
    "            ax.add_patch(rect)\n",
    "            ax.text(c * 1.2 + 0.5, r * 0.9 + 0.35, \"Block\" + chr(10) + f\"({r},{c})\",\n",
    "                    ha=\"center\", va=\"center\", fontsize=8, color=\"white\", fontweight=\"bold\")\n",
    "    ax.set_xlim(-0.2, 3.8)\n",
    "    ax.set_ylim(-0.2, 2.0)\n",
    "    ax.set_title(\"Grid = 2×3 Blocks\", fontsize=12, fontweight=\"bold\")\n",
    "    ax.axis(\"off\")\n",
    "\n",
    "    # Block -> warps\n",
    "    ax = axes[1]\n",
    "    for i in range(4):\n",
    "        rect = patches.FancyBboxPatch((0.2, i * 0.8), 3.0, 0.6, boxstyle=\"round,pad=0.05\",\n",
    "                                      facecolor=\"#ffb74d\", edgecolor=\"#2c3e50\")\n",
    "        ax.text(1.7, i * 0.8 + 0.3, f\"Warp {i} (32 threads)\",\n",
    "                ha=\"center\", va=\"center\", fontsize=9, fontweight=\"bold\")\n",
    "    ax.set_xlim(0, 3.5)\n",
    "    ax.set_ylim(-0.2, 3.5)\n",
    "    ax.set_title(\"One Block = 4 Warps\", fontsize=12, fontweight=\"bold\")\n",
    "    ax.axis(\"off\")\n",
    "\n",
    "    # Warp -> threads\n",
    "    ax = axes[2]\n",
    "    for i in range(32):\n",
    "        c = i % 8\n",
    "        r = i // 8\n",
    "        rect = patches.Rectangle((c * 0.45, r * 0.45), 0.38, 0.35,\n",
    "                                  facecolor=\"#81c784\", edgecolor=\"#2e7d32\")\n",
    "        ax.add_patch(rect)\n",
    "        ax.text(c * 0.45 + 0.19, r * 0.45 + 0.175, str(i),\n",
    "                ha=\"center\", va=\"center\", fontsize=6)\n",
    "    ax.set_xlim(-0.1, 3.8)\n",
    "    ax.set_ylim(-0.1, 1.9)\n",
    "    ax.set_title(\"One Warp = 32 Threads\", fontsize=12, fontweight=\"bold\")\n",
    "    ax.axis(\"off\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "draw_execution_hierarchy()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6a565fd",
   "metadata": {},
   "source": [
    "\n",
    "### 索引公式\n",
    "\n",
    "对于 1D grid/block：\n",
    "\n",
    "```\n",
    "global_thread_id = blockIdx.x * blockDim.x + threadIdx.x\n",
    "```\n",
    "\n",
    "对于 2D：\n",
    "\n",
    "```\n",
    "row = blockIdx.y * blockDim.y + threadIdx.y\n",
    "col = blockIdx.x * blockDim.x + threadIdx.x\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ff58556",
   "metadata": {},
   "source": [
    "\n",
    "## Part 4：Warp Scheduler 与 Latency Hiding\n",
    "\n",
    "当 Warp 0 访问内存时（stall），Warp Scheduler 立即切换到 Warp 1，让 CUDA Cores 不空闲。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1f013bac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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F6LDuaQU3fcA+5jRNpzajpOZhgBxA9QlxhyA2NkTHP6fBRF7rA8u62p1+/z8fDn33HPlsMMO26HjWf/+/WMqKfXMM89IeXl5UFJqv/32k61bt9bquKNF67XINu913ORcUorue4B9zGi727S0NLrvAcQNUKcYcwBiB5Fx9dVXByV7An3yyScm8XPEEUf4t82bN09mzpwp48ePN6U9NJnzzTffyJIlS6Rt27YybNgwSUgITg/obWbMmCGLFi2S7t27y8CBA/3XffTRR5KVlSWDBg3yb/v222+lpKTEzNiaNWuWLFy40IwLTz31lLle96dTp05BRbF1KV9iYqL06tXL7F9paalJXDVr1ixoX/RD9k8//dTMitpnn33MfuuMq/3339/cX7id3xB9ziWlAAAAAABA9fTD6LFjx8p7770nBx98sEno6M/jxo0zCan169ebnwsKCszsKk1Y6SyjyZMnS3Z2trmPdevWyZFHHinLli2T4cOHywMPPCDdunWTF154wVz/r3/9yySpApNSL730kqxYscIkpfT39D40KaWJLaVJtKrL9x5//HH5/fffTTKqb9++kpubK3/9619N7SlNhKn58+fLyJEjpXnz5tK1a1e56KKLTNKqTZs2JikFt5GUQq3QmTj6oobYowOBvsgjNhE7sRs3GzZsMF+pZRibMjMz/SfOALAn0Dfq+uabcScydIzXpWVbtmyJaomYzZs3W91e91e988478uuvvwZdd+KJJ0pycrL069dPrrnmGjn99NPNjCX9XhNVN9xwg3m8888/3yR0PvvsM/P3ps//lFNOkauuukqefPJJc1+aGNLHmjNnjqSnp5ttX3zxhX9/fccvcP/1Z11Kp9s06fXuu++abQ8++GC1t1H6/dKlS+W7776T1q1bm22HHHKI/POf/5SHHnrI/Hz55ZdLnz59ZNKkSWZGlCaxBg8eLC1btjT7yGoqtzmXlGKdaGy+qR537HFStnX7CyRiiw40ffv2k1tuudm8cCO2Yue4Y4+VLbW4rh61Fzc6jVw/OeREJzY1bNBA3njzTRJTMXielpKSwvkaYGnNmjXy+ONPyE8//ci4EyEtWrSQK6+80oz5OyYCI/c2WZeh2Vi5cqX5+sMPP5hZRYF01pPWkfUlqD744AMZMWKE+ft69dVXZdWqVSaJ8/bbb8upp54q999/v7mtJqU02fPl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",
      "text/plain": [
       "<Figure size 1200x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "def draw_warp_scheduler_gantt():\n",
    "    fig, ax = plt.subplots(figsize=(12, 5))\n",
    "\n",
    "    warps = [\"W0\", \"W1\", \"W2\", \"W3\"]\n",
    "    colors = {\"exec\": \"#4a90d9\", \"stall\": \"#ef9a9a\", \"ready\": \"#fff9c4\"}\n",
    "\n",
    "    # Timeline data: (start, duration, state)\n",
    "    schedule = {\n",
    "        \"W0\": [(0, 2, \"exec\"), (2, 3, \"stall\"), (5, 2, \"exec\")],\n",
    "        \"W1\": [(2, 2, \"exec\"), (4, 2, \"stall\"), (6, 3, \"exec\")],\n",
    "        \"W2\": [(4, 2, \"exec\"), (6, 2, \"stall\"), (8, 2, \"exec\")],\n",
    "        \"W3\": [(1, 1, \"exec\"), (3, 2, \"stall\"), (8, 2, \"exec\")],\n",
    "    }\n",
    "\n",
    "    for i, warp in enumerate(warps):\n",
    "        for start, duration, state in schedule[warp]:\n",
    "            ax.barh(i, duration, left=start, color=colors[state], edgecolor=\"#333\", height=0.5)\n",
    "\n",
    "    ax.set_yticks(range(len(warps)))\n",
    "    ax.set_yticklabels(warps)\n",
    "    ax.set_xlabel(\"Time (cycles)\", fontsize=12)\n",
    "    ax.set_title(\"Warp Scheduler Timeline: Latency Hiding\", fontsize=14, fontweight=\"bold\")\n",
    "\n",
    "    from matplotlib.patches import Patch\n",
    "    legend = [Patch(facecolor=colors[\"exec\"], label=\"Executing\"),\n",
    "              Patch(facecolor=colors[\"stall\"], label=\"Stall (waiting memory)\"),\n",
    "              Patch(facecolor=colors[\"ready\"], label=\"Ready (not scheduled)\")]\n",
    "    ax.legend(handles=legend, loc=\"upper right\")\n",
    "    ax.set_xlim(0, 11)\n",
    "    ax.grid(axis=\"x\", linestyle=\"--\", alpha=0.5)\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "draw_warp_scheduler_gantt()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "215895b9",
   "metadata": {},
   "source": [
    "\n",
    "### 解读\n",
    "\n",
    "- **蓝色条**：warp 正在 CUDA Cores 上执行。\n",
    "- **红色条**：warp 在等待内存数据，被移出执行。\n",
    "- 只要 eligible warp 够多，CUDA Cores 几乎不会空闲。\n",
    "- 这就是 **latency hiding**：用多 warp 并发掩盖内存延迟。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f6ed07a",
   "metadata": {},
   "source": [
    "\n",
    "## Part 5：SIMT、Warp Divergence 与 Memory Coalescing\n",
    "\n",
    "### SIMT\n",
    "Single Instruction, Multiple Threads：一个 warp 内 32 threads 共享同一个 program counter，执行同一条指令。\n",
    "\n",
    "### Warp Divergence\n",
    "如果 warp 内 threads 走不同分支（如 `if (threadIdx.x % 2 == 0)`），硬件会串行执行两个分支，每个分支只激活部分 threads，其他 threads 被 mask 掉。\n",
    "\n",
    "### Memory Coalescing\n",
    "一个 warp 内相邻 threads 访问相邻内存地址时，硬件会把这些访问合并成少量 cache line / memory transaction。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2c67755c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAGGCAYAAACUkchWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAU1RJREFUeJzt3QeYHVXZAOCzySYbUjf00HvvvSodAaXaURHRX0UBAbGiWEAUFBFULIANpImCIEUQkCYCSif0hBpKAiGN1N3/+SbO5e5mZ3fvpt3yvs+zz969d3bunDlTznxzzjdN7e3t7QkAAAAAAJhHv3nfAgAAAAAABNEBAAAAAKAbeqIDAAAAAEABQXQAAAAAACggiA4AAAAAAAUE0QEAAAAAoIAgOgAAAAAAFBBEBwAAAACAAoLoAAAAAABQoLnoA2rH6NGj0+OPP57efPPNNGjQoLTUUkulVVZZJa2zzjqlaa6//vr0/PPPZ68//OEPp8GDB8/z/oABA9Jhhx3WYd7jx49PV1xxRenvbbfdNm200UbpvPPO69WyfexjH0sDBw5MC9Itt9ySnnrqqdTc3Jw+/vGPF77XnYceeihbb7NmzUqrrbZa2mabbbLyd3b//fdn00UZ1lprrbTpppv2OO/HHnss3X777dnrAw44IC2zzDLdLnu1mjlzZvr973+fvd5www3T9ttvv7gXqSp0V78LymWXXZbtzyG2u1122WWeae655570wAMPZK+bmpqybbS1tTWtscYaaf3110/9+vWbr+mh1rz00kvpmmuuKW3jcZwdNmxYWmmlldImm2ySnR/LPfnkk+mf//xn9vo973lPWm655RbLclMbJk2alC699NLs9VZbbZU222yzmt2WrrzyyvTaa69l54D3vve9C2y+d955Z3r00Uez10sssUQ69NBD0+L0n//8J913333Z6w9+8INp6NChC2Ta/By9/PLLp3e/+92l999666104YUXZq8333zztOWWW6ZqVkmZe+P8889PbW1tpb/jGDxy5Mi0xRZbpJVXXnm+lxdY+G699db0xBNPlNpScS1ffo08derUdNFFF5X+jvZVXEc3qldffTXde++9Wcwk2plxXRjXVXF+WBiuvfba9OKLL2bt2w984AML5TtqYRlgsWqnZr366qvte++9d3tU47bbbtt+6KGHtu+4447tgwcPbl9xxRU7TJtPFz/PP/98l+/Hzz//+c8O//fNb36zw+enn356+5w5c9qPOOKI0s9OO+1U+ny77bbr8Nm0adMWeLmjnPFdLS0t3b7XlX//+9/tW2+9dbbMH/jAB9qXW2657P+WX3759ptvvrk03R/+8If2jTbaqH2HHXZo/+AHP5h9HtNtv/327U888US333HOOeeU1se//vWvHpe9Wr3xxhulcnzuc59b3ItTNbqr3wXhueeea29qaip9R+zLsc919uUvf7k0zV577dX+sY99rH3zzTfP/l5ttdXaf/Ob38zX9FBrbrjhhtI2vuGGG7Yffvjh7bvvvnt7c3Nz+7Bhw9pPOOGE9unTp5emj20+n/62225brMtO9XvyySdL28t3v/vdDp/V2ra05ZZbZsu67rrrLtD5rrfeeh3ajA8//HD74vT1r3+9tCxjxoxZYNOuueaa2XTR5i43bty40jxiftWukjL3Rv/+/bN5jRgxIrsG+NCHPtQ+aNCg7L2PfOQj7bNnz14gyw0sPIcddliH4/gll1zS4fOf//znHT4//vjjG7I6XnzxxfaDDz44u2ZbZpllsrjCvvvu277yyitn62Xy5MkL5XujXRvzX3XVVRfK/GtlGWBx0hO9hh111FFZT/J99903/e1vfyu9P3HixA69xyvxs5/9LL3jHe/IXkcv7V//+tfzTBM9Vs8999zS3/E675kbdyO/8IUvpGoWPcmi93l4+eWXsx778fujH/1oqVd+9MaJdbvCCitkf7/yyitpvfXWS//617+yMv73v/9drGWgfv3hD3+Im5ulv+NO/z/+8Y+05557dnssyHvDxeiBGOVw+OGHp6effjp997vfne/podbsscce6cwzz8xeP/jgg9nfp59+evr3v/+dbrjhhmwkRhz7jzjiiGyahdVjCBrF3XffnY3UKhfnlx/84AeLbZlYPOJ4ml8n/PCHP0wnnHBCuuCCC9Jee+2VtbWB2hGxgfe///2lv3/+85+nRvfCCy+k7bbbLrtG22GHHbJRkCNGjMg+i2u4q6++ussR7vUiYk8RS1l66aUX96LAYiGIXsPywPnw4cM7vB/DcytNFRJDLsNf/vKXNG7cuDRq1Kh0+eWXZ69jaNL06dP7tIwRfL7qqquy13GS2WCDDbq9AItgRz58LL539dVXz4aI5cs3vzoPN4uGfqSnieB4nBBjiNqQIUPS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",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "def draw_simt_and_divergence():\n",
    "    fig, axes = plt.subplots(1, 3, figsize=(15, 4))\n",
    "\n",
    "    # SIMT: all active\n",
    "    ax = axes[0]\n",
    "    for i in range(32):\n",
    "        c, r = i % 8, i // 8\n",
    "        ax.add_patch(patches.Rectangle((c * 0.5, r * 0.5), 0.4, 0.4, facecolor=\"#81c784\", edgecolor=\"#2e7d32\"))\n",
    "    ax.set_title(\"SIMT: all 32 threads execute ADD\", fontsize=11, fontweight=\"bold\")\n",
    "    ax.set_xlim(-0.1, 4.1)\n",
    "    ax.set_ylim(-0.1, 2.1)\n",
    "    ax.axis(\"off\")\n",
    "\n",
    "    # Divergence\n",
    "    ax = axes[1]\n",
    "    for i in range(32):\n",
    "        c, r = i % 8, i // 8\n",
    "        color = \"#81c784\" if i % 2 == 0 else \"#e57373\"\n",
    "        ax.add_patch(patches.Rectangle((c * 0.5, r * 0.5), 0.4, 0.4, facecolor=color, edgecolor=\"#2e7d32\"))\n",
    "    ax.set_title(\"Divergence: even threads A, odd threads B\", fontsize=11, fontweight=\"bold\")\n",
    "    ax.set_xlim(-0.1, 4.1)\n",
    "    ax.set_ylim(-0.1, 2.1)\n",
    "    ax.axis(\"off\")\n",
    "\n",
    "    # Coalescing\n",
    "    ax = axes[2]\n",
    "    for i in range(8):\n",
    "        ax.add_patch(patches.Rectangle((i * 0.6, 0.5), 0.5, 0.5, facecolor=\"#64b5f6\", edgecolor=\"#1976d2\"))\n",
    "        ax.text(i * 0.6 + 0.25, 0.75, f\"T{i}\", ha=\"center\", va=\"center\", fontsize=8, color=\"white\")\n",
    "    for i in range(4):\n",
    "        ax.add_patch(patches.Rectangle((i * 1.2, 0), 1.0, 0.3, facecolor=\"#b39ddb\", edgecolor=\"#7e57c2\"))\n",
    "        ax.text(i * 1.2 + 0.5, 0.15, f\"Cache{i}\", ha=\"center\", va=\"center\", fontsize=8)\n",
    "    ax.annotate(\"coalesced access\", xy=(2.4, 0.35), xytext=(2.4, 0.45),\n",
    "                arrowprops=dict(arrowstyle=\"->\", color=\"#666\"), ha=\"center\", fontsize=9)\n",
    "    ax.set_title(\"Memory Coalescing\", fontsize=11, fontweight=\"bold\")\n",
    "    ax.set_xlim(-0.2, 5.0)\n",
    "    ax.set_ylim(-0.2, 1.2)\n",
    "    ax.axis(\"off\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "draw_simt_and_divergence()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "334e61f6",
   "metadata": {},
   "source": [
    "\n",
    "## Part 6：Occupancy 计算与交互式探索\n",
    "\n",
    "Occupancy = 每个 SM 上同时活跃的 warp 数 / SM 支持的最大 warp 数。\n",
    "\n",
    "它受限于：\n",
    "- 每个 SM 的最大 thread 数\n",
    "- 每个 SM 的最大 warp 数\n",
    "- 每个 SM 的寄存器总数\n",
    "- 每个 SM 的 shared memory 容量\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fdb9e4ae",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Warps per block: 4\n",
      "Blocks per SM: 12\n",
      "Warps per SM: 48\n",
      "Occupancy: 100.0%\n",
      "Limiting factor: threads\n"
     ]
    }
   ],
   "source": [
    "\n",
    "def theoretical_occupancy(\n",
    "    block_size,\n",
    "    shared_mem_per_block,\n",
    "    regs_per_thread,\n",
    "    max_threads_per_sm=1536,\n",
    "    max_warps_per_sm=48,\n",
    "    max_regs_per_sm=65536,\n",
    "    max_smem_per_sm=49152,\n",
    "    warp_size=32,\n",
    "):\n",
    "    warps_per_block = (block_size + warp_size - 1) // warp_size\n",
    "\n",
    "    by_threads = max_threads_per_sm // block_size\n",
    "    by_warps = max_warps_per_sm // warps_per_block\n",
    "    by_regs = max_regs_per_sm // (regs_per_thread * block_size)\n",
    "    by_smem = max_smem_per_sm // shared_mem_per_block if shared_mem_per_block > 0 else float(\"inf\")\n",
    "    max_blocks_per_sm = 32\n",
    "\n",
    "    blocks_per_sm = min(by_threads, by_warps, by_regs, by_smem, max_blocks_per_sm)\n",
    "    warps_per_sm = blocks_per_sm * warps_per_block\n",
    "    occupancy = warps_per_sm / max_warps_per_sm\n",
    "\n",
    "    limiters = {\n",
    "        \"threads\": by_threads,\n",
    "        \"warps\": by_warps,\n",
    "        \"registers\": by_regs,\n",
    "        \"shared memory\": by_smem,\n",
    "    }\n",
    "    # 注意：shared memory 为 inf 时不应成为最小值\n",
    "    actual_limiters = {k: v for k, v in limiters.items() if v != float(\"inf\")}\n",
    "    limiting_factor = min(actual_limiters, key=actual_limiters.get)\n",
    "\n",
    "    return {\n",
    "        \"warps_per_block\": warps_per_block,\n",
    "        \"blocks_per_sm\": blocks_per_sm,\n",
    "        \"warps_per_sm\": warps_per_sm,\n",
    "        \"occupancy\": occupancy,\n",
    "        \"limiting_factor\": limiting_factor,\n",
    "        \"by\": {\n",
    "            \"threads\": by_threads,\n",
    "            \"warps\": by_warps,\n",
    "            \"registers\": by_regs,\n",
    "            \"shared_memory\": by_smem if shared_mem_per_block > 0 else float(\"inf\"),\n",
    "        },\n",
    "    }\n",
    "\n",
    "\n",
    "# 示例\n",
    "result = theoretical_occupancy(block_size=128, shared_mem_per_block=0, regs_per_thread=32)\n",
    "print(f\"Warps per block: {result['warps_per_block']}\")\n",
    "print(f\"Blocks per SM: {result['blocks_per_sm']}\")\n",
    "print(f\"Warps per SM: {result['warps_per_sm']}\")\n",
    "print(f\"Occupancy: {result['occupancy']*100:.1f}%\")\n",
    "print(f\"Limiting factor: {result['limiting_factor']}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "422f89da",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "import ipywidgets as widgets\n",
    "from IPython.display import display, clear_output\n",
    "\n",
    "\n",
    "block_slider = widgets.IntSlider(value=128, min=32, max=1024, step=32, description=\"Block size\")\n",
    "smem_slider = widgets.IntSlider(value=0, min=0, max=49152, step=4096, description=\"Shared mem (B)\")\n",
    "reg_slider = widgets.IntSlider(value=32, min=16, max=128, step=16, description=\"Regs/thread\")\n",
    "output = widgets.Output()\n",
    "\n",
    "\n",
    "def on_change(change):\n",
    "    with output:\n",
    "        clear_output(wait=True)\n",
    "        res = theoretical_occupancy(\n",
    "            block_size=block_slider.value,\n",
    "            shared_mem_per_block=smem_slider.value,\n",
    "            regs_per_thread=reg_slider.value,\n",
    "        )\n",
    "        print(f\"Block size: {block_slider.value}\")\n",
    "        print(f\"Shared mem/block: {smem_slider.value} B\")\n",
    "        print(f\"Regs/thread: {reg_slider.value}\")\n",
    "        print(f\"Warps/block: {res['warps_per_block']}\")\n",
    "        print(f\"Blocks/SM: {res['blocks_per_sm']}\")\n",
    "        print(f\"Warps/SM: {res['warps_per_sm']}\")\n",
    "        print(f\"Occupancy: {res['occupancy']*100:.1f}%\")\n",
    "        print(f\"Limiting factor: {res['limiting_factor']}\")\n",
    "        print(\"-\" * 30)\n",
    "        for k, v in res[\"by\"].items():\n",
    "            print(f\"  limit by {k}: {v:.2f}\")\n",
    "\n",
    "\n",
    "block_slider.observe(on_change, names=\"value\")\n",
    "smem_slider.observe(on_change, names=\"value\")\n",
    "reg_slider.observe(on_change, names=\"value\")\n",
    "\n",
    "on_change(None)\n",
    "display(widgets.VBox([block_slider, smem_slider, reg_slider, output]))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3dddda40",
   "metadata": {},
   "source": [
    "\n",
    "### 实践建议\n",
    "\n",
    "1. **优先使用 128 或 256 的 block size**：通常能拿到较高 occupancy。\n",
    "2. **减少寄存器使用**：编译器选项如 `-maxrregcount` 或 Triton 的 config tuning。\n",
    "3. **谨慎使用 shared memory**：每 block shared memory 越大，同时驻留的 block 越少。\n",
    "4. **避免 warp divergence**：让同一 warp 内 threads 走相同分支。\n",
    "5. **保证 memory coalescing**：相邻 thread 访问相邻地址。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "efd50c4e",
   "metadata": {},
   "source": [
    "\n",
    "## Part 7：总结与自查清单\n",
    "\n",
    "### 核心概念\n",
    "\n",
    "| 概念 | 一句话解释 |\n",
    "|------|-----------|\n",
    "| SM | GPU 的计算工厂，包含 scheduler、cores、register、shared memory |\n",
    "| CUDA Core | 执行单个 thread 指令的标量单元 |\n",
    "| Grid | Kernel 启动的所有 threads |\n",
    "| Block | Grid 的子集，内部可协作 |\n",
    "| Warp | 32 threads 的调度小组 |\n",
    "| Thread | 单个执行实例 |\n",
    "| Warp Scheduler | 选择 ready warp 派发指令，实现 latency hiding |\n",
    "| SIMT | 一个 warp 内 threads 执行同一条指令 |\n",
    "| Divergence | 同 warp 内 threads 走不同分支，导致串行执行 |\n",
    "| Coalescing | 相邻 threads 访问相邻地址，合并内存事务 |\n",
    "| Occupancy | SM 上活跃 warp 比例，越高越能隐藏延迟 |\n",
    "\n",
    "### 自查清单\n",
    "\n",
    "- [ ] 能画出 GPU → SM → CUDA Core 的层级结构\n",
    "- [ ] 能解释 Grid/Block/Warp/Thread 的关系\n",
    "- [ ] 能写出一个 thread 的全局 ID 公式\n",
    "- [ ] 能解释 Warp Scheduler 如何通过切换 warp 隐藏延迟\n",
    "- [ ] 能说明 warp divergence 的危害和避免方法\n",
    "- [ ] 能解释 memory coalescing 为什么重要\n",
    "- [ ] 能用 occupancy 公式分析一个 kernel 的瓶颈\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv (3.11.15)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
