Beispiel #1
0
//multiplication matrix on vector
static void matrix_mult_vector_MatrixWithElementsSixTenTwoElevenVectorWithCoordinatesFiveSeven_MatrixWithElementsThirtyFiftyFourteenSeventyseven(void ** state)
{

    matrix_t * mat1 =  matrix_test(6,10,2,11);
    vector_t * vec1 = vector_test(5,7);
    assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),0,0),30);
    assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),0,1),50);
    assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),1,0),14);
    assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),1,1),77);
    matrix_free(mat1);
    vector_free(vec1);
}
Beispiel #2
0
int main(int argc, char * argv[])
{
    int n, n_threads = 0;
    matrix_t * A,
             * A_orig;
    vector_t * b,
             * b_orig,
             * x,
             * check_res_mat;
             
    double t_start, t_end;
    
    
    get_input_params(argc, argv, &n);
    initialize_global_state();
    
    /* initialize data */
    A_orig          = matrix_create_rand(n, n),
    A               = matrix_clone(A_orig),
    b_orig          = vector_create_rand(n),
    b               = vector_clone(b_orig),
    x               = vector_create(n),
    check_res_mat   = vector_create(n);
    
    t_start = get_time_in_sec();
    
    perform_gaussian_elimination_on_matrix(A, b);
    perform_back_substitution(A, x, b);
    
    t_end  = get_time_in_sec();
    
    /* calculate Ax - b and find it's l2norm to test for correctness */
    matrix_mult_vector(A_orig, x, check_res_mat);
    
    vector_subtract(check_res_mat, check_res_mat, b_orig); /* c = c - b */
    
    printf("num-procs   = %d\n", omp_get_num_procs());

#pragma omp parallel num_threads(num_threads)
#pragma omp single
    n_threads = omp_get_num_threads();

    printf("num-threads = %d\n", n_threads);

    printf("Performed Gaussian Elimination in %.12lfs\n", t_end - t_start);
    printf("Ax-b l2norm = %.6le\n", vector_l2norm(check_res_mat));
    
    puts("done");   
    return 0;
}