Feat/devalshah/generic splitter - #1026
kyle-hoffmeyer merged 30 commits into
Conversation
…_refactor_generic
…_refactor_generic
…_refactor_generic
The merge brought in bookend promotion, which adopts the leading and trailing regions of a periodic run as iterations when their GPU signature matches. Nothing exercised it, so a regression would only have surfaced as a coverage drop on the corpus. Co-authored-by: Cursor <cursoragent@cursor.com>
Each denoising step is preceded by a to/expand/to prep group on the timestep tensor, and only the last of the three carries GPU work. The previous references started an iteration at that last call, so the two CPU-side calls were credited to the step before the one they prepare. Blocks now anchor on the first child whose name carries GPU time, which keeps the group with the step it feeds. GPU attribution is unchanged: the kernel and memcpy lists are identical and GPU busy time per split matches to 0.000us. Only ~34us of CPU frames move, and the manifest still reports 6 iterations with the same warmup and wrapup roles. Co-authored-by: Cursor <cursoragent@cursor.com>
…ps. fix steady state logic for llm-inference
|
|
Given list of candidates: periodic_candidate in feat/khoffmey filters out the non gpu path events. Meaning iter 0's pop_and_process is included but the iter's pop_and_process gets filtered out. This means the pattern it finds is get_next_batch_to_run -> run_batch and iter 0 is left out (since it starts with run_batch, not get_next_batch_to_run). periodic_candidate in feat/devalshah branch however works. It only filters out events that are never gpu paths. So since pop_and_process is sometimes a gpu path, all invocations are included, meaning the recurring pattern is very clean: run_batch -> pop_and_process -> get_next_batch_to_run. So grouped_candidate actually isn't needed for this example. So either way, the bookend enhancement isn't needed. periodic_candidate finds everything and if grouped_candidate works correctly if periodic_candidate were to fail. |
|
Regarding the prune_nongpu_path flag, it just adds a non_gpu_path flag like we discussed. But nothing in trace splitter actually checks this. gpu_bearing func just checks if gpu_events is set / kernel_bearing is set (a field assigned in reattach_worker_threads I should delete). It doesn't check non_gpu_path. So we can just simplify this by making reattach_worker_threads assign non_gpu_path arg to events if prune_nongpu_path is true (instead of kernel_bearing field), and then in trace splitter we just check non_gpu_path arg and nothing else. |
16085ba
into
feat/khoffmey/split_refactor_generic
Making some changes to simplify the code and remove incorrect/redundant logic
Pull Request Template