2011-05-12 7 views
1

je fais une recherche sur gpu dans des environnements de cluster à l'aide mpi pour communiquer.
Afin de comparer accélérer, je pense à créer:matrice en utilisant CUDA + Multiplication MPI

Une multiplication de matrice juste pour GPU, ok.
Maintenant, juste CPU MatrixMulti, ok.
Mais je ne peux pas trouver une bonne implémentation de la multiplication de la matrice CUDA + MPI.

Quelqu'un a quelques indices sur l'endroit où je peux nageoire cela? Ou suggérer une implémentation.

+0

Mon env avec mpich2 est prêt à l'emploi, donc je préférerais que OpenMP – Custodio

Répondre

1

La matrice MTL4 modèle de bibliothèque peut être un excellent point de départ. À l'heure actuelle, MTL4 dispose d'un multi-core, DMM, et nous avons presque terminé avec une implémentation complète de GPU. Peter et moi avons parlé d'algorithmes de GPU distribués, mais comme notre objectif est pour l'instant de faire appel à des solveurs PDE, il est difficile de rendre les algorithmes de GPU distribués compétitifs par rapport aux DMM robustes. Cependant, je travaille sur un nouveau jeu de solveurs de géophysique/imagerie médicale qui est plus propice aux calculs GPU distribués car les jeux de données sont plus modestes et les capacités vidéo du GPU sont bénéfiques.

Pour commencer, jetez un oeil à la MTL4 tutorial

1

il n'y a pas grand-chose autour. Votre meilleur pari est réellement écrire une multiplication de matrice de bloc sur MPI avait chaque noeud faire la multiplication de bloc localement sur GPU.

0

Le Combinatorial BLAS est un code C++ sur matrice MPI qui a une opération de multiplication matrice-matrice creuse. Il utilise une grille de processeur sqrt (p) -by-sqrt (p) et l'algorithme SUMMA pour la multiplication matricielle. L'un des arguments du modèle est un composant "séquentiel" qui est la matrice locale d'un processus. Vous pourrez peut-être l'utiliser directement avec un argument template finnagled qui est votre structure CUDA, mais au moins il peut servir de référence pour votre propre code.