Je recherche des exemples d'algorithmes à usage général (c'est-à-dire non liés au graphisme) qui se sont avérés exécuter un ordre de grandeur plus rapidement sur un GPU que sur un CPU. J'utiliserai ces exemples pour réfléchir de manière créative à d'autres algorithmes que je pourrais implémenter sur un GPU.
algorithms
performance
gpu
David
la source
la source
Réponses:
Quelques choses me viennent immédiatement à l'esprit:
Un client Bitcoin spécialisé a été écrit pour utiliser le GPU pour effectuer les hachages cryptographiques. Le client GPU fonctionne généralement plus de 10 fois mieux que le client CPU SMP sur un système à 4 cœurs typique. Le bitcoin dépend du calcul d'un grand nombre de hachages cryptographiques non liés, qui peuvent être calculés en parallèle.
Le projet Folding @ Home propose un client GPU pour leurs simulations de dynamique moléculaire. Ces calculs sont effectués sur les liaisons individuelles entre atomes dans divers environnements et conditions. Le calcul est relativement simple, mais doit être calculé des milliards de fois pour chaque liaison afin de simuler de simples nanosecondes d'activité.
L'exemple populaire de "jouet" utilisé par les partisans de l'informatique GPU est le problème à n corps .
Ce que ces choses ont en commun, c'est qu'elles sont étrangement parallèles . Autrement dit, le problème peut être décomposé en un petit nombre de calculs discrets qui sont effectués plusieurs fois sur un grand ensemble de données. C'est le genre de calcul auquel le GPU est bon.
Les calculs complexes qui dépendent des résultats des calculs précédents ne sont pas bien adaptés au GPU.
la source
Le transcodage vidéo et audio en est un excellent exemple. C'est la conversion d'un format de fichier à un autre. Un exemple est MPEG-2 à H.264.
Notez que le transcodage vidéo n'est pas lié aux graphiques 3D. Vous ne pouvez pas coder une vidéo à l'aide d'un vertex et d'un pixel shader.
la source
L'exploitation de Bitcoins à l' aide d'un GPU est devenue très populaire.
Une autre application est sur les marchés financiers pour le trading en temps réel en utilisant des modèles tels que Black-Scholes .
la source
Le jeu de la vie de Conway est un bon exemple académique.
la source
Problèmes nécessitant beaucoup de calculs pouvant être effectués simultanément. Là où je travaillais, nous voulions jouer avec les GPU pour ajouter / soustraire / multiplier 2 matrices pour déterminer la corrélation génétique. La première fois que j'ai entendu parler des GPU, c'est qu'ils étaient utilisés par une maison de logiciels finaciaux pour faire une partie de leur modélisation (monte carlo et ainsi de suite). Le serait utile pour casser le code.
Les GPU n'aideront probablement pas beaucoup avec vos problèmes de programmation plus réguliers où quelques cœurs de processeur sont suffisants car la plupart des programmes réguliers n'ont besoin que d'exécuter quelques processus simultanés. (pourrait être différent avec la mémoire / le disque qui est beaucoup plus rapide que ce que nous avons actuellement)
la source
Peut-être que je suis très spécifique aux calculs mathématiques / sciences / ingénierie, mais celui qui me vient à l'esprit est l'algorithme FFT.
J'ai déjà vu ce benchmark FFT auparavant, et même s'il a quelques années, je pense qu'il était bien fait pour ce qu'il est: http://www.sharcnet.ca/~merz/CUDA_benchFFT
la source