Re: [OMPI users] Questions on MPI I/O and ompi_info

2014-02-14 Thread Jeff Squyres (jsquyres)
On Feb 13, 2014, at 7:30 PM, Ralph Castain  wrote:

> Hmmm...well, a little digging says that we probably didn't do this as 
> thoroughly as we should have :-/

Actually, it works exactly as we designed it... but the reasons for doing so 
(and its effects) are a bit obscure.

OMPI imports the ROMIO implementation for MPI I/O functionality.  ROMIO 
actually includes 2 things: the MPI I/O API (i.e., the MPI_File_* functions, 
constants, and handles), and the back-end implementation of the MPI I/O API.  
In the bundled ROMIO, we only use the latter and disable the former (and let 
OMPI provide its own MPI_File_* functions, constants, and handles).

A long time ago, someone had the need to use a newer ROMIO than we bundled in 
OMPI.  So we created the "turn all MPI I/O functionality off" configure switch. 
 This not only disables ROMIO, it also disables OMPI's MPI I/O API functions, 
constants, and handles.  It therefore lets someone use an external ROMIO and 
let ROMIO provide the MPI_File_* functions, constants, and handles.

The other option is as you mentioned: just disabling ROMIO.  In the v1.6 
series, if you disable ROMIO and try to use an MPI_File_* function, it should 
fail at run-time. In the v1.7 series, it should transparently switch to use the 
OMPIO plugin (our implementation of the MPI I/O functionality).

See the attached PPT for how this looks pictorially.

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


ompi-mpi-io-functionality.pptx
Description: ompi-mpi-io-functionality.pptx


Re: [OMPI users] Questions on MPI I/O and ompi_info

2014-02-13 Thread Ralph Castain
Hmmm...well, a little digging says that we probably didn't do this as 
thoroughly as we should have :-/

Basically, the "MPI I/O Support" line is tied solely to the disable-mpi-io 
flag. In the 1.6 series, you only had one option for MPI I/O support, and that 
was romio. So if you disable romio, then you'll get a "failed" reply to those 
APIs.

What we should have done is automatically "disable-mpi-io" if no components 
were built - i.e., if you disable them all from building. In 1.7, that would 
mean disabling both romio and ompi-io. In 1.6, that would just mean disabling 
romio.

I'll pass it along to Jeff to see if it can be done - we can certainly change 
the flag, but maybe not for the 1.6 series


On Feb 13, 2014, at 12:01 PM, Blosch, Edwin L  wrote:

> Why does ompi_info –c say “MPI I/O Support: yes” even though I configured 
> using –disable-io-romio?  If ompi_info is going to tell me MPI I/O is 
> supported, then shouldn’t I expect my test program (attached) to work 
> correctly?  (it doesn’t).
>  
> I didn’t disable “built-in” mpi-io, only io-romio.
>  
>   --disable-mpi-ioDisable built-in support for MPI-2 I/O, likely
>   because an externally-provided MPI I/O package will
>   be used. Default is to use the internal component
>   system and its specially modified version of ROMIO
>   --disable-io-romio  Disable the ROMIO MPI-IO component
>  
> Thanks,
>  
> Ed
>  
> configure options used:
> + ./configure --prefix=/applocal/tools/mpi/intel/openmpi-1.6.4 --without-tm 
> --without-sge --without-lsf --without-psm --without-portals --without-elan 
> --without-slurm --without-loadleveler --with-mxm=/opt/mellanox/mxm 
> --with-mxm-lib=/opt/mellanox/mxm/lib --enable-mpirun-prefix-by-default 
> --enable-contrib-no-build=vt --disable-per-user-config-files 
> --disable-io-romio --enable-static 
> CXX=/applocal/intel/composer_xe_2013/bin/icpc 
> CC=/applocal/intel/composer_xe_2013/bin/icc 'CFLAGS=  -O2' 'CXXFLAGS=  -O2' 
> F77=/applocal/intel/composer_xe_2013/bin/ifort 'FFLAGS=-D_GNU_SOURCE 
> -traceback  -O2' FC=/applocal/intel/composer_xe_2013/bin/ifort 
> 'FCFLAGS=-D_GNU_SOURCE -traceback  -O2' 'LDFLAGS= -static-intel'
>  
> ompi_info –c output:
>Configured by: bloscel
>Configured on: Tue Jun 11 16:20:00 CDT 2013
>   Configure host: mgmt1
> Built by: bloscel
> Built on: Tue Jun 11 16:35:12 CDT 2013
>   Built host: mgmt1
>   C bindings: yes
> C++ bindings: yes
>   Fortran77 bindings: yes (all)
>   Fortran90 bindings: yes
> Fortran90 bindings size: small
>   C compiler: /applocal/intel/composer_xe_2013/bin/icc
>  C compiler absolute:
>   C compiler family name: INTEL
>   C compiler version: 1310.20130514
>  C char size: 1
>  C bool size: 1
> C short size: 2
>   C int size: 4
>  C long size: 8
> C float size: 4
>C double size: 8
>   C pointer size: 8
> C char align: 1
> C bool align: 1
>  C int align: 4
>C float align: 4
>   C double align: 8
> C++ compiler: /applocal/intel/composer_xe_2013/bin/icpc
>C++ compiler absolute: none
>   Fortran77 compiler: /applocal/intel/composer_xe_2013/bin/ifort
>   Fortran77 compiler abs:
>   Fortran90 compiler: /applocal/intel/composer_xe_2013/bin/ifort
>   Fortran90 compiler abs:
>Fort integer size: 4
>Fort logical size: 4
> Fort logical value true: -1
>   Fort have integer1: yes
>   Fort have integer2: yes
>   Fort have integer4: yes
>   Fort have integer8: yes
>  Fort have integer16: no
>  Fort have real4: yes
>  Fort have real8: yes
> Fort have real16: no
>   Fort have complex8: yes
>  Fort have complex16: yes
>  Fort have complex32: no
>   Fort integer1 size: 1
>   Fort integer2 size: 2
>   Fort integer4 size: 4
>   Fort integer8 size: 8
>  Fort integer16 size: -1
>   Fort real size: 4
>  Fort real4 size: 4
>  Fort real8 size: 8
> Fort real16 size: 16
>   Fort dbl prec size: 8
>   Fort cplx size: 8
>   Fort dbl cplx size: 16
>  Fort cplx8 size: 8
> Fort cplx16 size: 16
> Fort cplx32 size: 32
>   Fort integer align: 1
>  Fort integer1 align: 1
>  Fort integer2 align: 1
>  Fort integer4 align: 1
>  Fort integer8 align: 1
> Fort integer16 align: -1
>  Fort real align: 1
> Fort real4 align: 1
> Fort real8 align: 1
>Fort real16 align: 1
>  Fort dbl prec align: 1
>  Fort cplx align: 1
>  Fort dbl cplx align: 1
> Fort cplx8 align: 1
>Fort cplx16 align: 1
>Fort cplx32 align: 1
>  C profiling: yes
>