Skip to content
Extraits de code Groupes Projets
Valider 721b288f rédigé par JordanHanotiaux's avatar JordanHanotiaux
Parcourir les fichiers

Update distributedmatrix.cpp

parent e3fda921
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -79,36 +79,18 @@ int DistributedMatrix::localColIndex(int globalColIndex) const {
}
int DistributedMatrix::ownerProcess(int globalColIndex) const {
// Vecteur pour stocker les startCols de chaque processus
std::vector<int> localStartProcesses(numProcesses);
// Calcul du startCol pour le processus local
int remainingCols = globalCols % numProcesses;
int localCols = globalCols / numProcesses; // Cols par processus
int startCol = rank * localCols + std::min(rank, remainingCols);
// Synchroniser les startCols entre tous les processus
MPI_Allgather(&startCol, 1, MPI_INT, localStartProcesses.data(), 1, MPI_INT, MPI_COMM_WORLD);
// Vérifier à quel processus appartient globalColIndex en utilisant localStartProcesses
for (int p = 0; p < numProcesses; ++p) {
// Définir le nombre de colonnes pour le processus p (p peut avoir une colonne supplémentaire)
int start = p * localCols + min(p, remainingCols);
int cols = localCols + (p < remainingCols ? 1 : 0);
int start = localStartProcesses[p];
int end = start + cols;
// Vérifier si la colonne globale est dans l'intervalle de ce processus
if (globalColIndex >= start && globalColIndex < end) {
if (globalColIndex >= start && globalColIndex < start + cols) {
return p;
}
}
// Si aucune condition n'est remplie (cela ne devrait pas arriver), renvoyer par défaut le processus 0
return 0;
}
const Matrix& DistributedMatrix::getLocalData() const {
return localData;
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter