ah ?
TNZ a écrit :
Par défaut, l'attribution d'une unité de calcul se fait par l'ordonnanceur et pour un thread.
|
J'ai jamais dit le contraire, avec tout le changement de contexte qui va bien. Mais y a t il un load balancing sur les processeurs autres que celui de la charge (ou le pif) ? Quand le nombre de tâche (je vais utiliser ce terme pour identifier de manière indifférente les processus et les threads) devient important, le coût du changement de contexte pour les executer devient d'autant plus grand (voir occupe 99% du temps quand ca swap à mort cf vieil ordi
).
Quand on lance un jeu qui occupe beaucoup de la charge du processeur, on peut espérer que le système fera en sorte que beaucoup de thread "court" (en temps d'éxecution) soit sur l'autre processeur, ce qui en pratique n'est quasiment jamais le cas. Donc pour moi, il y a encore matière a travailler sur le sujet (mais je te rassure, c'est déjà dans les cartons depuis belle lurette et mieux optimisé sur de nombreux autres systèmes et cela continue de progresser, preuve que le domaine n'est pas figé, rien qu'à voir le noyau 2.4 et 2.6 de nunux et la grosse optimisation sur la gestion multithread).
TNZ a écrit :
Ensuite, DirectX stune librairie, donc du code utilisé par les programmes et leurs plus ou moins nombreux threads. Il n'y a aucune notion de core du point de vue OS.
|
Oui et non, directX n'est pas qu'une simple librairie linké, sinon les perfs serait pas bien grande. Il y a le coté interface utilisé par les programmes qui communiquent à des "services" de toutes sortent, qui ont leur existance propre eux.
TNZ a écrit :
Et la meilleure optimisation restera l'application elle même ! ... en fait il n'y a plus qu'elle qui ne soit pas multi-threadée massivement. Et je t'avoue, pour en avoir mangé beaucoup, que des applis mono-threadées devant faire de l'évènementiel asynchrone, et bien, le code n'est pas d'une lisibilité exemplaire. Voire même que la principale cause de bugs vient de la logique séquentielle pure et dure générant des kilomètres de lignes de code très souvent approximatives et rarement testées.
|
Je n'ai pas dit que les applications ne pouvait pas être optimisé pour une environment multiprocesseur (suffit de voir l'exemple bateau du raytracing ou chaque core trace une partie de l'image finale)
Et moi aussi j'en ai bouffé... ceci dit, du mono-threadé, j'avoue aujourd'hui que ca m'épate, à moins de faire du code en ligne de commande ?
Rien que l'IHM doit être threadé pour ne pas provoquer de lock sur l'application (après, pour la gestion d'évenement de fenêtre et sa relative lisibilité, c'est lié au langage et la librairie utilisé, MFC en C++ ou VB, c'est le jour et la nuit).
Mais là n'est pas le débat, on parle de JEU ici, un jeu c'est quoi son pipeline graphique ?
Calcul entrée/sortie => Calcul physique/IA/.. => Transfo/déplacement graphique => rendu ?
A part fouttre les entrée/sortie sur un thread (déjà fait dans 99% des cas), tout le resque ne peut se mettre qu'en séquence dans le pipe, parce que rien ne peut avancer sans que l'étape précédente soit terminée.
La seule chose qui pourrait être parallélisé est le rendu, mais pas de bol, c'est fait coté GPU....
Le calcul de la physique tant à la mode pourrait être affiné effectivement... mais pas de bol encore... la tendance pousse les dev à utiliser les GPU ...
Quékonfé ? ben rien, on optimise là ou on peut, à savoir sur ce qui est quasi immuable sur 99% des jeux et qui pourrait apporterait le plus de gains... à savoir les librairies utilisé genre DirectX et le système qui fait tourner tout çà.
A la rigueur, jusqu'à présent, le progrés était réalisé en amont du pipe avec des algo d'approximation et d'anticipation sur les actions suivante avant même d'avoir reçu confirmation sur les I/O (coté serveur ou autre) afin de rendre plus fluide l'action.
TNZ a écrit :
Le fait de programmer en multi-thread demande à changer de méthode d'analyse. ![[:spamafote] [:spamafote]](https://forum-images.hardware.fr/images/perso/spamafote.gif)
|
Ca je ne peut pas laisser passer, cela fait des siècles qu'elles existent, et qu'elles sont utilisés, mais je te l'accorde, plus souvent du multi processus que multithread, mais bon, pourquoi utiliser un truc qui sera plus lent au final sans l'architecture qui va avec ?
Les softs vont y passer (les archiveurs par exemple passe déjà au multiproc genre winrar, 7zip & co..), ils n'ont pas besoin de cours pour çà, et les méthodes d'analyse qu'on utilise aujourd'hui le prennent déjà en compte (heureusement), sinon me demande pourquoi sun veut sortir son octocore...
Me souvient encore de mes premiers cours avec ce bête algo de calcul des nombres premiers sur n thread
complêtement inutile, mais peut être pas pour demain qui sait.
TNZ a écrit :
Citation :
Mais j'imagine de toute façon qu'il faudra attendre Vista et DirectX10 avant de voir vraiment des impacts sérieux dans les jeux.
|
Vista et DirectX10 n'ont rien à voir avec cet aspect là. WinXP est déjà multi-thread, et DX9, à ma connaissance, n'a pas forcément les pré-requis nécessaire à une utilisation multi-thread (comprendre gestion de la réentrance).)
|
Comme expliqué plus haut, WinXP est certe multithread, mais il y a encore du chemin... pour DX9, c'est ce que je m'evertu de dire depuis le début, le plus de gain (et les plus rapide à atteindre) seront du coté des lib de jeu, pas des jeux eux mêmes.
TNZ a écrit :
En fait la commercialisation des moteurs graphiques multi-threadés et leurs applications correspondera à la période Vista/DX10 ... simple concours de circonstances. Maintenant la vraie question est : est ce que DX10 est massivement réentrant ? (adapté au multi-threading)
|
Moi je ne crois pas au hasard, sachant que les roadmap sont prévu presque 10 ans à l'avance
Pour ta vrai question, DX9 est déjà "massivement réentrant" dans la mesure il peut être appelé par N processus sans foutre le système en rade.
La vrai question est, est ce qu'un jour il traitera toutes ces entrées de manière efficace sur plusieurs processeurs ?
J'ai tous mes espoirs la dessus vu que l'IHM de Vista sera en grande partie découplé du proco, et passera par DirectX et/ou OpenGL (plutot que la GDI toute pourri qui fait ramer quand on fait click droit ou qu'on ouvre une fenêtre), faudra bien qu'elles soient béton leur lib pour faire tourner des applications en sus de çà de plus en plus gourmande
ps: bizarre, j'ai un peu l'impression que je prèche un convaincu et qu'au final, on dit un peu la même chose, bah pas grave, c'est fait 
Message édité par cyberlau le 25-08-2006 à 08:37:21