Skip to content

Commit c958fdf

Browse files
committed
Loosen rebuild-after-topology tolerance to 1e-5
The chained set_world_poses -> get_world_poses round-trip in test_fabric_rebuild_after_topology_change goes through Warp's float32 SRT compose/decompose, which accumulates a few ULP of drift. At the test's position magnitudes (~4-6), one float32 ULP is ~4.77e-7, so the prior atol of 1e-7 demanded sub-ULP agreement and was sensitive to GPU/codegen variation -- it passed locally on the A6000 but flaked in CI. 1e-5 corresponds to roughly 20 ULP at those magnitudes: tight enough to catch any real bug (a wrong index or stale read would be at least ~1e-3 off given the test setup) and consistent with the shared contract harness in frame_view_contract_utils.py, which already documents and uses ATOL = 1e-5 for compose/decompose-through-float32 checks.
1 parent f6479ad commit c958fdf

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

source/isaaclab_physx/test/sim/test_views_xform_prim_fabric.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,8 @@ def test_fabric_rebuild_after_topology_change(device, view_factory):
209209
ret_pos, _ = view.get_world_poses()
210210
pos_torch = wp.to_torch(ret_pos)
211211
expected = torch.tensor([[4.0, 5.0, 6.0], [4.0, 5.0, 6.0]], device=device)
212-
assert torch.allclose(pos_torch, expected, atol=1e-7), f"Read after rebuild failed on {device}: {pos_torch}"
212+
# 1e-5 ≈ 20 ULP at magnitudes ~4-6; absorbs float32 SRT compose/decompose drift.
213+
assert torch.allclose(pos_torch, expected, atol=1e-5), f"Read after rebuild failed on {device}: {pos_torch}"
213214

214215

215216
@pytest.mark.parametrize("device", ["cuda:0"])

0 commit comments

Comments
 (0)