From f91340f64849a9eb38a1bcf7a168d0ef7d6214fa Mon Sep 17 00:00:00 2001 From: Vishwanath Venkatesan Date: Mon, 12 Nov 2012 17:39:58 +0000 Subject: [PATCH] Fixes for the 2gb limitation. This fixes problems both static and two-phase algorithms. This commit was SVN r27596. --- ompi/mca/fcoll/static/fcoll_static_file_write_all.c | 3 ++- ompi/mca/fcoll/two_phase/fcoll_two_phase.h | 2 +- .../fcoll/two_phase/fcoll_two_phase_file_read_all.c | 11 ++++++----- .../fcoll/two_phase/fcoll_two_phase_file_write_all.c | 11 ++++++----- .../mca/fcoll/two_phase/fcoll_two_phase_support_fns.c | 10 +++++----- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/ompi/mca/fcoll/static/fcoll_static_file_write_all.c b/ompi/mca/fcoll/static/fcoll_static_file_write_all.c index fb350b74a4..8b2e09f1f5 100644 --- a/ompi/mca/fcoll/static/fcoll_static_file_write_all.c +++ b/ompi/mca/fcoll/static/fcoll_static_file_write_all.c @@ -71,7 +71,8 @@ mca_fcoll_static_file_write_all (mca_io_ompio_file_t *fh, int i=0,j=0,l=0, temp_index; int ret=OMPI_SUCCESS, cycles, local_cycles, *bytes_per_process=NULL; int index, *disp_index=NULL, **blocklen_per_process=NULL; - int *iovec_count_per_process=NULL, *displs=NULL, total_bytes_written=0; + int *iovec_count_per_process=NULL, *displs=NULL; + size_t total_bytes_written=0; MPI_Aint **displs_per_process=NULL, *memory_displacements=NULL; MPI_Aint bytes_to_write_in_cycle=0, global_iov_count=0, global_count=0; diff --git a/ompi/mca/fcoll/two_phase/fcoll_two_phase.h b/ompi/mca/fcoll/two_phase/fcoll_two_phase.h index d4de2ace9d..afd7fbc42e 100644 --- a/ompi/mca/fcoll/two_phase/fcoll_two_phase.h +++ b/ompi/mca/fcoll/two_phase/fcoll_two_phase.h @@ -109,7 +109,7 @@ int mca_fcoll_two_phase_calc_my_requests (mca_io_ompio_file_t *fh, int *count_my_req_procs_ptr, int **count_my_req_per_proc_ptr, mca_io_ompio_access_array_t **my_req_ptr, - int **buf_indices, + size_t **buf_indices, int striping_unit, int num_aggregators, int *aggregator_list); diff --git a/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_read_all.c b/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_read_all.c index a4e0d5c7fd..7e8867ef3a 100644 --- a/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_read_all.c +++ b/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_read_all.c @@ -53,7 +53,7 @@ static int two_phase_read_and_exch(mca_io_ompio_file_t *fh, OMPI_MPI_OFFSET_TYPE *fd_start, OMPI_MPI_OFFSET_TYPE *fd_end, Flatlist_node *flat_buf, - int *buf_idx, int striping_unit, + size_t *buf_idx, int striping_unit, int *aggregator_list); static int two_phase_exchange_data(mca_io_ompio_file_t *fh, @@ -71,7 +71,7 @@ static int two_phase_exchange_data(mca_io_ompio_file_t *fh, Flatlist_node *flat_buf, mca_io_ompio_access_array_t *others_req, int iter, - int *buf_idx, MPI_Aint buftype_extent, + size_t *buf_idx, MPI_Aint buftype_extent, int striping_unit, int *aggregator_list); @@ -120,7 +120,8 @@ mca_fcoll_two_phase_file_read_all (mca_io_ompio_file_t *fh, struct iovec *decoded_iov = NULL, *temp_iov = NULL, *iov = NULL; size_t max_data = 0, total_bytes = 0; int domain_size=0, *count_my_req_per_proc=NULL, count_my_req_procs = 0; - int count_other_req_procs, *buf_indices=NULL; + int count_other_req_procs; + size_t *buf_indices=NULL; int *aggregator_list = NULL, local_count = 0, local_size = 0; OMPI_MPI_OFFSET_TYPE start_offset = 0, end_offset = 0, fd_size = 0; OMPI_MPI_OFFSET_TYPE *start_offsets=NULL, *end_offsets=NULL; @@ -507,7 +508,7 @@ static int two_phase_read_and_exch(mca_io_ompio_file_t *fh, OMPI_MPI_OFFSET_TYPE *fd_start, OMPI_MPI_OFFSET_TYPE *fd_end, Flatlist_node *flat_buf, - int *buf_idx, int striping_unit, + size_t *buf_idx, int striping_unit, int *aggregator_list){ @@ -817,7 +818,7 @@ static int two_phase_exchange_data(mca_io_ompio_file_t *fh, OMPI_MPI_OFFSET_TYPE *fd_end, Flatlist_node *flat_buf, mca_io_ompio_access_array_t *others_req, - int iter, int *buf_idx, + int iter, size_t *buf_idx, MPI_Aint buftype_extent, int striping_unit, int *aggregator_list) { diff --git a/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_write_all.c b/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_write_all.c index ba5e1c66bb..444099e0da 100644 --- a/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_write_all.c +++ b/ompi/mca/fcoll/two_phase/fcoll_two_phase_file_write_all.c @@ -61,7 +61,7 @@ static int two_phase_exch_and_write(mca_io_ompio_file_t *fh, OMPI_MPI_OFFSET_TYPE *fd_start, OMPI_MPI_OFFSET_TYPE *fd_end, Flatlist_node *flat_buf, - int *buf_idx, int striping_unit, + size_t *buf_idx, int striping_unit, int *aggregator_list); @@ -84,7 +84,7 @@ static int two_phase_exchage_data(mca_io_ompio_file_t *fh, mca_io_ompio_access_array_t *others_req, int *send_buf_idx, int *curr_to_proc, int *done_to_proc, int iter, - int *buf_idx, MPI_Aint buftype_extent, + size_t *buf_idx, MPI_Aint buftype_extent, int striping_unit, int *aggregator_list, int *hole); @@ -148,7 +148,8 @@ mca_fcoll_two_phase_file_write_all (mca_io_ompio_file_t *fh, struct iovec *decoded_iov=NULL, *temp_iov=NULL; size_t max_data = 0, total_bytes = 0; int domain_size=0, *count_my_req_per_proc=NULL, count_my_req_procs; - int count_other_req_procs, *buf_indices, ret=OMPI_SUCCESS; + int count_other_req_procs, ret=OMPI_SUCCESS; + size_t *buf_indices=NULL; int local_count = 0, local_size=0,*aggregator_list = NULL; struct iovec *iov = NULL; @@ -560,7 +561,7 @@ static int two_phase_exch_and_write(mca_io_ompio_file_t *fh, OMPI_MPI_OFFSET_TYPE *fd_start, OMPI_MPI_OFFSET_TYPE *fd_end, Flatlist_node *flat_buf, - int *buf_idx, int striping_unit, + size_t *buf_idx, int striping_unit, int *aggregator_list) { @@ -907,7 +908,7 @@ static int two_phase_exchage_data(mca_io_ompio_file_t *fh, mca_io_ompio_access_array_t *others_req, int *send_buf_idx, int *curr_to_proc, int *done_to_proc, int iter, - int *buf_idx,MPI_Aint buftype_extent, + size_t *buf_idx,MPI_Aint buftype_extent, int striping_unit, int *aggregator_list, int *hole){ diff --git a/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c b/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c index 6a9fb99678..908db442f1 100644 --- a/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c +++ b/ompi/mca/fcoll/two_phase/fcoll_two_phase_support_fns.c @@ -337,14 +337,14 @@ int mca_fcoll_two_phase_calc_my_requests (mca_io_ompio_file_t *fh, int *count_my_req_procs_ptr, int **count_my_req_per_proc_ptr, mca_io_ompio_access_array_t **my_req_ptr, - int **buf_indices, + size_t **buf_indices, int striping_unit, int num_aggregators, int *aggregator_list) { int *count_my_req_per_proc, count_my_req_procs; - int *buf_idx; + size_t *buf_idx = NULL; int i, l, proc; OMPI_MPI_OFFSET_TYPE fd_len, rem_len, curr_idx, off; mca_io_ompio_access_array_t *my_req; @@ -362,7 +362,7 @@ int mca_fcoll_two_phase_calc_my_requests (mca_io_ompio_file_t *fh, count_my_req_per_proc[i] = 0; } - buf_idx = (int *) malloc (fh->f_size * sizeof(int)); + buf_idx = (size_t *) malloc (fh->f_size * sizeof(size_t)); if ( NULL == buf_idx ){ return OMPI_ERR_OUT_OF_RESOURCE; @@ -432,7 +432,7 @@ int mca_fcoll_two_phase_calc_my_requests (mca_io_ompio_file_t *fh, fd_size, fd_start, fd_end, striping_unit, num_aggregators, aggregator_list); - if (buf_idx[proc] == -1){ + if (buf_idx[proc] == (size_t) -1){ buf_idx[proc] = (int) curr_idx; } l = my_req[proc].count; @@ -451,7 +451,7 @@ int mca_fcoll_two_phase_calc_my_requests (mca_io_ompio_file_t *fh, num_aggregators, aggregator_list); - if (buf_idx[proc] == -1){ + if (buf_idx[proc] == (size_t) -1){ buf_idx[proc] = (int) curr_idx; }