1
1
completed all MPI-IO MCA v1 prototypes
    completed all MPI-IO MCA v1 typedefs
    add all functions to MCA v1 action struct

    completed about 50% of the wrapper functions.

This commit was SVN r621.
Этот коммит содержится в:
Mark Taylor 2004-01-30 23:14:19 +00:00
родитель cfff4bb79a
Коммит 161e021562
7 изменённых файлов: 796 добавлений и 39 удалений

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

@ -39,12 +39,13 @@ struct mca_io_base_module_1_0_0_t {
typedef struct mca_io_base_module_1_0_0_t mca_io_base_module_1_0_0_t;
//
// add typedefs for all MPI-IO functions to io.h
// add prototypes for all MPI-IO functions to io_romio.h
// add all functions to struct mca_io_1_0_0_t
// set all functions in struct in io_romio_module.c
//
/*
* to add functions:
* add prototypes for all MPI-IO functions to io_romio.h
* add typedefs for all MPI-IO functions to io.h
* add all functions to struct mca_io_1_0_0_t in io.h
* set all functions in struct in io_romio_module.c
*/
typedef int (*mca_io_base_File_open_t)(MPI_Comm comm, char *filename, int amode,
@ -59,18 +60,168 @@ typedef int (*mca_io_base_File_get_amode_t)(MPI_File fh, int *amode);
typedef int (*mca_io_base_File_set_info_t)(MPI_File fh, MPI_Info info);
typedef int (*mca_io_base_File_get_info_t)(MPI_File fh, MPI_Info *info_used);
typedef int (*mca_io_base_File_set_view_t)(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
MPI_Datatype filetype, char *datarep, MPI_Info info);
typedef int (*mca_io_base_File_get_view_t)(MPI_File fh, MPI_Offset *disp,
MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep);
typedef int (*mca_io_base_File_read_at_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_read_at_all_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_write_at_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_write_at_all_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_iread_at_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Request *request);
typedef int (*mca_io_base_File_iwrite_at_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Request *request);
typedef int (*mca_io_base_File_read_t)(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
typedef int (*mca_io_base_File_read_all_t)(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
typedef int (*mca_io_base_File_write_t)(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
typedef int (*mca_io_base_File_write_all_t)(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
typedef int (*mca_io_base_File_iread_t)(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Request *request);
typedef int (*mca_io_base_File_iwrite_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Request *request);
typedef int (*mca_io_base_File_seek_t)(MPI_File fh, MPI_Offset offset, int whence);
typedef int (*mca_io_base_File_get_position_t)(MPI_File fh, MPI_Offset *offset);
typedef int (*mca_io_base_File_get_byte_offset_t)(MPI_File fh, MPI_Offset offset,
MPI_Offset *disp);
typedef int (*mca_io_base_File_read_shared_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_write_shared_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_iread_shared_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Request *request);
typedef int (*mca_io_base_File_iwrite_shared_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Request *request);
typedef int (*mca_io_base_File_read_ordered_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_write_ordered_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
typedef int (*mca_io_base_File_seek_shared_t)(MPI_File fh, MPI_Offset offset, int whence);
typedef int (*mca_io_base_File_get_position_shared_t)(MPI_File fh, MPI_Offset *offset);
typedef int (*mca_io_base_File_read_at_all_begin_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype);
typedef int (*mca_io_base_File_read_at_all_end_t)(MPI_File fh, void *buf, MPI_Status *status);
typedef int (*mca_io_base_File_write_at_all_begin_t)(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype);
typedef int (*mca_io_base_File_write_at_all_end_t)(MPI_File fh, void *buf, MPI_Status *status);
typedef int (*mca_io_base_File_read_all_begin_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
typedef int (*mca_io_base_File_read_all_end_t)(MPI_File fh, void *buf, MPI_Status *status);
typedef int (*mca_io_base_File_write_all_begin_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
typedef int (*mca_io_base_File_write_all_end_t)(MPI_File fh, void *buf, MPI_Status *status);
typedef int (*mca_io_base_File_read_ordered_begin_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
typedef int (*mca_io_base_File_read_ordered_end_t)(MPI_File fh, void *buf, MPI_Status *status);
typedef int (*mca_io_base_File_write_ordered_begin_t)(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
typedef int (*mca_io_base_File_write_ordered_end_t)(MPI_File fh, void *buf, MPI_Status *status);
typedef int (*mca_io_base_File_get_type_extent_t)(MPI_File fh, MPI_Datatype datatype,
MPI_Aint *extent);
typedef int (*mca_io_base_File_set_atomicity_t)(MPI_File fh, int flag);
typedef int (*mca_io_base_File_get_atomicity_t)(MPI_File fh, int *flag);
typedef int (*mca_io_base_File_sync_t)(MPI_File fh);
typedef int (*mca_io_base_File_set_errhandler_t)(MPI_File fh, MPI_Errhandler e);
typedef int (*mca_io_base_File_get_errhandler_t)(MPI_File fh, MPI_Errhandler *e );
typedef int (*mca_io_base_Test_t)(MPI_Request *request, int *flag, MPI_Status *status);
typedef int (*mca_io_base_Wait_t)(MPI_Request *request, MPI_Status *status);
struct mca_io_1_0_0_t {
mca_io_base_File_open_t io_File_open;
mca_io_base_File_close_t io_File_close;
mca_io_base_File_delete_t io_File_delete;
mca_io_base_File_set_size_t io_File_set_size;
mca_io_base_File_preallocate_t io_File_preallocate;
mca_io_base_File_get_size_t io_File_get_size;
mca_io_base_File_get_group_t io_File_get_group;
mca_io_base_File_get_amode_t io_File_get_amode;
mca_io_base_File_set_info_t io_File_set_info;
mca_io_base_File_get_info_t io_File_get_info;
mca_io_base_File_open_t mca_io_File_open;
mca_io_base_File_close_t mca_io_File_close;
mca_io_base_File_delete_t mca_io_File_delete;
mca_io_base_File_set_size_t mca_io_File_set_size;
mca_io_base_File_preallocate_t mca_io_File_preallocate;
mca_io_base_File_get_size_t mca_io_File_get_size;
mca_io_base_File_get_group_t mca_io_File_get_group;
mca_io_base_File_get_amode_t mca_io_File_get_amode;
mca_io_base_File_set_info_t mca_io_File_set_info;
mca_io_base_File_get_info_t mca_io_File_get_info;
mca_io_base_File_set_view_t mca_io_File_set_view;
mca_io_base_File_get_view_t mca_io_File_get_view;
mca_io_base_File_read_at_t mca_io_File_read_at;
mca_io_base_File_read_at_all_t mca_io_File_read_at_all;
mca_io_base_File_write_at_t mca_io_File_write_at;
mca_io_base_File_write_at_all_t mca_io_File_write_at_all;
mca_io_base_File_iread_at_t mca_io_File_iread_at;
mca_io_base_File_iwrite_at_t mca_io_File_iwrite_at;
mca_io_base_File_read_t mca_io_File_read;
mca_io_base_File_read_all_t mca_io_File_read_all;
mca_io_base_File_write_t mca_io_File_write;
mca_io_base_File_write_all_t mca_io_File_write_all;
mca_io_base_File_iread_t mca_io_File_iread;
mca_io_base_File_iwrite_t mca_io_File_iwrite;
mca_io_base_File_seek_t mca_io_File_seek;
mca_io_base_File_get_position_t mca_io_File_get_position;
mca_io_base_File_get_byte_offset_t mca_io_File_get_byte_offset;
mca_io_base_File_read_shared_t mca_io_File_read_shared;
mca_io_base_File_write_shared_t mca_io_File_write_shared;
mca_io_base_File_iread_shared_t mca_io_File_iread_shared;
mca_io_base_File_iwrite_shared_t mca_io_File_iwrite_shared;
mca_io_base_File_read_ordered_t mca_io_File_read_ordered;
mca_io_base_File_write_ordered_t mca_io_File_write_ordered;
mca_io_base_File_seek_shared_t mca_io_File_seek_shared;
mca_io_base_File_get_position_shared_t mca_io_File_get_position_shared;
mca_io_base_File_read_at_all_begin_t mca_io_File_read_at_all_begin;
mca_io_base_File_read_at_all_end_t mca_io_File_read_at_all_end;
mca_io_base_File_write_at_all_begin_t mca_io_File_write_at_all_begin;
mca_io_base_File_write_at_all_end_t mca_io_File_write_at_all_end;
mca_io_base_File_read_all_begin_t mca_io_File_read_all_begin;
mca_io_base_File_read_all_end_t mca_io_File_read_all_end;
mca_io_base_File_write_all_begin_t mca_io_File_write_all_begin;
mca_io_base_File_write_all_end_t mca_io_File_write_all_end;
mca_io_base_File_read_ordered_begin_t mca_io_File_read_ordered_begin;
mca_io_base_File_read_ordered_end_t mca_io_File_read_ordered_end;
mca_io_base_File_write_ordered_begin_t mca_io_File_write_ordered_begin;
mca_io_base_File_write_ordered_end_t mca_io_File_write_ordered_end;
mca_io_base_File_get_type_extent_t mca_io_File_get_type_extent;
mca_io_base_File_set_atomicity_t mca_io_File_set_atomicity;
mca_io_base_File_get_atomicity_t mca_io_File_get_atomicity;
mca_io_base_File_sync_t mca_io_File_sync;
mca_io_base_File_set_errhandler_t mca_io_File_set_errhandler;
mca_io_base_File_get_errhandler_t mca_io_File_get_errhandler;
mca_io_base_Test_t mca_io_Test;
mca_io_base_Wait_t mca_io_Wait;
};
typedef struct mca_io_1_0_0_t mca_io_1_0_0_t;
@ -84,4 +235,3 @@ typedef struct mca_io_1_0_0_t mca_io_1_0_0_t;

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

@ -15,7 +15,9 @@ libmca_io_romio_la_SOURCES = \
io_romio_module.c \
io_romio.h \
romio_config.h \
file_write.c \
file_status.c \
file_open.c \
file_read.c \
file_write.c \
global.c

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

@ -32,5 +32,218 @@ int mca_io_romio_File_open(MPI_Comm comm, char *filename, int amode,
}
int mca_io_romio_File_close(MPI_File *fh) {
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *)(*fh);
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_close(&romio_fh);
THREAD_UNLOCK(&mca_io_romio_mutex);
LAM_FREE(*fh);
return ret;
}
int mca_io_romio_File_delete(char *filename, MPI_Info info) {
int ret;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_delete(filename, info);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_set_size(MPI_File fh, MPI_Offset size){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_set_size(romio_fh, size);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_preallocate(MPI_File fh, MPI_Offset size){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_preallocate(romio_fh,size);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_get_size(MPI_File fh, MPI_Offset *size){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_get_size(romio_fh,size);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_get_group(MPI_File fh, MPI_Group *group){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_get_group(romio_fh,group);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_get_amode(MPI_File fh, int *amode){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_get_amode(romio_fh, amode);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_set_info(MPI_File fh, MPI_Info info){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_set_info(romio_fh,info);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_get_info(MPI_File fh, MPI_Info *info_used){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_get_info(romio_fh,info_used);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
MPI_Datatype filetype, char *datarep, MPI_Info info){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_set_view(romio_fh,disp,etype,filetype,datarep,info);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_get_view(MPI_File fh, MPI_Offset *disp, MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_get_view(romio_fh,disp,etype,filetype,datarep);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_get_type_extent(MPI_File fh, MPI_Datatype datatype,
MPI_Aint *extent){ }
int mca_io_romio_File_set_atomicity(MPI_File fh, int flag){ }
int mca_io_romio_File_get_atomicity(MPI_File fh, int *flag){ }
int mca_io_romio_File_sync(MPI_File fh){ }
int mca_io_romio_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence){ }
int mca_io_romio_File_get_position_shared(MPI_File fh, MPI_Offset *offset){ }
int mca_io_romio_File_seek(MPI_File fh, MPI_Offset offset, int whence){ }
int mca_io_romio_File_get_position(MPI_File fh, MPI_Offset *offset){ }
int mca_io_romio_File_get_byte_offset(MPI_File fh, MPI_Offset offset,
MPI_Offset *disp){ }
int mca_io_romio_File_set_errhandler(MPI_File fh, MPI_Errhandler eh){ }
int mca_io_romio_File_get_errhandler(MPI_File fh, MPI_Errhandler *eh ){ }

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

@ -8,22 +8,128 @@
#include "mpi/request/request.h"
#include "lam/mem/malloc.h"
int mca_io_romio_File_write_at(MPI_File fh, MPI_Offset offset, void *buf,int count, MPI_Datatype datatype, MPI_Status *status){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_write_at(romio_fh,offset,buf,count,datatype,status);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_write_at_all(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_write_at_all(romio_fh,offset,buf,count,datatype,status);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_iwrite_at(MPI_File fh, MPI_Offset offset, void *buf,int count, MPI_Datatype datatype, MPI_Request *request){
int ret;
mca_io_romio_MPI_File romio_fh;
mca_io_romio_file_t *mca_romio_fh;
mca_io_romio_request_t *rq;
mca_io_romio_MPIO_Request romio_rq;
/* extract the ROMIO request */
rq=(mca_io_romio_request_t *)(*request);
romio_rq = rq->romio_rq;
/* extract the ROMIO file handle: */
mca_romio_fh = (mca_io_romio_file_t *) fh;
romio_fh = mca_romio_fh->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_iwrite_at(romio_fh,offset,buf,count,datatype,
&romio_rq);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_write(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status){
}
int mca_io_romio_File_write_all(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status){
}
int mca_io_romio_File_iwrite(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, lam_request_t **request)
{
mca_io_romio_request_t *rq;
mca_io_romio_MPIO_Request romio_rq;
mca_io_romio_MPI_File romio_fh;
int ret;
rq = LAM_MALLOC(sizeof(mca_io_romio_request_t));
*request = (lam_request_t*) rq;
(*request)->req_type = LAM_REQUEST_IO;
romio_rq = rq->romio_rq;
romio_fh = ((mca_io_romio_file_t *) fh)->romio_fh;
THREAD_LOCK(&mca_io_romio_mutex);
ret=mca_io_romio_MPI_File_iwrite(romio_fh, buf, count, datatype,
&rq->romio_rq);
&romio_rq);
THREAD_UNLOCK(&mca_io_romio_mutex);
return ret;
}
int mca_io_romio_File_write_shared(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status){
}
int mca_io_romio_File_iwrite_shared(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Request *request){
}
int mca_io_romio_File_write_ordered(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status){
}
int mca_io_romio_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype){
}
int mca_io_romio_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status){
}
int mca_io_romio_File_write_all_begin(MPI_File fh, void *buf, int count,
MPI_Datatype datatype){
}
int mca_io_romio_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status){
}
int mca_io_romio_File_write_ordered_begin(MPI_File fh, void *buf, int count,
MPI_Datatype datatype){
}
int mca_io_romio_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status){
}

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

@ -8,19 +8,27 @@
#include "mpi/request/request.h"
#include "mpi/file/file.h"
#include "lam/threads/mutex.h"
#include "romio-1.2.5.1/include/mpio.h"
/* global variables, instantiated in global.c */
extern lam_mutex_t mca_io_romio_mutex;
/*
MPI_Request: "inherit" the lam_request, and add more stuff:
(romio module will instantiate)
*/
struct mca_io_romio_request_t {
lam_request_t super;
mca_io_romio_MPIO_Request romio_rq;
mca_io_romio_MPIO_Request romio_rq;
};
typedef struct mca_io_romio_request_t mca_io_romio_request_t;
/*
MPI_File: "inherit" the lam_file_t, and add more stuff
(romio module will instantiate)
*/
struct mca_io_romio_file_t {
lam_file_t super;
mca_io_romio_MPI_File romio_fh;
@ -29,13 +37,15 @@ typedef struct mca_io_romio_file_t mca_io_romio_file_t;
/* global variables, instantiated in global.c */
extern lam_mutex_t mca_io_romio_mutex;
/* function prototypes */
/* function prototypes
*
* ROMIO MCA module routines are named: mca_io_romio_File_routine
* which wrap the original Romio routines, which have been renamed
* mca_io_romio_MPI_File_routine
*
*/
/* Section 9.2 */
int mca_io_romio_File_open(MPI_Comm comm, char *filename, int amode,
MPI_Info info, MPI_File *fh);
int mca_io_romio_File_close(MPI_File *fh);
@ -49,8 +59,109 @@ int mca_io_romio_File_set_info(MPI_File fh, MPI_Info info);
int mca_io_romio_File_get_info(MPI_File fh, MPI_Info *info_used);
/* Section 9.3 */
int mca_io_romio_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
MPI_Datatype filetype, char *datarep, MPI_Info info);
int mca_io_romio_File_get_view(MPI_File fh, MPI_Offset *disp,
MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep);
/* Section 9.4.2 */
int mca_io_romio_File_read_at(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_read_at_all(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_write_at(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_write_at_all(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_iread_at(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Request *request);
int mca_io_romio_File_iwrite_at(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Request *request);
/* Section 9.4.3 */
int mca_io_romio_File_read(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_File_read_all(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_File_write(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_File_write_all(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_File_iread(MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Request *request);
int mca_io_romio_File_iwrite(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, lam_request_t **request);
int mca_io_romio_File_seek(MPI_File fh, MPI_Offset offset, int whence);
int mca_io_romio_File_get_position(MPI_File fh, MPI_Offset *offset);
int mca_io_romio_File_get_byte_offset(MPI_File fh, MPI_Offset offset,
MPI_Offset *disp);
/* Section 9.4.4 */
int mca_io_romio_File_read_shared(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_write_shared(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_iread_shared(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Request *request);
int mca_io_romio_File_iwrite_shared(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Request *request);
int mca_io_romio_File_read_ordered(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_write_ordered(MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_File_seek_shared(MPI_File fh, MPI_Offset offset, int whence);
int mca_io_romio_File_get_position_shared(MPI_File fh, MPI_Offset *offset);
/* Section 9.4.5 */
int mca_io_romio_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype);
int mca_io_romio_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype);
int mca_io_romio_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_File_read_all_begin(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_File_write_all_begin(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_File_read_ordered_begin(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_File_write_ordered_begin(MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status);
/* Section 9.5.1 */
int mca_io_romio_File_get_type_extent(MPI_File fh, MPI_Datatype datatype,
MPI_Aint *extent);
/* Section 9.6.1 */
int mca_io_romio_File_set_atomicity(MPI_File fh, int flag);
int mca_io_romio_File_get_atomicity(MPI_File fh, int *flag);
int mca_io_romio_File_sync(MPI_File fh);
/* Section 4.13.3 */
int mca_io_romio_File_set_errhandler( MPI_File, MPI_Errhandler );
int mca_io_romio_File_get_errhandler( MPI_File, MPI_Errhandler * );
/* End Prototypes */
/* The funtions will not be called by users, but by LAM's MPI_Test/Wait
* functions when they are called with an I/O request. */
int mca_io_romio_Test(MPI_Request *request, int *flag, MPI_Status *status);
int mca_io_romio_Wait(MPI_Request *request, MPI_Status *status);
#endif /* MCA_IO_ROMIO_H */

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

@ -68,7 +68,59 @@ mca_io_1_0_0_t romio_actions = {
mca_io_romio_File_get_group,
mca_io_romio_File_get_amode,
mca_io_romio_File_set_info,
mca_io_romio_File_get_info
mca_io_romio_File_get_info,
mca_io_romio_File_set_view,
mca_io_romio_File_get_view,
mca_io_romio_File_read_at,
mca_io_romio_File_read_at_all,
mca_io_romio_File_write_at,
mca_io_romio_File_write_at_all,
mca_io_romio_File_iread_at,
mca_io_romio_File_iwrite_at,
mca_io_romio_File_read,
mca_io_romio_File_read_all,
mca_io_romio_File_write,
mca_io_romio_File_write_all,
mca_io_romio_File_iread,
mca_io_romio_File_iwrite,
mca_io_romio_File_seek,
mca_io_romio_File_get_position,
mca_io_romio_File_get_byte_offset,
mca_io_romio_File_read_shared,
mca_io_romio_File_write_shared,
mca_io_romio_File_iread_shared,
mca_io_romio_File_iwrite_shared,
mca_io_romio_File_read_ordered,
mca_io_romio_File_write_ordered,
mca_io_romio_File_seek_shared,
mca_io_romio_File_get_position_shared,
mca_io_romio_File_read_at_all_begin,
mca_io_romio_File_read_at_all_end,
mca_io_romio_File_write_at_all_begin,
mca_io_romio_File_write_at_all_end,
mca_io_romio_File_read_all_begin,
mca_io_romio_File_read_all_end,
mca_io_romio_File_write_all_begin,
mca_io_romio_File_write_all_end,
mca_io_romio_File_read_ordered_begin,
mca_io_romio_File_read_ordered_end,
mca_io_romio_File_write_ordered_begin,
mca_io_romio_File_write_ordered_end,
mca_io_romio_File_get_type_extent,
mca_io_romio_File_set_atomicity,
mca_io_romio_File_get_atomicity,
mca_io_romio_File_sync,
mca_io_romio_File_set_errhandler,
mca_io_romio_File_get_errhandler,
mca_io_romio_Test,
mca_io_romio_Wait
};
mca_io_1_0_0_t* mca_io_romio_module_init(int* priority, int* min_thread, int* max_thread)
@ -78,8 +130,5 @@ mca_io_1_0_0_t* mca_io_romio_module_init(int* priority, int* min_thread, int* ma
*min_thread = MPI_THREAD_SINGLE;
*max_thread = MPI_THREAD_SERIALIZED;
return &romio_actions;
}

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

@ -1,21 +1,147 @@
/*
* $HEADER
*
* The actual ROMIO routines.
* all of these routines have been renamed: prefix with mca_io_romio
*
* ROMIO specific types have also been renamed: (cant do this with #define
* since this file is included by LAM's I/O module)
* all ROMIO references to:
* MPIO_Request changed to: mca_io_romio_MPIO_Request
* MPI_File changed to: mca_io_romio_MPI_File
*
* All other types have been deleted, since they appear in LAM's mpi.h
*
*/
#ifndef MCA_IO_ROMIO_DUMMY_H
#define MCA_IO_ROMIO_DUMMY_H
typedef char *mca_io_romio_MPIO_Request;
typedef char *mca_io_romio_MPI_File;
typedef struct ADIOI_FileD *mca_io_romio_MPI_File;
typedef struct ADIOI_RequestD *mca_io_romio_MPIO_Request;
int mca_io_romio_MPI_File_iwrite(mca_io_romio_MPI_File, void *,
int, MPI_Datatype, mca_io_romio_MPIO_Request);
/* Section 9.2 */
int mca_io_romio_MPI_File_open(MPI_Comm comm, char *filename, int amode,
MPI_Info info, mca_io_romio_MPI_File *fh);
MPI_Info info, mca_io_romio_MPI_File *fh);
int mca_io_romio_MPI_File_close(mca_io_romio_MPI_File *fh);
int mca_io_romio_MPI_File_delete(char *filename, MPI_Info info);
int mca_io_romio_MPI_File_set_size(mca_io_romio_MPI_File fh, MPI_Offset size);
int mca_io_romio_MPI_File_preallocate(mca_io_romio_MPI_File fh, MPI_Offset size);
int mca_io_romio_MPI_File_get_size(mca_io_romio_MPI_File fh, MPI_Offset *size);
int mca_io_romio_MPI_File_get_group(mca_io_romio_MPI_File fh, MPI_Group *group);
int mca_io_romio_MPI_File_get_amode(mca_io_romio_MPI_File fh, int *amode);
int mca_io_romio_MPI_File_set_info(mca_io_romio_MPI_File fh, MPI_Info info);
int mca_io_romio_MPI_File_get_info(mca_io_romio_MPI_File fh, MPI_Info *info_used);
/* Section 9.3 */
int mca_io_romio_MPI_File_set_view(mca_io_romio_MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
MPI_Datatype filetype, char *datarep, MPI_Info info);
int mca_io_romio_MPI_File_get_view(mca_io_romio_MPI_File fh, MPI_Offset *disp,
MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep);
/* Section 9.4.2 */
int mca_io_romio_MPI_File_read_at(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_read_at_all(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_write_at(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_write_at_all(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_iread_at(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, mca_io_romio_MPIO_Request *request);
int mca_io_romio_MPI_File_iwrite_at(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, mca_io_romio_MPIO_Request *request);
/* Section 9.4.3 */
int mca_io_romio_MPI_File_read(mca_io_romio_MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_MPI_File_read_all(mca_io_romio_MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_MPI_File_write(mca_io_romio_MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_MPI_File_write_all(mca_io_romio_MPI_File fh, void *buf, int count, MPI_Datatype
datatype, MPI_Status *status);
int mca_io_romio_MPI_File_iread(mca_io_romio_MPI_File fh, void *buf, int count, MPI_Datatype
datatype, mca_io_romio_MPIO_Request *request);
int mca_io_romio_MPI_File_iwrite(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, mca_io_romio_MPIO_Request *request);
int mca_io_romio_MPI_File_seek(mca_io_romio_MPI_File fh, MPI_Offset offset, int whence);
int mca_io_romio_MPI_File_get_position(mca_io_romio_MPI_File fh, MPI_Offset *offset);
int mca_io_romio_MPI_File_get_byte_offset(mca_io_romio_MPI_File fh, MPI_Offset offset,
MPI_Offset *disp);
/* Section 9.4.4 */
int mca_io_romio_MPI_File_read_shared(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_write_shared(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_iread_shared(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, mca_io_romio_MPIO_Request *request);
int mca_io_romio_MPI_File_iwrite_shared(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, mca_io_romio_MPIO_Request *request);
int mca_io_romio_MPI_File_read_ordered(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_write_ordered(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status);
int mca_io_romio_MPI_File_seek_shared(mca_io_romio_MPI_File fh, MPI_Offset offset, int whence);
int mca_io_romio_MPI_File_get_position_shared(mca_io_romio_MPI_File fh, MPI_Offset *offset);
/* Section 9.4.5 */
int mca_io_romio_MPI_File_read_at_all_begin(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype);
int mca_io_romio_MPI_File_read_at_all_end(mca_io_romio_MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_MPI_File_write_at_all_begin(mca_io_romio_MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype);
int mca_io_romio_MPI_File_write_at_all_end(mca_io_romio_MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_MPI_File_read_all_begin(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_MPI_File_read_all_end(mca_io_romio_MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_MPI_File_write_all_begin(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_MPI_File_write_all_end(mca_io_romio_MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_MPI_File_read_ordered_begin(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_MPI_File_read_ordered_end(mca_io_romio_MPI_File fh, void *buf, MPI_Status *status);
int mca_io_romio_MPI_File_write_ordered_begin(mca_io_romio_MPI_File fh, void *buf, int count,
MPI_Datatype datatype);
int mca_io_romio_MPI_File_write_ordered_end(mca_io_romio_MPI_File fh, void *buf, MPI_Status *status);
/* Section 9.5.1 */
int mca_io_romio_MPI_File_get_type_extent(mca_io_romio_MPI_File fh, MPI_Datatype datatype,
MPI_Aint *extent);
/* Section 9.6.1 */
int mca_io_romio_MPI_File_set_atomicity(mca_io_romio_MPI_File fh, int flag);
int mca_io_romio_MPI_File_get_atomicity(mca_io_romio_MPI_File fh, int *flag);
int mca_io_romio_MPI_File_sync(mca_io_romio_MPI_File fh);
/* Section 4.13.3 */
int mca_io_romio_MPI_File_set_errhandler(mca_io_romio_MPI_File, MPI_Errhandler );
int mca_io_romio_MPI_File_get_errhandler(mca_io_romio_MPI_File, MPI_Errhandler * );
/* End Prototypes */
int mca_io_romio_MPIO_Test(mca_io_romio_MPIO_Request *request, int *flag, MPI_Status *status);
int mca_io_romio_MPIO_Wait(mca_io_romio_MPIO_Request *request, MPI_Status *status);
MPI_Fint mca_io_romio_MPIO_Request_c2f(mca_io_romio_MPIO_Request request);
mca_io_romio_MPIO_Request mca_io_romio_MPIO_Request_f2c(MPI_Fint request);
#endif