|
1 | | -PhysX Simulation Performance and Tuning |
2 | | -========================================= |
| 1 | +:orphan: |
3 | 2 |
|
4 | | -.. note:: |
| 3 | +Simulation Performance |
| 4 | +====================== |
5 | 5 |
|
6 | | - This guide covers performance tuning for the **PhysX** backend, which is the default when |
7 | | - running Isaac Lab with Isaac Sim. For the **Newton** backend solver parameters (e.g. |
8 | | - ``njmax``, ``nconmax``, ``ls_iterations``), see the |
9 | | - :ref:`migrating-to-isaaclab-3-0` migration guide and the Newton physics documentation. |
10 | | - |
11 | | -The performance of the PhysX simulation can be affected by various factors, including the number |
12 | | -of objects in the scene, the complexity of the physics simulation, and the hardware being used. |
13 | | -Here are some tips to improve performance: |
14 | | - |
15 | | -1. **Use Headless Mode**: Running the simulation in headless mode can significantly improve performance, especially |
16 | | - when rendering is not required. For commands that do not select a visualizer, no viewer is launched unless the configuration requests one. If a config or |
17 | | - command would otherwise launch visualizers, pass ``--viz none`` to force-disable them. |
18 | | -2. **Avoid Unnecessary Collisions**: If possible, reduce the number of object overlaps to reduce overhead in the simulation. |
19 | | - Excessive contacts and collisions in the simulation can be expensive in the collision phase in the simulation. |
20 | | -3. **Use Simplified Physics**: Consider using simplified physics collision geometries or lowering simulation fidelity |
21 | | - for better performance. This can be done by modifying the assets and adjusting the physics parameters in the simulation configuration. |
22 | | -4. **Use CPU/GPU Simulation**: If your scene consists of just a few articulations or rigid bodies, consider using CPU simulation |
23 | | - for better performance. For larger scenes, using GPU simulation can significantly improve performance. |
24 | | - |
25 | | -Collision Geometries |
26 | | --------------------- |
27 | | - |
28 | | -Collision geometries are used to define the shape of objects in the simulation for collision detection. Using |
29 | | -simplified collision geometries can improve performance and reduce the complexity of the simulation. |
30 | | - |
31 | | -For example, if you have a complex mesh, you can create a simplified collision geometry that approximates the shape |
32 | | -of the mesh. This can be done in Isaac Sim through the UI by modifying the collision mesh and approximation methods. |
33 | | - |
34 | | -Additionally, we can often remove collision geometries on areas of the robot that are not important for training. |
35 | | -In the AnymalC robot, we keep the collision geometries for the kneeds and feet, but remove the collision geometries |
36 | | -on other parts of the legs to optimize for performance. |
37 | | - |
38 | | -Simpler collision geometries such as primitive shapes like spheres will also yield better performance than complex meshes. |
39 | | -For example, an SDF mesh collider will be more expensive than a simple sphere. |
40 | | - |
41 | | -Note that cylinder and cone collision geometries have special support for smooth collisions with triangle meshes for |
42 | | -better wheeled simulation behavior. This comes at a cost of performance and may not always be desired. To disable this feature, |
43 | | -we can set the stage settings ``--/physics/collisionApproximateCylinders=true`` and ``--/physics/collisionApproximateCones=true``. |
44 | | - |
45 | | -Another item to watch out for in GPU RL workloads is warnings about GPU compatibility of ``Convex Hull`` approximated mesh collision geometry. |
46 | | -If the input mesh has a high aspect ratio (e.g. a long thin shape), the convex hull approximation may be incompatible with GPU simulation, |
47 | | -triggering a CPU fallback that can significantly impact performance. |
48 | | - |
49 | | -A CPU-fallback warning looks as follows: ``[Warning] [omni.physx.cooking.plugin] ConvexMeshCookingTask: failed to cook GPU-compatible mesh, |
50 | | -collision detection will fall back to CPU. Collisions with particles and deformables will not work with this mesh.``. |
51 | | -Suitable workarounds include switching to a bounding cube approximation, or using a static triangle mesh collider |
52 | | -if the geometry is not part of a dynamic rigid body. |
53 | | - |
54 | | -CPU Governor Settings on Linux |
55 | | ------------------------------- |
56 | | - |
57 | | -CPU governors dictate the operating clock frequency range and scaling of the CPU. This can be a limiting factor for Isaac Sim performance. For maximum performance, the CPU governor should be set to ``performance``. To modify the CPU governor, run the following commands: |
58 | | - |
59 | | -.. code-block:: bash |
60 | | -
|
61 | | - sudo apt-get install linux-tools-common |
62 | | - cpupower frequency-info # Check available governors |
63 | | - sudo cpupower frequency-set -g performance # Set governor with root permissions |
64 | | -
|
65 | | -.. note:: |
66 | | - |
67 | | - Not all governors are available on all systems. Governors enabling higher clock speed are typically more performance-centric and will yield better performance for Isaac Sim. |
68 | | - |
69 | | -Additional Performance Guides |
70 | | ------------------------------ |
71 | | - |
72 | | -There are many ways to "tune" the performance of the simulation, but the way you choose largely depends on what you are trying to simulate. In general, the first place |
73 | | -you will want to look for performance gains is with the `PhysX engine <https://docs.omniverse.nvidia.com/kit/docs/omni_physics/107.3/dev_guide/guides.html>`_. Next to rendering |
74 | | -and running deep learning models, the PhysX engine is the most computationally costly. Tuning the PhysX sim to limit the scope to only the task of interest is a great place to |
75 | | -start hunting for performance gains. |
76 | | - |
77 | | -We have recently released a new `gripper tuning guide <https://docs.omniverse.nvidia.com/kit/docs/omni_physics/107.3/dev_guide/guides/gripper_tuning_example.html>`_ , specific to contact and grasp tuning. Please check it first if you intend to use robot grippers. For additional details, you should also checkout these guides! |
78 | | - |
79 | | -* `Isaac Sim Performance Optimization Handbook <https://docs.isaacsim.omniverse.nvidia.com/latest/reference_material/sim_performance_optimization_handbook.html>`_ |
80 | | -* `Omni Physics Simulation Performance Guide <https://docs.omniverse.nvidia.com/kit/docs/omni_physics/latest/dev_guide/guides/physics-performance.html>`_ |
| 6 | +This page has moved. See :ref:`simulation-performance-troubleshooting` for guidance on diagnosing |
| 7 | +slow simulation and training workloads. |
0 commit comments