Hallo,
folgendes Problem:
Ich möchte eine Matrix (m x m) in Blöcke aufteilen (das Ganze dient der Parallelen Multiplikation von Matrizen).
Das Ganze funktioniert auch, wenn die Blöcke gleich groß sind und komischer weise teilweise auch, bei unterschiedlich großen Blöcken, aber nicht generell.
Beispiel Matrix Dimension 5 Anzahl der Blöcke 4
Dann muss der 1 Block eine Spalte mehr haben, als die kommenden Blöcke.
Meine Methode hierfür sieht so aus:
Kann mir jemand helfen? ;(
folgendes Problem:
Ich möchte eine Matrix (m x m) in Blöcke aufteilen (das Ganze dient der Parallelen Multiplikation von Matrizen).
Das Ganze funktioniert auch, wenn die Blöcke gleich groß sind und komischer weise teilweise auch, bei unterschiedlich großen Blöcken, aber nicht generell.
Beispiel Matrix Dimension 5 Anzahl der Blöcke 4
Dann muss der 1 Block eine Spalte mehr haben, als die kommenden Blöcke.
Meine Methode hierfür sieht so aus:
Java:
static double[][] partitionMatrix(double[][] matrixB, int i, int THREADS) {
int numberOfColumns = matrixB.length / THREADS;
int residual = matrixB.length % THREADS;
double[][] splitMatrix = new double[matrixB.length][numberOfColumns + 1];
if (residual == 0) {
for (int j = 0; j < matrixB.length; j++) {
for (int k = 0; k < numberOfColumns; k++) {
splitMatrix[j][k] = matrixB[j][k + (i * numberOfColumns)];
}
}
} else {
if (i < residual) {
for (int j = 0; j < matrixB.length; j++) {
for (int k = 0; k < numberOfColumns + 1; k++) {
splitMatrix[j][k] = matrixB[j][k
+ (i * (numberOfColumns + 1))];
}
}
} else {
splitMatrix = new double[matrixB.length][numberOfColumns];
for (int j = 0; j < matrixB.length; j++) {
for (int k = 0; k < numberOfColumns; k++) {
splitMatrix[j][k] = matrixB[j][k
+ (i * (numberOfColumns + 1))];
}
}
}
}
return splitMatrix;
}
Kann mir jemand helfen? ;(