Question

Je tente d'optimiser une application en modélisation 3D en temps réel. La partie de calcul de l'application fonctionne presque entièrement sur le GPU à Cuda. L'application nécessite la solution d'une petite (6x6) Double précision SydMétric Sympear System System System System System System Linéaire= B 500+ fois par seconde. Actuellement, cela se fait avec une bibliothèque d'algèbre linéaire basée sur la CPU efficace utilisant PROCHYKY mais nécessite la copie des données de la CPU - GPU et le RPU à des centaines de fois par seconde et la surcharge du noyau lance chaque fois que etc.

Comment puis-je calculer la solution au système linéaire sur le GPU uniquement sans avoir à prendre les données sur la CPU du tout? J'ai lu un peu sur la bibliothèque de Magma, mais il semble utiliser des algorithmes hybrides plutôt que des algorithmes GPU uniquement.

Je suis prêt au fait que la solution d'un système linéaire individuel sur le GPU va être beaucoup plus lente qu'avec la bibliothèque basée sur la CPU existante, mais je veux voir si cela peut être composé en supprimant le La communication de données entre l'hôte et le périphérique et les frais généraux du noyau lancent des centaines de fois par seconde. S'il n'y a pas de GPU Seulement une alternative de type Lapack là-bas, comment puis-je continuer à mettre en œuvre quelque chose pour résoudre ce cas de 6x6 particuliers sur le GPU uniquement? Pourrait-il être fait sans un investissement de temps énorme avec les bibliothèques GPU Blas, par exemple?

Était-ce utile?

La solution

NVIDIA CODE POSTÉS POUR UN SOLUT DE BATCHED AX= B sur le site Web du développeur enregistré dernier automne dernier. Ce code fonctionne pour les matrices génériques et doit fonctionner suffisamment bien pour vos besoins à condition que vous puissiez élargir les matrices symétriques aux matrices complètes (qui ne devraient pas être un problème pour un 6x6?). Comme le code effectue pivotant, ce qui n'est pas nécessaire pour des matrices définies positives, il n'est pas optimal pour votre cas, mais vous pourrez peut-être la modifier à vos fins, car le code est sous une licence BSD.

Le site Web du développeur standard de NVIDIA connaît des problèmes pour le moment. Voici comment vous pouvez télécharger le code de solveur par lots à l'heure actuelle:

(1) Allez à http://www.nvidia.com/content /cuda/cuda-toolkit.html

(2) Si vous avez un compte NVDEveloper existant (par exemple via Partners.nvidia.com) Cliquez sur le lien Green "Connexion au NVDeveloper" de la moitié droite de l'écran. Sinon, cliquez sur "Rejoindre NVDeveloper" pour demander un nouveau compte; Les demandes de nouveaux comptes sont généralement approuvées dans un jour ouvrable.

(3) connectez-vous à l'invite avec votre adresse e-mail et votre mot de passe

(4) Il y a une section sur le côté droit intitulé "Dernières téléchargements". Le cinquième élément du sommet est "solveur par lots". Cliquez dessus et cela vous apportera à la page de téléchargement du code.

(5) Cliquez sur le lien "Télécharger", puis cliquez sur "Accepter" pour accepter les conditions de la licence. Votre téléchargement devrait commencer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top