Repository navigation
Batched calls for ops on a GPU, and a plan of what a read computes - #45
Open
davidackerman wants to merge 1 commit into
Open
davidackerman wants to merge 1 commit into
davidackerman wants to merge 1 commit into
Conversation
… live last pass (one warm block-matching call costs about 20 ms of its own, launches and copies, whatever its size): the blocks of one stage and shape waiting in its queue when a slot frees are computed in one call of its apply_batch, up to batch of them, first in line first (demand.Batch: the job chosen takes the others of its group waiting then into its call; each is still a job of its own, shared, ordered and dropped as one, and the call gives up through demand.cancelled() only once none of them is wanted), so the chunks a read gathers or a viewer's requests wait together while a call runs and go in the next (16 chunks in calls of 1, 8 and 7 in the test), and a model or a block matcher on a GPU pays its fixed cost per call once for many blocks; an op with batch is a stage of its own and goes through its queue as with slots, one call at a time if it sets none, apply_batch defaulting to one apply_at after another, fused.run_batch running it and fused.run taking the first op's result computed already; and Pipeline.plan(level, box) says what a read would compute, computing nothing: per stage, from the first to the output, the chunks it is asked for, those held and those to compute, whose inputs padded by the halos are what the stage before is asked for (an overlapping op's blocks a stage of their own), following dataset:// into the named dataset's stages and stopping at a stage holding all it is asked for or at a source that is not a stage, such as a warp:// whose reads depend on its field's values (ChunkedSource.reads says what a chunk's computation reads, covering which chunks a read takes); /api/ops reports batch; docs (pipelines, caching, contributing, API, roadmap) and the CHANGELOG say so
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Asked for by registration-station after timing a live last pass of its registration. A warm block-matching call costs about 20 ms of fixed overhead (launches, copies), whatever its size. And a view at s1 needs 80–96 small lattice chunks, which ran one call at a time.
batchon an opbatchputs the blocks of one stage and shape that are waiting in the op's queue, when a slot frees, into one call ofapply_batch, up tobatchof them, first in line first.demand.cancelled()only once none of its blocks is wanted.batchis a stage of its own and goes through its queue as withslots(one call at a time if it sets none).apply_batchdefaults to oneapply_atafter another.demand.Batch. When a slot frees, the chosen job takes the others of its group into its call.fused.run_batchruns it, andfused.runtakes the first op's result already computed.Pipeline.plan(level, box)dataset://into the named dataset's stages. It stops at a stage that holds all it is asked for, or at a source that is not a stage, such as awarp://whose reads depend on its field's values.ChunkedSource.readssays what a chunk's computation reads, andcoveringsays which chunks a read takes./api/opsreportsbatch. The docs (pipelines, caching, contributing, API, roadmap) and the CHANGELOG are updated.Not included: registration-station's
materialize --verify-chunks. They can compare two pipelines with different chunkings on the public API.