Распараллеливание нахождения определителя матрицы методом Гаусса
Как распараллелить заполнение матрицы, можно ли передавать каждому процессу данные из предыдущего процесса и как применить это на мой код
double GaussDet(double** mat, int size) {
int determinant = 1;
for (int i = 1; i < size; ++i)
{
for (int k = i; k < size; ++k)
{
for (int j = size - 1; j >= 0; --j)
{
mat[k][j] -= mat[k][i - 1] / mat[i - 1][i - 1] * mat[i - 1][j];
}
}
}
for (int i = 0; i < size; i++) {
for(int j = 0; j < size; j++) {
if(i == j)
determinant *= mat[i][j];
}
}
return determinant;
}
int main(int argc, const char * argv[])
{
srand(time(NULL));
int N = 4;
double **matrix = malloc(N * sizeof(double*));
for (int i = 0; i < N; i++) {
matrix[i] = malloc(N * sizeof(double*));
}
fill_matrix(matrix, N);
print_matrix(matrix, N);
double det = GaussDet(matrix, N);
print_matrix(matrix, N);
printf("det = %f\n", det);
}