2016-03-09 4 views
2

Je travaille donc sur un simple code de multiplication matriciel utilisant MPI. L'un des problèmes auxquels je suis confronté consiste à disperser l'une des matrices à tous les processeurs. Je suppose que la dimension de ma matrice pourrait ne pas être divisible par le nombre de processeurs.Dimensionnement en MPI Scattering

J'ai également utilisé une variable col_id qui calcule le nombre de colonnes allouées à chaque processeur en utilisant la fonction mod. Par exemple, si nous avons 9 colonnes et 6 processeurs, les 3 premiers processeurs auront une valeur de 2 col_id tandis que trois autres processeurs auront une valeur de 1. col_id

donc je une opération de diffusion de base.

call MPI_Scatter(b, dim2*col_id, MPI_Integer, b1, dim2*col_id, MPI_Integer, 0, MPI_COMM_WORLD, ierr) 

col_id sera différent pour les différents processeurs. Sommes-nous autorisés à utiliser cette variable pour spécifier les dimensions en MPI_scatter?

+0

Bienvenue à SO. Veuillez envisager d'ajouter le langage de programmation que vous utilisez aux tags pour activer la coloration syntaxique. Cela pourrait aussi nous aider à nous montrer plus de votre code, en particulier comment vous calculez 'col_id'. – m00am

+0

J'utilise FORTRAN 90 et col_id est juste calculé en utilisant la fonction mod. Par exemple, si nous avons 9 colonnes et 6 processeurs, les 3 premiers processeurs auront une valeur de col_id de 2 alors que les trois autres processeurs auront une valeur de col_id de 1. –

+0

Merci. J'ai pris la liberté d'ajouter ceci à la poste. Veillez à toujours ajouter le langage de programmation à votre liste de questions (la liste des éléments dans le champ d'édition sous le texte de la question). Voilà comment les questions peuvent être filtrées. Maintenant, un expert FORTRAN (ce que je ne suis certainement pas) peut trouver la question en utilisant le système de filtre. – m00am

Répondre

3

La fonction MPI_Scatterv est faite exactement dans ce but. Au lieu d'un sendcount, vous spécifiez sendcounts - un tableau d'entiers de la taille du communicateur.