1
1

checkpoint of the current work, since I need to resync wioth master to fix the compilation problems

Этот коммит содержится в:
Edgar Gabriel 2015-06-18 05:17:33 -05:00
родитель 100515e321
Коммит cc219281ba
9 изменённых файлов: 172 добавлений и 96 удалений

Просмотреть файл

@ -37,17 +37,8 @@ static mca_fcoll_base_module_1_0_0_t dynamic = {
mca_fcoll_dynamic_module_finalize,
mca_fcoll_dynamic_file_read_all,
NULL, /* iread_all */
<<<<<<< HEAD
mca_fcoll_dynamic_file_write_all,
NULL, /*iwrite_all */
=======
mca_fcoll_dynamic_file_read_all_begin,
mca_fcoll_dynamic_file_read_all_end,
mca_fcoll_dynamic_file_write_all,
NULL, /*iwrite_all */
mca_fcoll_dynamic_file_write_all_begin,
mca_fcoll_dynamic_file_write_all_end,
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
NULL, /* progress */
NULL /* request_free */
};

Просмотреть файл

@ -118,16 +118,6 @@ typedef int (*mca_fcoll_base_module_file_read_all_fn_t)
ompi_status_public_t *status);
typedef int (*mca_fcoll_base_module_file_iread_all_fn_t)
<<<<<<< HEAD
=======
(struct mca_io_ompio_file_t *fh,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_request_t **request);
typedef int (*mca_fcoll_base_module_file_read_all_begin_fn_t)
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
(struct mca_io_ompio_file_t *fh,
void *buf,
int count,
@ -142,16 +132,6 @@ typedef int (*mca_fcoll_base_module_file_write_all_fn_t)
ompi_status_public_t *status);
typedef int (*mca_fcoll_base_module_file_iwrite_all_fn_t)
<<<<<<< HEAD
=======
(struct mca_io_ompio_file_t *fh,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_request_t **request);
typedef int (*mca_fcoll_base_module_file_write_all_begin_fn_t)
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
(struct mca_io_ompio_file_t *fh,
void *buf,
int count,
@ -189,17 +169,8 @@ struct mca_fcoll_base_module_1_0_0_t {
/* FCOLL function pointers */
mca_fcoll_base_module_file_read_all_fn_t fcoll_file_read_all;
mca_fcoll_base_module_file_iread_all_fn_t fcoll_file_iread_all;
<<<<<<< HEAD
mca_fcoll_base_module_file_write_all_fn_t fcoll_file_write_all;
mca_fcoll_base_module_file_iwrite_all_fn_t fcoll_file_iwrite_all;
=======
mca_fcoll_base_module_file_read_all_begin_fn_t fcoll_file_read_all_begin;
mca_fcoll_base_module_file_read_all_end_fn_t fcoll_file_read_all_end;
mca_fcoll_base_module_file_write_all_fn_t fcoll_file_write_all;
mca_fcoll_base_module_file_iwrite_all_fn_t fcoll_file_iwrite_all;
mca_fcoll_base_module_file_write_all_begin_fn_t fcoll_file_write_all_begin;
mca_fcoll_base_module_file_write_all_end_fn_t fcoll_file_write_all_end;
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
mca_fcoll_base_module_progress_fn_t fcoll_progress;
mca_fcoll_base_module_request_free_fn_t fcoll_request_free;

Просмотреть файл

@ -37,17 +37,8 @@ static mca_fcoll_base_module_1_0_0_t individual = {
mca_fcoll_individual_module_finalize,
mca_fcoll_individual_file_read_all,
NULL, /* iread_all */
<<<<<<< HEAD
mca_fcoll_individual_file_write_all,
NULL, /* iwrite_all */
=======
mca_fcoll_individual_file_read_all_begin,
mca_fcoll_individual_file_read_all_end,
mca_fcoll_individual_file_write_all,
NULL, /* iwrite_all */
mca_fcoll_individual_file_write_all_begin,
mca_fcoll_individual_file_write_all_end,
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
NULL, /* progress */
NULL /* request_free */
};

Просмотреть файл

@ -37,17 +37,8 @@ static mca_fcoll_base_module_1_0_0_t static_t = {
mca_fcoll_static_module_finalize,
mca_fcoll_static_file_read_all,
NULL, /* iread_all */
<<<<<<< HEAD
mca_fcoll_static_file_write_all,
NULL, /* iwrite_all */
=======
mca_fcoll_static_file_read_all_begin,
mca_fcoll_static_file_read_all_end,
mca_fcoll_static_file_write_all,
NULL, /* iwrite_all */
mca_fcoll_static_file_write_all_begin,
mca_fcoll_static_file_write_all_end,
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
NULL, /* progress */
NULL /* request_free */
};

Просмотреть файл

@ -36,19 +36,9 @@ static mca_fcoll_base_module_1_0_0_t two_phase = {
mca_fcoll_two_phase_module_init,
mca_fcoll_two_phase_module_finalize,
mca_fcoll_two_phase_file_read_all,
<<<<<<< HEAD
NULL, /* iread_all */
mca_fcoll_two_phase_file_write_all,
NULL, /* iwrite_all */
=======
NULL,
mca_fcoll_two_phase_file_read_all_begin,
mca_fcoll_two_phase_file_read_all_end,
mca_fcoll_two_phase_file_write_all,
NULL,
mca_fcoll_two_phase_file_write_all_begin,
mca_fcoll_two_phase_file_write_all_end,
>>>>>>> ff02f765b276ffd0dfd12ba50e85e70fa3db7aca
NULL, /* progress */
NULL /* request_free */
};

Просмотреть файл

@ -10,7 +10,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008-2014 University of Houston. All rights reserved.
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -50,13 +50,13 @@ OMPI_DECLSPEC extern int mca_io_ompio_coll_timing_info;
/*
* Flags
*/
#define OMPIO_CONTIGUOUS_MEMORY 0x00000001
#define OMPIO_UNIFORM_FVIEW 0x00000002
#define OMPIO_FILE_IS_OPEN 0x00000004
#define OMPIO_FILE_VIEW_IS_SET 0x00000008
#define OMPIO_CONTIGUOUS_FVIEW 0x00000010
#define OMPIO_AGGREGATOR_IS_SET 0x00000020
#define OMPIO_SHAREDFP_IS_SET 0x00000040
#define OMPIO_CONTIGUOUS_MEMORY 0x00000001
#define OMPIO_UNIFORM_FVIEW 0x00000002
#define OMPIO_FILE_IS_OPEN 0x00000004
#define OMPIO_FILE_VIEW_IS_SET 0x00000008
#define OMPIO_CONTIGUOUS_FVIEW 0x00000010
#define OMPIO_AGGREGATOR_IS_SET 0x00000020
#define OMPIO_SHAREDFP_IS_SET 0x00000040
#define QUEUESIZE 2048
#define OMPIO_MIN(a, b) (((a) < (b)) ? (a) : (b))
@ -297,7 +297,8 @@ struct mca_io_ompio_file_t {
size_t f_cc_size;
int f_bytes_per_agg;
enum ompio_fs_type f_fstype;
ompi_request_t *f_split_coll_req;
bool f_split_coll_in_use;
/* Place for selected sharedfp module to hang it's data.
Note: Neither f_sharedfp nor f_sharedfp_component seemed appropriate for this.
*/
@ -350,7 +351,8 @@ struct mca_io_ompio_file_t {
int *f_init_procs_in_group;
int f_final_num_aggrs;
/* internal ompio functions required by fbtl and fcoll */
mca_io_ompio_decode_datatype_fn_t f_decode_datatype;
mca_io_ompio_generate_current_file_view_fn_t f_generate_current_file_view;

Просмотреть файл

@ -122,6 +122,9 @@ ompio_io_ompio_file_open (ompi_communicator_t *comm,
ompi_io_ompio_set_file_defaults (ompio_fh);
ompio_fh->f_filename = filename;
ompio_fh->f_split_coll_req = NULL;
ompio_fh->f_split_in_use = false;
/*Initialize the print_queues queues here!*/
coll_write_time = (print_queue *) malloc (sizeof(print_queue));
coll_read_time = (print_queue *) malloc (sizeof(print_queue));

Просмотреть файл

@ -9,7 +9,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008-2014 University of Houston. All rights reserved.
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -379,6 +379,36 @@ int mca_io_ompio_file_read_all (ompi_file_t *fh,
return ret;
}
int mca_io_ompio_file_iread_all (ompi_file_t *fh,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_request_t **request)
{
int ret = OMPI_SUCCESS;
mca_io_ompio_data_t *data=NULL;
mca_io_ompio_file_t *fp=NULL;
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
fp = &data->ompio_fh;
if ( NULL != fp->f_fcoll->fcoll_file_iread_all ) {
ret = fp->f_fcoll->fcoll_file_iread_all (&data->ompio_fh,
buf,
count,
datatype,
request);
}
else {
/* this fcoll component does not support non-blocking
collective I/O operations. WE fake it with
individual non-blocking I/O operations. */
ret = ompio_io_ompio_file_iread ( fp, buf, count, datatype, request );
}
return ret;
}
int mca_io_ompio_file_read_at_all (ompi_file_t *fh,
OMPI_MPI_OFFSET_TYPE offset,
@ -418,6 +448,41 @@ int ompio_io_ompio_file_read_at_all (mca_io_ompio_file_t *fh,
return ret;
}
int mca_io_ompio_file_iread_at_all (ompi_file_t *fh,
OMPI_MPI_OFFSET_TYPE offset,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_request_t **request)
{
int ret = OMPI_SUCCESS;
mca_io_ompio_data_t *data;
mca_io_ompio_file_t *fp=NULL;
OMPI_MPI_OFFSET_TYPE prev_offset;
ompio_io_ompio_file_get_position (fh, &prev_offset );
ompi_io_ompio_set_explicit_offset (fh, offset);
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
fp = &data->fh_ompio;
if ( NULL != fp->f_fcoll->fcoll_file_iread_all ) {
ret = fp->f_fcoll->fcoll_file_iread_all (&data->ompio_fh,
buf,
count,
datatype,
request);
}
else {
/* this fcoll component does not support non-blocking
collective I/O operations. WE fake it with
individual non-blocking I/O operations. */
ret = ompio_io_ompio_file_iread ( fp, buf, count, datatype, request );
}
ompi_io_ompio_set_explicit_offset (fh, prev_offset);
return ret;
}
/* Infrastructure for shared file pointer operations
** (individual and ordered)*/
@ -553,10 +618,15 @@ int mca_io_ompio_file_read_all_begin (ompi_file_t *fh,
struct ompi_datatype_t *datatype)
{
int ret = OMPI_SUCCESS;
mca_io_ompio_data_t *data;
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
mca_io_ompio_file_t *fp;
fp = (mca_io_ompio_file_t *) &fh->f_io_selected_data->fh_ompio;
if ( true == fp->f_split_coll_in_use ) {
printf("Only one split collective I/O operation allowed per file handle at any given point in time!\n");
return MPI_ERR_OTHER;
}
ret = mca_io_ompio_file_iread_all ( fh, buf, count, datatype, &fp->f_split_coll_req );
fp->f_split_coll_in_use = true;
return ret;
}
@ -566,10 +636,13 @@ int mca_io_ompio_file_read_all_end (ompi_file_t *fh,
ompi_status_public_t * status)
{
int ret = OMPI_SUCCESS;
mca_io_ompio_data_t *data;
mca_io_ompio_file_t *fp;
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
fp = (mca_io_ompio_file_t *) &fh->f_io_selected_data->fh_ompio;
ret = ompi_mpi_wait ( &fp->f_split_coll_req, status );
/* remove the flag again */
fp->f_split_coll_in_use = false;
return ret;
}
@ -583,7 +656,7 @@ int mca_io_ompio_file_read_at_all_begin (ompi_file_t *fh,
mca_io_ompio_data_t *data;
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
ret = ompio_io_ompio_file_read_at_all_begin ( &data->fh_ompio, offset, buf, count, datatype );
return ret;
}
@ -594,17 +667,13 @@ int ompio_io_ompio_file_read_at_all_begin (mca_io_ompio_file_t *fh,
struct ompi_datatype_t *datatype)
{
int ret = OMPI_SUCCESS;
OMPI_MPI_OFFSET_TYPE prev_offset;
ompio_io_ompio_file_get_position (fh, &prev_offset );
ompi_io_ompio_set_explicit_offset (fh, offset);
/* It is OK to reset the position already here, althgouth
** the operation might still be pending/ongoing, since
** the entire array of <offset, length, memaddress> have
** already been constructed in the file_read_all_begin operation
*/
ompi_io_ompio_set_explicit_offset (fh, prev_offset);
if ( true == fh->f_split_coll_in_use ) {
printf("Only one split collective I/O operation allowed per file handle at any given point in time!\n");
return MPI_ERR_REQUEST;
}
ret = mca_io_ompio_file_iread_at_all ( fh, offset, buf, count, datatype, &fh->f_split_coll_req );
fh->f_split_coll_in_use = true;
return ret;
}
@ -616,7 +685,7 @@ int mca_io_ompio_file_read_at_all_end (ompi_file_t *fh,
mca_io_ompio_data_t *data;
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
ret = ompio_io_ompio_file_read_at_all_end ( &data->fh_ompio, but, status );
return ret;
}
@ -625,7 +694,9 @@ int ompio_io_ompio_file_read_at_all_end (mca_io_ompio_file_t *ompio_fh,
ompi_status_public_t * status)
{
int ret = OMPI_SUCCESS;
ret = ompi_mpi_wait ( &ompio_fh->f_split_coll_req, status );
/* remove the flag again */
fp->f_split_coll_in_use = false;
return ret;
}

Просмотреть файл

@ -9,7 +9,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008-2014 University of Houston. All rights reserved.
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -507,6 +507,36 @@ int mca_io_ompio_file_write_at_all (ompi_file_t *fh,
return ret;
}
int mca_io_ompio_file_iwrite_all (ompi_file_t *fh,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_request_t **request)
{
int ret = OMPI_SUCCESS;
mca_io_ompio_data_t *data=NULL;
mca_io_ompio_file_t *fp=NULL;
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
fp = &data->ompio_fh;
if ( NULL != fp->f_fcoll->fcoll_file_iwrite_all ) {
ret = fp->f_fcoll->fcoll_file_iwrite_all (&data->ompio_fh,
buf,
count,
datatype,
request);
}
else {
/* this fcoll component does not support non-blocking
collective I/O operations. WE fake it with
individual non-blocking I/O operations. */
ret = ompio_io_ompio_file_iwrite ( fp, buf, count, datatype, request );
}
return ret;
}
int ompio_io_ompio_file_write_at_all (mca_io_ompio_file_t *fh,
OMPI_MPI_OFFSET_TYPE offset,
void *buf,
@ -529,6 +559,42 @@ int ompio_io_ompio_file_write_at_all (mca_io_ompio_file_t *fh,
return ret;
}
int mca_io_ompio_file_iwrite_at_all (ompi_file_t *fh,
OMPI_MPI_OFFSET_TYPE offset,
void *buf,
int count,
struct ompi_datatype_t *datatype,
ompi_request_t **request)
{
int ret = OMPI_SUCCESS;
mca_io_ompio_data_t *data;
mca_io_ompio_file_t *fp=NULL;
OMPI_MPI_OFFSET_TYPE prev_offset;
ompio_io_ompio_file_get_position (fh, &prev_offset );
ompi_io_ompio_set_explicit_offset (fh, offset);
data = (mca_io_ompio_data_t *) fh->f_io_selected_data;
fp = &data->fh_ompio;
if ( NULL != fp->f_fcoll->fcoll_file_iwrite_all ) {
ret = fp->f_fcoll->fcoll_file_iwrite_all (&data->ompio_fh,
buf,
count,
datatype,
request);
}
else {
/* this fcoll component does not support non-blocking
collective I/O operations. WE fake it with
individual non-blocking I/O operations. */
ret = ompio_io_ompio_file_iwrite ( fp, buf, count, datatype, request );
}
ompi_io_ompio_set_explicit_offset (fh, prev_offset);
return ret;
}
/* Infrastructure for shared file pointer operations */
/* (Individual and collective */