diff --git a/src/talks/2024-04-12-UIC.erb b/src/talks/2024-04-12-UIC.erb index 9b8ea40b..df28bf8c 100644 --- a/src/talks/2024-04-12-UIC.erb +++ b/src/talks/2024-04-12-UIC.erb @@ -216,19 +216,235 @@ end
-

Workflow-style execution

+

Overview: Workflow-Style Notebooks

    -
  1. Microkernel Notebooks
  2. Static Analysis
  3. +
  4. Microkernel Notebooks
  5. Approximate Dependencies
  6. Inter-Kernel Interop [Work In Progress]
+ +
+

Obtaining Cell Dependencies

+ + +
+ + +
+

Dynamic Dependencies

+ + <%= + notebook() do + nbcell("if z:\n y = x + 2", idx: 2) + end + %> + +
+
+       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
+	
+ +
+ + +
+

Dynamic Dependencies

+ + <%= + notebook() do + nbcell("if z:\n y = x + 2", idx: 2) + end + %> + +
+
+       0 LOAD_GLOBAL              0 (z)
+       2 POP_JUMP_IF_FALSE       12
+
+
+
+
+      12 LOAD_CONST               0 (None)
+      14 RETURN_VALUE
+	
+ +
+ + +
+

Dynamic Dependencies

+ + <%= + notebook() do + nbcell("if z:\n y = x + 2", idx: 2) + end + %> + +

Reads: $\{\;\textbf{z}\;\}$

+

Writes: $\{\;\;\}$

+ +
+ +
+

Static Dependencies

+ + <%= + notebook() do + nbcell("if z:\n y = x + 2", idx: 2) + end + %> + +
+
+       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
+	
+ + +
+ +
+

Static Dependencies

+ + <%= + notebook() do + nbcell("if z:\n y = x + 2", idx: 2) + end + %> + +
+
+       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
+	
+ +
+ + +
+

Static Dependencies

+ + <%= + notebook() do + nbcell("if z:\n y = x + 2", idx: 2) + end + %> + +

Could Read: $\{\;\textbf{x},\;\textbf{z}\;\}$

+

Could Write: $\{\;\textbf{y}\;\}$

+ +
+ + +
+

Static Dependencies

+ + <%= + notebook() do + nbcell("my_data.filter( items )", idx: 2) + end + %> + +

Could Read: $\{\;\textbf{my_data},\;\textbf{items}\;\}$

+

Could Write: $\{\;\;\}$

+ +
+ + +
+

Static Dependencies

+ + <%= + notebook() do + nbcell("my_data.push( items )", idx: 2) + end + %> + +

Could Read: $\{\;\textbf{my_data},\;\textbf{items}\;\}$

+

Could Write: $\{\;\textbf{my_data}\;\}$

+ +
+ +
+ + <%= + notebook() do + nbcell("my_data.filter( items )", idx: 2) + end + %> + vs + <%= + notebook() do + nbcell("my_data.push( items )", idx: 2) + end + %> + +
+ +
+ + + + "Bolt-on, Compact, and Rapid Program Slicing for Notebooks" (Shenkar et. al.; VLDB 2023) +
+ + +
+

Dependency Needs

+ + +
+
- 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 + %> + +

We need to be able to recover the notebook from any state.

@@ -262,18 +478,6 @@ end - 1-3 slides on spreadsheets
- -
- How to figure out dependencies - - 1. Run the code (exact, after the fact) - 2. Static analysis (imprecise, incomplete) -
- -
- Refer to Aditya's project w.r.t. static analysis -
-
How to figure out dependencies diff --git a/src/talks/graphics/2024-04-12/LibraryStaticAnalysisDSL.png b/src/talks/graphics/2024-04-12/LibraryStaticAnalysisDSL.png new file mode 100644 index 00000000..a1c539ba Binary files /dev/null and b/src/talks/graphics/2024-04-12/LibraryStaticAnalysisDSL.png differ