2016-05-05 1 views
0

J'ai installé deux GPU (2x Nvidia Quadro 410) dans mon système dans différents emplacements PCI. Pour résoudre la multiplication de Martix sur ces deux GPU, comment puis-je diviser les matrices d'entrée de sorte que chaque GPU traite/calcule une partie de la matrice de sortie, puis la renvoie. Par exemple. pour deux matrices A, B chacune d'ordre 10x10, alors pour calculer la matrice de sortie C = A x B, de sorte que, sur 100 éléments (10 x 10) 50 éléments soient calculés sur le 1er GPU et l'autre moitié soit 50 à b calculé en 2ème GPU. J'essaie de l'implémenter sur OpenCL. Mais, n'importe quel algorithme est bienvenu, ce qui m'aidera à trouver la solution.Multiplication de matrice parallèle utilisant plusieurs GPU

Répondre

1

En général, si vous avez matrices X (de taille a x b, rangées en premier) et Y (de taille b x c),

X * Y = vcat(X[0:a/2,0:b] * Y, X[a/2:a,0:b] * Y) 

Dans ce pseudocode, vcat est concaténation verticale (en mettant une matrice superposée, par exemple une matrice 4x3 concaténée avec une matrice 2x3 produira une matrice 6x3), : indique des plages et [] est une indexation.

Les deux arguments à vcat peuvent être calculés sur différents GPU, et la concaténation peut être obtenue simplement en pointant la sortie vers différentes sous-régions du tampon de sortie (en supposant que nous ayons des tableaux C-ordered). La division initiale de X peut être obtenue de manière similaire simplement en utilisant différentes sous-régions (car elle est divisée le long d'une ligne).

+0

Merci. Je vais commencer à le mettre en œuvre et vous informer des progrès. Pensez-vous également que c'est le moyen le plus efficace de le faire? car il ne divise pas tous les éléments par moitié .. – pradyot

+0

Je ne suis pas sûr de comprendre ce que vous voulez dire. Cette division est purement virtuelle, en réalité, vous pointez simplement votre routine de multiplication de matrice sur différentes parties du tableau pour différents GPU. – fjarri

+0

Merci. Cela a fonctionné parfaitement !! – pradyot