Skip to content

Commit f3883b3

Browse files
[rfc] Resource-limited Nodes (#1677)
* Limited-resource RFC. * Add to introduction * Add question about constrained template use * More work on introduction * Primarily whitespace cleanup. * Standardize thread-(un)safe * Add blurb on C++20 support * Updates to serialization RFC * Incomplete version of sequence diagram * Expand on limited resources * Update README.md * Update image * Update README.md * Minor updates * Add performance analysis to README * Whitespace cleanup * Adjust heading levels * Minor edits to text * Adjust levels one more time * Final editing pass before PR * Remove unused plantuml files * Adjust PR based on Mike's and Konstantin's suggestions/questions * Adjust GitHub markdown * Adjust GitHub markdown...again * Update proposal based on @akukanov's suggestion * Include graph diagram of analyzed workflow * Use png instead * Show graph with limiters --------- Co-authored-by: Kyle Knoepfel <[email protected]>
1 parent 6c0fb20 commit f3883b3

16 files changed

+2204
-0
lines changed

rfcs/proposed/flow_graph_serializers/README.md

+623
Large diffs are not rendered by default.

rfcs/proposed/flow_graph_serializers/README.qmd

+591
Large diffs are not rendered by default.
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
digraph {
2+
rankdir=LR
3+
ranksep=2
4+
5+
node [fontname="Arial"]
6+
Source [label=<<b>Source</b>> style="filled" shape="cylinder" fillcolor="#666666" fontcolor="white"]
7+
8+
node [shape="box" peripheries=2]
9+
DB [label=<<b>DB</b><br/> 2 tokens>]
10+
ROOT [label=<<b>ROOT</b><br/> 1 token>]
11+
GENIE [label=<<b>GENIE</b><br/> 1 token>]
12+
13+
{rank=same; Source; DB; ROOT; GENIE}
14+
15+
node [shape="box" style=filled width=2.7 peripheries=1]
16+
17+
propagating [
18+
label=<
19+
<table cellpadding="0" border="0" cellborder="0">
20+
<tr><td align="LEFT" colspan="2"><b>Propagating</b></td></tr>
21+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="lightblue">unlimited</font></td></tr>
22+
<tr><td align="LEFT">Resources:</td><td align="LEFT"><i>(none)</i></td></tr>
23+
</table>
24+
>
25+
fillcolor="#BF5B17"
26+
fontcolor="white"
27+
]
28+
29+
histogramming [
30+
label=<
31+
<table cellpadding="0" border="0" cellborder="0">
32+
<tr><td align="LEFT" colspan="2"><b>Histogramming</b></td></tr>
33+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="lightblue">unlimited</font></td></tr>
34+
<tr><td align="LEFT">Resources:</td><td align="LEFT">ROOT</td></tr>
35+
</table>
36+
>
37+
fillcolor="#F02A7F"
38+
fontcolor="white"
39+
]
40+
41+
generating [
42+
label=<
43+
<table cellpadding="0" border="0" cellborder="0">
44+
<tr><td align="LEFT" colspan="2"><b>Generating</b></td></tr>
45+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="blue">unlimited</font></td></tr>
46+
<tr><td align="LEFT">Resources:</td><td align="LEFT">GENIE</td></tr>
47+
</table>
48+
>
49+
fillcolor="#FFFD99"
50+
]
51+
52+
histo_generating [
53+
label=<
54+
<table cellpadding="0" border="0" cellborder="0">
55+
<tr><td align="LEFT" colspan="2"><b>Histo-generating</b></td></tr>
56+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="lightblue">unlimited</font></td></tr>
57+
<tr><td align="LEFT">Resources:</td><td align="LEFT">ROOT, GENIE</td></tr>
58+
</table>
59+
>
60+
fillcolor="#386CB0"
61+
fontcolor="white"
62+
]
63+
64+
calA [
65+
label=<
66+
<table cellpadding="0" border="0" cellborder="0">
67+
<tr><td align="LEFT" colspan="2"><b>Calibration[A]</b></td></tr>
68+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="blue">unlimited</font></td></tr>
69+
<tr><td align="LEFT">Resources:</td><td align="LEFT">DB</td></tr>
70+
</table>
71+
>
72+
fillcolor="#7FC97F"
73+
]
74+
75+
calB [
76+
label=<
77+
<table cellpadding="0" border="0" cellborder="0">
78+
<tr><td align="LEFT" colspan="2"><b>Calibration[B]</b></td></tr>
79+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="blue">unlimited</font></td></tr>
80+
<tr><td align="LEFT">Resources:</td><td align="LEFT">DB</td></tr>
81+
</table>
82+
>
83+
fillcolor="#BEAED4"
84+
]
85+
86+
calC [
87+
label=<
88+
<table cellpadding="0" border="0" cellborder="0">
89+
<tr><td align="LEFT" colspan="2"><b>Calibration[C]</b></td></tr>
90+
<tr><td align="LEFT">Concurrency:</td><td align="LEFT"><font color="red">serial</font></td></tr>
91+
<tr><td align="LEFT">Resources:</td><td align="LEFT">DB</td></tr>
92+
</table>
93+
>
94+
fillcolor="#FDC086"
95+
]
96+
97+
Source -> {
98+
calA
99+
calB
100+
calC
101+
generating
102+
histo_generating
103+
histogramming
104+
propagating
105+
}
106+
107+
GENIE -> {generating histo_generating} -> GENIE [style="dotted" color="blue" arrowhead="empty"]
108+
ROOT -> {histogramming histo_generating} -> ROOT [style="dotted" color="blue" arrowhead="empty"]
109+
DB -> {calA calB calC} -> DB [style="dotted" color="blue" arrowhead="empty"]
110+
}
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*-- scss:defaults --*/
2+
3+
// $presentation-font-size-root: 32px;
4+
5+
@import url('https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
6+
7+
$font-family-serif: "Crimson Pro", serif;
8+
$presentation-heading-font: "Crimson Pro", serif;
9+
$font-family-serif: "Crimson Pro", serif;
10+
$link-color: #1111ff;
11+
$red: #dc1111;
12+
13+
/*-- scss:rules --*/
14+
15+
.cell-output {
16+
border: 1px solid #ccc;
17+
padding: 0.5em;
18+
}
19+
20+
.reveal .alert {
21+
color: $red;
22+
}
23+
24+
.reveal .slide-number {
25+
// color: $link-color;
26+
font-size: 0.8em !important;
27+
}
28+
29+
.reveal .title-slide h1 {
30+
text-align: center;
31+
}
32+
33+
.reveal .footer {
34+
font-size: 0.8em !important;
35+
text-align: center !important;
36+
}
37+
38+
.reveal code {
39+
// Monospaced fonts typically are larger than
40+
font-size: smaller;
41+
}
42+
43+
.reveal .sourceCode {
44+
// This is used for code blocks, not inline code
45+
font-size: smaller;
46+
}
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
read_times <- function(fname) {
2+
readr::read_tsv(fname, col_types = "ciccii") |>
3+
dplyr::mutate(
4+
time = as.numeric(lubridate::hms(time)),
5+
thread = as.factor(thread),
6+
event = as.factor(event),
7+
node = as.factor(node)
8+
) |>
9+
dplyr::mutate(time = time - min(time)) |>
10+
dplyr::mutate(time = 1000 * time)
11+
}
12+
13+
scale_x_log10_nice <- function(...) {
14+
ggplot2::scale_x_log10(
15+
breaks = scales::trans_breaks("log10", function(x) 10^x),
16+
labels = scales::trans_format("log10", scales::math_format(10^.x))
17+
)
18+
}
19+
20+
scale_y_log10_nice <- function(...) {
21+
ggplot2::scale_y_log10(
22+
breaks = scales::trans_breaks("log10", function(x) 10^x),
23+
labels = scales::trans_format("log10", scales::math_format(10^.x))
24+
)
25+
}
26+
27+
# Produce a vector of "black" or "white" for each given color, so that they
28+
# can be used as labels that contrast with the given color.
29+
get_contrast_color <- function(color) {
30+
rgb <- col2rgb(color) / 255
31+
luminance <- 0.2126 * rgb[1] + 0.7152 * rgb[2] + 0.0722 * rgb[3]
32+
if (luminance > 0.5) "black" else "white"
33+
}

0 commit comments

Comments
 (0)