pub const GPU_DDL: &str = "
CREATE TABLE IF NOT EXISTS launches (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
kernel_name TEXT NOT NULL,
duration_us REAL NOT NULL,
grid_x INTEGER, grid_y INTEGER, grid_z INTEGER,
block_x INTEGER, block_y INTEGER, block_z INTEGER,
stream_id INTEGER,
start_us REAL,
correlation_id INTEGER,
layer_id INTEGER REFERENCES layers(id)
);
CREATE INDEX IF NOT EXISTS idx_launches_kernel ON launches(session_id, kernel_name);
CREATE INDEX IF NOT EXISTS idx_launches_start ON launches(session_id, start_us);
CREATE INDEX IF NOT EXISTS idx_launches_stream ON launches(session_id, stream_id);
CREATE TABLE IF NOT EXISTS metrics (
session_id TEXT NOT NULL REFERENCES sessions(id),
kernel_name TEXT NOT NULL,
occupancy_pct REAL,
compute_throughput_pct REAL,
memory_throughput_pct REAL,
registers_per_thread INTEGER,
shared_mem_static_bytes INTEGER,
shared_mem_dynamic_bytes INTEGER,
l2_hit_rate_pct REAL,
achieved_bandwidth_gb_s REAL,
peak_bandwidth_gb_s REAL,
boundedness TEXT,
layer_id INTEGER REFERENCES layers(id),
PRIMARY KEY (session_id, kernel_name)
);
CREATE TABLE IF NOT EXISTS transfers (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
kind TEXT NOT NULL,
bytes INTEGER,
duration_us REAL,
start_us REAL,
stream_id INTEGER,
layer_id INTEGER REFERENCES layers(id)
);
CREATE TABLE IF NOT EXISTS ops (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
name TEXT NOT NULL,
module_path TEXT,
cpu_time_us REAL,
gpu_time_us REAL,
input_shapes TEXT,
layer_id INTEGER REFERENCES layers(id)
);
CREATE TABLE IF NOT EXISTS op_kernel_map (
session_id TEXT NOT NULL REFERENCES sessions(id),
op_id INTEGER NOT NULL REFERENCES ops(id),
kernel_name TEXT NOT NULL,
PRIMARY KEY (op_id, kernel_name)
);
";Expand description
GPU domain tables (CUDA launches, ncu metrics, memcpy transfers,
framework ops). From gdbg’s current schema, with session_id added.