CUDA : Boucle for qui prend de plus en plus de temps - Divers - Programmation
Marsh Posté le 02-05-2011 à 21:36:01
Peut être que le code nous permettrait de répondre, parce que sinon, bonjour la boule de cristal.
A+,
Marsh Posté le 02-05-2011 à 22:18:42
vu la taille du code, j'etais un peu perplexe à le mettre ici...
Marsh Posté le 03-05-2011 à 00:45:23
ca sent les alloc memoires foireuses ou des acces non coalescents
Marsh Posté le 03-05-2011 à 11:09:21
Je vous met ici une partie du code. Le seul kernel que j'utilise pour le moment dans la grosse boucle est advection (car deja elle seule ralentit fortement), les autres sont commentés et n'agissent pas pour le moment. Par exemple, pour 1000 iteration elle met 13ms, our 1500 elle en met 280ms.
Code :
|
Marsh Posté le 02-05-2011 à 21:09:28
Bonjour,
Je suis actuellement en train d'écrire un programme sous CUDA.
J'ai des fichiers .cu .c et .cpp tous reliés via un makefile.
Seulement je rencontre un gros pépin pour le moment.
Mon programme est une modélisation scientifique d'un gas dont on fait bouger des particules à chaque pas de temps.
Cependant je remarque que mon algorithme met de plus en plus de temps pour faire une itération. Pour faire les 5 premieres par exemple il met 5ms tandis que pour en faire 50 il met 1500 ms.
Auriez vous une idée d'a quoi pourrait etre du cet accroissement important de temps.
Sachant que chaque iteration regroupe une phase de deplacement de particules, un tri et un phénomène de tirage de nombre aléatoire (c'est une Direct simulation Monte Carlo que je fais au cas ou il y aurait un connaisseur).
Merci pour votre aide
Romuald