コード例 #1
0
ファイル: mat_vect_mult.c プロジェクト: 7ohn/NDSU
/*-------------------------------------------------------------------*/
int main(void) {
   double* A = NULL;
   double* x = NULL;
   double* y = NULL;
   int m, n;

   Get_dims(&m, &n);
   A = malloc(m*n*sizeof(double));
   x = malloc(n*sizeof(double));
   y = malloc(m*sizeof(double));
   if (A == NULL || x == NULL || y == NULL) {
      fprintf(stderr, "Can't allocate storage\n");
      exit(-1);
   }
   Read_matrix("A", A, m, n);
#  ifdef DEBUG
   Print_matrix("A", A, m, n);
#  endif
   Read_vector("x", x, n);
#  ifdef DEBUG
   Print_vector("x", x, n);
#  endif

   Mat_vect_mult(A, x, y, m, n);

   Print_vector("y", y, m);

   free(A);
   free(x);
   free(y);
   return 0;
}  /* main */
コード例 #2
0
ファイル: mpi_mat_vect_time.c プロジェクト: DeltaP/three
/*-------------------------------------------------------------------*/
int main(int argc, char **argv) {
   double* local_A;
   double* local_B;
   double* local_C;
   int m, local_m, n, local_n;
   int my_rank, comm_sz;
   MPI_Comm comm;
   double start, finish, loc_elapsed, elapsed;

   MPI_Init(&argc, &argv);
   comm = MPI_COMM_WORLD;
   MPI_Comm_size(comm, &comm_sz);
   MPI_Comm_rank(comm, &my_rank);

   n=atoi(argv[1]);
   m=n;
   local_m = m/comm_sz;
   local_n = n/comm_sz;


   /*Get_dims(&m, &local_m, &n, &local_n, my_rank, comm_sz, comm);*/
   Allocate_arrays(&local_A, &local_B, &local_C, local_m, n, local_n, comm);
// Read_matrix("A", local_A, m, local_m, n, my_rank, comm);
   srandom(my_rank);
   Generate_matrix(local_A, local_m, n);
   Generate_matrix(local_B, local_m, n);
#  ifdef DEBUG
   Print_matrix("A", local_A, m, local_m, n, my_rank, comm);
   Print_matrix("B", local_B, m, local_m, n, my_rank, comm);
#  endif
// Read_vector("x", local_x, n, local_n, my_rank, comm);
   /*Generate_vector(local_x, local_n);*/
#  ifdef DEBUG
   /*Print_vector("x", local_x, n, local_n, my_rank, comm);*/
#  endif

   MPI_Barrier(comm);
   for(i = 0; i < 100; i++) {

   start = MPI_Wtime();
   Mat_vect_mult(local_A, local_B, local_C, local_m, n, local_n, comm);
   finish = MPI_Wtime();
   loc_elapsed = finish-start;
   MPI_Reduce(&loc_elapsed, &elapsed, 1, MPI_DOUBLE, MPI_MAX, 0, comm);

   if (my_rank == 0)
      printf("Elapsed time = %e\n", elapsed);
   }

#  ifdef DEBUG
   Print_matrix("C", local_C, m, local_m, n, my_rank, comm);
#  endif


   free(local_A);
   free(local_B);
   free(local_C);
   MPI_Finalize();
   return 0;
}  /* main */
コード例 #3
0
ファイル: Annex8.2.c プロジェクト: jorditorresBCN/SA-MIRI
int main(int argc, char *argv[]) {
   double* A = NULL;
   double* x = NULL;
   double* y = NULL;
   long long int size;
   int m, n;

   n= atoi(argv[1]);
   m= n;

   size=m*n*sizeof(double);
   A = malloc(size);
   x = malloc(n*sizeof(double));
   y = malloc(m*sizeof(double));
   
   Read_matrix("A", A, m, n);
   Read_vector("x", x, n);

   gettimeofday(&start_time, NULL);
   Mat_vect_mult(A, x, y, m, n);

   gettimeofday(&end_time, NULL);
   print_times();

   free(A);
   free(x);
   free(y);
   return 0;
}  /* main */
コード例 #4
0
ファイル: mpi_mat_vect_time.c プロジェクト: 7ohn/NDSU
/*-------------------------------------------------------------------*/
int main(void) {
   double* local_A;
   double* local_x;
   double* local_y;
   int m, local_m, n, local_n;
   int my_rank, comm_sz;
   MPI_Comm comm;
   double start, finish, loc_elapsed, elapsed;

   MPI_Init(NULL, NULL);
   comm = MPI_COMM_WORLD;
   MPI_Comm_size(comm, &comm_sz);
   MPI_Comm_rank(comm, &my_rank);

   Get_dims(&m, &local_m, &n, &local_n, my_rank, comm_sz, comm);
   Allocate_arrays(&local_A, &local_x, &local_y, local_m, n, local_n, comm);
// Read_matrix("A", local_A, m, local_m, n, my_rank, comm);
   srandom(my_rank);
   Generate_matrix(local_A, local_m, n);
#  ifdef DEBUG
   Print_matrix("A", local_A, m, local_m, n, my_rank, comm);
#  endif
// Read_vector("x", local_x, n, local_n, my_rank, comm);
   Generate_vector(local_x, local_n);
#  ifdef DEBUG
   Print_vector("x", local_x, n, local_n, my_rank, comm);
#  endif

   MPI_Barrier(comm);
   start = MPI_Wtime();
   Mat_vect_mult(local_A, local_x, local_y, local_m, n, local_n, comm);
   finish = MPI_Wtime();
   loc_elapsed = finish-start;
   MPI_Reduce(&loc_elapsed, &elapsed, 1, MPI_DOUBLE, MPI_MAX, 0, comm);

#  ifdef DEBUG
   Print_vector("y", local_y, m, local_m, my_rank, comm);
#  endif

   if (my_rank == 0)
      printf("Elapsed time = %e\n", elapsed);

   free(local_A);
   free(local_x);
   free(local_y);
   MPI_Finalize();
   return 0;
}  /* main */