WIP: UIC talk
parent
451d226376
commit
8c878d7097
|
@ -216,19 +216,235 @@ end
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h3>Workflow-style execution</h3>
|
<h3>Overview: Workflow-Style Notebooks</h3>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>Microkernel Notebooks</li>
|
|
||||||
<li>Static Analysis</li>
|
<li>Static Analysis</li>
|
||||||
|
<li>Microkernel Notebooks</li>
|
||||||
<li>Approximate Dependencies</li>
|
<li>Approximate Dependencies</li>
|
||||||
<li>Inter-Kernel Interop <span style="color: grey;">[Work In Progress]</span></li>
|
<li>Inter-Kernel Interop <span style="color: grey;">[Work In Progress]</span></li>
|
||||||
</ol>
|
</ol>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!------------------------- Static Analysis -------------------------->
|
||||||
|
<section>
|
||||||
|
<h3>Obtaining Cell Dependencies</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="fragment" data-fragment-index="1">What could the cell read/write? <span class="fragment" data-fragment-index="5">[Static]</span></li>
|
||||||
|
<li class="fragment" data-fragment-index="2"><span class="fragment strike" data-fragment-index="4">What will the cell read/write?</span></li>
|
||||||
|
<li class="fragment" data-fragment-index="3">What did the cell read/write? <span class="fragment" data-fragment-index="5">[Dynamic]</span></li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Dynamic Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<pre class="fragment">
|
||||||
|
|
||||||
|
0 LOAD_GLOBAL 0 (z)
|
||||||
|
2 POP_JUMP_IF_FALSE 12
|
||||||
|
4 LOAD_GLOBAL 1 (x)
|
||||||
|
6 LOAD_CONST 1 (2)
|
||||||
|
8 BINARY_ADD
|
||||||
|
10 STORE_GLOBAL 2 (y)
|
||||||
|
12 LOAD_CONST 0 (None)
|
||||||
|
14 RETURN_VALUE
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Dynamic Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
0 LOAD_GLOBAL 0 (z)
|
||||||
|
2 POP_JUMP_IF_FALSE 12
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
12 LOAD_CONST 0 (None)
|
||||||
|
14 RETURN_VALUE
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Dynamic Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<p><b>Reads: </b> $\{\;\textbf{z}\;\}$</p>
|
||||||
|
<p><b>Writes: </b> $\{\;\;\}$</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Static Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
0 LOAD_GLOBAL 0 (z)
|
||||||
|
2 POP_JUMP_IF_FALSE 12
|
||||||
|
4 LOAD_GLOBAL 1 (x)
|
||||||
|
6 LOAD_CONST 1 (2)
|
||||||
|
8 BINARY_ADD
|
||||||
|
10 STORE_GLOBAL 2 (y)
|
||||||
|
12 LOAD_CONST 0 (None)
|
||||||
|
14 RETURN_VALUE
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Static Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
0 LOAD_GLOBAL 0 (z) # <---- reads
|
||||||
|
2 POP_JUMP_IF_FALSE 12
|
||||||
|
4 LOAD_GLOBAL 1 (x) # <---- reads
|
||||||
|
6 LOAD_CONST 1 (2)
|
||||||
|
8 BINARY_ADD
|
||||||
|
10 STORE_GLOBAL 2 (y) # ----> writes
|
||||||
|
12 LOAD_CONST 0 (None)
|
||||||
|
14 RETURN_VALUE
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Static Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<p><b>Could Read: </b> $\{\;\textbf{x},\;\textbf{z}\;\}$</p>
|
||||||
|
<p><b>Could Write: </b> $\{\;\textbf{y}\;\}$</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Static Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("my_data.filter( items )", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<p><b>Could Read: </b> $\{\;\textbf{my_data},\;\textbf{items}\;\}$</p>
|
||||||
|
<p><b>Could Write: </b> $\{\;\;\}$</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Static Dependencies</h3>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("my_data.push( items )", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<p><b>Could Read: </b> $\{\;\textbf{my_data},\;\textbf{items}\;\}$</p>
|
||||||
|
<p><b>Could Write: </b> $\{\;\textbf{my_data}\;\}$</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("my_data.filter( items )", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
vs
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("my_data.push( items )", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<img src="graphics/2024-04-12/LibraryStaticAnalysisDSL.png">
|
||||||
|
|
||||||
|
<attribution>"Bolt-on, Compact, and Rapid Program Slicing for Notebooks" (Shenkar et. al.; VLDB 2023)</attribution>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Dependency Needs</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="fragment" data-fragment-index="1">Does a cell need to be re-run based on these changes?
|
||||||
|
<div class="fragment" data-fragment-index="2" style="font-weight: bold;">Dynamic sufficient (assuming deterministic cells).</div>
|
||||||
|
</li>
|
||||||
|
<li class="fragment" data-fragment-index="3">
|
||||||
|
<div class="fragment highlight-blue">
|
||||||
|
What is the minimal set of inputs a cell needs to run?
|
||||||
|
<div class="fragment" data-fragment-index="4" style="font-weight: bold;">Static required.</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="fragment" data-fragment-index="5">Which cell last wrote to a variable?
|
||||||
|
<div class="fragment" data-fragment-index="6" style="font-weight: bold;">Dynamic sufficient.</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
<!------------------------- Microkernel Notebooks -------------------------->
|
<!------------------------- Microkernel Notebooks -------------------------->
|
||||||
<section>
|
<section>
|
||||||
If we have to have the ability to recover a state, does it have to be the same interpreter?
|
$$\{\;???\;\}$$
|
||||||
|
<%=
|
||||||
|
notebook() do
|
||||||
|
nbcell("if z:\n y = x + 2", idx: 2)
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
|
||||||
|
<p class="fragment takeaway">We need to be able to recover the notebook from <i>any</i> state.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
@ -262,18 +478,6 @@ end
|
||||||
- 1-3 slides on spreadsheets
|
- 1-3 slides on spreadsheets
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!------------------------- Static Analysis -------------------------->
|
|
||||||
<section>
|
|
||||||
How to figure out dependencies
|
|
||||||
|
|
||||||
1. Run the code (exact, after the fact)
|
|
||||||
2. Static analysis (imprecise, incomplete)
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
Refer to Aditya's project w.r.t. static analysis
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!------------------------- Approximate Dependencies -------------------------->
|
<!------------------------- Approximate Dependencies -------------------------->
|
||||||
<section>
|
<section>
|
||||||
How to figure out dependencies
|
How to figure out dependencies
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 102 KiB |
Loading…
Reference in New Issue