""" This is an example for rendering on multiple GPUs in parallel, using the multiprocessing module. """ from multiprocessing import set_start_method from time import perf_counter from mujoco_py import load_model_from_path, MjRenderPool def main(): # Image size for rendering IMAGE_WIDTH = 255 IMAGE_HEIGHT = 255 # Number of frames to render per sim N_FRAMES = 100 # Number of sims to run in parallel (assumes one per GPU), # so N_SIMS=2 assumes there are 2 GPUs available. N_SIMS = 2 pool = MjRenderPool(load_model_from_path("xmls/tosser.xml"), device_ids=N_SIMS) print("main(): start benchmarking", flush=True) start_t = perf_counter() for _ in range(N_FRAMES): pool.render(IMAGE_WIDTH, IMAGE_HEIGHT) t = perf_counter() - start_t print("Completed in %.1fs: %.3fms, %.1f FPS" % ( t, t / (N_FRAMES * N_SIMS) * 1000, (N_FRAMES * N_SIMS) / t), flush=True) print("main(): finished", flush=True) if __name__ == "__main__": set_start_method('spawn') main()