|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Lycéen Inscription : avril 2011 Messages : 83 ![]() |
Bonjour à tous
Je souhaiterais obtenir quelques précisions sur la meilleure manière de procéder lorsqu'on crée un vbo. J'ai une classe qui permet de créer et modifier un vbo à partir de plusieurs std::vector<> correspondants au tableaux de vertex, couleurs, coordonnées de texture et index. Cependant, les méthodes de cette classe sont souvent amenées à être appelées et les vector à être modifiés, ce qui je crois n'est pas terrible pour les performances de l'application. Je voulais savoir si il serait plus avantageux de créer un vector de tableaux automatiques de taille N afin d'allouer la mémoire par bloc successifs et non par ajouts systématiques sur un seul vector, ceci afin d'éviter l'appel trop fréquent de push_back(). Si une telle solution est plus avantageuse, quelle valeur approximative vaut N ? Doit-elle dépendre de la situation ? D'autre part je me demandais comment il était possible d'utiliser un vector de structures (vertex, couleurs ...) afin de remplir directement le vbo sans passer par une conversion de la structure en X variables de type Y, ce qui serait plus avantageux que de créer un vector de types de "bases" (double, int...) que l'on remplirait en convertissant un tableau de structures (vertex, couleurs...). J'espère avoir été assez concis dans l'exposé de mon problème, si vous avez des questions n'hésitez pas |
|
|
00
|
|
|
#2 | ||||
![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 2 904 ![]() |
Citation:
Citation:
Citation:
Par exemple, tu peux créer des blocs de 128ko, 256ko, 512ko (voir plus si tu n'est pas sur de l'embarqué et que la RAM n'est pas un problème) Citation:
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. |
||||
|
00
|
|
|
#3 | ||
![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 2 904 ![]() |
Petite remarque sur la taille des blocs. Je viens de relire des notes que j'avais pris sur la doc NVIDIA et il y a avait un calcul intéresant sur les problèmes de latence de la mémoire.
Pour un carte en PCIe 16x à débit de 8 Go/s, avec une latence mémoire de 10 µs, on peut calculer le ration temps_latence/temps_total en fonction de la taille des blocks : Code :
En conclusion, si tes blocs sont trop petits, tu passes plus de temps à attendre la mémoire qu'a transférer.
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. |
||
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : septembre 2010 Messages : 1 350 ![]() |
Citation:
S'il s'agit simplement de burster tout ça vers le GPU, NVidia recommande 1 à 4 Mo. Citation:
A la rigueur, pour le coût de l'appel au driver en kernel-space, ok, c'est encore de l'ordre de quelques microsecondes je crois. |
||
|
|
00
|
|
|
#5 | |
![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 2 904 ![]() |
Citation:
Je ne sais plus à quoi correspond ces 10 µs. J'avais du lire ça dans une publication de NVIDIA. Il faudrait que je retrouve
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. |
|
|
00
|
|
|
#6 |
![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 2 904 ![]() |
La source est Wang 2011 - Fondamental optimization in CUDA
En faisant des recherches, je suis également tombé sur ce papier qui donne la même information (en 2008). Egalement celui-là. Je les lirais en détail à l'occasion
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur la programmation des GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. |
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Lycéen Inscription : avril 2011 Messages : 83 ![]() |
Merci à tous
![]() Je vais regarder cela attentivement ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com