Skip to content

Instantly share code, notes, and snippets.

@NTT123
Created September 27, 2025 09:12
Show Gist options
  • Select an option

  • Save NTT123/05f603c748e5f26bbc07bb636883e9ee to your computer and use it in GitHub Desktop.

Select an option

Save NTT123/05f603c748e5f26bbc07bb636883e9ee to your computer and use it in GitHub Desktop.
print-cute-tv-layout.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4",
"authorship_tag": "ABX9TyP3P4GIbeDxQsenxLkWNYG6",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/NTT123/05f603c748e5f26bbc07bb636883e9ee/print-cute-tv-layout.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"!nvidia-smi -L\n",
"%pip uninstall -yq cuda-python\n",
"%pip install -Uq nvidia-cutlass-dsl==4.2.0 cuda-bindings==12.9.1 cuda-python==12.9.1 svgwrite\n",
"import sys; sys.path.append(\"/usr/local/lib/python3.12/dist-packages/nvidia_cutlass_dsl/python_packages/\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ocmElKJgax6W",
"outputId": "419df34a-71c9-4002-e96e-8cfffc9c72ca"
},
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"GPU 0: Tesla T4 (UUID: GPU-659f9965-633f-7d6d-2a07-bda9ed5f0618)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.2/62.2 MB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.4/12.4 MB\u001b[0m \u001b[31m132.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.1/67.1 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h"
]
}
]
},
{
"cell_type": "code",
"source": [
"def render_layout_svg(layout, output_file):\n",
" import numpy as np\n",
" import svgwrite\n",
" from cutlass.cute import size\n",
"\n",
" # 8 RBG-255 Greyscale colors\n",
" rgb_255_colors = [\n",
" (255, 255, 255),\n",
" (230, 230, 230),\n",
" (205, 205, 205),\n",
" (180, 180, 180),\n",
" (155, 155, 155),\n",
" (130, 130, 130),\n",
" (105, 105, 105),\n",
" (80, 80, 80),\n",
" ]\n",
"\n",
" # Cell size in pixels\n",
" cell_size = 20\n",
"\n",
" # Grid size\n",
" M, N = size(layout[0]), size(layout[1])\n",
"\n",
" # Create SVG canvas\n",
" dwg = svgwrite.Drawing(output_file, size=(N * cell_size, M * cell_size))\n",
"\n",
" # Draw grid cells\n",
" for i in range(M):\n",
" for j in range(N):\n",
" idx = layout((i, j))\n",
" x = j * cell_size\n",
" y = i * cell_size\n",
"\n",
" # Draw rectangle\n",
" dwg.add(\n",
" dwg.rect(\n",
" insert=(x, y),\n",
" size=(cell_size, cell_size),\n",
" fill=svgwrite.rgb(\n",
" *rgb_255_colors[idx % len(rgb_255_colors)], mode=\"RGB\"\n",
" ),\n",
" stroke=\"black\",\n",
" )\n",
" )\n",
"\n",
" # Add label text\n",
" dwg.add(\n",
" dwg.text(\n",
" str(idx),\n",
" insert=(x + cell_size // 2, y + cell_size // 2),\n",
" text_anchor=\"middle\",\n",
" alignment_baseline=\"central\",\n",
" font_size=\"8px\",\n",
" )\n",
" )\n",
"\n",
" dwg.save()"
],
"metadata": {
"id": "EAnB3Skgd4dh"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def render_tv_layout_svg(layout, tile_mn, output_file):\n",
" import numpy as np\n",
" import svgwrite\n",
" from cutlass.cute import size, rank, make_identity_tensor\n",
"\n",
" assert rank(layout) == 2, \"Expected a rank-2 TV Layout\"\n",
" assert rank(tile_mn) == 2, \"Expected a rank-2 MN Tile\"\n",
"\n",
" coord = make_identity_tensor(tile_mn)\n",
" layout = cute.composition(coord, layout)\n",
" # assert congruent(coprofile(layout), (0,0)), \"Expected a 2D codomain (tid,vid) -> (m,n)\"\n",
"\n",
" # 8 RGB-255 colors, TODO Generalize\n",
" rgb_255_colors = [\n",
" (175, 175, 255),\n",
" (175, 255, 175),\n",
" (255, 255, 175),\n",
" (255, 175, 175),\n",
" (210, 210, 255),\n",
" (210, 255, 210),\n",
" (255, 255, 210),\n",
" (255, 210, 210),\n",
" ]\n",
"\n",
" # Cell size in pixels\n",
" cell_size = 20\n",
"\n",
" # Grid size\n",
" M, N = size(tile_mn[0]), size(tile_mn[1])\n",
" filled = np.zeros((M, N), dtype=bool)\n",
"\n",
" # Create SVG canvas\n",
" dwg = svgwrite.Drawing(output_file, size=(N * cell_size, M * cell_size))\n",
"\n",
" # Fill in grid\n",
" for i in range(M):\n",
" for j in range(N):\n",
" dwg.add(\n",
" dwg.rect(\n",
" insert=(j * cell_size, i * cell_size),\n",
" size=(cell_size, cell_size),\n",
" fill=\"white\",\n",
" stroke=\"black\",\n",
" )\n",
" )\n",
"\n",
" # Draw TV cells\n",
" for tid in range(size(layout, mode=[0])):\n",
" for vid in range(size(layout, mode=[1])):\n",
" i, j = layout[(tid, vid)]\n",
" x = j * cell_size\n",
" y = i * cell_size\n",
"\n",
" if filled[i, j]:\n",
" continue\n",
" filled[i, j] = True\n",
"\n",
" # Draw rectangle\n",
" dwg.add(\n",
" dwg.rect(\n",
" insert=(x, y),\n",
" size=(cell_size, cell_size),\n",
" fill=svgwrite.rgb(\n",
" *rgb_255_colors[tid % len(rgb_255_colors)], mode=\"RGB\"\n",
" ),\n",
" stroke=\"black\",\n",
" )\n",
" )\n",
"\n",
" # Add label text\n",
" dwg.add(\n",
" dwg.text(\n",
" f\"T{tid}\",\n",
" insert=(x + cell_size // 2, y + 1 * cell_size // 4),\n",
" text_anchor=\"middle\",\n",
" alignment_baseline=\"central\",\n",
" font_size=\"8px\",\n",
" )\n",
" )\n",
" dwg.add(\n",
" dwg.text(\n",
" f\"V{vid}\",\n",
" insert=(x + cell_size // 2, y + 3 * cell_size // 4),\n",
" text_anchor=\"middle\",\n",
" alignment_baseline=\"central\",\n",
" font_size=\"8px\",\n",
" )\n",
" )\n",
"\n",
" dwg.save()"
],
"metadata": {
"id": "EMKv180Rr-PI"
},
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from cutlass import cute\n",
"\n",
"@cute.jit\n",
"def run():\n",
" layout = cute.make_layout((4, 6), stride=(3, 1))\n",
" render_layout_svg(layout, \"layout.svg\")\n",
"\n",
" tile_mn = (8, 8)\n",
" tv_layout = cute.make_layout(\n",
" shape=((2, 2, 2), (2, 2, 2)), stride=((1, 16, 4), (8, 2, 32))\n",
" )\n",
" render_tv_layout_svg(tv_layout, tile_mn, \"tv_layout.svg\")\n",
"\n",
"\n",
"run()"
],
"metadata": {
"id": "okTPX5yca0Am"
},
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def display_svg(file_path):\n",
" from IPython.display import SVG, display\n",
"\n",
" with open(file_path, \"r\") as f:\n",
" svg_content = f.read()\n",
"\n",
" return display(SVG(svg_content))"
],
"metadata": {
"id": "EP-D7c6HW6rZ"
},
"execution_count": 5,
"outputs": []
},
{
"cell_type": "code",
"source": [
"display_svg(\"layout.svg\")"
],
"metadata": {
"id": "4zcAfDM1cycw",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 101
},
"outputId": "5b200546-f6dc-4ee7-98ef-330cdbb5b52f"
},
"execution_count": 6,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.SVG object>"
],
"image/svg+xml": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:ev=\"http://www.w3.org/2001/xml-events\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" baseProfile=\"full\" height=\"80\" version=\"1.1\" width=\"120\"><defs/><rect fill=\"rgb(255,255,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"10\">0</text><rect fill=\"rgb(230,230,230)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"10\">1</text><rect fill=\"rgb(205,205,205)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"10\">2</text><rect fill=\"rgb(180,180,180)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"10\">3</text><rect fill=\"rgb(155,155,155)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"10\">4</text><rect fill=\"rgb(130,130,130)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"10\">5</text><rect fill=\"rgb(180,180,180)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"30\">3</text><rect fill=\"rgb(155,155,155)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"30\">4</text><rect fill=\"rgb(130,130,130)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"30\">5</text><rect fill=\"rgb(105,105,105)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"30\">6</text><rect fill=\"rgb(80,80,80)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"30\">7</text><rect fill=\"rgb(255,255,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"30\">8</text><rect fill=\"rgb(105,105,105)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"50\">6</text><rect fill=\"rgb(80,80,80)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"50\">7</text><rect fill=\"rgb(255,255,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"50\">8</text><rect fill=\"rgb(230,230,230)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"50\">9</text><rect fill=\"rgb(205,205,205)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"50\">10</text><rect fill=\"rgb(180,180,180)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"50\">11</text><rect fill=\"rgb(230,230,230)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"70\">9</text><rect fill=\"rgb(205,205,205)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"70\">10</text><rect fill=\"rgb(180,180,180)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"70\">11</text><rect fill=\"rgb(155,155,155)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"70\">12</text><rect fill=\"rgb(130,130,130)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"70\">13</text><rect fill=\"rgb(105,105,105)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"70\">14</text></svg>"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"display_svg(\"tv_layout.svg\")"
],
"metadata": {
"id": "KsifOBN9dlQc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 181
},
"outputId": "e0a91df5-8a37-4a24-c9af-3e729b472f9c"
},
"execution_count": 7,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.SVG object>"
],
"image/svg+xml": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:ev=\"http://www.w3.org/2001/xml-events\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" baseProfile=\"full\" height=\"160\" version=\"1.1\" width=\"160\"><defs/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"0\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"20\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"40\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"60\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"80\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"100\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"120\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"140\"/><rect fill=\"white\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"140\"/><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"5\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"15\">V0</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"5\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"15\">V1</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"45\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"55\">V2</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"45\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"55\">V3</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"5\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"15\">V4</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"5\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"15\">V5</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"45\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"55\">V6</text><rect fill=\"rgb(175,175,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"45\">T0</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"55\">V7</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"25\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"35\">V0</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"25\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"35\">V1</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"65\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"75\">V2</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"65\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"75\">V3</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"25\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"35\">V4</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"25\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"35\">V5</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"65\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"75\">V6</text><rect fill=\"rgb(175,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"65\">T1</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"75\">V7</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"5\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"15\">V0</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"5\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"15\">V1</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"45\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"55\">V2</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"45\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"55\">V3</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"5\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"15\">V4</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"0\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"5\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"15\">V5</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"45\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"55\">V6</text><rect fill=\"rgb(255,255,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"40\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"45\">T2</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"55\">V7</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"25\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"35\">V0</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"25\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"35\">V1</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"65\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"75\">V2</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"65\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"75\">V3</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"25\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"35\">V4</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"20\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"25\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"35\">V5</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"65\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"75\">V6</text><rect fill=\"rgb(255,175,175)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"60\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"65\">T3</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"75\">V7</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"85\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"95\">V0</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"85\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"95\">V1</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"125\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"135\">V2</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"125\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"135\">V3</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"85\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"95\">V4</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"85\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"95\">V5</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"125\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"135\">V6</text><rect fill=\"rgb(210,210,255)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"125\">T4</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"135\">V7</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"105\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"115\">V0</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"105\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"115\">V1</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"0\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"145\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"10\" y=\"155\">V2</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"20\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"145\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"30\" y=\"155\">V3</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"105\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"115\">V4</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"105\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"115\">V5</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"80\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"145\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"90\" y=\"155\">V6</text><rect fill=\"rgb(210,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"100\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"145\">T5</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"110\" y=\"155\">V7</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"85\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"95\">V0</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"85\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"95\">V1</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"125\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"135\">V2</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"125\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"135\">V3</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"85\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"95\">V4</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"80\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"85\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"95\">V5</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"125\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"135\">V6</text><rect fill=\"rgb(255,255,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"120\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"125\">T6</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"135\">V7</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"105\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"115\">V0</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"105\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"115\">V1</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"40\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"145\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"50\" y=\"155\">V2</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"60\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"145\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"70\" y=\"155\">V3</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"105\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"115\">V4</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"100\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"105\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"115\">V5</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"120\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"145\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"130\" y=\"155\">V6</text><rect fill=\"rgb(255,210,210)\" height=\"20\" stroke=\"black\" width=\"20\" x=\"140\" y=\"140\"/><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"145\">T7</text><text alignment-baseline=\"central\" font-size=\"8px\" text-anchor=\"middle\" x=\"150\" y=\"155\">V7</text></svg>"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "YOV7Dtk1Z-nk"
},
"execution_count": 7,
"outputs": []
}
]
}
@NTT123
Copy link
Author

NTT123 commented Sep 27, 2025

This is a slightly modified version of @ccecka's implementation at NVIDIA/cutlass#2453 (comment)

@chrisHuxi
Copy link

very useful, thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment