Package: libarpack2
Version: 2.1+parpack96.dfsg-3.1
Severity: important
Tags: patch

Ran into a problem running the parallel test program pdsdrv1.f using OpenMPI...

##
## Compilation went fine...
##

$ mpif77 -g -c pdsdrv1.f -o pdsdrv1.o
$ mpif77 -g pdsdrv1.o -o pdsdrv1 -lblacsF77init-openmpi -lblacs-openmpi
-lparpack -larpack -llapack -lblas

##
## Execution on my dual-core system didn't work...
##

$ mpiexec -n 2 ./pdsdrv1

[onesiphorus:5172] *** An error occurred in MPI_Allreduce
[onesiphorus:5172] *** on communicator MPI_COMM_WORLD
[onesiphorus:5172] *** MPI_ERR_OP: invalid reduce operation
[onesiphorus:5172] *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
--------------------------------------------------------------------------
mpiexec has exited due to process rank 0 with PID 5172 on
node onesiphorus exiting without calling "finalize". This may
have caused other processes in the application to be
terminated by signals sent by mpiexec (as reported here).
--------------------------------------------------------------------------
[onesiphorus:05171] 1 more process has sent help message help-mpi-errors.txt /
mpi_errors_are_fatal
[onesiphorus:05171] Set MCA parameter "orte_base_help_aggregate" to 0 to see
all help / error messages


I poked around the internet and some other people reported a similar problem.
They fixed it by removing the MPI header file (mpif.h) that was included with
the PARPACK source. A quick look at the header provided by OpenMPI, and other
MPI documentation suggested that mixing headers for different MPI
implementaions is generally a bad idea.

As a fix, I removed the provided files (mpif.h), added "-I/usr/include/mpi" to
the compilation options in debian/rules, and fixed the list of MPI symbols in
debian/libarpack2.symbols. The patched build performed as expected...


## Patched build...

$ mpiexec -n 2 ./pdsdrv1

 Ritz values and direct residuals
 --------------------------------
               Col   1       Col   2
  Row   1:    1.62028D-01   2.65146D-15
  Row   2:    3.98507D-01   3.49175D-15
  Row   3:    3.98507D-01   2.40782D-15
  Row   4:    6.34986D-01   3.14833D-15


 _SDRV1
 ======

  Size of the matrix is          100
  The number of processors is            2
  The number of Ritz values requested is            4
  The number of Arnoldi vectors generated (NCV) is           20
  What portion of the spectrum: SM
  The number of converged Ritz values is            4
  The number of Implicit Arnoldi update iterations taken is            9
  The number of OP*x is          140
  The convergence criterion is   1.11022302462515654E-016


I've attached a debdiff of my changes. This is my first time submitting a patch
of this kind, so I hope it is useful..



-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 
'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.0.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libarpack2 depends on:
ii  libatlas3gf-base              3.8.3-27   Automatically Tuned Linear Algebra
ii  libc6                         2.13-16    Embedded GNU C Library: Shared lib
ii  libgfortran3                  4.6.1-4    Runtime library for GNU Fortran ap
ii  libopenmpi1.3                 1.4.3-2.1  high performance message passing l

Versions of packages libarpack2 recommends:
pn  atlas3-base                   <none>     (no description available)

libarpack2 suggests no packages.

-- no debconf information
diff -Nru arpack-2.1+parpack96.dfsg/debian/changelog arpack-2.1+parpack96.dfsg/debian/changelog
--- arpack-2.1+parpack96.dfsg/debian/changelog	2010-05-04 13:05:05.000000000 -0700
+++ arpack-2.1+parpack96.dfsg/debian/changelog	2011-08-23 21:22:31.000000000 -0700
@@ -1,3 +1,13 @@
+arpack (2.1+parpack96.dfsg-3.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Removed provided MPI header (mpif.h): bad for PARPACK/OpenMPI
+  * rules
+  * libarpack2.symbols
+  * libarpack2.symbols
+
+ -- Joshua L. Phillips <[email protected]>  Tue, 23 Aug 2011 21:22:31 -0700
+
 arpack (2.1+parpack96.dfsg-3) unstable; urgency=low
 
   [ Daniel Leidert ]
diff -Nru arpack-2.1+parpack96.dfsg/debian/compat arpack-2.1+parpack96.dfsg/debian/compat
--- arpack-2.1+parpack96.dfsg/debian/compat	1969-12-31 16:00:00.000000000 -0800
+++ arpack-2.1+parpack96.dfsg/debian/compat	2011-08-23 16:34:52.000000000 -0700
@@ -0,0 +1 @@
+5
diff -Nru arpack-2.1+parpack96.dfsg/debian/libarpack2.symbols arpack-2.1+parpack96.dfsg/debian/libarpack2.symbols
--- arpack-2.1+parpack96.dfsg/debian/libarpack2.symbols	2010-05-04 09:26:44.000000000 -0700
+++ arpack-2.1+parpack96.dfsg/debian/libarpack2.symbols	2011-08-23 21:22:20.000000000 -0700
@@ -85,7 +85,13 @@
  zvout_@Base 2.1+parpack96.dfsg
 libparpack.so.2 libarpack2 #MINVER#
  debug_@Base 2.1+parpack96.dfsg
- mpipriv_@Base 2.1+parpack96.dfsg
+ mpi_fortran_argv_null_@Base 2.1+parpack96.dfsg
+ mpi_fortran_argvs_null_@Base 2.1+parpack96.dfsg
+ mpi_fortran_bottom_@Base 2.1+parpack96.dfsg
+ mpi_fortran_errcodes_ignore_@Base 2.1+parpack96.dfsg
+ mpi_fortran_in_place_@Base 2.1+parpack96.dfsg
+ mpi_fortran_status_ignore_@Base 2.1+parpack96.dfsg
+ mpi_fortran_statuses_ignore_@Base 2.1+parpack96.dfsg 
  pcgetv0_@Base 2.1+parpack96.dfsg
  pclarnv_@Base 2.1+parpack96.dfsg
  pcmout_@Base 2.1+parpack96.dfsg
diff -Nru arpack-2.1+parpack96.dfsg/debian/patches/fix-alreduce-openmpi.patch arpack-2.1+parpack96.dfsg/debian/patches/fix-alreduce-openmpi.patch
--- arpack-2.1+parpack96.dfsg/debian/patches/fix-alreduce-openmpi.patch	1969-12-31 16:00:00.000000000 -0800
+++ arpack-2.1+parpack96.dfsg/debian/patches/fix-alreduce-openmpi.patch	2011-08-23 16:34:24.000000000 -0700
@@ -0,0 +1,405 @@
+Index: arpack-2.1+parpack96.dfsg/PARPACK/EXAMPLES/MPI/mpif.h
+===================================================================
+--- arpack-2.1+parpack96.dfsg.orig/PARPACK/EXAMPLES/MPI/mpif.h	2011-08-23 16:33:55.000000000 -0700
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,130 +0,0 @@
+-C/*
+-C *  
+-C *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+-C *      All rights reserved.  See COPYRIGHT in top-level directory.
+-C */
+-C
+-C/* user include file for MPI programs, with no dependencies */
+-C
+-C/* return codes */
+-       integer MPI_SUCCESS,MPI_ERR_EXHAUSTED,MPI_ERR_TAG, 
+-     $ MPI_ERR_COMM_NULL,MPI_ERR_COMM_INTER,MPI_ERR_COMM_INTRA, 
+-     $ MPI_ERR_ARG,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE, 
+-     $ MPI_ERR_ROOT,MPI_ERR_OP,MPI_ERR_ERRORCODE,
+-     $ MPI_ERR_GROUP,MPI_ERR_RANK,MPI_ERR_TOPOLOGY,
+-     $ MPI_ERR_DIMS,MPI_ERR_NULL,MPI_ERR_UNKNOWN,
+-     $ MPI_ERR_REQUEST,MPI_ERR_LIMIT,MPI_ERR_INTERN,
+-     $ MPI_ERR_NOMATCH,MPI_ERR_TRUNCATE,MPI_ERR_BAD_ARGS,
+-     $ MPI_ERR_INIT,MPI_ERR_PERM_KEY,MPI_ERR_BUFFER_EXISTS,
+-     $ MPI_ERR_COMM,MPI_ERR_PERM_TYPE,MPI_ERR_IN_STATUS,
+-     $ MPI_ERR_OTHER,MPI_ERR_LASTCODE
+-       parameter (MPI_SUCCESS=0,MPI_ERR_EXHAUSTED=1,MPI_ERR_TAG=2, 
+-     $ MPI_ERR_COMM_NULL=3,MPI_ERR_COMM_INTER=4,MPI_ERR_COMM_INTRA=5, 
+-     $ MPI_ERR_ARG=6,MPI_ERR_BUFFER=7,MPI_ERR_COUNT=8,MPI_ERR_TYPE=9, 
+-     $ MPI_ERR_ROOT=10,MPI_ERR_OP=11,MPI_ERR_ERRORCODE=12,
+-     $ MPI_ERR_GROUP=13,MPI_ERR_RANK=14,MPI_ERR_TOPOLOGY=15,
+-     $ MPI_ERR_DIMS=16,MPI_ERR_NULL=17,MPI_ERR_UNKNOWN=18,
+-     $ MPI_ERR_REQUEST=19,MPI_ERR_LIMIT=20,MPI_ERR_INTERN=21,
+-     $ MPI_ERR_NOMATCH=22,MPI_ERR_TRUNCATE=23,MPI_ERR_BAD_ARGS=24,
+-     $ MPI_ERR_INIT=25,MPI_ERR_PERM_KEY=26,MPI_ERR_BUFFER_EXISTS=27,
+-     $ MPI_ERR_COMM=28,MPI_ERR_PERM_TYPE=29,MPI_ERR_IN_STATUS=30,
+-     $ MPI_ERR_OTHER=31,
+-     $ MPI_ERR_LASTCODE=32)
+-C
+-       integer MPI_UNDEFINED
+-       parameter (MPI_UNDEFINED = (-32766))
+-C
+-       INTEGER MPI_GRAPH, MPI_CART
+-       PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+-       INTEGER  MPI_PROC_NULL
+-       PARAMETER ( MPI_PROC_NULL = (-1) )
+-C
+-       INTEGER MPI_BSEND_OVERHEAD
+-       PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+-
+-      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+-      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+-      INTEGER MPI_STATUS_SIZE
+-      PARAMETER (MPI_STATUS_SIZE=4)
+-      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+-      PARAMETER (MPI_MAX_PROCESSOR_NAME=256,
+-     $           MPI_MAX_ERROR_STRING=256)
+-C
+-      INTEGER MPI_COMM_NULL
+-      PARAMETER (MPI_COMM_NULL=0)
+-c
+-      INTEGER MPI_DATATYPE_NULL
+-      PARAMETER (MPI_DATATYPE_NULL = 0)
+-      
+-      INTEGER MPI_ERRHANDLER_NULL
+-      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+-      
+-      INTEGER MPI_GROUP_NULL
+-      PARAMETER (MPI_GROUP_NULL = 0)
+-      
+-      INTEGER MPI_KEYVAL_INVALID
+-      PARAMETER (MPI_KEYVAL_INVALID = 0)
+-      
+-      INTEGER MPI_REQUEST_NULL
+-      PARAMETER (MPI_REQUEST_NULL = 0)
+-C 
+-      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+-      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2,
+-     $          MPI_UNEQUAL=3)
+-C     
+-C     We handle datatypes by putting the variables that hold them into
+-C     common.  This way, a Fortran program can directly use the various
+-C     datatypes and can even give them to C programs.
+-C
+-C     MPI_BOTTOM needs to be a known address; here we put it at the
+-C     beginning of the common block.  The point-to-point and collective
+-C     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+-C
+-C     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+-C     Their values are zero if they are not available.  Note that
+-C     using these reduces the portability of code (though may enhance
+-C     portability between Crays and other systems)
+-C
+-      integer MPI_TAG_UB, MPI_HOST, MPI_IO
+-      integer MPI_BOTTOM, MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION, 
+-     $        MPI_COMPLEX, MPI_DOUBLE_COMPLEX,
+-     $        MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE, 
+-     $        MPI_2INTEGER, MPI_2REAL, MPI_2DOUBLE_PRECISION, 
+-     $        MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX,
+-     $        MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, 
+-     $        MPI_REAL2, MPI_REAL4, MPI_REAL8, MPI_UB, MPI_LB, 
+-     $        MPI_PACKED
+-      integer MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+-      integer MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND,
+-     $     MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC, MPI_MAXLOC, 
+-     $     MPI_OP_NULL
+-      integer MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+-      common /mpipriv/ MPI_BOTTOM, MPI_INTEGER, MPI_REAL, 
+-     $     MPI_DOUBLE_PRECISION,
+-     $     MPI_COMPLEX, MPI_DOUBLE_COMPLEX, 
+-     $     MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE,
+-     $     MPI_2INTEGER, MPI_2REAL, MPI_2DOUBLE_PRECISION, 
+-     $     MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX, 
+-     $     MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, 
+-     $     MPI_REAL2, MPI_REAL4, MPI_REAL8,
+-     $     MPI_UB, MPI_LB, 
+-     $     MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY,
+-     $     MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND,
+-     $     MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC, MPI_MAXLOC, 
+-     $     MPI_OP_NULL, 
+-     $     MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_ERRORS_ARE_FATAL, 
+-     $     MPI_ERRORS_RETURN, MPI_PACKED
+-C
+-      integer MPI_ANY_SOURCE
+-      parameter (MPI_ANY_SOURCE = (-2))
+-      integer MPI_ANY_TAG
+-      parameter (MPI_ANY_TAG = (-1))
+-C
+-C     All other MPI routines are subroutines
+-      double precision MPI_WTIME, MPI_WTICK
+-      external MPI_WTIME, MPI_WTICK
+-C
+-C     The attribute copy/delete functions are symbols that can be passed
+-C     to MPI routines
+-      external MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+-
+Index: arpack-2.1+parpack96.dfsg/PARPACK/SRC/MPI/mpif.h
+===================================================================
+--- arpack-2.1+parpack96.dfsg.orig/PARPACK/SRC/MPI/mpif.h	2011-08-23 16:33:55.000000000 -0700
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,130 +0,0 @@
+-C/*
+-C *  
+-C *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+-C *      All rights reserved.  See COPYRIGHT in top-level directory.
+-C */
+-C
+-C/* user include file for MPI programs, with no dependencies */
+-C
+-C/* return codes */
+-       integer MPI_SUCCESS,MPI_ERR_EXHAUSTED,MPI_ERR_TAG, 
+-     $ MPI_ERR_COMM_NULL,MPI_ERR_COMM_INTER,MPI_ERR_COMM_INTRA, 
+-     $ MPI_ERR_ARG,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE, 
+-     $ MPI_ERR_ROOT,MPI_ERR_OP,MPI_ERR_ERRORCODE,
+-     $ MPI_ERR_GROUP,MPI_ERR_RANK,MPI_ERR_TOPOLOGY,
+-     $ MPI_ERR_DIMS,MPI_ERR_NULL,MPI_ERR_UNKNOWN,
+-     $ MPI_ERR_REQUEST,MPI_ERR_LIMIT,MPI_ERR_INTERN,
+-     $ MPI_ERR_NOMATCH,MPI_ERR_TRUNCATE,MPI_ERR_BAD_ARGS,
+-     $ MPI_ERR_INIT,MPI_ERR_PERM_KEY,MPI_ERR_BUFFER_EXISTS,
+-     $ MPI_ERR_COMM,MPI_ERR_PERM_TYPE,MPI_ERR_IN_STATUS,
+-     $ MPI_ERR_OTHER,MPI_ERR_LASTCODE
+-       parameter (MPI_SUCCESS=0,MPI_ERR_EXHAUSTED=1,MPI_ERR_TAG=2, 
+-     $ MPI_ERR_COMM_NULL=3,MPI_ERR_COMM_INTER=4,MPI_ERR_COMM_INTRA=5, 
+-     $ MPI_ERR_ARG=6,MPI_ERR_BUFFER=7,MPI_ERR_COUNT=8,MPI_ERR_TYPE=9, 
+-     $ MPI_ERR_ROOT=10,MPI_ERR_OP=11,MPI_ERR_ERRORCODE=12,
+-     $ MPI_ERR_GROUP=13,MPI_ERR_RANK=14,MPI_ERR_TOPOLOGY=15,
+-     $ MPI_ERR_DIMS=16,MPI_ERR_NULL=17,MPI_ERR_UNKNOWN=18,
+-     $ MPI_ERR_REQUEST=19,MPI_ERR_LIMIT=20,MPI_ERR_INTERN=21,
+-     $ MPI_ERR_NOMATCH=22,MPI_ERR_TRUNCATE=23,MPI_ERR_BAD_ARGS=24,
+-     $ MPI_ERR_INIT=25,MPI_ERR_PERM_KEY=26,MPI_ERR_BUFFER_EXISTS=27,
+-     $ MPI_ERR_COMM=28,MPI_ERR_PERM_TYPE=29,MPI_ERR_IN_STATUS=30,
+-     $ MPI_ERR_OTHER=31,
+-     $ MPI_ERR_LASTCODE=32)
+-C
+-       integer MPI_UNDEFINED
+-       parameter (MPI_UNDEFINED = (-32766))
+-C
+-       INTEGER MPI_GRAPH, MPI_CART
+-       PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+-       INTEGER  MPI_PROC_NULL
+-       PARAMETER ( MPI_PROC_NULL = (-1) )
+-C
+-       INTEGER MPI_BSEND_OVERHEAD
+-       PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+-
+-      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+-      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+-      INTEGER MPI_STATUS_SIZE
+-      PARAMETER (MPI_STATUS_SIZE=4)
+-      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+-      PARAMETER (MPI_MAX_PROCESSOR_NAME=256,
+-     $           MPI_MAX_ERROR_STRING=256)
+-C
+-      INTEGER MPI_COMM_NULL
+-      PARAMETER (MPI_COMM_NULL=0)
+-c
+-      INTEGER MPI_DATATYPE_NULL
+-      PARAMETER (MPI_DATATYPE_NULL = 0)
+-      
+-      INTEGER MPI_ERRHANDLER_NULL
+-      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+-      
+-      INTEGER MPI_GROUP_NULL
+-      PARAMETER (MPI_GROUP_NULL = 0)
+-      
+-      INTEGER MPI_KEYVAL_INVALID
+-      PARAMETER (MPI_KEYVAL_INVALID = 0)
+-      
+-      INTEGER MPI_REQUEST_NULL
+-      PARAMETER (MPI_REQUEST_NULL = 0)
+-C 
+-      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+-      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2,
+-     $          MPI_UNEQUAL=3)
+-C     
+-C     We handle datatypes by putting the variables that hold them into
+-C     common.  This way, a Fortran program can directly use the various
+-C     datatypes and can even give them to C programs.
+-C
+-C     MPI_BOTTOM needs to be a known address; here we put it at the
+-C     beginning of the common block.  The point-to-point and collective
+-C     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+-C
+-C     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+-C     Their values are zero if they are not available.  Note that
+-C     using these reduces the portability of code (though may enhance
+-C     portability between Crays and other systems)
+-C
+-      integer MPI_TAG_UB, MPI_HOST, MPI_IO
+-      integer MPI_BOTTOM, MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION, 
+-     $        MPI_COMPLEX, MPI_DOUBLE_COMPLEX,
+-     $        MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE, 
+-     $        MPI_2INTEGER, MPI_2REAL, MPI_2DOUBLE_PRECISION, 
+-     $        MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX,
+-     $        MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, 
+-     $        MPI_REAL2, MPI_REAL4, MPI_REAL8, MPI_UB, MPI_LB, 
+-     $        MPI_PACKED
+-      integer MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+-      integer MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND,
+-     $     MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC, MPI_MAXLOC, 
+-     $     MPI_OP_NULL
+-      integer MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+-      common /mpipriv/ MPI_BOTTOM, MPI_INTEGER, MPI_REAL, 
+-     $     MPI_DOUBLE_PRECISION,
+-     $     MPI_COMPLEX, MPI_DOUBLE_COMPLEX, 
+-     $     MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE,
+-     $     MPI_2INTEGER, MPI_2REAL, MPI_2DOUBLE_PRECISION, 
+-     $     MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX, 
+-     $     MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, 
+-     $     MPI_REAL2, MPI_REAL4, MPI_REAL8,
+-     $     MPI_UB, MPI_LB, 
+-     $     MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY,
+-     $     MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND,
+-     $     MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC, MPI_MAXLOC, 
+-     $     MPI_OP_NULL, 
+-     $     MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_ERRORS_ARE_FATAL, 
+-     $     MPI_ERRORS_RETURN, MPI_PACKED
+-C
+-      integer MPI_ANY_SOURCE
+-      parameter (MPI_ANY_SOURCE = (-2))
+-      integer MPI_ANY_TAG
+-      parameter (MPI_ANY_TAG = (-1))
+-C
+-C     All other MPI routines are subroutines
+-      double precision MPI_WTIME, MPI_WTICK
+-      external MPI_WTIME, MPI_WTICK
+-C
+-C     The attribute copy/delete functions are symbols that can be passed
+-C     to MPI routines
+-      external MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+-
+Index: arpack-2.1+parpack96.dfsg/PARPACK/UTIL/MPI/mpif.h
+===================================================================
+--- arpack-2.1+parpack96.dfsg.orig/PARPACK/UTIL/MPI/mpif.h	2011-08-23 16:33:55.000000000 -0700
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,130 +0,0 @@
+-C/*
+-C *  
+-C *  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+-C *      All rights reserved.  See COPYRIGHT in top-level directory.
+-C */
+-C
+-C/* user include file for MPI programs, with no dependencies */
+-C
+-C/* return codes */
+-       integer MPI_SUCCESS,MPI_ERR_EXHAUSTED,MPI_ERR_TAG, 
+-     $ MPI_ERR_COMM_NULL,MPI_ERR_COMM_INTER,MPI_ERR_COMM_INTRA, 
+-     $ MPI_ERR_ARG,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE, 
+-     $ MPI_ERR_ROOT,MPI_ERR_OP,MPI_ERR_ERRORCODE,
+-     $ MPI_ERR_GROUP,MPI_ERR_RANK,MPI_ERR_TOPOLOGY,
+-     $ MPI_ERR_DIMS,MPI_ERR_NULL,MPI_ERR_UNKNOWN,
+-     $ MPI_ERR_REQUEST,MPI_ERR_LIMIT,MPI_ERR_INTERN,
+-     $ MPI_ERR_NOMATCH,MPI_ERR_TRUNCATE,MPI_ERR_BAD_ARGS,
+-     $ MPI_ERR_INIT,MPI_ERR_PERM_KEY,MPI_ERR_BUFFER_EXISTS,
+-     $ MPI_ERR_COMM,MPI_ERR_PERM_TYPE,MPI_ERR_IN_STATUS,
+-     $ MPI_ERR_OTHER,MPI_ERR_LASTCODE
+-       parameter (MPI_SUCCESS=0,MPI_ERR_EXHAUSTED=1,MPI_ERR_TAG=2, 
+-     $ MPI_ERR_COMM_NULL=3,MPI_ERR_COMM_INTER=4,MPI_ERR_COMM_INTRA=5, 
+-     $ MPI_ERR_ARG=6,MPI_ERR_BUFFER=7,MPI_ERR_COUNT=8,MPI_ERR_TYPE=9, 
+-     $ MPI_ERR_ROOT=10,MPI_ERR_OP=11,MPI_ERR_ERRORCODE=12,
+-     $ MPI_ERR_GROUP=13,MPI_ERR_RANK=14,MPI_ERR_TOPOLOGY=15,
+-     $ MPI_ERR_DIMS=16,MPI_ERR_NULL=17,MPI_ERR_UNKNOWN=18,
+-     $ MPI_ERR_REQUEST=19,MPI_ERR_LIMIT=20,MPI_ERR_INTERN=21,
+-     $ MPI_ERR_NOMATCH=22,MPI_ERR_TRUNCATE=23,MPI_ERR_BAD_ARGS=24,
+-     $ MPI_ERR_INIT=25,MPI_ERR_PERM_KEY=26,MPI_ERR_BUFFER_EXISTS=27,
+-     $ MPI_ERR_COMM=28,MPI_ERR_PERM_TYPE=29,MPI_ERR_IN_STATUS=30,
+-     $ MPI_ERR_OTHER=31,
+-     $ MPI_ERR_LASTCODE=32)
+-C
+-       integer MPI_UNDEFINED
+-       parameter (MPI_UNDEFINED = (-32766))
+-C
+-       INTEGER MPI_GRAPH, MPI_CART
+-       PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+-       INTEGER  MPI_PROC_NULL
+-       PARAMETER ( MPI_PROC_NULL = (-1) )
+-C
+-       INTEGER MPI_BSEND_OVERHEAD
+-       PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+-
+-      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+-      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+-      INTEGER MPI_STATUS_SIZE
+-      PARAMETER (MPI_STATUS_SIZE=4)
+-      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+-      PARAMETER (MPI_MAX_PROCESSOR_NAME=256,
+-     $           MPI_MAX_ERROR_STRING=256)
+-C
+-      INTEGER MPI_COMM_NULL
+-      PARAMETER (MPI_COMM_NULL=0)
+-c
+-      INTEGER MPI_DATATYPE_NULL
+-      PARAMETER (MPI_DATATYPE_NULL = 0)
+-      
+-      INTEGER MPI_ERRHANDLER_NULL
+-      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+-      
+-      INTEGER MPI_GROUP_NULL
+-      PARAMETER (MPI_GROUP_NULL = 0)
+-      
+-      INTEGER MPI_KEYVAL_INVALID
+-      PARAMETER (MPI_KEYVAL_INVALID = 0)
+-      
+-      INTEGER MPI_REQUEST_NULL
+-      PARAMETER (MPI_REQUEST_NULL = 0)
+-C 
+-      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+-      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2,
+-     $          MPI_UNEQUAL=3)
+-C     
+-C     We handle datatypes by putting the variables that hold them into
+-C     common.  This way, a Fortran program can directly use the various
+-C     datatypes and can even give them to C programs.
+-C
+-C     MPI_BOTTOM needs to be a known address; here we put it at the
+-C     beginning of the common block.  The point-to-point and collective
+-C     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+-C
+-C     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+-C     Their values are zero if they are not available.  Note that
+-C     using these reduces the portability of code (though may enhance
+-C     portability between Crays and other systems)
+-C
+-      integer MPI_TAG_UB, MPI_HOST, MPI_IO
+-      integer MPI_BOTTOM, MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION, 
+-     $        MPI_COMPLEX, MPI_DOUBLE_COMPLEX,
+-     $        MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE, 
+-     $        MPI_2INTEGER, MPI_2REAL, MPI_2DOUBLE_PRECISION, 
+-     $        MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX,
+-     $        MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, 
+-     $        MPI_REAL2, MPI_REAL4, MPI_REAL8, MPI_UB, MPI_LB, 
+-     $        MPI_PACKED
+-      integer MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+-      integer MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND,
+-     $     MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC, MPI_MAXLOC, 
+-     $     MPI_OP_NULL
+-      integer MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+-      common /mpipriv/ MPI_BOTTOM, MPI_INTEGER, MPI_REAL, 
+-     $     MPI_DOUBLE_PRECISION,
+-     $     MPI_COMPLEX, MPI_DOUBLE_COMPLEX, 
+-     $     MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE,
+-     $     MPI_2INTEGER, MPI_2REAL, MPI_2DOUBLE_PRECISION, 
+-     $     MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX, 
+-     $     MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, 
+-     $     MPI_REAL2, MPI_REAL4, MPI_REAL8,
+-     $     MPI_UB, MPI_LB, 
+-     $     MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY,
+-     $     MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND,
+-     $     MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC, MPI_MAXLOC, 
+-     $     MPI_OP_NULL, 
+-     $     MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_ERRORS_ARE_FATAL, 
+-     $     MPI_ERRORS_RETURN, MPI_PACKED
+-C
+-      integer MPI_ANY_SOURCE
+-      parameter (MPI_ANY_SOURCE = (-2))
+-      integer MPI_ANY_TAG
+-      parameter (MPI_ANY_TAG = (-1))
+-C
+-C     All other MPI routines are subroutines
+-      double precision MPI_WTIME, MPI_WTICK
+-      external MPI_WTIME, MPI_WTICK
+-C
+-C     The attribute copy/delete functions are symbols that can be passed
+-C     to MPI routines
+-      external MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+-
diff -Nru arpack-2.1+parpack96.dfsg/debian/patches/series arpack-2.1+parpack96.dfsg/debian/patches/series
--- arpack-2.1+parpack96.dfsg/debian/patches/series	2010-05-04 09:34:53.000000000 -0700
+++ arpack-2.1+parpack96.dfsg/debian/patches/series	2011-08-23 16:33:40.000000000 -0700
@@ -1,3 +1,4 @@
 no_external_etime.patch
 parpacklib.patch
 fix-segfault.patch
+fix-alreduce-openmpi.patch
diff -Nru arpack-2.1+parpack96.dfsg/debian/rules arpack-2.1+parpack96.dfsg/debian/rules
--- arpack-2.1+parpack96.dfsg/debian/rules	2010-05-04 09:15:44.000000000 -0700
+++ arpack-2.1+parpack96.dfsg/debian/rules	2011-08-23 21:14:44.000000000 -0700
@@ -12,7 +12,7 @@
 
 DEB_MAKE_CLEAN_TARGET    := clean PSRCdir="SRC" PUTILdir="UTIL"
 DEB_MAKE_BUILD_TARGET    := default FC="gfortran"
-DEB_MAKE_ENVVARS         += FC="gfortran" FFLAGS="-O3 -fPIC -pipe"
+DEB_MAKE_ENVVARS         += FC="gfortran" FFLAGS="-I/usr/include/mpi -O3 -fPIC -pipe"
 DEB_COMPRESS_EXCLUDE     := .pdf
 #DH_COMPAT=5
 

Reply via email to