Я хочу выполнить умножение матрицы блоков (разделите matirix на несколько sxs-матриц и умножьте соответствующие блоки). Я написал код следующим образом образец кода архитектуры книги Хеннеси:Умножение матричной матрицы
for(int jj=0;jj<=(n/s);jj += s){
for(int kk=1;kk<=(n/s);kk += s){
for(int i=1;i<=(n/s);i++){
for(int j = jj; j<=((jj+s-1)>(n/s)?(n/s):(jj+s-1)); j++){
temp = 0;
for(int k = kk; k<=((kk+s-1)>(n/s)?(n/s):(kk+s-1)); k++){
temp += b[i][k]*a[k][j];
}
c[j][i] += temp;
}
}
}
}
Здесь пхп есть размер исходной матрицы. a, b имеют одинаковый размер. Я разделяю матрицы a, b на блоки размера sxs. В моей программе я дал размер блока равным 4. Я положил все элементы a, b как 5, константу и n = 1000. Однако я получаю неправильные значения в моем результате. Я здесь что-то не так? Застрял на этом за последние 2 часа. Можете ли вы, ребята, помочь, если это возможно. Код ссылки в книге, как это:
for (jj = 0; jj <= size; jj += N) {
for (kk = 1; kk <= size; kk += N) {
for (i = 1; i <= size; i++) {
for (j = jj; j <= findMin(jj+N-1, size); j++) {
temp = 0;
for (k = kk; k <= findMin(kk+N-1, size); k++) {
temp += B[i][k] * A[j][k];
}
C[j][i] += temp;
}
}
}
}
Здесь S = N и размер = п/с
Вы можете отогнать это в небольшой образец кода с помощью ввода, который создает проблему и объясняет, что вы ожидаете от ответа? –
Голосование, чтобы закрыть, как почему этот код не работает. –