GithubHelp home page GithubHelp logo

ior's Introduction

This project has moved to: https://github.com/hpc/ior

Building
--------

0. If "configure" is missing from the top level directory, you
   probably retrieved this code directly from the repository.
   Run "./bootstrap".

   If your versions of the autotools are not new enough to run
   this script, download and official tarball in which the
   configure script is already provided.

1. Run "./configure"

   See "./configure --help" for configuration options.

2. Run "make"

3. Optionally, run "make install".  The installation prefix
   can be changed as an option to the "configure" script.

ior's People

Contributors

derics avatar ianlee1521 avatar mkluge avatar morrone avatar roblatham00 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ior's Issues

"HDF5ERROR in aiori-HDF5.c (line 553): cannot create data set" error when benchmarking HDF5 in Blue Gene Q

Hello

I'm having the following error when benchmarking the HDF5 method on a Blue Gene Q: "HDF5ERROR in aiori-HDF5.c (line 553): cannot create data set."

I'm using zlib/1.2.7 and hdf5/1.8.10, and compiling for the compute nodes (not front nodes).

The output is in this attachment below:
ior-hdf5

The file creation parameters are in this attachment below:
backend-create-params

I use the latest git master branch version (v. 3.0.1)
The MPIIO and POSIX tests work fine.

Thank you for your support.

PS: As per contract with IBM, I was told by my line manager that we have to use to the version 2.10.3 of IOR... is this version fully compatible with Blue Gene Q? Any known issues?

HDF5 multi-dimensional datasets configuration

Currently IOR only supports 1-dimensional HDF5 datasets. It would be interesting to support for multi-dimensional datasets such as the one that Parallel-NetCDF has. We can give the user the ability to choose the dimensions of the datasets and ideally the decomposition.

I can start working on this addition and do a pull request once it is done and get reviews from the community. But before that, I would like to hear form other users about such an addition.

When IOR deletes an MPI-IO file, it might not delete it

ROMIO allows you to prefix a file with something to specify a file system driver and override ROMIO's automatic detection. We might do this if, for example, PVFS is available, but the kernel module is not installed (pvfs:/path/to/pvfs/testfile), or if we simply wish to avoid the overhead of stat (ufs:/regular/unix/file_system)

When IOR attempts to remove a file with such a prefix, it makes a call to the POSIX routine access(), but does not remove the prefix before doing so. access() does not return F_OK, naturally, and so does not attempt to remove the file. IOR doesn't complain about this, so we ended up thinking we were running tests of "create a new file" when actually we were "reusing existing file."

File locking when using hdf5, collective mode

Hello,
when i am using the hdf5 api, collective mode, the underlying system
tries to do file locking (ADIOI_Set_lock).
After doing some investigation, I think I have found the reason:

In aiori-HDF5.c, the line 295

memDataSpaceDims[0] = (hsize_t) param->transferSize;

invokes strided io in the romio ADIO layer (ad_write_str). The line should be

memDataSpaceDims[0] = (hsize_t) param->transferSize / sizeof(IOR_size_t);

After changing this line of code, the configuration works without file locking.

Not linking due to undefined reference to gpfs_fcntl

ior isn't building on my system due to some missing GPFS symbols. Here are the errors:

mpicc -g -O2 -o ior ior.o utilities.o parse_options.o aiori-POSIX.o aiori-MPIIO.o -lm
aiori-POSIX.o: In function gpfs_access_end': /u/mx/co/mrobbert/ior/src/aiori-POSIX.c:165: undefined reference togpfs_fcntl'
aiori-POSIX.o: In function gpfs_access_start': /u/mx/co/mrobbert/ior/src/aiori-POSIX.c:141: undefined reference togpfs_fcntl'
aiori-POSIX.o: In function gpfs_free_all_locks': /u/mx/co/mrobbert/ior/src/aiori-POSIX.c:118: undefined reference togpfs_fcntl'
collect2: ld returned 1 exit status

I was able to get it to link properly by adding -lgpfs to the link lines. I can try to work up a patch, but it looks like this would need to be changed in the Autoconf files and I don't have much experience with those.

test->filePerProc is ignored in MPIIO_GetFileSize

At line 433:
MPI_CHECK(MPI_File_open(testComm, testFileName, MPI_MODE_RDONLY, MPI_INFO_NULL, &fd), "cannot open file to get file size");
Always passes testComm to MPI_File_open regardless of value of test->filePerProc
When running in file per proc it breaks after initial file inflation.

Should be something like

IOR_offset_t MPIIO_GetFileSize(IOR_param_t * test, MPI_Comm testComm,
                               char *testFileName)
{
        IOR_offset_t aggFileSizeFromStat, tmpMin, tmpMax, tmpSum;
        MPI_File fd;
        MPI_Comm comm = testComm;

        if (test->filePerProc == TRUE)
                comm = MPI_COMM_SELF;

        MPI_CHECK(MPI_File_open(comm, testFileName, MPI_MODE_RDONLY,
                                MPI_INFO_NULL, &fd),
                  "cannot open file to get file size");
        MPI_CHECK(MPI_File_get_size(fd, (MPI_Offset *) & aggFileSizeFromStat),
                  "cannot get file size");

or maybe having the if below that re-arranged with opening file inside it.

Missing #include "utilities.h" in parse_options.c

Hi,

utilities.h needs to be included in parse_options.c as so that StringToBytes is forward declared. Otherwise the return value is treated as an int rather than IOR_size_t which causes errors when the block size is 2GB+.

Mark

no need for "less than 2 GiB check" in pnetcdf version of ior

From 3d9ca5d05af01b4c5bdb7e1216c6c49153bf1160 Mon Sep 17 00:00:00 2001
From: Robert Latham <[email protected]>
Date: Wed, 12 Sep 2012 16:28:24 -0500
Subject: [PATCH 2/2] archaic file size limitation

Parallel-NetCDF has not had a 2 GiB file size limitation for quite some time,
so we can remove this check.

---
 src/ior.c |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/src/ior.c b/src/ior.c
index bc73253..ea5d8a3 100644
--- a/src/ior.c
+++ b/src/ior.c
@@ -2270,10 +2270,6 @@ static void ValidTests(IOR_param_t * test)
             && (test->blockSize < sizeof(IOR_size_t)
                 || test->transferSize < sizeof(IOR_size_t)))
                 ERR("block/transfer size may not be smaller than IOR_size_t for NCMPI");
-        if ((strcmp(test->api, "NCMPI") == 0)
-            && ((test->numTasks * test->blockSize * test->segmentCount)
-                > (2 * (IOR_offset_t) GIBIBYTE)))
-                ERR("file size must be < 2GiB");
         if ((test->useFileView == TRUE)
             && (sizeof(MPI_Aint) < 8)   /* used for 64-bit datatypes */
             &&((test->numTasks * test->blockSize) >
-- 
1.6.3.2

next ior release?

Is there a time frame for a new IOR release? I find myself telling folks around here to use my fork but i'd rather see them use livermore's version.

Error in HDF5 benchmark on ubuntu 12.04: PMPI_Bcast(1438): Invalid datatype and PMPI_Bcast(1448): Null Datatype pointer

Hello

I installed the latest IOR (3.0.1) on ubuntu Ubuntu 12.04.2 LTS.

Im running tests on HDF5-1.8.4 (Parallel), with an MPI implementation of MPICH2 (1.4.1), and libhdf5-mpich-1.8.4.

I installed the following dependencies via apt-get: libhdf5-mpi-dev libhdf5-mpich-1.8.4 libhdf5-mpich-dev

For building:
./bootstrap
./configure --with-hdf5=yes

For running my tests:
(1) ./src/ior -a POSIX
(2) ./src/ior -a MPIIO
(3) ./src/ior -a HDF5

Results:
(1) and (2) finished successfully. The (3) terminates abruptly with either "PMPI_Bcast(1438): Invalid datatype" or "PMPI_Bcast(1448): Null Datatype pointer"

I'm sending you as a comment the output of the (3) with verbosity level 5.

Your help is appreciated.
Many thanks.

Error building IOR

Configure finds gpfs.h and gpfs_hcntl.h

checking gpfs.h usability... yes
checking gpfs.h presence... yes
checking for gpfs.h... yes
checking gpfs_fcntl.h usability... yes
checking gpfs_fcntl.h presence... yes
checking for gpfs_fcntl.h... yes

However 'make errors out -
mpicc -g -O2 -o ior ior.o utilities.o parse_options.o aiori-POSIX.o aiori-MPIIO.o -lm
aiori-POSIX.o: In function gpfs_free_all_locks':/home/xxxx/ior-master/src/aiori-POSIX.c:118: undefined reference togpfs_fcntl'
aiori-POSIX.o: In function gpfs_access_start': /home/xxxx/ior-master/src/aiori-POSIX.c:141: undefined reference togpfs_fcntl'
aiori-POSIX.o: In function gpfs_access_end': /home/xxxx/ior-master/src/aiori-POSIX.c:165: undefined reference togpfs_fcntl'
collect2: error: ld returned 1 exit status
make[1]: *** [ior] Error 1
make[1]: Leaving directory `/home/xxxx/ior-master/src'
make: *** [all] Error 2

Thought this issue was fixed #15, however i'm running in to same trouble.

ior hintfile is too sensitive to whitespace

consider an Ior hintfile with the line
IOR_HINT__MPI__cb_buffer_size = 1234

The spaces around '=' mean IOR tries to set the hint "cb_buffer_size ". It's easy to miss the extra space in the -H output, and you go crazy wondering why MPI is ignoring this hint.

Please apply the attached patch to make hintfile parsing not care so much about whitespace:

From e3475ee6e0b367d3f5fb7a43106a31e8d999f055 Mon Sep 17 00:00:00 2001
From: Rob Latham <[email protected]>
Date: Thu, 19 Dec 2013 13:01:35 -0600
Subject: [PATCH] more tolerant of whitepace in hintfile

If a hintfile contains e.g. cb_buffer_size = 1234, IOR will try to set
the hint "cb_buffer_size " (note trailing space), a hint that no MPI
implementation actually supports.

---
 src/utilities.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/utilities.c b/src/utilities.c
index 61b4f851..ce653611 100644
--- a/src/utilities.c
+++ b/src/utilities.c
@@ -162,8 +162,8 @@ void ExtractHint(char *settingVal, char *valueVal, char *hintString)
 {
         char *settingPtr, *valuePtr, *tmpPtr1, *tmpPtr2;

-        settingPtr = (char *)strtok(hintString, "=");
-        valuePtr = (char *)strtok(NULL, " \t\r\n");
+        settingPtr = (char *)strtok(hintString, " =");
+        valuePtr = (char *)strtok(NULL, " =\t\r\n");
         tmpPtr1 = settingPtr;
         tmpPtr2 = (char *)strstr(settingPtr, "IOR_HINT__MPI__");
         if (tmpPtr1 == tmpPtr2) {
-- 
1.8.3.2

POSIX on single-shared-file write tests

When running a single-shared-file write test using at least two tasks, running on different nodes, using the POSIX api, IOR fails with the following error:

ior ERROR: write() failed, errno 22, Invalid argument (aiori-POSIX.c:236)
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 1

Tests were conducted with IOR 3.0.1 and 2.10.3, using MPICH 3.2 and OrangeFS 2.9.3 as the backend file system. All compute and storage nodes run a CentOS 6.7 Linux, with kernel 2.6.32-573.22.1.el6.x86_64.

The parameters to reproduce the problem are:
mpiexec -n 2 -f mpihosts ior -wvvvv -t 1m -o /mnt/orangefs/testfile

ior unlinks files from /

ior unlinks files from the root file system (/)

This was noticed when compiling and running ior on a rhel/centos 7 system due to bin / sbin / lib / lib64 now being symbolic links.

Once ior runs on a rhel / centos 7 system the following error will occur when using executables requiring libraries within /lib / lib64:

i.e. when executing "ls"
-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

You will need to relink these directories.

This issue is also apparent on centos 6.6 as testfiles created within root are unlinked.

During a strace the unlink can be seen:

unlink("//i_am_a_test_file_in_root") = 0

i_am_a_test_file_in_root was created prior to running ior and is no longer there afterwards.

feature request: take hints from environment

The hint config file mechanism is nice but i'd like to see IOR go one step further and parse the environment for hints. Could keep the same format: e.g.

$  IOR_HINT__MPI__cb_nodes=5 ior -f ior.conf

fix IOR-hdf5 driver compile error

From ea21ae6039c4e4cd7f0edf4e6f81f50b1e29cf40 Mon Sep 17 00:00:00 2001
From: Robert Latham <[email protected]>
Date: Wed, 12 Sep 2012 10:45:50 -0500
Subject: [PATCH] apparent bitrot in ior HDF5 driver

fix some obvious compile errors for IOR hdf5 driver.

---
 src/aiori-HDF5.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/aiori-HDF5.c b/src/aiori-HDF5.c
index 734f6c3..2f222f0 100644
--- a/src/aiori-HDF5.c
+++ b/src/aiori-HDF5.c
@@ -459,7 +459,7 @@ static void HDF5_SetVersion(IOR_param_t * test)
 /*
  * Seek to offset in file using the HDF5 interface and set up hyperslab.
  */
-static static HDF5_offset_t SeekOffset(void *fd, IOR_offset_t offset,
+static IOR_offset_t SeekOffset(void *fd, IOR_offset_t offset,
                                             IOR_param_t * param)
 {
         IOR_offset_t segmentSize;
@@ -499,7 +499,7 @@ static static HDF5_offset_t SeekOffset(void *fd, IOR_offset_t offset,
 /*
  * Create HDF5 data set.
  */
-static static void SetupDataSet(void *fd, IOR_param_t * param)
+static void SetupDataSet(void *fd, IOR_param_t * param)
 {
         char dataSetName[MAX_STR];
         hid_t dataSetPropList;
-- 
1.6.3.2

cross-compiling IOR

Issue: undefined references to 'rpl_malloc' when cross compiling

Cause: AC_FUNC_MALLOC is based on a run-time test

When cross-compiling, the run-time test cannot run, so autoconf assumes non-gnu-libc behavior

(I found this link helpful: http://wiki.buici.com/xwiki/bin/view/Programing+C+and+C%2B%2B/Autoconf+and+RPL_MALLOC )

Platform: Blue Gene /P (but probably /L and maybe /Q?)

mpicc  -g -O2   -o ior ior.o utilities.o parse_options.o aiori-POSIX.o aiori-MPIIO.o     -lm
ior.o: In function `HumanReadable':
../../src/ior.c:917: undefined reference to `rpl_malloc'
ior.o: In function `CreateTest':
../../src/ior.c:583: undefined reference to `rpl_malloc'
ior.o: In function `AllocResults':
../../src/ior.c:532: undefined reference to `rpl_malloc'
../../src/ior.c:536: undefined reference to `rpl_malloc'
../../src/ior.c:541: undefined reference to `rpl_malloc'

I can work around this with an environment variable but if you could toss a 'rpl_malloc' in IOR to keep cross compilers happy, that would be great.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.