1
1

Update ROMIO release to the one included with MPICH2-1.0.5p4, tagged in

vendor/romio as mpich2-1.0.5p4.

This commit was SVN r15544.
Этот коммит содержится в:
Brian Barrett 2007-07-21 22:08:27 +00:00
родитель 16da13c79e
Коммит 9184db7239
30 изменённых файлов: 391 добавлений и 89 удалений

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

@ -33,6 +33,8 @@ Trunk (not on release branches yet)
details.
--> Expected: ???
- Updated ROMIO with the version from MPICH2 1.0.5p4
--> Expected: 1.3
- Add RDMA capable one-sided component (called rdma), which
can be used with BTL components that expose a full one-sided
interface.

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

@ -17,6 +17,12 @@ void ADIOI_NTFS_ReadContig(ADIO_File fd, void *buf, int count,
static char myname[] = "ADIOI_NTFS_ReadContig";
OVERLAPPED *pOvl;
/* If file pointer is of type ADIO_INDIVIDUAL ignore the offset
and use the current location of file pointer */
if(file_ptr_type == ADIO_INDIVIDUAL){
offset = fd->fp_ind;
}
MPI_Type_size(datatype, &datatype_size);
len = datatype_size * count;

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

@ -16,6 +16,12 @@ void ADIOI_NTFS_WriteContig(ADIO_File fd, void *buf, int count,
DWORD dwNumWritten = 0;
int err=-1, datatype_size, len;
OVERLAPPED *pOvl;
/* If file pointer type in ADIO_INDIVIDUAL then offset should be
ignored and the current location of file pointer should be used */
if(file_ptr_type == ADIO_INDIVIDUAL){
offset = fd->fp_ind;
}
MPI_Type_size(datatype, &datatype_size);
len = datatype_size * count;

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

@ -541,8 +541,6 @@ void ADIOI_PVFS_ReadStridedListIO(ADIO_File fd, void *buf, int count,
max_mem_list = mem_list_count;
if (max_file_list < file_list_count)
max_file_list = file_list_count;
if (max_mem_list == MAX_ARRAY_SIZE)
break;
} /* while (size_read < bufsize) */
mem_offsets = (char **)ADIOI_Malloc(max_mem_list*sizeof(char *));

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

@ -881,8 +881,6 @@ void ADIOI_PVFS_WriteStridedListIO(ADIO_File fd, void *buf, int count,
max_mem_list = mem_list_count;
if (max_file_list < file_list_count)
max_file_list = file_list_count;
if (max_mem_list == MAX_ARRAY_SIZE)
break;
} /* while (size_wrote < bufsize) */
mem_offsets = (char **)ADIOI_Malloc(max_mem_list*sizeof(char *));

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

@ -48,6 +48,7 @@ void ADIOI_PVFS2_Init(int *error_code )
{
int ret;
static char myname[] = "ADIOI_PVFS2_INIT";
char * ncache_timeout;
/* do nothing if we've already fired up the pvfs2 interface */
if (ADIOI_PVFS2_Initialized != MPI_KEYVAL_INVALID) {
@ -55,6 +56,13 @@ void ADIOI_PVFS2_Init(int *error_code )
return;
}
/* for consistency, we should disable the pvfs2 ncache. If the
* environtment variable is already set, assume a user knows it
* won't be a problem */
ncache_timeout = getenv("PVFS2_NCACHE_TIMEOUT");
if (ncache_timeout == NULL )
setenv("PVFS2_NCACHE_TIMEOUT", "0", 1);
ret = PVFS_util_init_defaults();
if (ret < 0 ) {
*error_code = MPIO_Err_create_code(MPI_SUCCESS,

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

@ -23,7 +23,8 @@ typedef struct open_status_s open_status;
* in that case, create the file if we were passed MPI_MODE_CREATE
* . if the create fails, that means someone else created the file between
* our call to lookup and our call to create (like if N processors all
* open the same file with MPI_COMM_SELF)
* open the same file with MPI_COMM_SELF). Then we can just look up the
* file (which now exists).
*
* the good news is that only one processor does this and broadcasts the
* handle to everyone else in the communicator
@ -55,7 +56,7 @@ static void fake_an_open(PVFS_fs_id fs_id, char *pvfs_name, int access_mode,
ret = PVFS_sys_lookup(fs_id, pvfs_name,
&(pvfs2_fs->credentials), &resp_lookup, PVFS2_LOOKUP_LINK_FOLLOW);
if ( (ret < 0) ) { /* XXX: check what the error was */
if ( ret == (-PVFS_ENOENT)) {
if (access_mode & ADIO_CREATE) {
ret = PVFS_sys_getparent(fs_id, pvfs_name,
&(pvfs2_fs->credentials), &resp_getparent);
@ -85,7 +86,12 @@ static void fake_an_open(PVFS_fs_id fs_id, char *pvfs_name, int access_mode,
resp_getparent.parent_ref, attribs,
&(pvfs2_fs->credentials), dist, &resp_create);
if (ret < 0) { /* XXX: should only do this for EEXISTS */
/* if many creates are happening in this directory, the earlier
* sys_lookup may have returned ENOENT, but the sys_create could
* return EEXISTS. That means the file has been created anyway, so
* less work for us and we can just open it up and return the
* handle */
if (ret == (-PVFS_EEXIST)) {
ret = PVFS_sys_lookup(fs_id, pvfs_name,
&(pvfs2_fs->credentials), &resp_lookup,
PVFS2_LOOKUP_LINK_FOLLOW);
@ -105,7 +111,7 @@ static void fake_an_open(PVFS_fs_id fs_id, char *pvfs_name, int access_mode,
}
} else if (access_mode & ADIO_EXCL) {
/* lookup should not succeed if opened with EXCL */
o_status->error = -1; /* XXX: what should it be? */
o_status->error = -PVFS_EEXIST;
return;
} else {
o_status->object_ref = resp_lookup.ref;
@ -209,6 +215,7 @@ void ADIOI_PVFS2_Open(ADIO_File fd, int *error_code)
if (o_status.error != 0)
{
ADIOI_Free(pvfs2_fs);
fd->fs_ptr = NULL;
*error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE,
myname, __LINE__,

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

@ -139,7 +139,7 @@ void ADIOI_PVFS2_ReadStrided(ADIO_File fd, void *buf, int count,
* are actually contiguous and do not need the expensive workarond */
if (!filetype_is_contig) {
flat_file = ADIOI_Flatlist;
while (flat_buf->type != fd->filetype) flat_file = flat_file->next;
while (flat_file->type != fd->filetype) flat_file = flat_file->next;
if (flat_file->count == 1)
filetype_is_contig = 1;
}
@ -675,8 +675,6 @@ void ADIOI_PVFS2_ReadStrided(ADIO_File fd, void *buf, int count,
max_mem_list = mem_list_count;
if (max_file_list < file_list_count)
max_file_list = file_list_count;
if (max_mem_list == MAX_ARRAY_SIZE)
break;
} /* while (size_read < bufsize) */
/* one last check before we actually carry out the operation:

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

@ -160,7 +160,7 @@ void ADIOI_PVFS2_WriteStrided(ADIO_File fd, void *buf, int count,
* are actually contiguous and do not need the expensive workarond */
if (!filetype_is_contig) {
flat_file = ADIOI_Flatlist;
while (flat_buf->type != fd->filetype) flat_file = flat_file->next;
while (flat_file->type != fd->filetype) flat_file = flat_file->next;
if (flat_file->count == 1)
filetype_is_contig = 1;
}
@ -727,8 +727,6 @@ void ADIOI_PVFS2_WriteStrided(ADIO_File fd, void *buf, int count,
max_mem_list = mem_list_count;
if (max_file_list < file_list_count)
max_file_list = file_list_count;
if (max_mem_list == MAX_ARRAY_SIZE)
break;
} /* while (size_wrote < bufsize) */
/* one last check before we actually carry out the operation:

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

@ -16,12 +16,16 @@ int ADIOI_TESTFS_ReadDone(ADIO_Request *request, ADIO_Status *status, int
*error_code = MPI_SUCCESS;
if (*request == ADIO_REQUEST_NULL) {
FPRINTF(stdout, "ADIOI_TESTFS_ReadDone called on ADIO_REQUEST_NULL\n");
MPI_Comm_size( MPI_COMM_WORLD, &nprocs );
MPI_Comm_rank( MPI_COMM_WORLD, &myrank );
FPRINTF(stdout, "[%d/%d] ADIOI_TESTFS_ReadDone called on ADIO_REQUEST_NULL\n",
myrank, nprocs);
return 1;
}
MPI_Comm_size((*request)->fd->comm, &nprocs);
MPI_Comm_rank((*request)->fd->comm, &myrank);
FPRINTF(stdout, "[%d/%d] ADIOI_TESTFS_ReadDone called on %s\n",
myrank, nprocs, (*request)->fd->filename);
@ -42,7 +46,10 @@ int ADIOI_TESTFS_WriteDone(ADIO_Request *request, ADIO_Status *status, int
*error_code = MPI_SUCCESS;
if (*request == ADIO_REQUEST_NULL) {
FPRINTF(stdout, "ADIOI_TESTFS_WriteDone called on ADIO_REQUEST_NULL\n");
MPI_Comm_size( MPI_COMM_WORLD, &nprocs );
MPI_Comm_rank( MPI_COMM_WORLD, &myrank );
FPRINTF(stdout, "[%d/%d] ADIOI_TESTFS_WriteDone called on ADIO_REQUEST_NULL\n",
myrank, nprocs);
return 1;
}

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

@ -84,7 +84,7 @@ void ADIOI_GEN_WriteStridedColl(ADIO_File fd, void *buf, int count,
unsigned long long max_pe_request = 0;
unsigned long long min_rd_request = ULONG_MAX;
unsigned long long max_rd_request = 0;
int old_error;
int old_error, tmp_error;
MPI_Info_get(fd->info, "ompi_enable_parallel_optimizations", MPI_MAX_INFO_VAL, value,
&info_flag);
@ -283,9 +283,6 @@ void ADIOI_GEN_WriteStridedColl(ADIO_File fd, void *buf, int count,
* We carry out a collective communication at the end here so no one
* can start independent i/o before collective I/O completes.
*
* optimization: if only one process performing i/o, we can perform
* a less-expensive Bcast
*
* need to do some gymnastics with the error codes so that if something
* went wrong, all processes report error, but if a process has a more
* specific error code, we can still have that process report the
@ -294,12 +291,16 @@ void ADIOI_GEN_WriteStridedColl(ADIO_File fd, void *buf, int count,
old_error = *error_code;
if (*error_code != MPI_SUCCESS) *error_code = MPI_ERR_IO;
/* optimization: if only one process performing i/o, we can perform
* a less-expensive Bcast */
if (fd->hints->cb_nodes == 1)
MPI_Bcast(error_code, 1, MPI_INT,
fd->hints->ranklist[0], fd->comm);
else
MPI_Allreduce(MPI_IN_PLACE, error_code, 1, MPI_INT,
else {
tmp_error = *error_code;
MPI_Allreduce(&tmp_error, error_code, 1, MPI_INT,
MPI_MAX, fd->comm);
}
if ( (old_error != MPI_SUCCESS) && (old_error != MPI_ERR_IO) )
*error_code = old_error;

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

@ -163,6 +163,7 @@ char *ADIOI_Strdup( const char *str )
* We need an snprintf replacement for systems without one
*/
#ifndef HAVE_SNPRINTF
#include <ctype.h>
/* FIXME: Really need a check for varargs.h vs stdarg.h */
#include <stdarg.h>
/*
@ -267,11 +268,10 @@ int ADIOI_Snprintf( char *str, size_t size, const char *format, ... )
case 'p':
{
int val;
void *val;
char tmp[20];
char *t = tmp;
/* Get the argument, of integer type */
val = va_arg( list, int );
val = va_arg( list, void * );
sprintf( tmp, "%p", val );
if (width > 0) {
int tmplen = strlen(tmp);

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

@ -162,6 +162,8 @@ AC_ARG_ENABLE(debug,
[--enable-debug - Build a debugging version],,)
AC_ARG_WITH(file-system,[
--with-file-system=name - Build with support for the named file systems],,)
AC_ARG_WITH(pvfs2,[
--with-pvfs2=path - Path to installation of PVFS (version 2)],,)
AC_ARG_WITH(mpi,[
--with-mpi=name - Specify MPI implementation to build ROMIO for],,)
dnl
@ -776,6 +778,8 @@ fi
])
if test "$pac_cv_int_hold_pointer" != yes ; then
AC_DEFINE(INT_LT_POINTER,1,[Define if int smaller than pointer])
dnl Switch to a conforming name (start with HAVE or USE)
AC_DEFINE(HAVE_INT_LT_POINTER,1,[Define if int smaller than pointer])
fi
#
dnl The original ROMIO configure used a set of complex tests here; this
@ -1086,6 +1090,27 @@ fi
file_system_testfs=1
FILE_SYSTEM="testfs $FILE_SYSTEM"
# An attempt to "do the right thing" with as little help from the end-user as
# possible:
# - if 'with-pvfs2' given, use that to find pvfs2-config. complain if we
# cannot find it, as this is probably what the user would expect
# - if we can find 'pvfs2-config' in our path, we can use it to set CFLAGS,
# LIBS, and LDFLAGS accordingly
# - as a fallback, use CFLAGS, LIBS, and LDFLAGS passed in by the user
AC_PATH_PROG(PVFS2_CONFIG, pvfs2-config, notfound, [$PATH:${with_pvfs2}/bin])
if test $PVFS2_CONFIG != "notfound" ; then
CFLAGS="$CFLAGS $( $PVFS2_CONFIG --cflags)"
LIBS="$LIBS $( $PVFS2_CONFIG --libs)"
ROMIO_LIBLIST="$ROMIO_LIBLIST $LIBS"
FILE_SYSTEM="pvfs2 $FILE_SYSTEM"
file_system_pvfs2=1
fi
if test "$PVFS2_CONFIG" = "notfound" -a -n "$with_pvfs2" ; then
AC_MSG_ERROR([pvfs2-config not found in $with_pvfs2])
fi
#
# Print list of configured file systems
#
@ -1201,6 +1226,8 @@ if test -n "$file_system_pvfs"; then
fi
fi
#
# Verify presence of pvfs2.h
#

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

@ -105,4 +105,118 @@ P$(SHLIBNAME).la: $(MPIO_TMP_LOPFOBJECTS)
# --------------------------------------------------------------------------
clean:
@rm -f *.o *.lo
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg
# Rules for the profiling objects
_closef.o: closef.c
$(CC) $(CFLAGS) -c $(srcdir)/closef.c -o _closef.o
_readf.o: readf.c
$(CC) $(CFLAGS) -c $(srcdir)/readf.c -o _readf.o
_openf.o: openf.c
$(CC) $(CFLAGS) -c $(srcdir)/openf.c -o _openf.o
_get_extentf.o: get_extentf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_extentf.c -o _get_extentf.o
_writef.o: writef.c
$(CC) $(CFLAGS) -c $(srcdir)/writef.c -o _writef.o
_set_viewf.o: set_viewf.c
$(CC) $(CFLAGS) -c $(srcdir)/set_viewf.c -o _set_viewf.o
_seekf.o: seekf.c
$(CC) $(CFLAGS) -c $(srcdir)/seekf.c -o _seekf.o
_read_atf.o: read_atf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_atf.c -o _read_atf.o
_ireadf.o: ireadf.c
$(CC) $(CFLAGS) -c $(srcdir)/ireadf.c -o _ireadf.o
_iwritef.o: iwritef.c
$(CC) $(CFLAGS) -c $(srcdir)/iwritef.c -o _iwritef.o
_iotestf.o: iotestf.c
$(CC) $(CFLAGS) -c $(srcdir)/iotestf.c -o _iotestf.o
_iowaitf.o: iowaitf.c
$(CC) $(CFLAGS) -c $(srcdir)/iowaitf.c -o _iowaitf.o
_get_posnf.o: get_posnf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_posnf.c -o _get_posnf.o
_deletef.o: deletef.c
$(CC) $(CFLAGS) -c $(srcdir)/deletef.c -o _deletef.o
_read_allf.o: read_allf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_allf.c -o _read_allf.o
_read_atallf.o: read_atallf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_atallf.c -o _read_atallf.o
_iread_atf.o: iread_atf.c
$(CC) $(CFLAGS) -c $(srcdir)/iread_atf.c -o _iread_atf.o
_iwrite_atf.o: iwrite_atf.c
$(CC) $(CFLAGS) -c $(srcdir)/iwrite_atf.c -o _iwrite_atf.o
_get_bytofff.o: get_bytofff.c
$(CC) $(CFLAGS) -c $(srcdir)/get_bytofff.c -o _get_bytofff.o
_write_allf.o: write_allf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_allf.c -o _write_allf.o
_write_atf.o: write_atf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_atf.c -o _write_atf.o
_write_atallf.o: write_atallf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_atallf.c -o _write_atallf.o
_get_viewf.o: get_viewf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_viewf.c -o _get_viewf.o
_get_groupf.o: get_groupf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_groupf.c -o _get_groupf.o
_get_amodef.o: get_amodef.c
$(CC) $(CFLAGS) -c $(srcdir)/get_amodef.c -o _get_amodef.o
_fsyncf.o: fsyncf.c
$(CC) $(CFLAGS) -c $(srcdir)/fsyncf.c -o _fsyncf.o
_get_atomf.o: get_atomf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_atomf.c -o _get_atomf.o
_set_atomf.o: set_atomf.c
$(CC) $(CFLAGS) -c $(srcdir)/set_atomf.c -o _set_atomf.o
_set_sizef.o: set_sizef.c
$(CC) $(CFLAGS) -c $(srcdir)/set_sizef.c -o _set_sizef.o
_get_sizef.o: get_sizef.c
$(CC) $(CFLAGS) -c $(srcdir)/get_sizef.c -o _get_sizef.o
_preallocf.o: preallocf.c
$(CC) $(CFLAGS) -c $(srcdir)/preallocf.c -o _preallocf.o
_set_infof.o: set_infof.c
$(CC) $(CFLAGS) -c $(srcdir)/set_infof.c -o _set_infof.o
_get_infof.o: get_infof.c
$(CC) $(CFLAGS) -c $(srcdir)/get_infof.c -o _get_infof.o
_rd_atallbf.o: rd_atallbf.c
$(CC) $(CFLAGS) -c $(srcdir)/rd_atallbf.c -o _rd_atallbf.o
_rd_atallef.o: rd_atallef.c
$(CC) $(CFLAGS) -c $(srcdir)/rd_atallef.c -o _rd_atallef.o
_read_allbf.o: read_allbf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_allbf.c -o _read_allbf.o
_read_allef.o: read_allef.c
$(CC) $(CFLAGS) -c $(srcdir)/read_allef.c -o _read_allef.o
_wr_atallbf.o: wr_atallbf.c
$(CC) $(CFLAGS) -c $(srcdir)/wr_atallbf.c -o _wr_atallbf.o
_wr_atallef.o: wr_atallef.c
$(CC) $(CFLAGS) -c $(srcdir)/wr_atallef.c -o _wr_atallef.o
_write_allbf.o: write_allbf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_allbf.c -o _write_allbf.o
_write_allef.o: write_allef.c
$(CC) $(CFLAGS) -c $(srcdir)/write_allef.c -o _write_allef.o
_get_posn_shf.o: get_posn_shf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_posn_shf.c -o _get_posn_shf.o
_iread_shf.o: iread_shf.c
$(CC) $(CFLAGS) -c $(srcdir)/iread_shf.c -o _iread_shf.o
_read_shf.o: read_shf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_shf.c -o _read_shf.o
_write_shf.o: write_shf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_shf.c -o _write_shf.o
_iwrite_shf.o: iwrite_shf.c
$(CC) $(CFLAGS) -c $(srcdir)/iwrite_shf.c -o _iwrite_shf.o
_seek_shf.o: seek_shf.c
$(CC) $(CFLAGS) -c $(srcdir)/seek_shf.c -o _seek_shf.o
_read_ordf.o: read_ordf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_ordf.c -o _read_ordf.o
_read_ordef.o: read_ordef.c
$(CC) $(CFLAGS) -c $(srcdir)/read_ordef.c -o _read_ordef.o
_write_ordbf.o: write_ordbf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_ordbf.c -o _write_ordbf.o
_read_ordbf.o: read_ordbf.c
$(CC) $(CFLAGS) -c $(srcdir)/read_ordbf.c -o _read_ordbf.o
_write_ordf.o: write_ordf.c
$(CC) $(CFLAGS) -c $(srcdir)/write_ordf.c -o _write_ordf.o
_write_ordef.o: write_ordef.c
$(CC) $(CFLAGS) -c $(srcdir)/write_ordef.c -o _write_ordef.o
_set_errhf.o: set_errhf.c
$(CC) $(CFLAGS) -c $(srcdir)/set_errhf.c -o _set_errhf.o
_get_errhf.o: get_errhf.c
$(CC) $(CFLAGS) -c $(srcdir)/get_errhf.c -o _get_errhf.o

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

@ -47,4 +47,6 @@ $(SHLIBNAME).la: $(MPIO_LOOBJECTS)
$(AR) $(SHLIBNAME).la $(MPIO_LOOBJECTS)
clean:
@rm -f *.o *.lo
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg

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

@ -47,4 +47,6 @@ $(SHLIBNAME).la: $(MPIO_LOOBJECTS)
$(AR) $(SHLIBNAME).la $(MPIO_LOOBJECTS)
clean:
@rm -f *.o *.lo
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg

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

@ -47,4 +47,6 @@ $(SHLIBNAME).la: $(MPIO_LOOBJECTS)
$(AR) $(SHLIBNAME).la $(MPIO_LOOBJECTS)
clean:
@rm -f *.o *.lo
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg

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

@ -49,17 +49,16 @@ MPIO_Request MPIO_Request_f2c(MPI_Fint request)
MPIU_THREAD_SINGLE_CS_ENTER("io");
/* --BEGIN ERROR HANDLING-- */
if (!request) {
error_code = MPIO_REQUEST_NULL;
goto fn_exit;
return MPIO_REQUEST_NULL;
}
/* --BEGIN ERROR HANDLING-- */
if ((request < 0) || (request > ADIOI_Reqtable_ptr)) {
error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
myname, __LINE__, MPI_ERR_REQUEST,
"**request", 0);
error_code = MPIO_Err_return_file(MPI_FILE_NULL, error_code);
goto fn_exit;
return MPIO_REQUEST_NULL;
}
/* --END ERROR HANDLING-- */

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

@ -42,7 +42,7 @@ all: $(LIBNAME)
.c.sp:
$(C_COMPILE_SHL) $(CFLAGS) -c $< -o _$*.lo
profile: $(MPIO_TMP_POBJECTS)
profile: $(MPIO_REAL_POBJECTS)
$(AR) $(LIBNAME) $(MPIO_REAL_POBJECTS)
$(RANLIB) $(LIBNAME)
@if [ "@ENABLE_SHLIB@" != "none" ] ; then \
@ -68,4 +68,13 @@ P$(SHLIBNAME).la: $(MPIO_TMP_LOPOBJECTS)
# --------------------------------------------------------------------------
clean:
@rm -f *.o *.lo
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg
# Rules for the profiling objects
_subarray.o: subarray.c
$(CC) $(CFLAGS) -c $(srcdir)/subarray.c -o _subarray.o
_darray.o: darray.c
$(CC) $(CFLAGS) -c $(srcdir)/darray.c -o _darray.o

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

@ -27,7 +27,7 @@ all: $(LIBNAME)
$(CC) $(CFLAGS) -c _$*.c
@rm -f _$*.c
profile: $(MPIO_TMP_PFOBJECTS)
profile: $(MPIO_REAL_PFOBJECTS)
$(AR) $(LIBNAME) $(MPIO_REAL_PFOBJECTS)
$(RANLIB) $(LIBNAME)
@rm -f _*.o
@ -37,4 +37,12 @@ $(LIBNAME): $(MPIO_FOBJECTS)
$(RANLIB) $(LIBNAME)
clean:
@rm -f *.o
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg
# Rules for the profiling objects
_subarrayf.o: subarrayf.c
$(CC) $(CFLAGS) -c $(srcdir)/subarrayf.c -o _subarrayf.o
_darrayf.o: darrayf.c
$(CC) $(CFLAGS) -c $(srcdir)/darrayf.c -o _darrayf.o

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

@ -49,7 +49,7 @@ all: $(LIBNAME)
.c.sp:
$(C_COMPILE_SHL) $(CFLAGS) -c $< -o _$*.lo
profile: $(MPIO_TMP_POBJECTS)
profile: $(MPIO_REAL_POBJECTS)
$(AR) $(LIBNAME) $(MPIO_REAL_POBJECTS)
$(RANLIB) $(LIBNAME)
@if [ "@ENABLE_SHLIB@" != "none" ] ; then \
@ -75,4 +75,31 @@ P$(SHLIBNAME).la: $(MPIO_TMP_LOPOBJECTS)
# --------------------------------------------------------------------------
clean:
@rm -f *.o *.lo
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg
# Rules for the profiling objects
info_create.o: infocreate.c
$(CC) $(CFLAGS) -c $(srcdir)/infocreate.c -o _info_create.o
info_dup.o: infodup.c
$(CC) $(CFLAGS) -c $(srcdir)/infodup.c -o _info_dup.o
info_get.o: infoget.c
$(CC) $(CFLAGS) -c $(srcdir)/infoget.c -o _info_get.o
info_getnth.o: infogetnth.c
$(CC) $(CFLAGS) -c $(srcdir)/infogetnth.c -o _info_getnth.o
info_set.o: infoset.c
$(CC) $(CFLAGS) -c $(srcdir)/infoset.c -o _info_set.o
info_delete.o: infodelete.c
$(CC) $(CFLAGS) -c $(srcdir)/infodelete.c -o _info_delete.o
info_free.o: infofree.c
$(CC) $(CFLAGS) -c $(srcdir)/infofree.c -o _info_free.o
info_getnks.o: infogetnks.c
$(CC) $(CFLAGS) -c $(srcdir)/infogetnks.c -o _info_getnks.o
info_getvln.o: infogetvln.c
$(CC) $(CFLAGS) -c $(srcdir)/infogetvln.c -o _info_getvln.o
info_c2f.o: infoc2f.c
$(CC) $(CFLAGS) -c $(srcdir)/infoc2f.c -o _info_c2f.o
info_f2c.o: infof2c.c
$(CC) $(CFLAGS) -c $(srcdir)/infof2c.c -o _info_f2c.o

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

@ -30,7 +30,7 @@ all: $(LIBNAME)
$(CC) $(CFLAGS) -c _$*.c
@rm -f _$*.c
profile: $(MPIO_TMP_POBJECTS)
profile: $(MPIO_REAL_POBJECTS)
$(AR) $(LIBNAME) $(MPIO_REAL_POBJECTS)
$(RANLIB) $(LIBNAME)
@rm -f _*.o
@ -40,4 +40,26 @@ $(LIBNAME): $(MPIO_OBJECTS)
$(RANLIB) $(LIBNAME)
clean:
@rm -f *.o
@rm -f *.o *.lo *.gcno *.gcda *.bb *.bbg
@rm -f ${srcdir}/*.gcno ${srcdir}/*.gcda
@rm -f ${srcdir}/*.bb ${srcdir}/*.bbg
# Rules for the profiling objects
_info_createf.o: info_createf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_createf.c -o _info_createf.o
_info_dupf.o: info_dupf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_dupf.c -o _info_dupf.o
_info_getf.o: info_getf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_getf.c -o _info_getf.o
_info_getnthf.o: info_getnthf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_getnthf.c -o _info_getnthf.o
_info_setf.o: info_setf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_setf.c -o _info_setf.o
_info_deletef.o: info_deletef.c
$(CC) $(CFLAGS) -c $(srcdir)/info_deletef.c -o _info_deletef.o
_info_freef.o: info_freef.c
$(CC) $(CFLAGS) -c $(srcdir)/info_freef.c -o _info_freef.o
_info_getnksf.o: info_getnksf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_getnksf.c -o _info_getnksf.o
_info_getvlnf.o: info_getvlnf.c
$(CC) $(CFLAGS) -c $(srcdir)/info_getvlnf.c -o _info_getvlnf.o

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

@ -1,3 +1,8 @@
! -*- Mode: Fortran; -*-
!
! (C) 2001 by Argonne National Laboratory.
! See COPYRIGHT in top-level directory.
!
program main
implicit none

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

@ -1,3 +1,8 @@
! -*- Mode: Fortran; -*-
!
! (C) 2001 by Argonne National Laboratory.
! See COPYRIGHT in top-level directory.
!
program main
implicit none

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

@ -1,3 +1,8 @@
! -*- Mode: Fortran; -*-
!
! (C) 2001 by Argonne National Laboratory.
! See COPYRIGHT in top-level directory.
!
program main
implicit none

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

@ -1,3 +1,8 @@
/* -*- Mode: C; c-basic-offset:4 ; -*- */
/*
* (C) 2001 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
#include "mpi.h"
#include <stdlib.h>
#include <string.h>

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

@ -1,3 +1,8 @@
/* -*- Mode: C; c-basic-offset:4 ; -*- */
/*
* (C) 2001 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
#include "mpi.h"
#include <stdlib.h>
#include <string.h>

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

@ -476,13 +476,19 @@ int test_file(char *filename, int mynod, int nprocs, char * cb_hosts, char *msg,
MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", info);
for (i=0; i<SIZE; i++) buf[i] = SEEDER(mynod,i,SIZE);
MPI_File_write_all(fh, buf, 1, newtype, &status);
errcode = MPI_File_write_all(fh, buf, 1, newtype, &status);
if (errcode != MPI_SUCCESS) {
handle_error(errcode, "nc mem - nc file: MPI_File_write_all");
}
MPI_Barrier(MPI_COMM_WORLD);
for (i=0; i<SIZE; i++) buf[i] = -1;
MPI_File_read_at_all(fh, 0, buf, 1, newtype, &status);
errcode = MPI_File_read_at_all(fh, 0, buf, 1, newtype, &status);
if (errcode != MPI_SUCCESS) {
handle_error(errcode, "nc mem - nc file: MPI_File_read_at_all");
}
/* the verification for N compute nodes is tricky. Say we have 3
* processors.
@ -527,13 +533,19 @@ int test_file(char *filename, int mynod, int nprocs, char * cb_hosts, char *msg,
info, &fh);
for (i=0; i<SIZE; i++) buf[i] = SEEDER(mynod,i,SIZE);
MPI_File_write_at_all(fh, mynod*(SIZE/nprocs)*sizeof(int), buf, 1, newtype, &status);
errcode = MPI_File_write_at_all(fh, mynod*(SIZE/nprocs)*sizeof(int),
buf, 1, newtype, &status);
if (errcode != MPI_SUCCESS)
handle_error(errcode, "nc mem - c file: MPI_File_write_at_all");
MPI_Barrier(MPI_COMM_WORLD);
for (i=0; i<SIZE; i++) buf[i] = -1;
MPI_File_read_at_all(fh, mynod*(SIZE/nprocs)*sizeof(int), buf, 1, newtype, &status);
errcode = MPI_File_read_at_all(fh, mynod*(SIZE/nprocs)*sizeof(int),
buf, 1, newtype, &status);
if (errcode != MPI_SUCCESS)
handle_error(errcode, "nc mem - c file: MPI_File_read_at_all");
/* just like as above */
for (i=0; i<mynod; i++ ) {
@ -571,13 +583,17 @@ int test_file(char *filename, int mynod, int nprocs, char * cb_hosts, char *msg,
MPI_File_set_view(fh, 0, MPI_INT, newtype, "native", info);
for (i=0; i<SIZE; i++) buf[i] = SEEDER(mynod, i, SIZE);
MPI_File_write_all(fh, buf, SIZE, MPI_INT, &status);
errcode = MPI_File_write_all(fh, buf, SIZE, MPI_INT, &status);
if (errcode != MPI_SUCCESS)
handle_error(errcode, "c mem - nc file: MPI_File_write_all");
MPI_Barrier(MPI_COMM_WORLD);
for (i=0; i<SIZE; i++) buf[i] = -1;
MPI_File_read_at_all(fh, 0, buf, SIZE, MPI_INT, &status);
errcode = MPI_File_read_at_all(fh, 0, buf, SIZE, MPI_INT, &status);
if (errcode != MPI_SUCCESS)
handle_error(errcode, "c mem - nc file: MPI_File_read_at_all");
/* same crazy checking */
for (i=0; i<SIZE; i++) {

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

@ -1,3 +1,8 @@
! -*- Mode: Fortran; -*-
!
! (C) 2001 by Argonne National Laboratory.
! See COPYRIGHT in top-level directory.
!
program main
implicit none

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

@ -10,6 +10,7 @@ quiet=0
MAKE="@MAKE@"
srcdir=@srcdir@
check_canrun=0
subset_only=0
FILENAME=test
# Using shifts should remove args from the list.
for arg in "$@" ; do
@ -38,6 +39,10 @@ for arg in "$@" ; do
shift
makeeach=1
;;
-subset)
shift
subset_only=1
;;
-fname=*)
FILENAME=`echo $arg|sed 's/-*fname=//'`
;;
@ -55,6 +60,8 @@ for arg in "$@" ; do
echo "at the end of the test rather than also after each test."
echo "If -check is used, only a single simple test is run; this"
echo "is used to check that mpirun can run an MPI program."
echo "If -subset is used, we skip tests for atomicity and shared"
echo "file pointers which can fail on some distributed file systems"
exit 1
;;
*)
@ -174,18 +181,20 @@ $mpirun -np 4 ./async -fname $FILENAME
CleanExe async
#
OutTime
testfiles="$testfiles atomicity.out"
\rm -f atomicity.out
MakeExe atomicity
\rm -f $FILENAME*
echo '**** Testing atomicity.c ****'
# Atomicity test recommends at least 8 processes (separate processors
# even better)
$mpirun -np 4 ./atomicity -fname $FILENAME
# CheckOutput atomicity
CleanExe atomicity
#
OutTime
if [ $subset_only -eq 0 ] ; then
testfiles="$testfiles atomicity.out"
\rm -f atomicity.out
MakeExe atomicity
\rm -f $FILENAME*
echo '**** Testing atomicity.c ****'
# Atomicity test recommends at least 8 processes (separate processors
# even better)
$mpirun -np 4 ./atomicity -fname $FILENAME
# CheckOutput atomicity
CleanExe atomicity
#
OutTime
fi
testfiles="$testfiles coll_test.out"
\rm -f coll_test.out
MakeExe coll_test
@ -256,26 +265,30 @@ $mpirun -np 4 ./noncontig_coll2 -fname $FILENAME
CleanExe noncontig_coll2
#
OutTime
testfiles="$testfiles misc.out"
\rm -f misc.out
MakeExe misc
\rm -f $FILENAME*
echo '**** Testing misc.c ****'
$mpirun -np 4 ./misc -fname $FILENAME
# CheckOutput misc
CleanExe misc
#
OutTime
testfiles="$testfiles shared_fp.out"
\rm -f shared_fp.out
MakeExe shared_fp
\rm -f $FILENAME*
echo '**** Testing shared_fp.c ****'
$mpirun -np 4 ./shared_fp -fname $FILENAME
# CheckOutput shared_fp
CleanExe shared_fp
#
OutTime
if [ $subset_only -eq 0 ] ; then
testfiles="$testfiles misc.out"
\rm -f misc.out
MakeExe misc
\rm -f $FILENAME*
echo '**** Testing misc.c ****'
$mpirun -np 4 ./misc -fname $FILENAME
# CheckOutput misc
CleanExe misc
#
OutTime
fi
if [ $subset_only -eq 0 ] ; then
testfiles="$testfiles shared_fp.out"
\rm -f shared_fp.out
MakeExe shared_fp
\rm -f $FILENAME*
echo '**** Testing shared_fp.c ****'
$mpirun -np 4 ./shared_fp -fname $FILENAME
# CheckOutput shared_fp
CleanExe shared_fp
#
OutTime
fi
testfiles="$testfiles split_coll.out"
\rm -f split_coll.out
MakeExe split_coll
@ -320,16 +333,18 @@ if [ @NOF77@ = 0 ] ; then
echo ""
echo "FORTRAN TESTS"
OutTime
testfiles="$testfiles fmisc.out"
\rm -f fmisc.out
MakeExe fmisc
\rm -f $FILENAME*
echo '**** Testing fmisc.f ****'
$mpirun -np 4 ./fmisc -fname $FILENAME
# CheckOutput fmisc
CleanExe fmisc
#
OutTime
if [ $subset_only -eq 0 ] ; then
testfiles="$testfiles fmisc.out"
\rm -f fmisc.out
MakeExe fmisc
\rm -f $FILENAME*
echo '**** Testing fmisc.f ****'
$mpirun -np 4 ./fmisc -fname $FILENAME
# CheckOutput fmisc
CleanExe fmisc
#
OutTime
fi
testfiles="$testfiles fcoll_test.out"
\rm -f fcoll_test.out
MakeExe fcoll_test