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 |
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.