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 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