v1.4.6 (2026-05-15)

Download

Important Notes

  • Internal bandwidth improved by ~20% through internal tuning.
pxl
  • Context::stream() removed from the public API. Use the Stream that each Job owns internally, or allocate a user-managed Stream via pxl::createStream().
  • Concurrent Job count is now effectively bounded by the per-process Stream pool capacity (128 streams, shared with user-created Streams). createJob* returns nullptr / Result::Failure when the pool is exhausted.
  • Multi-stream usage with interleaved flush/execute may observe conservative over-sync (never under-sync) due to max-size-wins matching policy.
  • subFree() and subFree(numSub) invalidate all Maps owned by the Job because each Map snapshots its Job’s Sub assignment at construction time.
  • MemInfo_t struct size changed (deviceId field added). Recompilation required.
  • Reduced nop task turnaround time by ~30–70% on average vs. 1.4.5, with up to 84% improvement in some cases.

New

mxdriver_dev
  • mxdriver: DKMS support.
pxl
  • PXL: Added Map::cancel() — soft cancellation that drains in-flight batches, skips unissued ones, and parks the map in the new ExecuteStatus::Cancelled terminal state. The map is re-executable after cancel; argument caches are preserved.
  • PXL: Added Map::getProgress() returning a Progress_t snapshot (target / issued / done packet counts) for live and post-cancel progress inspection.
  • PXL: Added pxl/compat.hpp with deprecated aliases for the pre-3.0 API (pxl::runtime::, pxl::kernel::, pxl::memory::, pxl::PxlResult, pxl::memory::systemCommand). Scheduled for removal in a future release.
  • PXL: Added Device-less Launcher API — pxl::Launcher().execute<K>(N, args).run() for single-line kernel execution with automatic device detection.
  • PXL: Added pxl::allocateMemory / pxl::releaseMemory free functions for device memory allocation.
xtop
  • xtop: Multi-device profiling — xtop run auto-detects every device on the node and captures one .xpti per device.
  • xtop: Live recording — xtop view --record FILE.xpti streams the live monitor into an .xpti for later replay.
  • xtop: Post-mortem workflow split — xtop convert (Perfetto), xtop export (CSV/raw), xtop open (browser) replace the bundled run-time export path.

Changed

mxdriver_dev
  • driver: Reduced per-call overhead of command submission ioctl in light workloads by avoiding unnecessary synchronous PCIe reads.
pxl
  • Context::createJob* now allocates a private default Stream per Job from the per-process Stream pool. Multi-Job workloads that previously shared one Context-level Stream are no longer serialised behind a single FIFO.
  • PXL: pxl::flushHostCache(ptr, size) now reduces host-to-device auto-sync transfer to Map::execute() for the same pointer, avoiding full-allocation flush/DMA when only a sub-region was flushed. Device-to-host output sync preserves the full allocation size for safety. No API signature change.
  • PXL: destroyJob() may now return Failure when it races a concurrent subFree*() on the same Job. Callers should retry after the competing teardown completes.
  • PXL: Map::execute may now block when the shared stream queue is full, instead of returning Failure immediately.
xtop
  • xtop: xtop run --csv removed. Please use xtop export <.xpti> --csv [DIR].

Fixed

pxl
  • PXL: Optimized host-side performance of Map::execute() on repeated invocations.
  • PXL: Propagated output copyFromDevice failures from the host-side post-execute step.
  • PXL: Fixed teardown races that could fail or crash when subFree*() or destroyJob() overlapped with in-flight async Map or async sub-allocation work.
  • PXL: Fix submission drops on shared default streams (queue overflow) and under transient internal task-pool pressure.
  • PXL: Fixed incorrect IO memory granularity applied to non-first devices in mixed CXL/non-CXL multi-device systems.
  • PXL: Save coredump at first error detection instead of job destruction, preserving correct device state for debugging.
xtop
  • xtop: Skip profiler-unsupported firmware devices so multi-device runs no longer abort when one device runs a non-profiling firmware.
  • xtop: Stale device-event rows from prior runs are cleaned up so analysis isn’t polluted by leftover hardware-probe data.

Docker Image

  • Image Name: xcenadev/sdk:v1.4.6
  • Pull Command:

    docker pull xcenadev/sdk:v1.4.6