Repository navigation
Conversation
d1ee216 to
f0f61e2
Compare
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
e97d214 to
fcfe932
Compare
…uncher Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…viceBox::from_raw_parts and update docs Signed-off-by: nihalpasham <nihalp@nvidia.com>
|
Looks good! Pushed a small commit (
|
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com> # Conflicts: # cutile-rs/cutile/src/tensor.rs
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
|
@nihalpasham Thanks for the review and fixes. Your commit The branch now includes the updated #1516/#1603 stack and its tensor/allocation uniqueness fixes. All of your feedback is incorporated, and all 63 active CI checks pass at The measured per-launch overhead remains a separate follow-up; these correctness fixes do not claim to resolve it. |
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
|
Restored the original cutile-rs |
nihalpasham
left a comment
There was a problem hiding this comment.
I verified the full cuda-oxide suite and all 238 examples with the stack rebased onto main. Looks good, approving!
Tile operations and SIMT launches currently use separate async runtimes and cannot compose through the same operation types. This change removes
cuda_async::simtand routes both programming models through the sharedDeviceOp,DeviceFuture, execution context, scheduler, errors and launch API.Closes #1461. Stacked on #1603, which supplies the shared core types and storage. The base is its existing
pull-request/1603mirror so this diff contains only the async migration; retarget after the prerequisite merges. Both feature branches are hosted on the contributor's fork.KernelArgumentblanket implementation usesDeviceCopy. Generic Tile scalars requireDType + DeviceCopy; tensor-only type parameters retain their independentDTypecontract. The shared argument arena preserves inline storage, padded values, over-alignment and typed destruction for the explicit unsafe boxed-argument escape hatch.AsyncKernelLaunchBuilderrequires unsafe finalization before becoming a schedulable, immutable launch. Generated typed launchers retain their checked boundaries. Tile PDL and SIMT cluster/cooperative launch paths are preserved. Raw async macros marshal slice pointers and lengths as direct scalar values; optional CPU-reference examples use the corresponding scalar bounds.DeviceBoxtransfers to/from shared typed buffers without copying and preserves ordinary read permissions. ExistingDeviceOperation,and_then,applyandarcspellings delegate to the shared implementations.cutile_inter_kernelnow uses the normal shared launch API to update the Tile-produced allocation in place, checks its pointer and allocation identity, and verifies results. Consumers, generated-project templates, documentation, UI fixtures and GPU test entry points are migrated.AGENTS.mdrecords that future branches must originate from the user's fork.Validation: shared async tests and doctests; Tile unit, aggregate GPU, submission-lifetime, interop and UI tests; cuda-host/cuda-macros suites; 268 cargo-oxide tests; four explicit SIMT lifetime/concurrency GPU tests. Both
cargo oxide run cutile_inter_kernelandcargo oxide run async_mlppass. Miri passes all seven argument-storage tests, and Loom passes the completion-handoff model. Host/Tile/affected SIMT clippy checks, formatting, strict async rustdoc, SPDX/API-path guards and Tile dependency checks pass.GPU execution was validated on one RTX 5090. This does not add multi-GPU/NVLink hardware coverage. API migration and custom-operation retention obligations are documented in
cuda-async/README.md.Additional validation: the full CPU runner passes (1,381 tests; 94 intentionally ignored), all top-level SIMT example workspaces pass Clippy with warnings denied, and all 144 macro unit tests pass. The
host_closureGPU example also passes all 13 scenarios, covering the corrected async slice argument marshalling.Current follow-up validation after incorporating the updated #1516/#1603 stack: all 1,394 CPU tests pass (95 intentionally ignored), as do 138 selected Tile GPU/interop/graph/view/lifetime tests and all four explicit SIMT lifetime/concurrency tests. The original stress reproducer reports no false negatives in 1,000,000 raw-buffer uniqueness checks and no false positives in 100,000 aliased-tensor partition attempts. Nihal's
DeviceBox::from_raw_partsshared-read fix remains included.Restored the original cutile-rs
unsafe async_on()contract: the caller independently keeps all submitted resources alive and orders their accesses. On return, including an error,async_on()releases runtime owners and access leases without synchronization or background retention. Safe futures retain their nonblocking completion-based cleanup. The existing four-tensor launch benchmark now measures 1.88 µs/launch, down from 4.95 µs before this fix (earlier main baseline: 1.68 µs). No batching or new launch API is needed for this fix.Current-main integration: Merged the updated #1603 prerequisite, including the CuTe host-consumer migration. The cuda-host, cuda-macros, ctm-rs and cute-rs suites pass (497 tests, 43 intentionally ignored), together with affected-package Clippy and all 16 CuTe example/model workspace Clippy checks. Fresh CI is running at
52dccfed1f; the preceding head had all 63 active checks passing.Validation for
b811b7067: all 133 cuda-async tests pass (14 intentionally ignored), all 11 Tile submission-lifetime tests and all four SIMT lifetime/concurrency GPU tests pass, and Clippy/formatting/rustdoc checks pass. Both new gated-stream regressions fail on the preceding code and pass here. Fresh CI is running.