diff options
author | Benoit Jacob <benoitjacob@google.com> | 2021-01-15 07:07:26 +0300 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2021-01-15 07:07:53 +0300 |
commit | d7fb861d488d15885dcfa4851ba6f821ce34902a (patch) | |
tree | 491c93d163604688981da0bfd9a153c6bd9ce2d9 | |
parent | 2cbb179f2d1c861cdcf215e897234b2d47b09abf (diff) |
Add a trimmed dependency graph and its generator, for doc purposes.
PiperOrigin-RevId: 351929118
-rw-r--r-- | README.md | 4 | ||||
-rwxr-xr-x | doc/depgraph.sh | 152 | ||||
-rw-r--r-- | doc/depgraph.svg | 418 |
3 files changed, 572 insertions, 2 deletions
@@ -20,6 +20,6 @@ small binary size. ## Documentation -Some documentation will eventually be available in the doc/ directory, see -[doc/README.md](doc/README.md). +Some documentation will eventually be available in the g3doc/ directory, see +[g3doc/README.md](g3doc/README.md). diff --git a/doc/depgraph.sh b/doc/depgraph.sh new file mode 100755 index 0000000..3dca335 --- /dev/null +++ b/doc/depgraph.sh @@ -0,0 +1,152 @@ +#!/bin/bash + +# Generates a graphviz dependency graph for :ruy, with details trimmed. +# Suggested rendering: pipe to `neato` (part of graphviz standard distribution) +# doc/depgraph.sh | dot -Tsvg > depgraph.svg + +drop=( + ':platform' + ':check_macros' + ':asm_helpers' + ':size_util' + ':system_aligned_alloc' + ':side_pair' + ':opt_set' + ':blocking_counter' + ':wait' + ':time' + ':path' + ':performance_advisory' + ':tune' + ':matrix' + ':mat' + ':mul_params' + ':context_get_ctx' + ':have_built_path_for' + ':pack_common' + ':kernel_common' + 'profiler:instrumentation' + '\bclog\b' + '\bcpuinfo_impl\b' + ':apply_multiplier' + '\blabel=' +) + +graph="$(bazel query 'kind("cc_library", deps(//ruy))' --output graph --noimplicit_deps 2>/dev/null)" + +graph="$(echo "${graph}" | sed 's|//ruy/\?||g')" + +for t in "${drop[@]}"; do + graph="$(echo "${graph}" | grep -v "${t}")" +done + +graph="$(echo "${graph}" | sed 's|//:cpuinfo_with_unstripped_include_path||g')" +graph="$(echo "${graph}" | sed 's|//third_party/cpuinfo:[a-z0-9_]*|@cpuinfo|g')" + +frontend=( + ':ruy' + ':context' + ':frontend' + ':prepare_packed_matrices' + ':create_trmul_params' + ':validate' +) + +middleend=( + ':ctx' + ':trmul_params' + ':trmul' + ':block_map' + ':cpuinfo' + ':cpu_cache_params' + ':allocator' + ':thread_pool' + ':prepacked_cache' +) + +backend=( + ':kernel.*' + ':pack.*' +) + +frontend_lines=() +middleend_lines=() +backend_lines=() +misc_lines=() +arrow_lines=() + +while IFS= read -r line; do + if [[ "${line}" =~ '->' ]]; then + arrow_lines+=("${line}") + else + handled=false + if [ $handled = false ]; then + for f in "${frontend[@]}"; do + if [[ "${line}" =~ ${f} ]]; then + frontend_lines+=("${line}") + handled=true + break + fi + done + fi + if [ $handled = false ]; then + for f in "${middleend[@]}"; do + if [[ "${line}" =~ ${f} ]]; then + middleend_lines+=("${line}") + handled=true + break + fi + done + fi + if [ $handled = false ]; then + for f in "${backend[@]}"; do + if [[ "${line}" =~ ${f} ]]; then + backend_lines+=("${line}") + handled=true + break + fi + done + fi + if [ $handled = false ]; then + if [[ "${line}" =~ ^[[:space:]]+\" ]]; then + misc_lines+=("${line}") + fi + fi + fi +done <<< "${graph}" + +echo "digraph ruy {" +echo " splines = true" +echo " node [shape=box]" +for f in "${frontend_lines[@]}"; do + echo " $f [style=filled, color=lightblue];" +done +for m in "${middleend_lines[@]}"; do + echo " $m [style=filled, color=lightgreen];" +done +for b in "${backend_lines[@]}"; do + echo " $b [style=filled, color=indianred1];" +done +for m in "${misc_lines[@]}"; do + echo "$m" +done +for a in "${arrow_lines[@]}"; do + echo "$a" +done +echo " \":create_trmul_params\" -> \":trmul\" [style=invis]" +echo " subgraph cluster_legend_margin {" +echo " style=invis" +echo " margin=80" +echo " subgraph cluster_legend {" +echo " style=\"\"" +echo " label=\"Legend\"" +echo " fontsize=20" +echo " margin=20" +echo " labelloc=t" +echo " frontend [label=\"Front-end\", style=filled, color=lightblue]" +echo " middleend [label=\"Middle-end\", style=filled, color=lightgreen]" +echo " backend [label=\"Back-end\", style=filled, color=indianred1]" +echo " frontend -> middleend -> backend [style=invis]" +echo " }" +echo " }" +echo "}" diff --git a/doc/depgraph.svg b/doc/depgraph.svg new file mode 100644 index 0000000..df78ed4 --- /dev/null +++ b/doc/depgraph.svg @@ -0,0 +1,418 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.43.0 (0) + --> +<!-- Title: ruy Pages: 1 --> +<svg width="1572pt" height="703pt" + viewBox="0.00 0.00 1572.12 703.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 699)"> +<title>ruy</title> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-699 1568.12,-699 1568.12,4 -4,4"/> +<g id="clust1" class="cluster"> +<title>cluster_legend_margin</title> +</g> +<g id="clust2" class="cluster"> +<title>cluster_legend</title> +<polygon fill="none" stroke="black" points="1356.12,-357 1356.12,-607 1476.12,-607 1476.12,-357 1356.12,-357"/> +<text text-anchor="middle" x="1416.12" y="-587" font-family="Times,serif" font-size="20.00">Legend</text> +</g> +<!-- :ruy --> +<g id="node1" class="node"> +<title>:ruy</title> +<polygon fill="lightblue" stroke="lightblue" points="205.12,-557 151.12,-557 151.12,-521 205.12,-521 205.12,-557"/> +<text text-anchor="middle" x="178.12" y="-535.3" font-family="Times,serif" font-size="14.00">:ruy</text> +</g> +<!-- :frontend --> +<g id="node2" class="node"> +<title>:frontend</title> +<polygon fill="lightblue" stroke="lightblue" points="361.12,-485 295.12,-485 295.12,-449 361.12,-449 361.12,-485"/> +<text text-anchor="middle" x="328.12" y="-463.3" font-family="Times,serif" font-size="14.00">:frontend</text> +</g> +<!-- :ruy->:frontend --> +<g id="edge2" class="edge"> +<title>:ruy->:frontend</title> +<path fill="none" stroke="black" d="M205.29,-525.32C227.69,-514.87 259.88,-499.85 285.68,-487.81"/> +<polygon fill="black" stroke="black" points="287.29,-490.92 294.87,-483.52 284.33,-484.58 287.29,-490.92"/> +</g> +<!-- :context --> +<g id="node6" class="node"> +<title>:context</title> +<polygon fill="lightblue" stroke="lightblue" points="67.12,-269 7.12,-269 7.12,-233 67.12,-233 67.12,-269"/> +<text text-anchor="middle" x="37.12" y="-247.3" font-family="Times,serif" font-size="14.00">:context</text> +</g> +<!-- :ruy->:context --> +<g id="edge1" class="edge"> +<title>:ruy->:context</title> +<path fill="none" stroke="black" d="M161.22,-520.9C139.62,-498.14 102.48,-455.76 81.12,-413 59.13,-368.98 46.95,-312.53 41.25,-279.5"/> +<polygon fill="black" stroke="black" points="44.64,-278.54 39.56,-269.24 37.73,-279.68 44.64,-278.54"/> +</g> +<!-- :validate --> +<g id="node3" class="node"> +<title>:validate</title> +<polygon fill="lightblue" stroke="lightblue" points="1195.62,-413 1132.62,-413 1132.62,-377 1195.62,-377 1195.62,-413"/> +<text text-anchor="middle" x="1164.12" y="-391.3" font-family="Times,serif" font-size="14.00">:validate</text> +</g> +<!-- :frontend->:validate --> +<g id="edge9" class="edge"> +<title>:frontend->:validate</title> +<path fill="none" stroke="black" d="M361.38,-465.04C492.01,-461.06 970.08,-444.63 1118.12,-413 1119.61,-412.68 1121.1,-412.33 1122.61,-411.94"/> +<polygon fill="black" stroke="black" points="1123.95,-415.2 1132.55,-409.01 1121.97,-408.48 1123.95,-415.2"/> +</g> +<!-- :prepare_packed_matrices --> +<g id="node4" class="node"> +<title>:prepare_packed_matrices</title> +<polygon fill="lightblue" stroke="lightblue" points="281.62,-269 122.62,-269 122.62,-233 281.62,-233 281.62,-269"/> +<text text-anchor="middle" x="202.12" y="-247.3" font-family="Times,serif" font-size="14.00">:prepare_packed_matrices</text> +</g> +<!-- :frontend->:prepare_packed_matrices --> +<g id="edge6" class="edge"> +<title>:frontend->:prepare_packed_matrices</title> +<path fill="none" stroke="black" d="M317.28,-448.9C310.77,-438.56 302.37,-425.08 295.12,-413 266.71,-365.64 234.73,-309.66 216.65,-277.75"/> +<polygon fill="black" stroke="black" points="219.68,-276.01 211.71,-269.03 213.59,-279.46 219.68,-276.01"/> +</g> +<!-- :create_trmul_params --> +<g id="node5" class="node"> +<title>:create_trmul_params</title> +<polygon fill="lightblue" stroke="lightblue" points="511.12,-413 375.12,-413 375.12,-377 511.12,-377 511.12,-413"/> +<text text-anchor="middle" x="443.12" y="-391.3" font-family="Times,serif" font-size="14.00">:create_trmul_params</text> +</g> +<!-- :frontend->:create_trmul_params --> +<g id="edge4" class="edge"> +<title>:frontend->:create_trmul_params</title> +<path fill="none" stroke="black" d="M356.25,-448.88C371.29,-439.72 389.99,-428.34 406.18,-418.48"/> +<polygon fill="black" stroke="black" points="408.16,-421.38 414.88,-413.19 404.52,-415.4 408.16,-421.38"/> +</g> +<!-- :trmul --> +<g id="node7" class="node"> +<title>:trmul</title> +<polygon fill="lightgreen" stroke="lightgreen" points="467.12,-269 413.12,-269 413.12,-233 467.12,-233 467.12,-269"/> +<text text-anchor="middle" x="440.12" y="-247.3" font-family="Times,serif" font-size="14.00">:trmul</text> +</g> +<!-- :frontend->:trmul --> +<g id="edge7" class="edge"> +<title>:frontend->:trmul</title> +<path fill="none" stroke="black" d="M326.35,-448.95C323.55,-412.6 322.34,-326.75 366.12,-277 375.47,-266.37 389.5,-260.26 402.84,-256.74"/> +<polygon fill="black" stroke="black" points="403.81,-260.11 412.82,-254.52 402.3,-253.27 403.81,-260.11"/> +</g> +<!-- :trmul_params --> +<g id="node8" class="node"> +<title>:trmul_params</title> +<polygon fill="lightgreen" stroke="lightgreen" points="331.62,-188.5 234.62,-188.5 234.62,-152.5 331.62,-152.5 331.62,-188.5"/> +<text text-anchor="middle" x="283.12" y="-166.8" font-family="Times,serif" font-size="14.00">:trmul_params</text> +</g> +<!-- :frontend->:trmul_params --> +<g id="edge8" class="edge"> +<title>:frontend->:trmul_params</title> +<path fill="none" stroke="black" d="M325.51,-448.89C318.02,-399.89 296.45,-258.7 287.3,-198.84"/> +<polygon fill="black" stroke="black" points="290.71,-198.01 285.74,-188.65 283.79,-199.07 290.71,-198.01"/> +</g> +<!-- :ctx --> +<g id="node9" class="node"> +<title>:ctx</title> +<polygon fill="lightgreen" stroke="lightgreen" points="178.12,-188.5 124.12,-188.5 124.12,-152.5 178.12,-152.5 178.12,-188.5"/> +<text text-anchor="middle" x="151.12" y="-166.8" font-family="Times,serif" font-size="14.00">:ctx</text> +</g> +<!-- :frontend->:ctx --> +<g id="edge5" class="edge"> +<title>:frontend->:ctx</title> +<path fill="none" stroke="black" d="M295.08,-455.85C270.82,-447.23 238.05,-433.04 214.12,-413 154.19,-362.81 136.66,-343.55 113.12,-269 108.31,-253.74 108.75,-248.39 113.12,-233 116.77,-220.17 123.93,-207.4 131.07,-196.84"/> +<polygon fill="black" stroke="black" points="134.02,-198.72 136.98,-188.55 128.32,-194.66 134.02,-198.72"/> +</g> +<!-- :allocator --> +<g id="node14" class="node"> +<title>:allocator</title> +<polygon fill="lightgreen" stroke="lightgreen" points="446.12,-108 378.12,-108 378.12,-72 446.12,-72 446.12,-108"/> +<text text-anchor="middle" x="412.12" y="-86.3" font-family="Times,serif" font-size="14.00">:allocator</text> +</g> +<!-- :frontend->:allocator --> +<g id="edge3" class="edge"> +<title>:frontend->:allocator</title> +<path fill="none" stroke="black" d="M361.32,-459.89C496.93,-434.14 1005.36,-329.67 1084.12,-197 1096.15,-176.74 1100.11,-161.3 1084.12,-144 1041.6,-97.99 600.01,-91.87 456.74,-91.1"/> +<polygon fill="black" stroke="black" points="456.57,-87.6 446.55,-91.05 456.53,-94.6 456.57,-87.6"/> +</g> +<!-- :prepare_packed_matrices->:trmul_params --> +<g id="edge13" class="edge"> +<title>:prepare_packed_matrices->:trmul_params</title> +<path fill="none" stroke="black" d="M219.7,-232.97C230.95,-222.06 245.72,-207.75 258.18,-195.68"/> +<polygon fill="black" stroke="black" points="260.84,-197.97 265.58,-188.5 255.96,-192.95 260.84,-197.97"/> +</g> +<!-- :prepare_packed_matrices->:ctx --> +<g id="edge11" class="edge"> +<title>:prepare_packed_matrices->:ctx</title> +<path fill="none" stroke="black" d="M191.06,-232.97C184.24,-222.47 175.37,-208.82 167.72,-197.05"/> +<polygon fill="black" stroke="black" points="170.55,-194.98 162.17,-188.5 164.68,-198.79 170.55,-194.98"/> +</g> +<!-- :prepare_packed_matrices->:allocator --> +<g id="edge10" class="edge"> +<title>:prepare_packed_matrices->:allocator</title> +<path fill="none" stroke="black" d="M200.71,-232.78C199.81,-209.44 201.93,-167.93 225.12,-144 268.88,-98.85 302.98,-125.39 368.16,-107.88"/> +<polygon fill="black" stroke="black" points="369.41,-111.15 378,-104.96 367.42,-104.44 369.41,-111.15"/> +</g> +<!-- :prepacked_cache --> +<g id="node15" class="node"> +<title>:prepacked_cache</title> +<polygon fill="lightgreen" stroke="lightgreen" points="121.62,-108 8.62,-108 8.62,-72 121.62,-72 121.62,-108"/> +<text text-anchor="middle" x="65.12" y="-86.3" font-family="Times,serif" font-size="14.00">:prepacked_cache</text> +</g> +<!-- :prepare_packed_matrices->:prepacked_cache --> +<g id="edge12" class="edge"> +<title>:prepare_packed_matrices->:prepacked_cache</title> +<path fill="none" stroke="black" d="M163.52,-232.78C147,-223.93 128.48,-211.86 115.12,-197 94.48,-174.04 80.74,-141.05 72.97,-117.99"/> +<polygon fill="black" stroke="black" points="76.21,-116.62 69.82,-108.17 69.54,-118.76 76.21,-116.62"/> +</g> +<!-- :create_trmul_params->:trmul --> +<!-- :create_trmul_params->:trmul_params --> +<g id="edge18" class="edge"> +<title>:create_trmul_params->:trmul_params</title> +<path fill="none" stroke="black" d="M437.12,-376.6C425.78,-345.44 398.93,-279.08 361.12,-233 349.14,-218.4 333.14,-205.04 318.75,-194.53"/> +<polygon fill="black" stroke="black" points="320.68,-191.61 310.5,-188.68 316.63,-197.32 320.68,-191.61"/> +</g> +<!-- :create_trmul_params->:ctx --> +<g id="edge15" class="edge"> +<title>:create_trmul_params->:ctx</title> +<path fill="none" stroke="black" d="M430.56,-376.84C406.45,-344.88 350.65,-275.64 290.12,-233 258.47,-210.71 217.45,-193.77 188.19,-183.37"/> +<polygon fill="black" stroke="black" points="188.96,-179.93 178.37,-179.96 186.67,-186.54 188.96,-179.93"/> +</g> +<!-- :create_trmul_params->:allocator --> +<g id="edge14" class="edge"> +<title>:create_trmul_params->:allocator</title> +<path fill="none" stroke="black" d="M467.54,-376.85C523.87,-335.21 653.56,-226.13 592.12,-144 575.85,-122.25 504.4,-106.35 456.56,-97.9"/> +<polygon fill="black" stroke="black" points="456.89,-94.41 446.44,-96.16 455.7,-101.31 456.89,-94.41"/> +</g> +<!-- :kernel --> +<g id="node16" class="node"> +<title>:kernel</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="943.12,-269 889.12,-269 889.12,-233 943.12,-233 943.12,-269"/> +<text text-anchor="middle" x="916.12" y="-247.3" font-family="Times,serif" font-size="14.00">:kernel</text> +</g> +<!-- :create_trmul_params->:kernel --> +<g id="edge16" class="edge"> +<title>:create_trmul_params->:kernel</title> +<path fill="none" stroke="black" d="M500.18,-376.87C598.54,-347.34 797.35,-287.66 879.42,-263.02"/> +<polygon fill="black" stroke="black" points="880.49,-266.35 889.06,-260.12 878.47,-259.65 880.49,-266.35"/> +</g> +<!-- :pack --> +<g id="node19" class="node"> +<title>:pack</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="704.12,-269 650.12,-269 650.12,-233 704.12,-233 704.12,-269"/> +<text text-anchor="middle" x="677.12" y="-247.3" font-family="Times,serif" font-size="14.00">:pack</text> +</g> +<!-- :create_trmul_params->:pack --> +<g id="edge17" class="edge"> +<title>:create_trmul_params->:pack</title> +<path fill="none" stroke="black" d="M471.35,-376.87C513.94,-351.02 594.62,-302.06 641.3,-273.74"/> +<polygon fill="black" stroke="black" points="643.15,-276.71 649.88,-268.53 639.52,-270.73 643.15,-276.71"/> +</g> +<!-- :context->:ctx --> +<g id="edge20" class="edge"> +<title>:context->:ctx</title> +<path fill="none" stroke="black" d="M61.86,-232.97C78.29,-221.65 100.06,-206.66 117.98,-194.32"/> +<polygon fill="black" stroke="black" points="120.18,-197.05 126.43,-188.5 116.21,-191.29 120.18,-197.05"/> +</g> +<!-- :thread_pool --> +<g id="node10" class="node"> +<title>:thread_pool</title> +<polygon fill="lightgreen" stroke="lightgreen" points="224.62,-108 139.62,-108 139.62,-72 224.62,-72 224.62,-108"/> +<text text-anchor="middle" x="182.12" y="-86.3" font-family="Times,serif" font-size="14.00">:thread_pool</text> +</g> +<!-- :context->:thread_pool --> +<g id="edge22" class="edge"> +<title>:context->:thread_pool</title> +<path fill="none" stroke="black" d="M33.03,-232.68C28.74,-209.98 24.98,-169.98 44.12,-144 46.92,-140.2 92.03,-123.28 129.92,-109.57"/> +<polygon fill="black" stroke="black" points="131.15,-112.84 139.37,-106.16 128.78,-106.26 131.15,-112.84"/> +</g> +<!-- :context->:allocator --> +<g id="edge19" class="edge"> +<title>:context->:allocator</title> +<path fill="none" stroke="black" d="M44.52,-232.69C55.87,-208.44 80.01,-164.98 115.12,-144 210.23,-87.17 256.26,-134.33 368.14,-107.8"/> +<polygon fill="black" stroke="black" points="369.26,-111.13 378.1,-105.29 367.55,-104.34 369.26,-111.13"/> +</g> +<!-- :context->:prepacked_cache --> +<g id="edge21" class="edge"> +<title>:context->:prepacked_cache</title> +<path fill="none" stroke="black" d="M23.98,-232.91C17.2,-223.01 9.64,-209.96 6.12,-197 -0.04,-174.26 -3.47,-165.51 6.12,-144 11.2,-132.6 20.08,-122.63 29.43,-114.51"/> +<polygon fill="black" stroke="black" points="31.75,-117.14 37.32,-108.13 27.35,-111.69 31.75,-117.14"/> +</g> +<!-- :trmul->:trmul_params --> +<g id="edge33" class="edge"> +<title>:trmul->:trmul_params</title> +<path fill="none" stroke="black" d="M412.78,-236.33C388.94,-224.41 353.95,-206.92 326.33,-193.1"/> +<polygon fill="black" stroke="black" points="327.78,-189.92 317.27,-188.58 324.65,-196.18 327.78,-189.92"/> +</g> +<!-- :trmul->:ctx --> +<g id="edge31" class="edge"> +<title>:trmul->:ctx</title> +<path fill="none" stroke="black" d="M413.1,-244.16C372.15,-235.13 292.05,-216.74 225.12,-197 212.9,-193.4 199.71,-189.01 187.89,-184.9"/> +<polygon fill="black" stroke="black" points="188.94,-181.56 178.34,-181.54 186.61,-188.16 188.94,-181.56"/> +</g> +<!-- :trmul->:thread_pool --> +<g id="edge32" class="edge"> +<title>:trmul->:thread_pool</title> +<path fill="none" stroke="black" d="M414.98,-232.83C401.92,-223.2 386.21,-210.44 374.12,-197 355.41,-176.19 362.2,-161.2 340.12,-144 309.51,-120.15 267.61,-106.74 234.64,-99.38"/> +<polygon fill="black" stroke="black" points="235.23,-95.93 224.72,-97.29 233.79,-102.78 235.23,-95.93"/> +</g> +<!-- :cpuinfo --> +<g id="node11" class="node"> +<title>:cpuinfo</title> +<polygon fill="lightgreen" stroke="lightgreen" points="360.12,-108 298.12,-108 298.12,-72 360.12,-72 360.12,-108"/> +<text text-anchor="middle" x="329.12" y="-86.3" font-family="Times,serif" font-size="14.00">:cpuinfo</text> +</g> +<!-- :trmul->:cpuinfo --> +<g id="edge30" class="edge"> +<title>:trmul->:cpuinfo</title> +<path fill="none" stroke="black" d="M430.57,-232.98C418.34,-211.62 396.1,-174.12 374.12,-144 367.15,-134.44 358.92,-124.44 351.42,-115.73"/> +<polygon fill="black" stroke="black" points="354.01,-113.37 344.79,-108.14 348.73,-117.97 354.01,-113.37"/> +</g> +<!-- :block_map --> +<g id="node12" class="node"> +<title>:block_map</title> +<polygon fill="lightgreen" stroke="lightgreen" points="583.62,-188.5 502.62,-188.5 502.62,-152.5 583.62,-152.5 583.62,-188.5"/> +<text text-anchor="middle" x="543.12" y="-166.8" font-family="Times,serif" font-size="14.00">:block_map</text> +</g> +<!-- :trmul->:block_map --> +<g id="edge28" class="edge"> +<title>:trmul->:block_map</title> +<path fill="none" stroke="black" d="M462.47,-232.97C477.18,-221.75 496.63,-206.93 512.74,-194.66"/> +<polygon fill="black" stroke="black" points="514.98,-197.35 520.82,-188.5 510.74,-191.78 514.98,-197.35"/> +</g> +<!-- :cpu_cache_params --> +<g id="node13" class="node"> +<title>:cpu_cache_params</title> +<polygon fill="lightgreen" stroke="lightgreen" points="536.12,-36 412.12,-36 412.12,0 536.12,0 536.12,-36"/> +<text text-anchor="middle" x="474.12" y="-14.3" font-family="Times,serif" font-size="14.00">:cpu_cache_params</text> +</g> +<!-- :trmul->:cpu_cache_params --> +<g id="edge29" class="edge"> +<title>:trmul->:cpu_cache_params</title> +<path fill="none" stroke="black" d="M442.68,-232.64C448.55,-192.74 463.04,-94.27 470.11,-46.24"/> +<polygon fill="black" stroke="black" points="473.59,-46.65 471.58,-36.25 466.66,-45.63 473.59,-46.65"/> +</g> +<!-- :trmul->:allocator --> +<g id="edge27" class="edge"> +<title>:trmul->:allocator</title> +<path fill="none" stroke="black" d="M437.13,-232.98C432.29,-205.51 422.72,-151.16 416.92,-118.25"/> +<polygon fill="black" stroke="black" points="420.36,-117.62 415.18,-108.38 413.47,-118.83 420.36,-117.62"/> +</g> +<!-- :ctx->:thread_pool --> +<g id="edge37" class="edge"> +<title>:ctx->:thread_pool</title> +<path fill="none" stroke="black" d="M157.85,-152.47C161.87,-142.28 167.07,-129.12 171.62,-117.6"/> +<polygon fill="black" stroke="black" points="174.99,-118.59 175.41,-108 168.48,-116.02 174.99,-118.59"/> +</g> +<!-- :ctx->:cpuinfo --> +<g id="edge35" class="edge"> +<title>:ctx->:cpuinfo</title> +<path fill="none" stroke="black" d="M177.17,-152.29C182.05,-149.36 187.17,-146.47 192.12,-144 223.42,-128.38 260.51,-114.29 288.2,-104.57"/> +<polygon fill="black" stroke="black" points="289.64,-107.77 297.94,-101.19 287.35,-101.16 289.64,-107.77"/> +</g> +<!-- :ctx->:allocator --> +<g id="edge34" class="edge"> +<title>:ctx->:allocator</title> +<path fill="none" stroke="black" d="M175.53,-152.37C180.82,-149.22 186.51,-146.23 192.12,-144 263.8,-115.49 290.1,-129.63 368.25,-107.93"/> +<polygon fill="black" stroke="black" points="369.41,-111.24 378.05,-105.1 367.47,-104.51 369.41,-111.24"/> +</g> +<!-- :ctx->:prepacked_cache --> +<g id="edge36" class="edge"> +<title>:ctx->:prepacked_cache</title> +<path fill="none" stroke="black" d="M132.46,-152.47C120.4,-141.46 104.54,-126.98 91.23,-114.83"/> +<polygon fill="black" stroke="black" points="93.49,-112.16 83.75,-108 88.77,-117.33 93.49,-112.16"/> +</g> +<!-- :cpuinfo->:cpu_cache_params --> +<g id="edge38" class="edge"> +<title>:cpuinfo->:cpu_cache_params</title> +<path fill="none" stroke="black" d="M360.23,-73.98C380.49,-64.2 407.23,-51.29 429.71,-40.44"/> +<polygon fill="black" stroke="black" points="431.25,-43.58 438.73,-36.08 428.21,-37.28 431.25,-43.58"/> +</g> +<!-- @cpuinfo --> +<g id="node22" class="node"> +<title>@cpuinfo</title> +<polygon fill="none" stroke="black" points="364.62,-36 293.62,-36 293.62,0 364.62,0 364.62,-36"/> +<text text-anchor="middle" x="329.12" y="-14.3" font-family="Times,serif" font-size="14.00">@cpuinfo</text> +</g> +<!-- :cpuinfo->@cpuinfo --> +<g id="edge39" class="edge"> +<title>:cpuinfo->@cpuinfo</title> +<path fill="none" stroke="black" d="M329.12,-71.7C329.12,-63.98 329.12,-54.71 329.12,-46.11"/> +<polygon fill="black" stroke="black" points="332.62,-46.1 329.12,-36.1 325.62,-46.1 332.62,-46.1"/> +</g> +<!-- :block_map->:cpu_cache_params --> +<g id="edge40" class="edge"> +<title>:block_map->:cpu_cache_params</title> +<path fill="none" stroke="black" d="M535.21,-152.24C523.2,-126.04 500.28,-76.06 486.19,-45.31"/> +<polygon fill="black" stroke="black" points="489.29,-43.69 481.95,-36.06 482.93,-46.61 489.29,-43.69"/> +</g> +<!-- :kernel_avx512\n:kernel_avx\n:kernel_avx2_fma --> +<g id="node17" class="node"> +<title>:kernel_avx512\n:kernel_avx\n:kernel_avx2_fma</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="974.12,-197 858.12,-197 858.12,-144 974.12,-144 974.12,-197"/> +<text text-anchor="middle" x="916.12" y="-181.8" font-family="Times,serif" font-size="14.00">:kernel_avx512</text> +<text text-anchor="middle" x="916.12" y="-166.8" font-family="Times,serif" font-size="14.00">:kernel_avx</text> +<text text-anchor="middle" x="916.12" y="-151.8" font-family="Times,serif" font-size="14.00">:kernel_avx2_fma</text> +</g> +<!-- :kernel->:kernel_avx512\n:kernel_avx\n:kernel_avx2_fma --> +<g id="edge24" class="edge"> +<title>:kernel->:kernel_avx512\n:kernel_avx\n:kernel_avx2_fma</title> +<path fill="none" stroke="black" d="M916.12,-232.97C916.12,-225.45 916.12,-216.31 916.12,-207.4"/> +<polygon fill="black" stroke="black" points="919.62,-207.16 916.12,-197.16 912.62,-207.16 919.62,-207.16"/> +</g> +<!-- :kernel_arm --> +<g id="node18" class="node"> +<title>:kernel_arm</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="1075.62,-188.5 992.62,-188.5 992.62,-152.5 1075.62,-152.5 1075.62,-188.5"/> +<text text-anchor="middle" x="1034.12" y="-166.8" font-family="Times,serif" font-size="14.00">:kernel_arm</text> +</g> +<!-- :kernel->:kernel_arm --> +<g id="edge23" class="edge"> +<title>:kernel->:kernel_arm</title> +<path fill="none" stroke="black" d="M941.73,-232.97C958.81,-221.6 981.47,-206.53 1000.07,-194.15"/> +<polygon fill="black" stroke="black" points="1002.18,-196.95 1008.57,-188.5 998.3,-191.12 1002.18,-196.95"/> +</g> +<!-- :pack_avx2_fma\n:pack_avx\n:pack_avx512 --> +<g id="node20" class="node"> +<title>:pack_avx2_fma\n:pack_avx\n:pack_avx512</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="839.62,-197 732.62,-197 732.62,-144 839.62,-144 839.62,-197"/> +<text text-anchor="middle" x="786.12" y="-181.8" font-family="Times,serif" font-size="14.00">:pack_avx2_fma</text> +<text text-anchor="middle" x="786.12" y="-166.8" font-family="Times,serif" font-size="14.00">:pack_avx</text> +<text text-anchor="middle" x="786.12" y="-151.8" font-family="Times,serif" font-size="14.00">:pack_avx512</text> +</g> +<!-- :pack->:pack_avx2_fma\n:pack_avx\n:pack_avx512 --> +<g id="edge26" class="edge"> +<title>:pack->:pack_avx2_fma\n:pack_avx\n:pack_avx512</title> +<path fill="none" stroke="black" d="M700.77,-232.97C712.92,-224.22 728.11,-213.28 742.29,-203.07"/> +<polygon fill="black" stroke="black" points="744.43,-205.84 750.5,-197.16 740.34,-200.16 744.43,-205.84"/> +</g> +<!-- :pack_arm --> +<g id="node21" class="node"> +<title>:pack_arm</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="714.12,-188.5 640.12,-188.5 640.12,-152.5 714.12,-152.5 714.12,-188.5"/> +<text text-anchor="middle" x="677.12" y="-166.8" font-family="Times,serif" font-size="14.00">:pack_arm</text> +</g> +<!-- :pack->:pack_arm --> +<g id="edge25" class="edge"> +<title>:pack->:pack_arm</title> +<path fill="none" stroke="black" d="M677.12,-232.97C677.12,-222.99 677.12,-210.15 677.12,-198.8"/> +<polygon fill="black" stroke="black" points="680.62,-198.5 677.12,-188.5 673.62,-198.5 680.62,-198.5"/> +</g> +<!-- frontend --> +<g id="node23" class="node"> +<title>frontend</title> +<polygon fill="lightblue" stroke="lightblue" points="1451.12,-557 1381.12,-557 1381.12,-521 1451.12,-521 1451.12,-557"/> +<text text-anchor="middle" x="1416.12" y="-535.3" font-family="Times,serif" font-size="14.00">Front-end</text> +</g> +<!-- middleend --> +<g id="node24" class="node"> +<title>middleend</title> +<polygon fill="lightgreen" stroke="lightgreen" points="1456.12,-485 1376.12,-485 1376.12,-449 1456.12,-449 1456.12,-485"/> +<text text-anchor="middle" x="1416.12" y="-463.3" font-family="Times,serif" font-size="14.00">Middle-end</text> +</g> +<!-- frontend->middleend --> +<!-- backend --> +<g id="node25" class="node"> +<title>backend</title> +<polygon fill="#ff6a6a" stroke="#ff6a6a" points="1450.12,-413 1382.12,-413 1382.12,-377 1450.12,-377 1450.12,-413"/> +<text text-anchor="middle" x="1416.12" y="-391.3" font-family="Times,serif" font-size="14.00">Back-end</text> +</g> +<!-- middleend->backend --> +</g> +</svg> |