Genesis icon indicating copy to clipboard operation
Genesis copied to clipboard

[Bug]: ZeroDivisionError when starting genesis with vulkan backend

Open severin-lemaignan opened this issue 1 month ago • 1 comments

Bug Description

Trying the Genesis' hello world on an Intel Core Ultra (ARC graphics):

  • works fine on the CPU (backend=gs.cpu)
  • immediately crashes with the GPU backend (backend=gs.gpu) with a ZeroDivisionError

Steps to Reproduce

run the official 'hello world' snippet:

> cat hello_world.py
import genesis as gs
gs.init(backend=gs.gpu)

scene = gs.Scene(show_viewer=True)
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
    gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)

scene.build()

for i in range(1000):
    scene.step()

> uv run ./hello_world.py

Expected Behavior

The hello world scene works on the GPU (Vulkan) in the same way as on the CPU.

Screenshots/Videos

No response

Relevant log output

This is the exact ouput log:


[Genesis] [22:05:43] [INFO] ╭─────────────────────────────────────────────────────────────────────────────────────╮
[Genesis] [22:05:43] [INFO] │┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉ Genesis ┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉┈┉│
[Genesis] [22:05:43] [INFO] ╰─────────────────────────────────────────────────────────────────────────────────────╯
[Genesis] [22:05:44] [INFO] Running on [Intel(R) Arc(TM) Graphics] with backend gs.vulkan. Device memory: 13.41 GB.
[Genesis] [22:05:44] [INFO] 🚀 Genesis initialized. 🔖 version: 0.3.7, 🎨 theme: dark, 🌱 seed: None, 🐛 debug: False, 📏 precision: 32, 🏎️ performance: False, 💬 verbose: INFO
[Genesis] [22:05:49] [INFO] Scene <1e4332b> created.
[Genesis] [22:05:49] [INFO] Adding <gs.RigidEntity>. idx: 0, uid: <0c68b0b>, morph: <gs.morphs.Plane>, material: <gs.materials.Rigid>.
[Genesis] [22:05:49] [INFO] Adding <gs.RigidEntity>. idx: 1, uid: <5f3c511>, morph: <gs.morphs.MJCF(file='/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/assets/xml/franka_emika_panda/panda.xml')>, material: <gs.materials.Rigid>.
[Genesis] [22:05:50] [WARNING] (MJCF) Approximating tendon by joint actuator for `finger_joint1`
[Genesis] [22:05:50] [WARNING] (MJCF) Actuator control gain and bias parameters cannot be reduced to a unique PD control position gain. Using max between gain and bias for joint `finger_joint1`.
[Genesis] [22:05:50] [WARNING] (MJCF) Approximating tendon by joint actuator for `finger_joint2`
[Genesis] [22:05:50] [WARNING] (MJCF) Actuator control gain and bias parameters cannot be reduced to a unique PD control position gain. Using max between gain and bias for joint `finger_joint2`.
[Genesis] [22:05:50] [INFO] Applying offset to base link's pose with user provided value in morph.
[Genesis] [22:05:50] [INFO] Building scene <1e4332b>...
[Genesis] [22:05:51] [WARNING] Reference robot position exceeds joint limits.
[Genesis] [22:05:51] [WARNING] Constraint solver time constant should be greater than 2*substep_dt. timeconst is changed from `0.005` to `0.02`). Decrease simulation timestep or increase timeconst to avoid altering the original value.
Traceback (most recent call last):
  File "/home/skadge/applis/genesis/test1.py", line 11, in <module>
    scene.build()
    ~~~~~~~~~~~^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/utils/misc.py", line 140, in wrapper
    return method(self, *args, **kwargs)
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/scene.py", line 806, in build
    self._sim.build()
    ~~~~~~~~~~~~~~~^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/simulator.py", line 208, in build
    solver.build()
    ~~~~~~~~~~~~^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/solvers/rigid/rigid_solver_decomp.py", line 289, in build
    self._init_collider()
    ~~~~~~~~~~~~~~~~~~~^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/solvers/rigid/rigid_solver_decomp.py", line 763, in _init_collider
    self.collider = Collider(self)
                    ~~~~~~~~^^^^^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/solvers/rigid/collider_decomp.py", line 66, in __init__
    self._support_field = SupportField(rigid_solver)
                          ~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/solvers/rigid/support_field_decomp.py", line 21, in __init__
    self._compute_support()
    ~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/skadge/applis/.venv/lib/python3.13/site-packages/genesis/engine/solvers/rigid/support_field_decomp.py", line 54, in _compute_support
    window_size = int(5e8 // this_pos.shape[0])
                      ~~~~^^~~~~~~~~~~~~~~~~~~
ZeroDivisionError: float floor division by zero

[Genesis] [22:05:52] [ERROR] ZeroDivisionError: float floor division by zero
[Genesis] [22:05:52] [INFO] 💤 Exiting Genesis and caching compiled kernels...

Environment

  • OS: Ubuntu 25.10
  • GPU/CPU:Intel(R) Core(TM) Ultra 9 185H, Arc(TM) Graphics
  • GPU-driver version:
 + intel-cmplr-lib-rt==2025.2.1
 + intel-cmplr-lib-ur==2025.2.1
 + intel-cmplr-lic-rt==2025.2.1
 + intel-opencl-rt==2025.2.1
 + intel-openmp==2025.2.1
 + intel-pti==0.13.1
 + intel-sycl-rt==2025.2.1
 + mkl==2025.2.0
 + oneccl==2021.16.1
 + oneccl-devel==2021.16.1
 + onemkl-sycl-blas==2025.2.0
 + onemkl-sycl-dft==2025.2.0
 + onemkl-sycl-lapack==2025.2.0
 + onemkl-sycl-rng==2025.2.0
 + onemkl-sycl-sparse==2025.2.0
  • torch:
   torch==2.9.1+xpu
   torchaudio==2.9.1+xpu
   torchvision==0.24.1+xpu
  • CUDA / CUDA-toolkit version: N/A

Release version or Commit ID

0.3.7

Additional Context

No response

severin-lemaignan avatar Nov 15 '25 21:11 severin-lemaignan

yeah, I'm afraid our Vulkan backend is somewhat broken at the moment...

duburcqa avatar Nov 16 '25 00:11 duburcqa