checkpoint of the current work, since I need to resync wioth master to fix the compilation problems
Этот коммит содержится в:
родитель
100515e321
Коммит
cc219281ba
@ -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 */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user