File mvapich2.spec of Package mvapich2

#
# spec file for package mvapich2 (Version 1.2p1)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# norootforbuild


Name:           mvapich2
Summary:        OSU MVAPICH2 MPI package
Version:        1.2p1
Release:        2
License:        BSD 3-Clause
Group:          Development/Libraries/Parallel
Source0:        %{name}-%{version}.tar.bz2
Patch0:         mvapich2-1.2-build_fixes.patch
Url:            http://mvapich.cse.ohio-state.edu/overview/mvapich2/
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  gcc-c++ gcc-fortran libibcommon-devel libibumad-devel libibverbs-devel librdmacm-devel mpi-selector python-devel xorg-x11-devel
Requires:       mpi-selector
ExcludeArch:    s390 s390x
# bug437293
%ifarch ppc64
Obsoletes:      mvapich2-64bit
%endif
#
%define _prefix /usr/%_lib/mpi/gcc/%name

%description
This is an MPI-2 implementation which includes all MPI-1 features.  It
is based on MPICH2 and MVICH.



%package devel
License:        BSD 3-Clause
Group:          Development/Libraries/Parallel
Summary:        OSU MVAPICH2 MPI package
Requires:       %{name} = %{version} libibverbs-devel libibumad-devel libibcommon-devel librdmacm-devel
# bug437293
%ifarch ppc64
Obsoletes:      mvapich2-devel-64bit
%endif

%description devel
This is an MPI-2 implementation which includes all MPI-1 features.  It
is based on MPICH2 and MVICH.



%prep
%setup -q
%patch0
#%patch1

%build
export LIBS="-lrdmacm -libverbs -libumad"
export CFLAGS="$RPM_OPT_FLAGS -DUSE_HEADER_CACHING -DONE_SIDED -DMPID_USE_SEQUENCE_NUMBERS -D_SHMEM_COLL_ -DRDMA_CM -DDISABLE_PTMALLOC"
# ./configure --prefix=%_prefix --libdir=%_libdir --mandir=%_mandir --sysconfdir=%_sysconfdir --with-rdma=gen2 --enable-sharedlibs=gcc CC=gcc CXX=g++ F77=gfortran F90=gfortran
./configure --prefix=%_prefix --libdir=%_libdir --mandir=%_mandir --sysconfdir=%_sysconfdir --with-rdma=gen2 --enable-sharedlibs=gcc --without-mpe
make

%install
make DESTDIR=$RPM_BUILD_ROOT install
# Additionally, create the mpivars.[c]sh files.
cat > $RPM_BUILD_ROOT/%_prefix/bin/mpivars.csh <<EOF
if (\$?path) then
    if ( "\${path}" !~ *%{_prefix}/bin* ) then
	set path = ( %{_prefix}/bin \$path )
    endif
else
    set path = ( %{_prefix}/bin )
endif
if ("1" == "\$?LD_LIBRARY_PATH") then
    if ("\$LD_LIBRARY_PATH" !~ *%{_prefix}/lib) then
        setenv LD_LIBRARY_PATH %{_prefix}/lib:\${LD_LIBRARY_PATH}
    endif
else
    setenv LD_LIBRARY_PATH %{_prefix}/lib
endif
if (\$?MANPATH) then
    if ( "\${MANPATH}" !~ *%{_prefix}/man* ) then
	setenv MANPATH %{_prefix}/man:\$MANPATH
    endif
else
    setenv MANPATH %{_prefix}/man:
endif
EOF
cat > $RPM_BUILD_ROOT/%_prefix/bin/mpivars.sh <<EOF
if ! echo \${PATH} | grep -q %{_prefix}/bin ; then
    PATH=%{_prefix}/bin:\${PATH}
fi
if ! echo \${LD_LIBRARY_PATH} | grep -q %{_prefix}/lib ; then
    export LD_LIBRARY_PATH=%{_prefix}/lib:\${LD_LIBRARY_PATH} 
fi
if ! echo \${MANPATH} | grep -q %{_prefix}/man ; then
    MANPATH=%{_prefix}/man:\${MANPATH}
fi
EOF

%clean
rm -rf ${RPM_BUILD_ROOT}

%post
/sbin/ldconfig
/usr/bin/mpi-selector \
        --register %{name}-%{version} \
        --source-dir %{_bindir} \
        --yes

%postun
/sbin/ldconfig
/usr/bin/mpi-selector --unregister %{name}-%{version} --yes

%files
%defattr(-, root, root)
# %_prefix 
%config %_sysconfdir/*
%dir %_prefix 
%dir %_prefix/share
%dir %_prefix/share/man
%dir %_prefix/www
%dir %_libdir
%dir %_libdir/pkgconfig
%_bindir
%_mandir/man1
%_prefix/www/index.htm
%_prefix/www/www1
%_libdir/*.so.*

%files devel
%defattr(-,root,root)
%_mandir/man3
%_prefix/www/www3
%_libdir/*.a
%_libdir/*.so
%_includedir
%attr(644, root, root) %_libdir/pkgconfig/*.pc

%changelog
* Mon Jun 15 2009 ro@suse.de
- drop unused buildrequires for sysfsutils
* Wed Dec 10 2008 olh@suse.de
- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade
  (bnc#437293)
* Tue Dec 09 2008 jjolly@suse.de
- Updated to 1.2p1 release from OFED 1.4 GA
  - Fix shared-memory communication issue for AMD Barcelona systems.
  - Ignore the last bit of the pkey and remove the pkey_ix option since the
  index can be different on different machines.
  - Fix data types for memory allocations. Thanks for Dr. Bill Barth from TACC
  for the patches.
  - Fix a bug when MV2_NUM_HCAS is larger than the number of active HCAs.
  - Allow builds on architectures for which tuning parameters do not exist.
  - Always build and install mpirun_rsh in addition to the process manager(s)
  selected through the --with-pm mechanism.
  - Cleaner job abort handling
  - Ability to detect the path to mpispawn if the Linux proc filesystem is
  available.
  - Added Totalview debugger support
  - Stdin is only available to rank 0.  Other ranks get /dev/null.
  - Add sequence numbers for RPUT and RGET finish packets.
  - Increase the number of allowed nodes for shared memory broadcast to 4K.
  - Use /dev/shm on Linux as the default temporary file path for shared memory
  communication. Thanks for Doug Johnson@OSC for the patch.
  - MV2_DEFAULT_MAX_WQE has been replaced with MV2_DEFAULT_MAX_SEND_WQE and
  MV2_DEFAULT_MAX_RECV_WQE for send and recv wqes, respectively.
  - Fix compilation warnings.
  - Properly handle the scenario in shared memory broadcast code when the
  datatypes of different processes taking part in broadcast are different.
  - Fix a bug in Checkpoint-Restart code to determine whether a connection is a
  shared memory connection or a network connection.
  - Support non-standard path for BLCR header files.
  - Increase the maximum heap size to avoid race condition in realloc().
  - Use int32_t for rank for larger jobs with 32k processes or more.
  - Improve mvapich2-1.2 bandwidth to the same level of mvapich2-1.0.3.
  - An error handling patch for uDAPL interface. Thanks for Nilesh Awate for
  the patch.
  - Explicitly set some of the EP attributes when on demand connection is used
  in uDAPL interface.
  - Scalable and robust daemon-less job startup
    - Enhanced and robust mpirun_rsh framework (non-MPD-based) to
  provide scalable job launching on multi-thousand core clusters
    - Available for OpenFabrics (IB and iWARP) and uDAPL interfaces
  (including Solaris)
  - Adding support for intra-node shared memory communication with Checkpoint-restart
    -  Allows best performance and scalability with fault-tolerance
  support
  - Enhancement to software installation
    - Change to full autoconf-based configuration
    - Adding an application (mpiname) for querying the MVAPICH2 library
  version and configuration information
  - Enhanced processor affinity using PLPA for multi-core architectures
  - Allows user-defined flexible processor affinity
  - Enhanced scalability for RDMA-based direct one-sided communication
  with less communication resource
  - Shared memory optimized MPI_Bcast operations
  - Optimized and tuned MPI_Alltoall
  - Change the default MV2_DAPL_PROVIDER to OpenIB-cma
  - Remove extraneous parameter is_blocking from the gen2 interface for
  MPIDI_CH3I_MRAILI_Get_next_vbuf
  - Explicitly name unions in struct ibv_wr_descriptor and reference the
  members in the code properly.
  - Change "inline" functions to "static inline" properly.
  - Increase the maximum number of buffer allocations for communication
  intensive applications
  - Corrections for warnings from the Sun Studio 12 compiler.
  - If malloc hook initialization fails, then turn off registration
  cache
  - Add MV_R3_THESHOLD and MV_R3_NOCACHE_THRESHOLD which allows
  R3 to be used for smaller messages instead of registering the
  buffer and using a zero-copy protocol.
  - Fixed an error in message coalescing.
  - Setting application initiated checkpoint as default if CR is turned on.
  - Enhance udapl initializaton, set all ep_attr fields properly.
  - Fixing a bug that miscalculates the receive size in case of complex
  datatype is used.
  - Minor patches for fixing (i) NBO for rdma-cm ports and (ii) rank
  variable usage in DEBUG_PRINT in rdma-cm.c
  - Message coalescing support to enable reduction of per Queue-pair
  send queues for reduction in memory requirement on large scale
  clusters. This design also increases the small message messaging
  rate significantly. Available for Open Fabrics Gen2-IB.
  - Hot-Spot Avoidance Mechanism (HSAM) for alleviating
  network congestion in large scale clusters. Available for
  Open Fabrics Gen2-IB.
  - RDMA CM based on-demand connection management for large scale
  clusters. Available for OpenFabrics Gen2-IB and Gen2-iWARP.
  - uDAPL on-demand connection management for large scale clusters.
  Available for uDAPL interface (including Solaris IB implementation).
  - RDMA Read support for increased overlap of computation and
  communication. Available for OpenFabrics Gen2-IB and Gen2-iWARP.
  - Application-initiated system-level (synchronous) checkpointing in
  addition to the user-transparent checkpointing. User application can
  now request a whole program checkpoint synchronously with BLCR by
  calling special functions within the application. Available for
  OpenFabrics Gen2-IB.
  - Network-Level fault tolerance with Automatic Path Migration (APM)
  for tolerating intermittent network failures over InfiniBand.
  Available for OpenFabrics Gen2-IB.
  - Integrated multi-rail communication support for OpenFabrics
  Gen2-iWARP.
  - Blocking mode of communication progress. Available for OpenFabrics
  Gen2-IB.
  - Fix for hang while using IMB with -multi option.
  - Fix for hang in memory allocations > 2^31 - 1.
  - Fix for RDMA_CM finalize rdma_destroy_id failure.
  - Added Timeout env variable for RDMA_CM ARP.
  - Fix for RDMA_CM invalid event in finalize.
  - Fix for shmem memory collectives related memory leaks
  - Updated src/mpi/romio/adio/ad_panfs/Makefile.in include path to find mpi.h.
  - Fixed header caching error on handling datatype messages with small vector
  sizes.
  - Change the finalization protocol for UD connection manager.
  - Fix for the "command line too long" problem.
  - Change the CKPT handling to invalidate all unused registration cache.
  - Added ofed 1.2 interface change patch for iwarp/rdma_cm
  - Fix for rdma_cm_get_event err in finalize.
  - Fix for when MV2_IBA_HCA is used.
* Mon Dec 01 2008 ro@suse.de
- add ExcludeArch for s390 s390x
* Thu Oct 30 2008 olh@suse.de
- obsolete old -XXbit packages (bnc#437293)
* Tue Aug 21 2007 kejohnson@suse.de
- Updated source tarball to OFED-1.2.5 release.
* Tue Aug 07 2007 hvogel@suse.de
- Update to version from OFED 1.2c
* Tue Jul 10 2007 hvogel@suse.de
- Initial Package, Version 0.9.8
openSUSE Build Service is sponsored by