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_module_finalize,
|
||||||
mca_fcoll_dynamic_file_read_all,
|
mca_fcoll_dynamic_file_read_all,
|
||||||
NULL, /* iread_all */
|
NULL, /* iread_all */
|
||||||
<<<<<<< HEAD
|
|
||||||
mca_fcoll_dynamic_file_write_all,
|
mca_fcoll_dynamic_file_write_all,
|
||||||
NULL, /*iwrite_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, /* progress */
|
||||||
NULL /* request_free */
|
NULL /* request_free */
|
||||||
};
|
};
|
||||||
|
@ -118,16 +118,6 @@ typedef int (*mca_fcoll_base_module_file_read_all_fn_t)
|
|||||||
ompi_status_public_t *status);
|
ompi_status_public_t *status);
|
||||||
|
|
||||||
typedef int (*mca_fcoll_base_module_file_iread_all_fn_t)
|
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,
|
(struct mca_io_ompio_file_t *fh,
|
||||||
void *buf,
|
void *buf,
|
||||||
int count,
|
int count,
|
||||||
@ -142,16 +132,6 @@ typedef int (*mca_fcoll_base_module_file_write_all_fn_t)
|
|||||||
ompi_status_public_t *status);
|
ompi_status_public_t *status);
|
||||||
|
|
||||||
typedef int (*mca_fcoll_base_module_file_iwrite_all_fn_t)
|
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,
|
(struct mca_io_ompio_file_t *fh,
|
||||||
void *buf,
|
void *buf,
|
||||||
int count,
|
int count,
|
||||||
@ -189,17 +169,8 @@ struct mca_fcoll_base_module_1_0_0_t {
|
|||||||
/* FCOLL function pointers */
|
/* FCOLL function pointers */
|
||||||
mca_fcoll_base_module_file_read_all_fn_t fcoll_file_read_all;
|
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;
|
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_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_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_progress_fn_t fcoll_progress;
|
||||||
mca_fcoll_base_module_request_free_fn_t fcoll_request_free;
|
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_module_finalize,
|
||||||
mca_fcoll_individual_file_read_all,
|
mca_fcoll_individual_file_read_all,
|
||||||
NULL, /* iread_all */
|
NULL, /* iread_all */
|
||||||
<<<<<<< HEAD
|
|
||||||
mca_fcoll_individual_file_write_all,
|
mca_fcoll_individual_file_write_all,
|
||||||
NULL, /* iwrite_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, /* progress */
|
||||||
NULL /* request_free */
|
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_module_finalize,
|
||||||
mca_fcoll_static_file_read_all,
|
mca_fcoll_static_file_read_all,
|
||||||
NULL, /* iread_all */
|
NULL, /* iread_all */
|
||||||
<<<<<<< HEAD
|
|
||||||
mca_fcoll_static_file_write_all,
|
mca_fcoll_static_file_write_all,
|
||||||
NULL, /* iwrite_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, /* progress */
|
||||||
NULL /* request_free */
|
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_init,
|
||||||
mca_fcoll_two_phase_module_finalize,
|
mca_fcoll_two_phase_module_finalize,
|
||||||
mca_fcoll_two_phase_file_read_all,
|
mca_fcoll_two_phase_file_read_all,
|
||||||
<<<<<<< HEAD
|
|
||||||
NULL, /* iread_all */
|
NULL, /* iread_all */
|
||||||
mca_fcoll_two_phase_file_write_all,
|
mca_fcoll_two_phase_file_write_all,
|
||||||
NULL, /* iwrite_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, /* progress */
|
||||||
NULL /* request_free */
|
NULL /* request_free */
|
||||||
};
|
};
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2008-2014 University of Houston. All rights reserved.
|
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -50,13 +50,13 @@ OMPI_DECLSPEC extern int mca_io_ompio_coll_timing_info;
|
|||||||
/*
|
/*
|
||||||
* Flags
|
* Flags
|
||||||
*/
|
*/
|
||||||
#define OMPIO_CONTIGUOUS_MEMORY 0x00000001
|
#define OMPIO_CONTIGUOUS_MEMORY 0x00000001
|
||||||
#define OMPIO_UNIFORM_FVIEW 0x00000002
|
#define OMPIO_UNIFORM_FVIEW 0x00000002
|
||||||
#define OMPIO_FILE_IS_OPEN 0x00000004
|
#define OMPIO_FILE_IS_OPEN 0x00000004
|
||||||
#define OMPIO_FILE_VIEW_IS_SET 0x00000008
|
#define OMPIO_FILE_VIEW_IS_SET 0x00000008
|
||||||
#define OMPIO_CONTIGUOUS_FVIEW 0x00000010
|
#define OMPIO_CONTIGUOUS_FVIEW 0x00000010
|
||||||
#define OMPIO_AGGREGATOR_IS_SET 0x00000020
|
#define OMPIO_AGGREGATOR_IS_SET 0x00000020
|
||||||
#define OMPIO_SHAREDFP_IS_SET 0x00000040
|
#define OMPIO_SHAREDFP_IS_SET 0x00000040
|
||||||
#define QUEUESIZE 2048
|
#define QUEUESIZE 2048
|
||||||
|
|
||||||
#define OMPIO_MIN(a, b) (((a) < (b)) ? (a) : (b))
|
#define OMPIO_MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||||
@ -297,7 +297,8 @@ struct mca_io_ompio_file_t {
|
|||||||
size_t f_cc_size;
|
size_t f_cc_size;
|
||||||
int f_bytes_per_agg;
|
int f_bytes_per_agg;
|
||||||
enum ompio_fs_type f_fstype;
|
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.
|
/* Place for selected sharedfp module to hang it's data.
|
||||||
Note: Neither f_sharedfp nor f_sharedfp_component seemed appropriate for this.
|
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_init_procs_in_group;
|
||||||
|
|
||||||
int f_final_num_aggrs;
|
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_decode_datatype_fn_t f_decode_datatype;
|
||||||
mca_io_ompio_generate_current_file_view_fn_t f_generate_current_file_view;
|
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);
|
ompi_io_ompio_set_file_defaults (ompio_fh);
|
||||||
ompio_fh->f_filename = filename;
|
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!*/
|
/*Initialize the print_queues queues here!*/
|
||||||
coll_write_time = (print_queue *) malloc (sizeof(print_queue));
|
coll_write_time = (print_queue *) malloc (sizeof(print_queue));
|
||||||
coll_read_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.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2008-2014 University of Houston. All rights reserved.
|
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -379,6 +379,36 @@ int mca_io_ompio_file_read_all (ompi_file_t *fh,
|
|||||||
return ret;
|
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,
|
int mca_io_ompio_file_read_at_all (ompi_file_t *fh,
|
||||||
OMPI_MPI_OFFSET_TYPE offset,
|
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;
|
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
|
/* Infrastructure for shared file pointer operations
|
||||||
** (individual and ordered)*/
|
** (individual and ordered)*/
|
||||||
@ -553,10 +618,15 @@ int mca_io_ompio_file_read_all_begin (ompi_file_t *fh,
|
|||||||
struct ompi_datatype_t *datatype)
|
struct ompi_datatype_t *datatype)
|
||||||
{
|
{
|
||||||
int ret = OMPI_SUCCESS;
|
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;
|
||||||
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -566,10 +636,13 @@ int mca_io_ompio_file_read_all_end (ompi_file_t *fh,
|
|||||||
ompi_status_public_t * status)
|
ompi_status_public_t * status)
|
||||||
{
|
{
|
||||||
int ret = OMPI_SUCCESS;
|
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;
|
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;
|
mca_io_ompio_data_t *data;
|
||||||
|
|
||||||
data = (mca_io_ompio_data_t *) fh->f_io_selected_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;
|
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)
|
struct ompi_datatype_t *datatype)
|
||||||
{
|
{
|
||||||
int ret = OMPI_SUCCESS;
|
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);
|
if ( true == fh->f_split_coll_in_use ) {
|
||||||
/* It is OK to reset the position already here, althgouth
|
printf("Only one split collective I/O operation allowed per file handle at any given point in time!\n");
|
||||||
** the operation might still be pending/ongoing, since
|
return MPI_ERR_REQUEST;
|
||||||
** the entire array of <offset, length, memaddress> have
|
}
|
||||||
** already been constructed in the file_read_all_begin operation
|
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;
|
||||||
|
|
||||||
ompi_io_ompio_set_explicit_offset (fh, prev_offset);
|
|
||||||
return ret;
|
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;
|
mca_io_ompio_data_t *data;
|
||||||
|
|
||||||
data = (mca_io_ompio_data_t *) fh->f_io_selected_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;
|
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)
|
ompi_status_public_t * status)
|
||||||
{
|
{
|
||||||
int ret = OMPI_SUCCESS;
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2008-2014 University of Houston. All rights reserved.
|
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -507,6 +507,36 @@ int mca_io_ompio_file_write_at_all (ompi_file_t *fh,
|
|||||||
return ret;
|
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,
|
int ompio_io_ompio_file_write_at_all (mca_io_ompio_file_t *fh,
|
||||||
OMPI_MPI_OFFSET_TYPE offset,
|
OMPI_MPI_OFFSET_TYPE offset,
|
||||||
void *buf,
|
void *buf,
|
||||||
@ -529,6 +559,42 @@ int ompio_io_ompio_file_write_at_all (mca_io_ompio_file_t *fh,
|
|||||||
return ret;
|
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 */
|
/* Infrastructure for shared file pointer operations */
|
||||||
/* (Individual and collective */
|
/* (Individual and collective */
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user