Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions antenna/DIAGRAM_INTEGRATION_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Antenna Diagram Integration Notes

Created for `UWS-124` as reusable SVG assets for the Antenna SciPy presentation and A0 poster.

## Asset Path

Use the SVGs from `antenna/assets/diagrams/`:

- `antenna-a-push-model-before.svg` — place with the architecture problem statement for the original push flow.
- `antenna-b-pull-model-after.svg` — place immediately after A to explain the pull-based target architecture and horizontal scaling.
- `antenna-c-gpu-utilization-before.svg` — place before GPU optimization details to make idle time concrete.
- `antenna-d-cpu-gpu-data-flow.svg` — place where the PIL/CPU materialization bottleneck is introduced.
- `antenna-e-cuda-stream-pipeline.svg` — place with CUDA stream/overlap explanation.
- `antenna-f-gpu-utilization-after.svg` — place after E as the visual mirror of C and the payoff slide.

## Design Notes

- SVGs use `viewBox="0 0 1600 900"` for 16:9 slides and scalable poster placement.
- Primary diagram color is the requested deep blue `#1A5276`; accents are UW SSEC-compatible gold `#85754d`/`#b7a57a` and teal `#2ad2c9`.
- Typography follows UW SSEC presentation conventions: Encode Sans for headings/UI labels and Open Sans for supporting text, with system fallbacks.
- Each SVG includes `title`, `desc`, and `role="img"` for accessible embedding.

## Implementation Guidance

For Reveal.js slides, prefer direct image embedding at full content width:

```html
<img src="antenna/assets/diagrams/antenna-a-push-model-before.svg" alt="Antenna push model before optimization" class="diagram-full">
```

Suggested CSS:

```css
.diagram-full {
display: block;
inline-size: 100%;
max-block-size: 72vh;
object-fit: contain;
}
```

No content placeholders remain in the SVGs. The only dependency is deck-owner confirmation that `antenna/assets/diagrams/` is the final path for the Antenna deck.
Binary file added antenna/assets/antenna-screenshot-crop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added antenna/assets/antenna-screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added antenna/assets/diagrams/after-simple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions antenna/assets/diagrams/antenna-a-push-model-before.eraserdiagram
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// A. Push Model Before: Synchronous Endpoint
// Antenna initiates work and blocks while the public processing service runs.

colorMode pastel
typeface clean

Antenna [color: blue, label: "Antenna\njob orchestration"]
Public Endpoint [color: orange, label: "Public Endpoint\nProcessing Service"]
Worker Runtime [color: blue, label: "Worker Runtime\nservice-owned"]

Antenna > Public Endpoint: POST job payload
activate Antenna
Public Endpoint > Worker Runtime: Start processing
Worker Runtime > Public Endpoint: Result returned
Public Endpoint > Antenna: Synchronous response
deactivate Antenna
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions antenna/assets/diagrams/antenna-a-push-model-before.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions antenna/assets/diagrams/antenna-a-push-model-simple.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions antenna/assets/diagrams/antenna-b-pull-model-after.eraserdiagram
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// B. Pull Model After: Workers Scale Horizontally
// Antenna exposes job state; workers pull batches when they have local capacity.

direction right
colorMode pastel
typeface clean

Antenna [color: blue, label: "Antenna\njob source of truth"]

Jobs API [color: orange, label: "Jobs API\npoll, lease, update"] {
Queue [shape: rectangle, color: orange, label: "batched work queue"]
}

Worker A [color: blue, label: "Worker A\nlocal processing"]
Worker B [color: blue, label: "Worker B\nlocal processing"]

Antenna > Jobs API: publish jobs
Worker A > Jobs API: poll + pull batch
Jobs API > Worker A: post results
Worker B > Jobs API: poll + pull batch
Jobs API > Worker B: post results
29 changes: 29 additions & 0 deletions antenna/assets/diagrams/antenna-b-pull-model-after.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// C. GPU Utilization Before Optimization
// CPU-side image conversion and transfer setup leave the GPU waiting between kernels.

direction right
colorMode bold
typeface clean

CPU [color: blue, label: "CPU"] {
PIL convert [color: blue, label: "PIL convert"]
Host copy 1 [color: blue, label: "host copy"]
Prepare [color: blue, label: "prepare"]
Host copy 2 [color: blue, label: "host copy"]

PIL convert > Host copy 1 > Prepare > Host copy 2
}

GPU [label: "GPU"] {
GPU idle 1 [color: orange, label: "idle"]
GPU kernel 1 [color: "#2ad2c9", label: "kernel"]
GPU idle 2 [color: orange, label: "idle"]
GPU kernel 2 [color: "#2ad2c9", label: "kernel"]
GPU idle 3 [color: orange, label: "idle"]

GPU idle 1 > GPU kernel 1 > GPU idle 2 > GPU kernel 2 > GPU idle 3
}

legend [position: bottom-left] {
[color: blue, label: CPU setup]
[color: "#2ad2c9", label: GPU work]
[color: orange, label: GPU idle]
}
39 changes: 39 additions & 0 deletions antenna/assets/diagrams/antenna-c-gpu-utilization-before.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions antenna/assets/diagrams/antenna-d-cpu-gpu-data-flow.eraserdiagram
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// D. CPU-GPU Data Flow
// The optimized path removes CPU image materialization from the hot loop.

direction right
colorMode pastel
typeface clean

Before [color: orange, label: "Before: device data leaves the GPU"] {
GPU array before [color: "#2ad2c9", label: "GPU array"]
PIL Image [color: orange, label: "PIL Image\n(CPU memory)"]
GPU kernel before [color: "#2ad2c9", label: "GPU\nkernel input"]

GPU array before > PIL Image: extra copies
PIL Image > GPU kernel before: synchronization
}

After [color: blue, label: "After: direct GPU-to-GPU path"] {
GPU source [color: "#2ad2c9", label: "GPU\nsource array"]
GPU kernel after [color: "#2ad2c9", label: "GPU\nkernel input"]

GPU source > GPU kernel after: no CPU materialization
}
56 changes: 56 additions & 0 deletions antenna/assets/diagrams/antenna-d-cpu-gpu-data-flow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// E. CUDA Stream Pipeline
// Streams overlap transfer and compute so later batches begin before earlier batches finish.

direction right
colorMode bold
typeface clean

Before [label: "Before: sequential work"] {
Single stream [label: "Single stream"] {
T1 before [color: blue, label: "T1\nTransfer"]
C1 before [color: "#2ad2c9", label: "C1\nCompute"]
T2 before [color: blue, label: "T2\nTransfer"]
C2 before [color: "#2ad2c9", label: "C2\nCompute"]
Wait [color: orange, label: "wait"]

T1 before > C1 before > T2 before > C2 before > Wait
}
}

After [label: "After: overlapped streams"] {
Stream 1 [label: "Stream 1"] {
S1 T1 [color: blue, label: "T1"]
S1 C1 [color: "#2ad2c9", label: "C1"]
S1 T3 [color: blue, label: "T3"]

S1 T1 > S1 C1 > S1 T3
}

Stream 2 [label: "Stream 2"] {
S2 T2 [color: blue, label: "T2"]
S2 C2 [color: "#2ad2c9", label: "C2"]

S2 T2 > S2 C2
}
}

legend [position: bottom-left] {
[color: blue, label: Transfer]
[color: "#2ad2c9", label: Compute]
}
Loading