Composed task graph's dynamic scheduling - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2023

Composed task graph's dynamic scheduling

Ordonnancement dynamique de graphe de tâches par composition

Baptiste Coye
  • Fonction : Auteur
  • PersonId : 1283409
  • IdRef : 271906545

Résumé

In the process of developing a video game, teams face a major problem: the performance of the game on consoles and PCs. Indeed, AAA games require a significant amount of computing power and must be capable of maintaining at least 30 frames per second on consoles and 60 frames per second on PCs. If the game fails to render frames at this frequency, this results in a bumpy execution directly impacting the player's experience.To construct each frame, a set of tasks needs to be executed on a player's machine, such as physics engine, sound management, and artificial intelligence. Each of these tasks can be expressed either as a monolithic task or decomposed into a small parallel graph. They are grouped together as a global graph and need to be executed efficiently to ensure a certain frame rate. Furthermore, it is necessary to respect the dependencies and priorities between tasks in order to maintain both coherence during gameplay execution and make the best use of available time. This means effectively utilizing the machine's memory and parallelism.One initial difficulty lies in the fact that these tasks are built and added by different individuals with independent roles. The global task graph is obtained through composition and is highly inaccessible during video game design. Additionally, the number of tasks and their execution duration vary during gameplay based on the player's position, actions, environment, or other players. Moreover, the need to meet real-time constraints, depending on computational resources, may require the use of degraded versions of certain tasks or even abandoning them completely. The redundancy of patterns in the task graph during gameplay could also prompt us to anticipate certain calculations, thereby preparing the execution of tasks in advance to achieve better performance.Therefore, it is necessary to have a dynamic task scheduling approach capable of considering these various constraints.In this thesis, we first analyze the impact of methods issued from high-performance computing on game engines. We formalize the problem of soft real-time scheduling within the context of video games and explore optimization opportunities based on execution traces collected during gameplay.We also propose a method of dynamic scheduling based on Monte Carlo graph exploration. This method determines possible local optimizations and adapts the frame execution based on the game's needs, dynamically prioritizing parts that require the most resources at a given moment.Furthermore, we propose a dynamic Task Skipping mechanism to control the execution of the game itself, balancing the workload of different frames over a longer period of time. This approach provides a longer-term optimization perspective beyond individual frames, allowing for smoother calculations and preventing frame losses, which often occur when a large number of computations are required.
Dans le processus de développement d’un jeu vidéo, les équipes se heurtent à un problème majeur : les performances du jeu sur console et PC. En effet, les jeux AAA sont gourmands en puissance de calcul et ceux-ci doivent être capable de tenir au moins 30 images par seconde sur des consoles et 60 images par seconde sur des PC. Si le moteur de jeu échoue à construire les images à une cette fréquence, l'exécution devient saccadée ce qui impacte directement l'expérience du joueur.Afin de construire cette image, un ensemble de tâches doit être exécuté sur la machine d’un joueur à chaque frame, comme le moteur physique, la gestion du son, les intelligences artificielles. Chacune de ces tâches peut être exprimée de façon monolithique ou décomposée en un petit graphe parallèle. Elles sont regroupées sous forme d’un graphe global et doivent être exécutées efficacement afin de garantir un certain frame rate. Par ailleurs il est nécessaire de respecter les dépendances entre les tâches et leurs priorités afin de conserver à la fois une cohérence lors de l’exécution du jeu, mais également utiliser au mieux le temps disponible: cela veut dire qu’il faut utiliser efficacement la mémoire et le parallélisme de la machine.Une première difficulté réside dans le fait que ces tâches sont construites et ajoutées par des personnes différentes, dont les métiers sont indépendants. Le graphe de tâches global est obtenu par composition et est très difficilement accessible lors de la conception du jeu vidéo. Par ailleurs, le nombre de tâches et leur durée d’exécution varie au cours du déroulement du jeu en fonction de la position du joueur, de ses actions, de son environnement ou des autres joueurs. De plus la nécessité de respecter les contraintes de temps réel peuvent en fonction des ressources de calculs imposer l’utilisation de versions dégradées de certaines tâches voir complètement les abandonner. La redondance de motifs dans le graphe de tâches lors de l'exécution du jeu pourrait également nous pousser à anticiper certains calculs, et ainsi préparer en avance l’exécution de tâches nous permettant de meilleures performances.Il est donc nécessaire d’avoir un ordonnancement dynamique de tâches, capable de prendre ces différentes contraintes en compte.Dans cette thèse, nous analysons dans un premier temps l'impact de méthodes issue du calcul haute performance sur les moteurs de jeux, une formalisation du problème de l'ordonnancement temps réel souple dans le cadre du jeu vidéo, ainsi que les opportunités d’optimisation à partir de traces d’exécution collectées lors de parties.Nous proposons également une méthode d'ordonnancement dynamique, basés sur l’exploration d’un graphe de Monte Carlo afin de déterminer les optimisations locales possibles et ainsi adapter l’exécution de la Frame en fonction des besoins du jeu en priorisant les parties demandant le plus de ressources à un instant T de façon dynamique.De plus nous proposons aussi un mécanisme de "Task Skipping" dynamique, permettant de contrôler l’exécution du jeu en elle-même de façon à équilibrer la charge des différentes frames sur un temps plus long. Cela permet d’avoir une vision plus long terme de l’optimisation et de ne plus se borner à la frame mais à une espace local constitué de plusieurs, permettant de lisser les calculs et empêcher les pertes de frames, fréquentes lorsqu’un trop grand nombre de calculs sont nécessaires.
Fichier principal
Vignette du fichier
COYE_BAPTISTE_2023.pdf (35.16 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-04204755 , version 1 (12-09-2023)

Identifiants

  • HAL Id : tel-04204755 , version 1

Citer

Baptiste Coye. Composed task graph's dynamic scheduling. Performance [cs.PF]. Université de Bordeaux, 2023. English. ⟨NNT : 2023BORD0187⟩. ⟨tel-04204755⟩
87 Consultations
4 Téléchargements

Partager

Gmail Facebook X LinkedIn More