Give ior a more reasonable plugin system.
parent
87d8bc19fb
commit
ca832bb46e
50
configure.ac
50
configure.ac
|
@ -2,7 +2,7 @@
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
AC_PREREQ([2.67])
|
AC_PREREQ([2.67])
|
||||||
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
|
AC_INIT()
|
||||||
AC_CONFIG_AUX_DIR([config])
|
AC_CONFIG_AUX_DIR([config])
|
||||||
AC_CONFIG_SRCDIR([src/IOR.c])
|
AC_CONFIG_SRCDIR([src/IOR.c])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
@ -28,6 +28,54 @@ AC_TYPE_SIZE_T
|
||||||
AC_FUNC_MALLOC
|
AC_FUNC_MALLOC
|
||||||
AC_CHECK_FUNCS([getpagesize gettimeofday memset mkdir pow putenv realpath regcomp sqrt strcasecmp strchr strerror strncasecmp strstr uname])
|
AC_CHECK_FUNCS([getpagesize gettimeofday memset mkdir pow putenv realpath regcomp sqrt strcasecmp strchr strerror strncasecmp strstr uname])
|
||||||
|
|
||||||
|
# Check for system capabilities
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
# POSIX IO support
|
||||||
|
AC_ARG_WITH([posix],
|
||||||
|
[AS_HELP_STRING([--with-posix],
|
||||||
|
[support IO with POSIX backend @<:@default=yes@:>@])],
|
||||||
|
[],
|
||||||
|
[with_posix=yes])
|
||||||
|
AM_CONDITIONAL([USE_POSIX_AIORI], [test x$with_posix = xyes])
|
||||||
|
AM_COND_IF([USE_POSIX_AIORI],[
|
||||||
|
AC_DEFINE([USE_POSIX_AIORI], [], [Build POSIX backend AIORI])
|
||||||
|
])
|
||||||
|
|
||||||
|
# MPIIO support
|
||||||
|
AC_ARG_WITH([mpiio],
|
||||||
|
[AS_HELP_STRING([--with-mpiio],
|
||||||
|
[support IO with MPI-IO backend @<:@default=yes@:>@])],
|
||||||
|
[],
|
||||||
|
[with_mpiio=yes])
|
||||||
|
AM_CONDITIONAL([USE_MPIIO_AIORI], [test x$with_mpiio = xyes])
|
||||||
|
AM_COND_IF([USE_MPIIO_AIORI],[
|
||||||
|
AC_DEFINE([USE_MPIIO_AIORI], [], [Build MPIIO backend AIORI])
|
||||||
|
])
|
||||||
|
|
||||||
|
# HDF5 support
|
||||||
|
AC_ARG_WITH([hdf5],
|
||||||
|
[AS_HELP_STRING([--with-hdf5],
|
||||||
|
[support IO with HDF5 backend @<:@default=no@:>@])],
|
||||||
|
[],
|
||||||
|
[with_hdf5=no])
|
||||||
|
AM_CONDITIONAL([USE_HDF5_AIORI], [test x$with_hdf5 = xyes])
|
||||||
|
AM_COND_IF([USE_HDF5_AIORI],[
|
||||||
|
AC_DEFINE([USE_HDF5_AIORI], [], [Build HDF5 backend AIORI])
|
||||||
|
])
|
||||||
|
|
||||||
|
# NCMPI (Parallel netcdf) support
|
||||||
|
AC_ARG_WITH([ncmpi],
|
||||||
|
[AS_HELP_STRING([--with-ncmpi],
|
||||||
|
[support IO with NCMPI backend @<:@default=no@:>@])],
|
||||||
|
[],
|
||||||
|
[with_ncmpi=no])
|
||||||
|
AM_CONDITIONAL([USE_NCMPI_AIORI], [test x$with_ncmpi = xyes])
|
||||||
|
AM_COND_IF([USE_NCMPI_AIORI],[
|
||||||
|
AC_DEFINE([USE_NCMPI_AIORI], [], [Build NCMPI backend AIORI])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile
|
AC_CONFIG_FILES([Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/cbif/Makefile])
|
src/cbif/Makefile])
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
/******************************************************************************\
|
|
||||||
* *
|
|
||||||
* Copyright (c) 2003, The Regents of the University of California *
|
|
||||||
* See the file COPYRIGHT for a complete copyright notice and license. *
|
|
||||||
* *
|
|
||||||
********************************************************************************
|
|
||||||
*
|
|
||||||
* Abstract prototypes
|
|
||||||
*
|
|
||||||
\******************************************************************************/
|
|
||||||
|
|
||||||
#ifndef _IOR_AIORI_H
|
|
||||||
#define _IOR_AIORI_H
|
|
||||||
|
|
||||||
#include "IOR.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**************************** P R O T O T Y P E S *****************************/
|
|
||||||
|
|
||||||
/* abstract IOR interfaces used in aiori-*.c */
|
|
||||||
void * (*IOR_Create) (char *, IOR_param_t *);
|
|
||||||
void * (*IOR_Open) (char *, IOR_param_t *);
|
|
||||||
IOR_offset_t (*IOR_Xfer) (int, void *, IOR_size_t *,
|
|
||||||
IOR_offset_t, IOR_param_t *);
|
|
||||||
void (*IOR_Close) (void *, IOR_param_t *);
|
|
||||||
void (*IOR_Delete) (char *, IOR_param_t *);
|
|
||||||
void (*IOR_SetVersion) (IOR_param_t *);
|
|
||||||
void (*IOR_Fsync) (void *, IOR_param_t *);
|
|
||||||
IOR_offset_t (*IOR_GetFileSize) (IOR_param_t *, MPI_Comm, char *);
|
|
||||||
|
|
||||||
#endif /* not _IOR_AIORI_H */
|
|
135
src/IOR.c
135
src/IOR.c
|
@ -8,8 +8,6 @@
|
||||||
#include "aiori.h" /* IOR I/O interfaces */
|
#include "aiori.h" /* IOR I/O interfaces */
|
||||||
#include "IOR.h" /* IOR definitions
|
#include "IOR.h" /* IOR definitions
|
||||||
and prototypes */
|
and prototypes */
|
||||||
#include "IOR-aiori.h" /* IOR abstract
|
|
||||||
interfaces */
|
|
||||||
#include <ctype.h> /* tolower() */
|
#include <ctype.h> /* tolower() */
|
||||||
#include <errno.h> /* sys_errlist */
|
#include <errno.h> /* sys_errlist */
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@ -40,6 +38,37 @@ double wall_clock_delta = 0;
|
||||||
double wall_clock_deviation;
|
double wall_clock_deviation;
|
||||||
MPI_Comm testComm;
|
MPI_Comm testComm;
|
||||||
|
|
||||||
|
ior_aiori_t *backend;
|
||||||
|
|
||||||
|
#ifdef USE_POSIX_AIORI
|
||||||
|
extern ior_aiori_t posix_aiori;
|
||||||
|
#endif
|
||||||
|
#ifdef USE_MPIIO_AIORI
|
||||||
|
extern ior_aiori_t mpiio_aiori;
|
||||||
|
#endif
|
||||||
|
#ifdef USE_HDF5_AIORI
|
||||||
|
extern ior_aiori_t hdf5_aiori;
|
||||||
|
#endif
|
||||||
|
#ifdef USE_NCMPI_AIORI
|
||||||
|
extern ior_aiori_t ncmpi_aiori;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ior_aiori_t *available_aiori[] = {
|
||||||
|
#ifdef USE_POSIX_AIORI
|
||||||
|
&posix_aiori,
|
||||||
|
#endif
|
||||||
|
#ifdef USE_MPIIO_AIORI
|
||||||
|
&mpiio_aiori,
|
||||||
|
#endif
|
||||||
|
#ifdef USE_HDF5_AIORI
|
||||||
|
&hdf5_aiori,
|
||||||
|
#endif
|
||||||
|
#ifdef USE_NCMPI_AIORI
|
||||||
|
&ncmpi_aiori,
|
||||||
|
#endif
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
/********************************** M A I N ***********************************/
|
/********************************** M A I N ***********************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -109,51 +138,27 @@ main(int argc,
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/*
|
/*
|
||||||
* Bind abstract I/O function pointers to API-specific functions.
|
* Bind the global "backend" pointer to the requested backend AIORI's
|
||||||
|
* function table.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
AioriBind(char * api)
|
AioriBind(char * api)
|
||||||
{
|
{
|
||||||
if (strcmp(api, "POSIX") == 0) {
|
ior_aiori_t **tmp;
|
||||||
IOR_Create = IOR_Create_POSIX;
|
|
||||||
IOR_Open = IOR_Open_POSIX;
|
backend = NULL;
|
||||||
IOR_Xfer = IOR_Xfer_POSIX;
|
for (tmp = available_aiori; *tmp != NULL; tmp++) {
|
||||||
IOR_Close = IOR_Close_POSIX;
|
if (strcmp(api, (*tmp)->name) == 0) {
|
||||||
IOR_Delete = IOR_Delete_POSIX;
|
backend = *tmp;
|
||||||
IOR_SetVersion = IOR_SetVersion_POSIX;
|
break;
|
||||||
IOR_Fsync = IOR_Fsync_POSIX;
|
}
|
||||||
IOR_GetFileSize = IOR_GetFileSize_POSIX;
|
|
||||||
} else if (strcmp(api, "MPIIO") == 0) {
|
|
||||||
IOR_Create = IOR_Create_MPIIO;
|
|
||||||
IOR_Open = IOR_Open_MPIIO;
|
|
||||||
IOR_Xfer = IOR_Xfer_MPIIO;
|
|
||||||
IOR_Close = IOR_Close_MPIIO;
|
|
||||||
IOR_Delete = IOR_Delete_MPIIO;
|
|
||||||
IOR_SetVersion = IOR_SetVersion_MPIIO;
|
|
||||||
IOR_Fsync = IOR_Fsync_MPIIO;
|
|
||||||
IOR_GetFileSize = IOR_GetFileSize_MPIIO;
|
|
||||||
} else if (strcmp(api, "HDF5") == 0) {
|
|
||||||
IOR_Create = IOR_Create_HDF5;
|
|
||||||
IOR_Open = IOR_Open_HDF5;
|
|
||||||
IOR_Xfer = IOR_Xfer_HDF5;
|
|
||||||
IOR_Close = IOR_Close_HDF5;
|
|
||||||
IOR_Delete = IOR_Delete_HDF5;
|
|
||||||
IOR_SetVersion = IOR_SetVersion_HDF5;
|
|
||||||
IOR_Fsync = IOR_Fsync_HDF5;
|
|
||||||
IOR_GetFileSize = IOR_GetFileSize_HDF5;
|
|
||||||
} else if (strcmp(api, "NCMPI") == 0) {
|
|
||||||
IOR_Create = IOR_Create_NCMPI;
|
|
||||||
IOR_Open = IOR_Open_NCMPI;
|
|
||||||
IOR_Xfer = IOR_Xfer_NCMPI;
|
|
||||||
IOR_Close = IOR_Close_NCMPI;
|
|
||||||
IOR_Delete = IOR_Delete_NCMPI;
|
|
||||||
IOR_SetVersion = IOR_SetVersion_NCMPI;
|
|
||||||
IOR_Fsync = IOR_Fsync_NCMPI;
|
|
||||||
IOR_GetFileSize = IOR_GetFileSize_NCMPI;
|
|
||||||
} else {
|
|
||||||
WARN("unrecognized IO API");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (backend == NULL) {
|
||||||
|
ERR("unrecognized IO API");
|
||||||
|
}
|
||||||
|
|
||||||
} /* AioriBind() */
|
} /* AioriBind() */
|
||||||
|
|
||||||
|
|
||||||
|
@ -1130,7 +1135,7 @@ ReadCheck(void *fd,
|
||||||
IOR_offset_t segmentSize, segmentNum;
|
IOR_offset_t segmentSize, segmentNum;
|
||||||
|
|
||||||
memset(buffer, 'a', transfer);
|
memset(buffer, 'a', transfer);
|
||||||
*amtXferred = IOR_Xfer(access, fd, buffer, transfer, test);
|
*amtXferred = backend->xfer(access, fd, buffer, transfer, test);
|
||||||
tmpOffset = test->offset;
|
tmpOffset = test->offset;
|
||||||
if (test->filePerProc == FALSE) {
|
if (test->filePerProc == FALSE) {
|
||||||
/* offset changes for shared file, not for file-per-proc */
|
/* offset changes for shared file, not for file-per-proc */
|
||||||
|
@ -1159,10 +1164,10 @@ ReadCheck(void *fd,
|
||||||
#endif /* USE_UNDOC_OPT - corruptFile */
|
#endif /* USE_UNDOC_OPT - corruptFile */
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
if (test->filePerProc) {
|
if (test->filePerProc) {
|
||||||
*amtXferred = IOR_Xfer(access, test->fd_fppReadCheck,
|
*amtXferred = backend->xfer(access, test->fd_fppReadCheck,
|
||||||
checkBuffer, transfer, test);
|
checkBuffer, transfer, test);
|
||||||
} else {
|
} else {
|
||||||
*amtXferred = IOR_Xfer(access, fd, checkBuffer, transfer, test);
|
*amtXferred = backend->xfer(access, fd, checkBuffer, transfer, test);
|
||||||
}
|
}
|
||||||
test->offset = tmpOffset;
|
test->offset = tmpOffset;
|
||||||
if (*amtXferred != transfer)
|
if (*amtXferred != transfer)
|
||||||
|
@ -1312,7 +1317,7 @@ RemoveFile(char * testFileName,
|
||||||
}
|
}
|
||||||
if (access(testFileName, F_OK) == 0)
|
if (access(testFileName, F_OK) == 0)
|
||||||
{
|
{
|
||||||
IOR_Delete(testFileName, test);
|
backend->delete(testFileName, test);
|
||||||
}
|
}
|
||||||
if (test->reorderTasksRandom == TRUE)
|
if (test->reorderTasksRandom == TRUE)
|
||||||
{
|
{
|
||||||
|
@ -1321,7 +1326,7 @@ RemoveFile(char * testFileName,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((rank == 0) && (access(testFileName, F_OK) == 0)) {
|
if ((rank == 0) && (access(testFileName, F_OK) == 0)) {
|
||||||
IOR_Delete(testFileName, test);
|
backend->delete(testFileName, test);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* RemoveFile() */
|
} /* RemoveFile() */
|
||||||
|
@ -1941,7 +1946,7 @@ TestIoSys(IOR_param_t *test)
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
test->open = WRITE;
|
test->open = WRITE;
|
||||||
timer[0][rep] = GetTimeStamp();
|
timer[0][rep] = GetTimeStamp();
|
||||||
fd = IOR_Create(testFileName, test);
|
fd = backend->create(testFileName, test);
|
||||||
timer[1][rep] = GetTimeStamp();
|
timer[1][rep] = GetTimeStamp();
|
||||||
if (test->intraTestBarriers)
|
if (test->intraTestBarriers)
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
|
@ -1955,7 +1960,7 @@ TestIoSys(IOR_param_t *test)
|
||||||
if (test->intraTestBarriers)
|
if (test->intraTestBarriers)
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
timer[4][rep] = GetTimeStamp();
|
timer[4][rep] = GetTimeStamp();
|
||||||
IOR_Close(fd, test);
|
backend->close(fd, test);
|
||||||
|
|
||||||
#if USE_UNDOC_OPT /* includeDeleteTime */
|
#if USE_UNDOC_OPT /* includeDeleteTime */
|
||||||
if (test->includeDeleteTime) {
|
if (test->includeDeleteTime) {
|
||||||
|
@ -1981,7 +1986,7 @@ TestIoSys(IOR_param_t *test)
|
||||||
|
|
||||||
/* get the size of the file just written */
|
/* get the size of the file just written */
|
||||||
test->aggFileSizeFromStat[rep]
|
test->aggFileSizeFromStat[rep]
|
||||||
= IOR_GetFileSize(test, testComm, testFileName);
|
= backend->get_file_size(test, testComm, testFileName);
|
||||||
|
|
||||||
/* check if stat() of file doesn't equal expected file size,
|
/* check if stat() of file doesn't equal expected file size,
|
||||||
use actual amount of byte moved */
|
use actual amount of byte moved */
|
||||||
|
@ -2027,9 +2032,9 @@ TestIoSys(IOR_param_t *test)
|
||||||
}
|
}
|
||||||
GetTestFileName(testFileName, test);
|
GetTestFileName(testFileName, test);
|
||||||
test->open = WRITECHECK;
|
test->open = WRITECHECK;
|
||||||
fd = IOR_Open(testFileName, test);
|
fd = backend->open(testFileName, test);
|
||||||
dataMoved = WriteOrRead(test, fd, WRITECHECK);
|
dataMoved = WriteOrRead(test, fd, WRITECHECK);
|
||||||
IOR_Close(fd, test);
|
backend->close(fd, test);
|
||||||
rankOffset = 0;
|
rankOffset = 0;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
@ -2098,7 +2103,7 @@ TestIoSys(IOR_param_t *test)
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
test->open = READ;
|
test->open = READ;
|
||||||
timer[6][rep] = GetTimeStamp();
|
timer[6][rep] = GetTimeStamp();
|
||||||
fd = IOR_Open(testFileName, test);
|
fd = backend->open(testFileName, test);
|
||||||
if (rank == 0 && verbose >= VERBOSE_2) {
|
if (rank == 0 && verbose >= VERBOSE_2) {
|
||||||
fprintf(stdout, "[RANK %03d] open for reading file %s XXCEL\n", rank,testFileName);
|
fprintf(stdout, "[RANK %03d] open for reading file %s XXCEL\n", rank,testFileName);
|
||||||
}
|
}
|
||||||
|
@ -2115,12 +2120,12 @@ TestIoSys(IOR_param_t *test)
|
||||||
if (test->intraTestBarriers)
|
if (test->intraTestBarriers)
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
timer[10][rep] = GetTimeStamp();
|
timer[10][rep] = GetTimeStamp();
|
||||||
IOR_Close(fd, test);
|
backend->close(fd, test);
|
||||||
timer[11][rep] = GetTimeStamp();
|
timer[11][rep] = GetTimeStamp();
|
||||||
|
|
||||||
/* get the size of the file just read */
|
/* get the size of the file just read */
|
||||||
test->aggFileSizeFromStat[rep] = IOR_GetFileSize(test, testComm,
|
test->aggFileSizeFromStat[rep] = backend->get_file_size(
|
||||||
testFileName);
|
test, testComm, testFileName);
|
||||||
|
|
||||||
/* check if stat() of file doesn't equal expected file size,
|
/* check if stat() of file doesn't equal expected file size,
|
||||||
use actual amount of byte moved */
|
use actual amount of byte moved */
|
||||||
|
@ -2153,7 +2158,7 @@ TestIoSys(IOR_param_t *test)
|
||||||
GetTestFileName(testFileName, test);
|
GetTestFileName(testFileName, test);
|
||||||
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
MPI_CHECK(MPI_Barrier(testComm), "barrier error");
|
||||||
test->open = READCHECK;
|
test->open = READCHECK;
|
||||||
fd = IOR_Open(testFileName, test);
|
fd = backend->open(testFileName, test);
|
||||||
if (test->filePerProc) {
|
if (test->filePerProc) {
|
||||||
int tmpRankOffset;
|
int tmpRankOffset;
|
||||||
tmpRankOffset = rankOffset;
|
tmpRankOffset = rankOffset;
|
||||||
|
@ -2165,17 +2170,17 @@ TestIoSys(IOR_param_t *test)
|
||||||
GetTestFileName(test->testFileName_fppReadCheck, test);
|
GetTestFileName(test->testFileName_fppReadCheck, test);
|
||||||
rankOffset = tmpRankOffset;
|
rankOffset = tmpRankOffset;
|
||||||
test->fd_fppReadCheck =
|
test->fd_fppReadCheck =
|
||||||
IOR_Open(test->testFileName_fppReadCheck, test);
|
backend->open(test->testFileName_fppReadCheck, test);
|
||||||
}
|
}
|
||||||
dataMoved = WriteOrRead(test, fd, READCHECK);
|
dataMoved = WriteOrRead(test, fd, READCHECK);
|
||||||
if (test->filePerProc) {
|
if (test->filePerProc) {
|
||||||
IOR_Close(test->fd_fppReadCheck, test);
|
backend->close(test->fd_fppReadCheck, test);
|
||||||
test->fd_fppReadCheck = NULL;
|
test->fd_fppReadCheck = NULL;
|
||||||
}
|
}
|
||||||
IOR_Close(fd, test);
|
backend->close(fd, test);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* this final barrier may not be necessary as IOR_Close should
|
* this final barrier may not be necessary as backend->close should
|
||||||
* be a collective call -- but to make sure that the file has
|
* be a collective call -- but to make sure that the file has
|
||||||
* has not be removed by a task before another finishes writing,
|
* has not be removed by a task before another finishes writing,
|
||||||
* the MPI_Barrier() call has been included.
|
* the MPI_Barrier() call has been included.
|
||||||
|
@ -2256,7 +2261,7 @@ ValidTests(IOR_param_t * test)
|
||||||
/* get the version of the tests */
|
/* get the version of the tests */
|
||||||
|
|
||||||
AioriBind(test->api);
|
AioriBind(test->api);
|
||||||
IOR_SetVersion(test);
|
backend->set_version(test);
|
||||||
|
|
||||||
if (test->repetitions <= 0)
|
if (test->repetitions <= 0)
|
||||||
WARN_RESET("too few test repetitions", repetitions);
|
WARN_RESET("too few test repetitions", repetitions);
|
||||||
|
@ -2545,14 +2550,14 @@ WriteOrRead(IOR_param_t * test,
|
||||||
}
|
}
|
||||||
transfer = test->transferSize;
|
transfer = test->transferSize;
|
||||||
if (access == WRITE) {
|
if (access == WRITE) {
|
||||||
amtXferred = IOR_Xfer(access, fd, buffer, transfer, test);
|
amtXferred = backend->xfer(access, fd, buffer, transfer, test);
|
||||||
if (amtXferred != transfer) ERR("cannot write to file");
|
if (amtXferred != transfer) ERR("cannot write to file");
|
||||||
} else if (access == READ) {
|
} else if (access == READ) {
|
||||||
amtXferred = IOR_Xfer(access, fd, buffer, transfer, test);
|
amtXferred = backend->xfer(access, fd, buffer, transfer, test);
|
||||||
if (amtXferred != transfer) ERR("cannot read from file");
|
if (amtXferred != transfer) ERR("cannot read from file");
|
||||||
} else if (access == WRITECHECK) {
|
} else if (access == WRITECHECK) {
|
||||||
memset(checkBuffer, 'a', transfer);
|
memset(checkBuffer, 'a', transfer);
|
||||||
amtXferred = IOR_Xfer(access, fd, checkBuffer, transfer, test);
|
amtXferred = backend->xfer(access, fd, checkBuffer, transfer, test);
|
||||||
if (amtXferred != transfer)
|
if (amtXferred != transfer)
|
||||||
ERR("cannot read from file write check");
|
ERR("cannot read from file write check");
|
||||||
transferCount++;
|
transferCount++;
|
||||||
|
@ -2576,7 +2581,7 @@ WriteOrRead(IOR_param_t * test,
|
||||||
FreeBuffers(access, checkBuffer, readCheckBuffer, buffer, offsetArray);
|
FreeBuffers(access, checkBuffer, readCheckBuffer, buffer, offsetArray);
|
||||||
|
|
||||||
if (access == WRITE && test->fsync == TRUE) {
|
if (access == WRITE && test->fsync == TRUE) {
|
||||||
IOR_Fsync(fd, test); /*fsync after all accesses*/
|
backend->fsync(fd, test); /*fsync after all accesses*/
|
||||||
}
|
}
|
||||||
return(dataMoved);
|
return(dataMoved);
|
||||||
} /* WriteOrRead() */
|
} /* WriteOrRead() */
|
||||||
|
|
|
@ -8,10 +8,13 @@
|
||||||
#ifndef _IOR_H
|
#ifndef _IOR_H
|
||||||
#define _IOR_H
|
#define _IOR_H
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "aiori.h" /* abstract IOR interfaces */
|
#include "aiori.h" /* abstract IOR interfaces */
|
||||||
#include "iordef.h" /* IOR Definitions */
|
#include "iordef.h" /* IOR Definitions */
|
||||||
|
|
||||||
|
|
||||||
/*************************** D E F I N I T I O N S ****************************/
|
/*************************** D E F I N I T I O N S ****************************/
|
||||||
|
|
||||||
/* define the queuing structure for the test parameters */
|
/* define the queuing structure for the test parameters */
|
||||||
|
@ -46,8 +49,6 @@ void GetPlatformName (char *);
|
||||||
void GetTestFileName (char *, IOR_param_t *);
|
void GetTestFileName (char *, IOR_param_t *);
|
||||||
double GetTimeStamp (void);
|
double GetTimeStamp (void);
|
||||||
char * HumanReadable (IOR_offset_t, int);
|
char * HumanReadable (IOR_offset_t, int);
|
||||||
IOR_offset_t IOR_GetFileSize_POSIX (IOR_param_t *, MPI_Comm, char *);
|
|
||||||
IOR_offset_t IOR_GetFileSize_MPIIO (IOR_param_t *, MPI_Comm, char *);
|
|
||||||
char * LowerCase (char *);
|
char * LowerCase (char *);
|
||||||
void OutputToRoot (int, MPI_Comm, char *);
|
void OutputToRoot (int, MPI_Comm, char *);
|
||||||
void PPDouble (int, double, char *);
|
void PPDouble (int, double, char *);
|
||||||
|
|
|
@ -2,9 +2,21 @@ SUBDIRS = cbif
|
||||||
|
|
||||||
bin_PROGRAMS = ior
|
bin_PROGRAMS = ior
|
||||||
|
|
||||||
# N.B. "NCMPI" is an outdated name for pnetcdf (parallel netcdf)
|
ior_SOURCES = IOR.c utilities.c parse_options.c
|
||||||
ior_SOURCES = IOR.c utilities.c parse_options.c \
|
ior_SOURCES += IOR.h aiori.h iordef.h defaults.h
|
||||||
IOR.h aiori.h iordef.h defaults.h IOR-aiori.h \
|
|
||||||
aiori-POSIX.c aiori-noMPIIO.c aiori-noHDF5.c aiori-noNCMPI.c
|
|
||||||
ior_CFLAGS =
|
|
||||||
ior_LDADD = -lm
|
ior_LDADD = -lm
|
||||||
|
|
||||||
|
if USE_POSIX_AIORI
|
||||||
|
ior_SOURCES += aiori-POSIX.c
|
||||||
|
endif
|
||||||
|
if USE_MPIIO_AIORI
|
||||||
|
ior_SOURCES += aiori-MPIIO.c
|
||||||
|
endif
|
||||||
|
if USE_HDF5_AIORI
|
||||||
|
ior_SOURCES += aiori-HDF5.c
|
||||||
|
ior_LDADD += -lhdf5 -lz
|
||||||
|
endif
|
||||||
|
if USE_NCMPI_AIORI
|
||||||
|
ior_SOURCES += aiori-NCMPI.c
|
||||||
|
ior_LDADD += -lpnetcdf
|
||||||
|
endif
|
||||||
|
|
|
@ -74,16 +74,36 @@ void SetHints (MPI_Info *, char *);
|
||||||
void SetupDataSet_HDF5(void *, IOR_param_t *);
|
void SetupDataSet_HDF5(void *, IOR_param_t *);
|
||||||
void ShowHints (MPI_Info *);
|
void ShowHints (MPI_Info *);
|
||||||
|
|
||||||
|
void * IOR_Create_HDF5 (char *, IOR_param_t *);
|
||||||
|
void * IOR_Open_HDF5 (char *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_Xfer_HDF5 (int, void *, IOR_size_t *,
|
||||||
|
IOR_offset_t, IOR_param_t *);
|
||||||
|
void IOR_Close_HDF5 (void *, IOR_param_t *);
|
||||||
|
void IOR_Delete_HDF5 (char *, IOR_param_t *);
|
||||||
|
void IOR_SetVersion_HDF5 (IOR_param_t *);
|
||||||
|
void IOR_Fsync_HDF5 (void *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_GetFileSize_HDF5 (IOR_param_t *, MPI_Comm, char *);
|
||||||
|
|
||||||
/************************** D E C L A R A T I O N S ***************************/
|
/************************** D E C L A R A T I O N S ***************************/
|
||||||
|
|
||||||
|
ior_aiori_t hdf5_aiori = {
|
||||||
|
"HDF5",
|
||||||
|
IOR_Create_HDF5,
|
||||||
|
IOR_Open_HDF5,
|
||||||
|
IOR_Xfer_HDF5,
|
||||||
|
IOR_Close_HDF5,
|
||||||
|
IOR_Delete_HDF5,
|
||||||
|
IOR_SetVersion_HDF5,
|
||||||
|
IOR_Fsync_HDF5,
|
||||||
|
IOR_GetFileSize_HDF5
|
||||||
|
};
|
||||||
|
|
||||||
extern int errno, /* error number */
|
extern int errno, /* error number */
|
||||||
rank,
|
rank,
|
||||||
rankOffset,
|
rankOffset,
|
||||||
verbose; /* verbose output */
|
verbose; /* verbose output */
|
||||||
extern MPI_Comm testComm;
|
extern MPI_Comm testComm;
|
||||||
|
|
||||||
|
|
||||||
static hid_t xferPropList; /* xfer property list */
|
static hid_t xferPropList; /* xfer property list */
|
||||||
hid_t dataSet; /* data set id */
|
hid_t dataSet; /* data set id */
|
||||||
hid_t dataSpace; /* data space id */
|
hid_t dataSpace; /* data space id */
|
||||||
|
|
|
@ -28,6 +28,16 @@ static IOR_offset_t SeekOffset_MPIIO (MPI_File, IOR_offset_t,
|
||||||
void SetHints (MPI_Info *, char *);
|
void SetHints (MPI_Info *, char *);
|
||||||
void ShowHints (MPI_Info *);
|
void ShowHints (MPI_Info *);
|
||||||
|
|
||||||
|
void * IOR_Create_MPIIO (char *, IOR_param_t *);
|
||||||
|
void * IOR_Open_MPIIO (char *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_Xfer_MPIIO (int, void *, IOR_size_t *,
|
||||||
|
IOR_offset_t, IOR_param_t *);
|
||||||
|
void IOR_Close_MPIIO (void *, IOR_param_t *);
|
||||||
|
void IOR_Delete_MPIIO (char *, IOR_param_t *);
|
||||||
|
void IOR_SetVersion_MPIIO (IOR_param_t *);
|
||||||
|
void IOR_Fsync_MPIIO (void *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_GetFileSize_MPIIO (IOR_param_t *, MPI_Comm, char *);
|
||||||
|
|
||||||
/************************** D E C L A R A T I O N S ***************************/
|
/************************** D E C L A R A T I O N S ***************************/
|
||||||
|
|
||||||
extern int errno;
|
extern int errno;
|
||||||
|
@ -36,6 +46,18 @@ extern int rankOffset;
|
||||||
extern int verbose;
|
extern int verbose;
|
||||||
extern MPI_Comm testComm;
|
extern MPI_Comm testComm;
|
||||||
|
|
||||||
|
ior_aiori_t mpiio_aiori = {
|
||||||
|
"MPIIO",
|
||||||
|
IOR_Create_MPIIO,
|
||||||
|
IOR_Open_MPIIO,
|
||||||
|
IOR_Xfer_MPIIO,
|
||||||
|
IOR_Close_MPIIO,
|
||||||
|
IOR_Delete_MPIIO,
|
||||||
|
IOR_SetVersion_MPIIO,
|
||||||
|
IOR_Fsync_MPIIO,
|
||||||
|
IOR_GetFileSize_MPIIO
|
||||||
|
};
|
||||||
|
|
||||||
/***************************** F U N C T I O N S ******************************/
|
/***************************** F U N C T I O N S ******************************/
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
|
@ -42,8 +42,30 @@ int GetFileMode(IOR_param_t *);
|
||||||
void SetHints (MPI_Info *, char *);
|
void SetHints (MPI_Info *, char *);
|
||||||
void ShowHints (MPI_Info *);
|
void ShowHints (MPI_Info *);
|
||||||
|
|
||||||
|
void * IOR_Create_NCMPI (char *, IOR_param_t *);
|
||||||
|
void * IOR_Open_NCMPI (char *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_Xfer_NCMPI (int, void *, IOR_size_t *,
|
||||||
|
IOR_offset_t, IOR_param_t *);
|
||||||
|
void IOR_Close_NCMPI (void *, IOR_param_t *);
|
||||||
|
void IOR_Delete_NCMPI (char *, IOR_param_t *);
|
||||||
|
void IOR_SetVersion_NCMPI (IOR_param_t *);
|
||||||
|
void IOR_Fsync_NCMPI (void *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_GetFileSize_NCMPI (IOR_param_t *, MPI_Comm, char *);
|
||||||
|
|
||||||
/************************** D E C L A R A T I O N S ***************************/
|
/************************** D E C L A R A T I O N S ***************************/
|
||||||
|
|
||||||
|
ior_aiori_t ncmpi_aiori = {
|
||||||
|
"NCMPI",
|
||||||
|
IOR_Create_NCMPI,
|
||||||
|
IOR_Open_NCMPI,
|
||||||
|
IOR_Xfer_NCMPI,
|
||||||
|
IOR_Close_NCMPI,
|
||||||
|
IOR_Delete_NCMPI,
|
||||||
|
IOR_SetVersion_NCMPI,
|
||||||
|
IOR_Fsync_NCMPI,
|
||||||
|
IOR_GetFileSize_NCMPI
|
||||||
|
};
|
||||||
|
|
||||||
extern int errno, /* error number */
|
extern int errno, /* error number */
|
||||||
numTasksWorld,
|
numTasksWorld,
|
||||||
rank,
|
rank,
|
||||||
|
|
|
@ -39,10 +39,30 @@
|
||||||
|
|
||||||
|
|
||||||
/**************************** P R O T O T Y P E S *****************************/
|
/**************************** P R O T O T Y P E S *****************************/
|
||||||
|
void * IOR_Create_POSIX (char *, IOR_param_t *);
|
||||||
|
void * IOR_Open_POSIX (char *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_Xfer_POSIX (int, void *, IOR_size_t *,
|
||||||
|
IOR_offset_t, IOR_param_t *);
|
||||||
|
void IOR_Close_POSIX (void *, IOR_param_t *);
|
||||||
|
void IOR_Delete_POSIX (char *, IOR_param_t *);
|
||||||
|
void IOR_SetVersion_POSIX (IOR_param_t *);
|
||||||
|
void IOR_Fsync_POSIX (void *, IOR_param_t *);
|
||||||
|
IOR_offset_t IOR_GetFileSize_POSIX (IOR_param_t *, MPI_Comm, char *);
|
||||||
|
|
||||||
/************************** D E C L A R A T I O N S ***************************/
|
/************************** D E C L A R A T I O N S ***************************/
|
||||||
|
|
||||||
|
ior_aiori_t posix_aiori = {
|
||||||
|
"POSIX",
|
||||||
|
IOR_Create_POSIX,
|
||||||
|
IOR_Open_POSIX,
|
||||||
|
IOR_Xfer_POSIX,
|
||||||
|
IOR_Close_POSIX,
|
||||||
|
IOR_Delete_POSIX,
|
||||||
|
IOR_SetVersion_POSIX,
|
||||||
|
IOR_Fsync_POSIX,
|
||||||
|
IOR_GetFileSize_POSIX
|
||||||
|
};
|
||||||
|
|
||||||
extern int errno;
|
extern int errno;
|
||||||
extern int rank;
|
extern int rank;
|
||||||
extern int rankOffset;
|
extern int rankOffset;
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
/******************************************************************************\
|
|
||||||
* *
|
|
||||||
* Copyright (c) 2003, The Regents of the University of California *
|
|
||||||
* See the file COPYRIGHT for a complete copyright notice and license. *
|
|
||||||
* *
|
|
||||||
********************************************************************************
|
|
||||||
*
|
|
||||||
* CVS info:
|
|
||||||
* $RCSfile: aiori-noHDF5.c,v $
|
|
||||||
* $Revision: 1.2 $
|
|
||||||
* $Date: 2008/12/02 17:12:14 $
|
|
||||||
* $Author: rklundt $
|
|
||||||
*
|
|
||||||
* Purpose:
|
|
||||||
* Empty HDF5 functions for when compiling without HDF5 support.
|
|
||||||
*
|
|
||||||
\******************************************************************************/
|
|
||||||
|
|
||||||
#include "aiori.h"
|
|
||||||
|
|
||||||
void *
|
|
||||||
IOR_Create_HDF5(char * testFileName,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
|
||||||
IOR_Open_HDF5(char * testFileName,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
IOR_offset_t
|
|
||||||
IOR_Xfer_HDF5(int access,
|
|
||||||
void * fd,
|
|
||||||
IOR_size_t * buffer,
|
|
||||||
IOR_offset_t length,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Fsync_HDF5(void * fd, IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Close_HDF5(void * fd,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Delete_HDF5(char * testFileName, IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_SetVersion_HDF5(IOR_param_t *test)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
}
|
|
||||||
|
|
||||||
IOR_offset_t
|
|
||||||
IOR_GetFileSize_HDF5(IOR_param_t * test,
|
|
||||||
MPI_Comm testComm,
|
|
||||||
char * testFileName)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with HDF5 support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,81 +0,0 @@
|
||||||
/******************************************************************************\
|
|
||||||
* *
|
|
||||||
* Copyright (c) 2003, The Regents of the University of California *
|
|
||||||
* See the file COPYRIGHT for a complete copyright notice and license. *
|
|
||||||
* *
|
|
||||||
********************************************************************************
|
|
||||||
*
|
|
||||||
* CVS info:
|
|
||||||
* $RCSfile: aiori-noMPIIO.c,v $
|
|
||||||
* $Revision: 1.1.1.1 $
|
|
||||||
* $Date: 2007/10/15 23:36:54 $
|
|
||||||
* $Author: rklundt $
|
|
||||||
*
|
|
||||||
* Purpose:
|
|
||||||
* Empty MPIIO functions for when compiling without MPIIO support.
|
|
||||||
*
|
|
||||||
\******************************************************************************/
|
|
||||||
|
|
||||||
#include "aiori.h"
|
|
||||||
|
|
||||||
void *
|
|
||||||
IOR_Create_MPIIO(char * testFileName,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
|
||||||
IOR_Open_MPIIO(char * testFileName,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
IOR_offset_t
|
|
||||||
IOR_Xfer_MPIIO(int access,
|
|
||||||
void * fd,
|
|
||||||
IOR_size_t * buffer,
|
|
||||||
IOR_offset_t length,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Fsync_MPIIO(void * fd, IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Close_MPIIO(void * fd,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Delete_MPIIO(char * testFileName, IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_SetVersion_MPIIO(IOR_param_t *test)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
}
|
|
||||||
|
|
||||||
IOR_offset_t
|
|
||||||
IOR_GetFileSize_MPIIO(IOR_param_t * test,
|
|
||||||
MPI_Comm testComm,
|
|
||||||
char * testFileName)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with MPIIO support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,81 +0,0 @@
|
||||||
/******************************************************************************\
|
|
||||||
* *
|
|
||||||
* Copyright (c) 2003, The Regents of the University of California *
|
|
||||||
* See the file COPYRIGHT for a complete copyright notice and license. *
|
|
||||||
* *
|
|
||||||
********************************************************************************
|
|
||||||
*
|
|
||||||
* CVS info:
|
|
||||||
* $RCSfile: aiori-noNCMPI.c,v $
|
|
||||||
* $Revision: 1.2 $
|
|
||||||
* $Date: 2008/12/02 17:12:14 $
|
|
||||||
* $Author: rklundt $
|
|
||||||
*
|
|
||||||
* Purpose:
|
|
||||||
* Empty NCMPI functions for when compiling without NCMPI support.
|
|
||||||
*
|
|
||||||
\******************************************************************************/
|
|
||||||
|
|
||||||
#include "aiori.h"
|
|
||||||
|
|
||||||
void *
|
|
||||||
IOR_Create_NCMPI(char * testFileName,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
|
||||||
IOR_Open_NCMPI(char * testFileName,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
IOR_offset_t
|
|
||||||
IOR_Xfer_NCMPI(int access,
|
|
||||||
void * fd,
|
|
||||||
IOR_size_t * buffer,
|
|
||||||
IOR_offset_t length,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Fsync_NCMPI(void * fd, IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Close_NCMPI(void * fd,
|
|
||||||
IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_Delete_NCMPI(char * testFileName, IOR_param_t * param)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IOR_SetVersion_NCMPI(IOR_param_t *test)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
}
|
|
||||||
|
|
||||||
IOR_offset_t
|
|
||||||
IOR_GetFileSize_NCMPI(IOR_param_t * test,
|
|
||||||
MPI_Comm testComm,
|
|
||||||
char * testFileName)
|
|
||||||
{
|
|
||||||
ERR("This copy of IOR was not compiled with NCMPI support");
|
|
||||||
return 0;
|
|
||||||
}
|
|
56
src/aiori.h
56
src/aiori.h
|
@ -168,49 +168,17 @@ typedef struct
|
||||||
|
|
||||||
/**************************** P R O T O T Y P E S *****************************/
|
/**************************** P R O T O T Y P E S *****************************/
|
||||||
|
|
||||||
/* functions for aiori-*.c */
|
typedef struct ior_aiori {
|
||||||
/* POSIX-specific functions */
|
char *name;
|
||||||
void * IOR_Create_POSIX (char *, IOR_param_t *);
|
void *(*create)(char *, IOR_param_t *);
|
||||||
void * IOR_Open_POSIX (char *, IOR_param_t *);
|
void *(*open)(char *, IOR_param_t *);
|
||||||
IOR_offset_t IOR_Xfer_POSIX (int, void *, IOR_size_t *,
|
IOR_offset_t (*xfer)(int, void *, IOR_size_t *,
|
||||||
IOR_offset_t, IOR_param_t *);
|
IOR_offset_t, IOR_param_t *);
|
||||||
void IOR_Close_POSIX (void *, IOR_param_t *);
|
void (*close)(void *, IOR_param_t *);
|
||||||
void IOR_Delete_POSIX (char *, IOR_param_t *);
|
void (*delete)(char *, IOR_param_t *);
|
||||||
void IOR_SetVersion_POSIX (IOR_param_t *);
|
void (*set_version)(IOR_param_t *);
|
||||||
void IOR_Fsync_POSIX (void *, IOR_param_t *);
|
void (*fsync)(void *, IOR_param_t *);
|
||||||
IOR_offset_t IOR_GetFileSize_POSIX (IOR_param_t *, MPI_Comm, char *);
|
IOR_offset_t (*get_file_size)(IOR_param_t *, MPI_Comm, char *);
|
||||||
|
} ior_aiori_t;
|
||||||
/* MPIIO-specific functions */
|
|
||||||
void * IOR_Create_MPIIO (char *, IOR_param_t *);
|
|
||||||
void * IOR_Open_MPIIO (char *, IOR_param_t *);
|
|
||||||
IOR_offset_t IOR_Xfer_MPIIO (int, void *, IOR_size_t *,
|
|
||||||
IOR_offset_t, IOR_param_t *);
|
|
||||||
void IOR_Close_MPIIO (void *, IOR_param_t *);
|
|
||||||
void IOR_Delete_MPIIO (char *, IOR_param_t *);
|
|
||||||
void IOR_SetVersion_MPIIO (IOR_param_t *);
|
|
||||||
void IOR_Fsync_MPIIO (void *, IOR_param_t *);
|
|
||||||
IOR_offset_t IOR_GetFileSize_MPIIO (IOR_param_t *, MPI_Comm, char *);
|
|
||||||
|
|
||||||
/* HDF5-specific functions */
|
|
||||||
void * IOR_Create_HDF5 (char *, IOR_param_t *);
|
|
||||||
void * IOR_Open_HDF5 (char *, IOR_param_t *);
|
|
||||||
IOR_offset_t IOR_Xfer_HDF5 (int, void *, IOR_size_t *,
|
|
||||||
IOR_offset_t, IOR_param_t *);
|
|
||||||
void IOR_Close_HDF5 (void *, IOR_param_t *);
|
|
||||||
void IOR_Delete_HDF5 (char *, IOR_param_t *);
|
|
||||||
void IOR_SetVersion_HDF5 (IOR_param_t *);
|
|
||||||
void IOR_Fsync_HDF5 (void *, IOR_param_t *);
|
|
||||||
IOR_offset_t IOR_GetFileSize_HDF5 (IOR_param_t *, MPI_Comm, char *);
|
|
||||||
|
|
||||||
/* NCMPI-specific functions */
|
|
||||||
void * IOR_Create_NCMPI (char *, IOR_param_t *);
|
|
||||||
void * IOR_Open_NCMPI (char *, IOR_param_t *);
|
|
||||||
IOR_offset_t IOR_Xfer_NCMPI (int, void *, IOR_size_t *,
|
|
||||||
IOR_offset_t, IOR_param_t *);
|
|
||||||
void IOR_Close_NCMPI (void *, IOR_param_t *);
|
|
||||||
void IOR_Delete_NCMPI (char *, IOR_param_t *);
|
|
||||||
void IOR_SetVersion_NCMPI (IOR_param_t *);
|
|
||||||
void IOR_Fsync_NCMPI (void *, IOR_param_t *);
|
|
||||||
IOR_offset_t IOR_GetFileSize_NCMPI (IOR_param_t *, MPI_Comm, char *);
|
|
||||||
|
|
||||||
#endif /* not _AIORI_H */
|
#endif /* not _AIORI_H */
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
#/*****************************************************************************\
|
|
||||||
#* *
|
|
||||||
#* Copyright (c) 2003, The Regents of the University of California *
|
|
||||||
#* See the file COPYRIGHT for a complete copyright notice and license. *
|
|
||||||
#* *
|
|
||||||
#*******************************************************************************
|
|
||||||
#*
|
|
||||||
#* CVS info:
|
|
||||||
#* $RCSfile: Makefile,v $
|
|
||||||
#* $Revision: 1.1.1.1 $
|
|
||||||
#* $Date: 2007/10/15 23:36:54 $
|
|
||||||
#* $Author: rklundt $
|
|
||||||
#*
|
|
||||||
#* Purpose:
|
|
||||||
#* Make IOR executable.
|
|
||||||
#*
|
|
||||||
#* gmake posix -- IOR with only POSIX interfaces
|
|
||||||
#* gmake mpiio -- IOR with only POSIX and MPIIO interfaces
|
|
||||||
#* gmake hdf5 -- IOR with POSIX, MPIIO, and HDF5 interfaces
|
|
||||||
#* gmake ncmpi -- IOR with POSIX, MPIIO, and NCMPI interfaces
|
|
||||||
#* gmake all -- IOR with POSIX, MPIIO, HDF5, and NCMPI interfaces
|
|
||||||
#* gmake clean -- remove executable and object files
|
|
||||||
#*
|
|
||||||
#\*****************************************************************************/
|
|
||||||
|
|
||||||
include Makefile.config
|
|
||||||
|
|
||||||
# Requires GNU Make
|
|
||||||
OS=$(shell uname)
|
|
||||||
|
|
||||||
SRCS = IOR.c utilities.c parse_options.c
|
|
||||||
OBJS = $(SRCS:.c=.o)
|
|
||||||
|
|
||||||
posix: $(OBJS) aiori-POSIX.o aiori-noMPIIO.o aiori-noHDF5.o aiori-noNCMPI.o
|
|
||||||
$(CC) -o IOR $(OBJS) \
|
|
||||||
aiori-POSIX.o aiori-noMPIIO.o aiori-noHDF5.o aiori-noNCMPI.o \
|
|
||||||
$(LDFLAGS)
|
|
||||||
|
|
||||||
mpiio: $(OBJS) aiori-POSIX.o aiori-MPIIO.o aiori-noHDF5.o aiori-noNCMPI.o
|
|
||||||
$(CC) -o IOR $(OBJS) \
|
|
||||||
aiori-POSIX.o aiori-MPIIO.o aiori-noHDF5.o aiori-noNCMPI.o \
|
|
||||||
$(LDFLAGS)
|
|
||||||
|
|
||||||
hdf5: $(OBJS) aiori-POSIX.o aiori-MPIIO.o aiori-HDF5.o aiori-noNCMPI.o
|
|
||||||
$(CC) $(LDFLAGS_HDF5) -o IOR $(OBJS) \
|
|
||||||
aiori-POSIX.o aiori-MPIIO.o aiori-HDF5.o aiori-noNCMPI.o
|
|
||||||
|
|
||||||
ncmpi: $(OBJS) aiori-POSIX.o aiori-MPIIO.o aiori-noHDF5.o aiori-NCMPI.o
|
|
||||||
$(CC) $(LDFLAGS_NCMPI) -o IOR $(OBJS) \
|
|
||||||
aiori-POSIX.o aiori-MPIIO.o aiori-noHDF5.o aiori-NCMPI.o
|
|
||||||
|
|
||||||
all: $(OBJS) aiori-POSIX.o aiori-MPIIO.o aiori-HDF5.o aiori-NCMPI.o
|
|
||||||
$(CC) $(LDFLAGS_HDF5) $(LDFLAGS_NCMPI) -o IOR $(OBJS) \
|
|
||||||
aiori-POSIX.o aiori-MPIIO.o aiori-HDF5.o aiori-NCMPI.o
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -f *.o IOR
|
|
||||||
|
|
||||||
aiori-MPIIO.o: aiori-MPIIO.c
|
|
||||||
$(CC) -c aiori-MPIIO.c
|
|
||||||
|
|
||||||
aiori-HDF5.o: aiori-HDF5.c
|
|
||||||
$(CC) $(CCFLAGS_HDF5) -c aiori-HDF5.c
|
|
||||||
|
|
||||||
aiori-NCMPI.o: aiori-NCMPI.c
|
|
||||||
$(CC) $(CCFLAGS_NCMPI) -c aiori-NCMPI.c
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$(CC) $(CCFLAGS) -c $<
|
|
|
@ -1,90 +0,0 @@
|
||||||
#/*****************************************************************************\
|
|
||||||
#* *
|
|
||||||
#* Copyright (c) 2003, The Regents of the University of California *
|
|
||||||
#* See the file COPYRIGHT for a complete copyright notice and license. *
|
|
||||||
#* *
|
|
||||||
#*******************************************************************************
|
|
||||||
#*
|
|
||||||
#* CVS info:
|
|
||||||
#* $RCSfile: Makefile.config,v $
|
|
||||||
#* $Revision: 1.3 $
|
|
||||||
#* $Date: 2008/12/02 17:12:14 $
|
|
||||||
#* $Author: rklundt $
|
|
||||||
#*
|
|
||||||
#* Purpose:
|
|
||||||
#* Maintain compilation settings for various platforms.
|
|
||||||
#*
|
|
||||||
#\*****************************************************************************/
|
|
||||||
|
|
||||||
################
|
|
||||||
# AIX SETTINGS #
|
|
||||||
################
|
|
||||||
CC.AIX = mpcc -q64
|
|
||||||
CCFLAGS.AIX = -g -D_LARGE_FILES
|
|
||||||
# -qwarn64 -qinfo=all -D_NO_MPI_TIMER
|
|
||||||
LDFLAGS.AIX = #-bmaxdata:0x80000000
|
|
||||||
HDF5_DIR.AIX = /usr/local/tools/hdf5/hdf5-1.6.5/parallel
|
|
||||||
#NCMPI_DIR.AIX = /usr/local/netcdf/parallel-netcdf-0.9.4_64bit
|
|
||||||
NCMPI_DIR.AIX = /g/g0/$(shell whoami)/LIBS/INSTALLS/parallel-netcdf-1.0.2pre2/aix_5_64_fed
|
|
||||||
|
|
||||||
###################
|
|
||||||
# IRIX64 SETTINGS #
|
|
||||||
###################
|
|
||||||
CC.IRIX64 = /usr/local/mpich-1.2.2/irix-n32/bin/mpicc
|
|
||||||
CCFLAGS.IRIX64 = -g
|
|
||||||
# -D_NO_MPI_TIMER
|
|
||||||
LDFLAGS.IRIX64 =
|
|
||||||
HDF5_DIR.IRIX64 = /usr/local/tools/hdf5/hdf5-1.6.0/parallel
|
|
||||||
NCMPI_DIR.IRIX64 =
|
|
||||||
|
|
||||||
|
|
||||||
##################
|
|
||||||
# LINUX SETTINGS #
|
|
||||||
##################
|
|
||||||
CC.Linux = mpicc
|
|
||||||
CCFLAGS.Linux = -g -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 #-D_MANUALLY_SET_LUSTRE_STRIPING -Wall -pedantic -D_NO_MPI_TIMER
|
|
||||||
#LDFLAGS.Linux = -L/usr/lib/mpi/mpi_gnu/lib -lmpio
|
|
||||||
#LDFLAGS.Linux = -L/usr/lib/mpi/mpi_intel/lib -lmpio
|
|
||||||
LDFLAGS.Linux =
|
|
||||||
#HDF5_DIR.Linux = /usr/local/tools/hdf5/hdf5-1.6.5/parallel
|
|
||||||
#NCMPI_DIR.Linux = /g/g0/$(shell whoami)/LIBS/INSTALLS/parallel-netcdf-1.0.2pre2/chaos_3_x86_elan3
|
|
||||||
|
|
||||||
|
|
||||||
##################
|
|
||||||
# SunOS SETTINGS #
|
|
||||||
##################
|
|
||||||
CC.SunOS = mpicc
|
|
||||||
CCFLAGS.SunOS = -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
|
|
||||||
LDFLAGS.SunOS = -Llib -lmpich
|
|
||||||
HDF5_DIR.SunOS =
|
|
||||||
NCMPI_DIR.SunOS =
|
|
||||||
|
|
||||||
|
|
||||||
################
|
|
||||||
# BGL SETTINGS #
|
|
||||||
################
|
|
||||||
CC.BGL = mpgcc
|
|
||||||
CCFLAGS.BGL = -g -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
|
||||||
LDFLAGS.BGL =
|
|
||||||
HDF5_DIR.BGL =
|
|
||||||
NCMPI_DIR.BGL =
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# OSF1 (TRU64) SETTINGS #
|
|
||||||
#########################
|
|
||||||
CC.OSF1 = /usr/local/new_mpi/bin/mpicc
|
|
||||||
CCFLAGS.OSF1 = -g -ieee
|
|
||||||
LDFLAGS.OSF1 =
|
|
||||||
HDF5_DIR.OSF1 = /usr/local/hdf5/hdf5-1.4.5/mpich-1.2.4shm/prod/bit64/shared
|
|
||||||
NCMPI_DIR.OSF1 =
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
CC = $(CC.$(OS))
|
|
||||||
CCFLAGS = $(CCFLAGS.$(OS))
|
|
||||||
LDFLAGS = $(LDFLAGS.$(OS)) -lm
|
|
||||||
CCFLAGS_HDF5 = $(CCFLAGS.$(OS)) -I$(HDF5_DIR.$(OS))/include
|
|
||||||
LDFLAGS_HDF5 = $(LDFLAGS.$(OS)) -L$(HDF5_DIR.$(OS))/lib -lhdf5 -lm -lz
|
|
||||||
CCFLAGS_NCMPI = $(CCFLAGS.$(OS)) -I$(NCMPI_DIR.$(OS))/include
|
|
||||||
LDFLAGS_NCMPI = $(LDFLAGS.$(OS)) -L$(NCMPI_DIR.$(OS))/lib -lpnetcdf -lm
|
|
Loading…
Reference in New Issue