Summary
In #39, amdgpu-waves-per-eu fn_attrs were added to three hot kernels in the rigid body and constraint
solver:
| Kernel |
File |
waves-per-eu (min,max) |
kernel_step_1 |
genesis/engine/solvers/rigid/rigid_solver.py |
3,4 |
kernel_step_2 |
genesis/engine/solvers/rigid/rigid_solver.py |
1,4 |
func_solve_init |
genesis/engine/solvers/rigid/constraint/solver.py |
2,4 |
These values were determined by a per-kernel occupancy sweep on MI300X (CDNA3) and are not guaranteed to be optimal or neutral on other AMD GPU architectures.
What needs to be done
When new AMD GPU architectures become available, or if the workload characteristics change significantly (e.g.
different scene complexity or number of environments), the occupancy sweep should be re-run for
these three kernels to determine whether the current hardcoded values are still appropriate or need to be updated.
A longer-term alternative would be to introduce per-architecture hint selection in Quadrants (see ROCm/quadrants#11), but that is a significantly more involved change and out of scope for now.
Note: This issue serves as a reminder that these values are architecture-specific and should be revisited as
hardware evolves.
Summary
In #39,
amdgpu-waves-per-eufn_attrs were added to three hot kernels in the rigid body and constraintsolver:
waves-per-eu (min,max)kernel_step_1genesis/engine/solvers/rigid/rigid_solver.py3,4kernel_step_2genesis/engine/solvers/rigid/rigid_solver.py1,4func_solve_initgenesis/engine/solvers/rigid/constraint/solver.py2,4These values were determined by a per-kernel occupancy sweep on MI300X (CDNA3) and are not guaranteed to be optimal or neutral on other AMD GPU architectures.
What needs to be done
When new AMD GPU architectures become available, or if the workload characteristics change significantly (e.g.
different scene complexity or number of environments), the occupancy sweep should be re-run for
these three kernels to determine whether the current hardcoded values are still appropriate or need to be updated.
A longer-term alternative would be to introduce per-architecture hint selection in Quadrants (see ROCm/quadrants#11), but that is a significantly more involved change and out of scope for now.