Troubleshooting#

In case of crash/seg fault#

  • run without cache - or clear cache - to see if this resolves the issue

  • if running without cache solves the seg fault, then clear the cache

To run without cache:

qd.init(offline_cache=False, ...)

See qd.init options for what offline_cache=False actually does on CUDA (it bypasses both the Quadrants PtxCache and the NVIDIA driver compute cache).

To clear cache:

  • the cache is located by default on linux and mac at ~/.cache/quadrants

  • simply remove this entire folder:

rm -Rf ~/.cache/quadrants

If this doesn’t solve the problem, then you’ll likely need to log a github issue, providing as much information as possible, and crucially a minimum reproducible example, to reproduce the seg fault.

AMDGPU hangs on first field allocation#

Some APUs (notably Rembrandt gfx90c) advertise HIP memory-pool support while hipMallocAsync never returns. Quadrants then hangs on the first dense field / SNode allocation after qd.init(arch=qd.amdgpu).

  • On gfx90c, HIP memory pools are disabled automatically; allocations use sync hipMalloc.

  • To force that path on any AMDGPU device (for example another target with a broken async allocator, or to A/B the pool path):

export QD_ENABLE_HIP_MEMPOOL=0

Tradeoff: with pools off, device allocations come from the preallocated arena sized by device_memory_fraction / device_memory_GB in qd.init(...). Large batched scenes may need a higher fraction (e.g. qd.init(..., device_memory_fraction=0.9)). Kernel speed is unchanged; only allocation growth behavior differs.