--- Begin Message ---
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
--- End Message ---