Je travaille sur une simulation de particules et j'ai rencontré un petit goulot d'étranglement. L'utilisation d'UAV pour écrire dans un tampon flottant unique RWStructured est environ 10 fois trop lente. D'après l'expérimentation, il semble qu'il n'y ait pas de pénurie de bande passante, mais que le temps d'accès lui-même soit un obstacle. L'écriture en appendice est hors de question puisque les données sortantes doivent être dans un ordre spécifique. Tout ceci se fait sur du matériel DX10/SM4, voici donc quelques questions : Existe-t-il un moyen d'accélérer les choses (autre que d'écrire de plus gros morceaux de données puisque les sorties des shaders ne sont pas consécutives) ? Sinon, le matériel de niveau DX11 est-il plus rapide avec les drones ?
Réponse
Trop de publicités?La première chose à faire (si vous ne l'avez pas déjà fait), pour profiler votre code shader, est d'ajouter des requêtes GPU à votre système. Voici un lien pour l'expliquer :
http://mynameismjp.wordpress.com/2011/10/13/profiling-in-dx11-with-queries/
Il est en dx11 mais les fonctionnalités sont en dx10 aussi, donc il devrait être très simple de le porter.
Après, dans le calcul, il y a différents aspects, mais le premier serait de jouer avec :
[numthreads(TGX, 1, 1)]
Essayez des valeurs comme 8, 16, 32, 64 et essayez de trouver le point idéal (n'oubliez pas de diviser sur votre répartition).