Skip to content

amdgpu-waves-per-eu occupancy hints in rigid/constraint kernels are MI300X-specific - revisit for future architectures #61

Description

@kevinjosephamd

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions