I'm currently running CoppeliaSim on a system with the following specs:
CPU: Intel i5-11600K (6 cores, 12 threads)
RAM: 16 GB
GPU: None (integrated graphics only)
OS: Windows 10
I'm noticing that simulation time is relatively slow for my project, and I'm looking for ways to improve performance. I have two main questions:
1. Is it possible to make CoppeliaSim utilize more CPU cores/threads to speed up simulation execution time? If so, are there specific settings I should adjust, or is this mostly limited by the simulation content itself?
2. Would adding a dedicated GPU (e.g., an NVIDIA card) improve simulation performance in any meaningful way? I understand that rendering would improve, but does it also help speed up the actual physics or simulation computation?
Any advice or insights would be greatly appreciated. Thank you!
Improving Simulation Speed in CoppeliaSim (CPU multithreading / GPU support)
Re: Improving Simulation Speed in CoppeliaSim (CPU multithreading / GPU support)
Hello,
in general, the simulation items will run sequentially, e.g. actuation section before sensing section, etc. This also means that CoppeliaSim scripts will run sequentially (even with threaded scripts). API access is should always happen from the main thread, the simulation thread. Everything you do in a remote API client will execute in parallel to CoppeliaSim, except for API access (i.e. all CoppeliaSim functions) and when running in stepping mode.
CoppeliaSim doesn't focus on speed, but more on flexibility and functionality, mainly for R&D applications, such as fast prototyping.
To improve speed, you can do several things:
in general, the simulation items will run sequentially, e.g. actuation section before sensing section, etc. This also means that CoppeliaSim scripts will run sequentially (even with threaded scripts). API access is should always happen from the main thread, the simulation thread. Everything you do in a remote API client will execute in parallel to CoppeliaSim, except for API access (i.e. all CoppeliaSim functions) and when running in stepping mode.
CoppeliaSim doesn't focus on speed, but more on flexibility and functionality, mainly for R&D applications, such as fast prototyping.
To improve speed, you can do several things:
- Reduce the numer of rendered frames (simulation passes per frame)
- Disable rendering for the time the simulation runs (Toggle visualization toolbar button)
- Increase the simulation dt
- Increase the dynamics dt
- Handle various espects of a simulation not in each simulation step, but e.g. in every nth simulation step. E.g. with vision sensor or proximity sensors, set this in explicit handling mode, and handle them only when needed with sim.HandleVisionSensor(sensorHandle) and sim.handleProximitySensor(sensorHandle)
Re: Improving Simulation Speed in CoppeliaSim (CPU multithreading / GPU support)
If there is a way to run CoppeliaSim on GPU, it must be awesome!!!
Re: Improving Simulation Speed in CoppeliaSim (CPU multithreading / GPU support)
CoppeliaSim is not meant for speed. Its emphasis is functionality, flexibility and ease of use. For speed, you should look at using one of the physics engines naked.
Cheers
Cheers