コード例 #1
0
ファイル: one_d_io.c プロジェクト: brobusf21/projects
int main(int argc, char* argv[]) {
    int *loc_arr;
    int n, loc_n, p, my_rank;
    MPI_Comm comm;
    
    MPI_Init(&argc, &argv);
    comm = MPI_COMM_WORLD;
    MPI_Comm_size(comm, &p);
    MPI_Comm_rank(comm, &my_rank);
    
    n = Read_n(my_rank, comm);
    loc_n = n/p;
    loc_arr = malloc(loc_n*sizeof(int));
    
    
#  ifdef DEBUG
    printf("Proc %d > p = %d, n = %d, loc_n = %d\n",
           my_rank, p, n, loc_n);
#  endif
    
    Get_array(loc_arr, n, loc_n, my_rank, comm);
    Print_loc_array(loc_arr, loc_n, my_rank);
    Print_array(loc_arr, n, loc_n, my_rank, comm);
    
    free(loc_arr);
    
    MPI_Finalize();
    return 0;
}  /* main */
コード例 #2
0
ファイル: cyclic_derived.c プロジェクト: Gubberblump/COSC407
/*--------------------------------------------------------------------*/
int main(int argc, char* argv[]) {
   int n;                      /* Total number of elements           */
   int loc_n;                  /* Number of elements on each process */
   int* loc_array;             /* Storage on each process for loc_n ints */

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

   Get_args(argc, argv, &n);
   loc_n = n/comm_sz;         /* n should be evenly divisible by comm_sz */

   loc_array = malloc(loc_n*sizeof(int));
   if (my_rank == 0) scratch = malloc(n*sizeof(int));
   
   Build_cyclic_mpi_type(loc_n);

   Get_array(loc_array, n, loc_n);
// Local_print(loc_array, loc_n);
// if (my_rank == 0) printf("\n");
   Print_loc_arrays(loc_array, n, loc_n);
   if (my_rank == 0) printf("\n");
   Print_array(loc_array, n, loc_n);

   MPI_Type_free(&cyclic_mpi_t);
   free(loc_array);
   if (my_rank == 0) free(scratch);

   MPI_Finalize();

   return 0;
}  /* main */