You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.3 KiB
154 lines
3.3 KiB
7 months ago
|
#!/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'
|
||
|
':trace'
|
||
|
':validate'
|
||
|
'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'
|
||
|
)
|
||
|
|
||
|
middleend=(
|
||
|
':ctx'
|
||
|
':trmul_params'
|
||
|
':trmul'
|
||
|
':block_map'
|
||
|
':cpuinfo'
|
||
|
':cpu_cache_params'
|
||
|
':allocator'
|
||
|
':prepacked_cache'
|
||
|
)
|
||
|
|
||
|
backend=(
|
||
|
':kernel.*'
|
||
|
':pack.*'
|
||
|
)
|
||
|
|
||
|
threadpool=(
|
||
|
':thread_pool'
|
||
|
)
|
||
|
|
||
|
frontend_lines=()
|
||
|
middleend_lines=()
|
||
|
backend_lines=()
|
||
|
threadpool_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
|
||
|
for f in "${threadpool[@]}"; do
|
||
|
if [[ "${line}" =~ ${f} ]]; then
|
||
|
threadpool_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=\"#B2EBF2\"];"
|
||
|
done
|
||
|
for m in "${middleend_lines[@]}"; do
|
||
|
echo " $m [style=filled, color=\"#C8E6C9\"];"
|
||
|
done
|
||
|
for b in "${backend_lines[@]}"; do
|
||
|
echo " $b [style=filled, color=\"#FFCDD2\"];"
|
||
|
done
|
||
|
for b in "${threadpool_lines[@]}"; do
|
||
|
echo " $b [style=filled, color=\"#FFF9C4\"];"
|
||
|
done
|
||
|
for m in "${misc_lines[@]}"; do
|
||
|
echo "$m"
|
||
|
done
|
||
|
for a in "${arrow_lines[@]}"; do
|
||
|
echo "$a"
|
||
|
done
|
||
|
echo "}"
|