int main() { int n = 4; double pr[7] = { 1.,-1., 1.,-1., 1.,-1., 1. }; int col[7] = { 0, 1, 1, 2, 2, 3, 3 }; int ptr[5] = { 0, 2, 4, 6, 7 }; csr_t A = { n, pr, col, ptr }; double x[4] = {1., 3., 8., 12.}; double result[4]; sparse_multiply(&A, x, result); /* * Should compute * [-1, 1, 0, 0 ] [ 1 ] * [ 0, -1, 1, 0 ] * [ 3 ] * [ 0, 0, -1, 1 ] [ 8 ] * [ 0, 0, 0, 1 ] [ 12 ] */ for (int i = 0; i < n; ++i) printf(" %g\n", result[i]); }
static void test_sparse() { int *col_ind[MAXPROC]; double *values[MAXPROC], *vec[MAXPROC], *svec[MAXPROC]/*, start_time*/; int n, non_zero, *row_ind; sparse_initialize(&n, &non_zero, &row_ind, col_ind, values, vec, svec); armci_msg_barrier(); /*start_time = armci_timer();*/ sparse_multiply(n, non_zero, row_ind, col_ind, values, vec, svec); /* printf("%d: Timetaken = %f\n", me, armci_timer()-start_time); */ armci_msg_barrier(); if(me==0) gather_solution_vector(svec); if(me==0) { printf("O.K.\n"); fflush(stdout); } destroy_array((void **)vec); }