Bonjour,
Je confirme les propos de LeGreg. Le temps maximal d'execution d'un kernel en cuda est de 5s. Au bout de 5s, le kernel est tué par le driver, et le code executé sur l'hôte continu comme si de rien n'était si aucune vérification de la bonne execution du kernel n'est faite. Ceci dans le but de pouvoir rafraîchir l'affichage.
Donc suivant les capacités du GPU utilisé, on pourra avoir un code qui fonctionne correctement ou un code qui ne fonctionne pas.
Il faut donc penser à bien tester le code sur des petits GPU si on ne veut pas de mauvaises surprises.
Deux méthodes pour contourner le problème:
- utiliser un autre GPU que celui qui s'occupe de l'affichage pour faire des calculs.
- Si on est sous linux, il suffit de tuer le serveur X pour lancer le code. Dans le cas de wax78 c'est pas vraiment pertinent
Pour l'histoire des 5s voir les forums CUDA de nVidia.
Oui j'ai remarqué que cela arrivait aussi avec cuda ou opencl.
En effet ca serait l'idéal.utiliser un autre GPU que celui qui s'occupe de l'affichage pour faire des calculs.
Mais le mieux encore serait de toujours bien codé son truc pour pouvoir le faire en "plusieurs fois" comme on l'a dit précedemment.
Mais c'est vrai que ca peut etre ennuyant de devoir coutourner un probleme de ce genre alors qu'on a juste envie d'avoir un truc fonctionnel directement. (D'ou ma mauvaise idée de bypasser le watchdog, avec les horreurs que ca implique et que vous avez bien décrites). De plus j'ai deja pondu des truc GLSL que meme en decoupant la taches, je finissais par devoir trop decouper la taches et la ca devenait genant car le temps augmentait (probablement dut au transfert des uniform et problablement d'autres dont je n'ai peut etre meme pas conscience et certainement aussi dut a des erreur dans mon code OPENGL).
Merci Letinono pour cette information. Je ne connaissais pas cette limitation.
En effet, mes calculs durent longtemps mais j'utilise plusieurs kernels et je passe mon temps à les créer/détruire. D'où cette impression qu'il n'y avait pas cette contrainte.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager