Direct3D11 et le multi-threading

Mots clés Technorati : PDC09

3ième journée à la PDC 2009, et comme d’hab à Los Angeles, il a fait un temps magnifique aux alentours de 22 degrés que du bonheur.

Elle a commencée sans surprise, par une session plénière, qui elle nous a réservée un certain nombre de surprises et d’annonces importantes de sorties béta de produit comme Silverligh 4, Office 2010 et d’autres sur lesquels nous ne reviendrons pas dans ce billet, car elles ne concernent pas le développement parallèle. Néanmoins, la plus grande surprise a été l’annonce, de l’offre gratuite d’un Tablet PC multi-touch spéciale Windows 7, pour tous les participants. Attention touchante que notre Bruno à beaucoup apprécié, même si le clavier est qwerty.

Bon revenons à nos moutons, Aujourd’hui, pas beaucoup de sessions dédiées au parallélisme si ce n’est celle de Monsieur Burton Smith qui nous a expliqué de main de maitre pendant une heure, la gestion des états dans la programmation parallèle. Bruno reviendra rapidement dessus dans un prochain billet.

Nous avons ensuite dirigé nos pas vers une session, plutôt dédié aux développeurs de jeux, sur la programmation Graphique 3D à l’aide de l’API Direct3D.

Comme vous le savez Direct3D s’appuie sur l’accélération Hardware donc sur les cartes graphiques qui sont munis d’une multitude de cœurs et qui permet une exécution massivement parallèle.

L’envoi d’instructions, de primitives, se fait via une architecture dite en pipeline, qui permet de traiter les triangles étapes par étapes avant de les fournir à la carte graphique qui les exécutera alors en parallèle.

Image1

Jusqu’à Direct3D10, ce pipeline, n’est pas réentrant, ce qui veut dire qu’un seul thread à un instant T, peux y accéder. En d’autres termes, si vous possédez une machine de course avec un Core I7, 4 cœurs hyper-threadé, cela n’accéléra pas forcément les derniers jeux à la mode.

Avec Direct3D11 cela change, car ils décomposent un certain nombre d’étapes dans le Pipeline, pour permettent la création sur plusieurs threads de listes de commandes et de primitives, avant de les resynchroniser dans le pipeline et de les renvoyer à la carte graphique.

Image2

Avec Direct3D11 apparaît également une nouvelle fonctionnalité, DirectCompute, qui permet de faire du GPGPU à l’aide de Compute Shader. Un shader étant un script, écrit dans un langage proche du C++ le HLSL, qui permet d’effectuer des calculs, des transformations ou autres effets. Mais comme la session aura lieu demain, (ou plutôt tout à l’heure) nous y reviendrons dans un prochain billet.

Mais aujourd’hui nous n’avons pas perdu notre temps, car pour notre grand bonheur, nous avons pues interviewer,  Stephen Toub (Program Manager sur TPL), Rick Molloy (Program Manager sur PPL et les agents) et Boris Jabes (Program Manager sur VC++), qui ont tous bien voulue avec gentillesse répondre à nos questions.

Alors restez à l’écoute car nous publierons très prochainement les versions traduites en français des vidéos des ces interviews.

L’équipe DevPara