Des exemples d'algorithmes à usage général qui ont bénéficié de l'exécution sur un GPU? [fermé]


10

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.


Concaténation de chaînes, tri en veille
Job

Réponses:


10

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.


Plusieurs clients BOINC prennent en charge le GPU. SETI @ Home en est un autre.
Brian Knoblauch

En effet. Il existe de nombreux projets de ce type, mais je ne voulais pas en faire une liste complète de projets - juste pour souligner ce qu'ils ont en commun.
greyfade

8

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.


L'OP demande des exemples non graphiques.
kiamlaluno

6
@kiamlaluno Le transcodage d'une vidéo n'est pas lié aux graphiques, et le transcodage audio n'est certainement pas. C'est la conversion d'un format de fichier à un autre. Un exemple est MPEG-2 à H.264. Il ne nécessite pas l'affichage de graphiques pour fonctionner.
Thomas Owens

2
@kiamlaluno: 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.
DeadMG

3

L'exploitation de Bitcoins à l' aide d'un GPU est devenue très populaire.

... système de paiement électronique peer-to-peer. La création et le transfert de Bitcoin sont basés sur un protocole cryptographique open source et ne sont gérés par aucune autorité centrale. Chaque bitcoin est subdivisé en huit décimales, formant 100 millions d'unités plus petites appelées satoshis. Les bitcoins peuvent être transférés via un ordinateur ou un smartphone sans institution financière intermédiaire.

Le traitement des transactions bitcoin est sécurisé par des serveurs appelés mineurs Bitcoin. Ces serveurs communiquent sur un réseau Internet et confirment les transactions en les ajoutant à un registre qui est mis à jour et archivé périodiquement. En plus d'archiver les transactions, chaque nouvelle mise à jour du grand livre crée des bitcoins nouvellement créés ...

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 .

... Une exigence clé pour l'utilisation des options est le calcul de leur juste valeur. Trouver des moyens de résoudre efficacement ce problème de tarification est un domaine de recherche actif depuis plus de trente ans, et il continue d'être au centre de l'ingénierie financière moderne. Comme davantage de calculs ont été appliqués aux problèmes liés à la finance, il est devenu plus important de trouver des moyens efficaces d'implémenter ces algorithmes sur des architectures modernes.

Ce chapitre décrit comment les options peuvent être évaluées efficacement en utilisant le GPU. Nous effectuons nos évaluations en utilisant deux modèles de tarification différents: le modèle Black-Scholes et les modèles en treillis. Ces deux approches correspondent bien au GPU, et les deux sont sensiblement plus rapides sur le GPU que sur les processeurs modernes. Bien que les deux aient également des correspondances simples avec le GPU, la mise en œuvre de modèles de réseau nécessite un travail supplémentaire en raison des interdépendances dans les calculs ...


2

Le jeu de la vie de Conway est un bon exemple académique.

... L'univers du Game of Life est une grille orthogonale bidimensionnelle infinie de cellules carrées, dont chacune est dans l'un des deux états possibles, vivant ou mort. Chaque cellule interagit avec ses huit voisins, qui sont les cellules adjacentes horizontalement, verticalement ou en diagonale. À chaque étape du temps, les transitions suivantes se produisent:

  1. Toute cellule vivante avec moins de deux voisins vivants meurt, comme si elle était causée par une sous-population.
  2. Toute cellule vivante avec deux ou trois voisins vivants vit jusqu'à la prochaine génération.
  3. Toute cellule vivante avec plus de trois voisins vivants meurt, comme si elle était surpeuplée.
  4. Toute cellule morte avec exactement trois voisins vivants devient une cellule vivante, comme par reproduction.

Le modèle initial constitue la graine du système. La première génération est créée en appliquant les règles ci-dessus simultanément à chaque cellule de la graine - les naissances et les décès se produisent simultanément, et le moment discret auquel cela se produit est parfois appelé une tique (en d'autres termes, chaque génération est une fonction pure de la précédent). Les règles continuent d'être appliquées à plusieurs reprises pour créer de nouvelles générations ...


1

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)


-3

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.