Распараллеливание нахождения определителя матрицы методом Гаусса

Как распараллелить заполнение матрицы, можно ли передавать каждому процессу данные из предыдущего процесса и как применить это на мой код

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

}


Ответы (0 шт):