tags 491028 patch
thanks

On Tue, 2008-07-15 at 20:29 -0400, Adam C Powell IV wrote:
> Greetings,
> 
> Please add OpenMPI to the existing LAM, MPICH and PVM builds for
> scalapack.  I would be happy to provide a patch if needed.

With the attached patch, and blacs-openmpi packages according to bug
491105, the scalapack package builds and installs OpenMPI binaries.

The 102 openmpi tests run and pass with the following exceptions:
      * xcdblu-openmpi hangs after passing 8 tests
      * xcgblu-openmpi hangs after passing 6 tests
      * xdgblu-openmpi hangs after passing 6 tests
      * xsgblu-openmpi hangs after passing 6 tests
      * xsgsep-openmpi hangs after passing (most of?) test 5
      * xzsep-openmpi hangs in test one, last output: "On entry to
        PZSEPCHK parameter number   19 had an illegal value"
      * xcls-openmpi hangs after passing 8 tests
      * xzls-openmpi hangs after passing 8 tests
      * In testx?qr-openmpi, 32 of 384 tests are skipped

Cheers,
-Adam
-- 
GPG fingerprint: D54D 1AEE B11C CE9B A02B  C5DD 526F 01E8 564E E4B6

Engineering consulting with open source tools
http://www.opennovation.com/
diff -urN scalapack-1.8.0-2/debian/changelog scalapack-1.8.0/debian/changelog
--- scalapack-1.8.0-2/debian/changelog	2008-08-14 11:28:24.000000000 -0400
+++ scalapack-1.8.0/debian/changelog	2008-08-14 12:34:44.000000000 -0400
@@ -1,3 +1,9 @@
+scalapack (1.8.0-3) unstable; urgency=low
+
+  * Added OpenMPI build (closes: #491028).  Thanks to Adam Powell
+
+ -- 
+
 scalapack (1.8.0-2) unstable; urgency=low
 
   * Bumped standards version to 3.7.3.
diff -urN scalapack-1.8.0-2/debian/control scalapack-1.8.0/debian/control
--- scalapack-1.8.0-2/debian/control	2008-08-14 11:28:24.000000000 -0400
+++ scalapack-1.8.0/debian/control	2008-08-14 12:34:26.000000000 -0400
@@ -3,7 +3,7 @@
 Priority: extra
 Maintainer: Muammar El Khatib <[EMAIL PROTECTED]>
 Standards-Version: 3.7.3
-Build-Depends: libmpich1.0-dev, lam4-dev (>= 7.1.1-3.2), pvm-dev, blacs-pvm-dev, gfortran, liblapack-dev | liblapack.so.3gf , libblas-dev | libblas.so.3gf, debhelper (>= 5), blacsgf-mpich-dev, blacsgf-lam-dev
+Build-Depends: libmpich1.0-dev, lam4-dev (>= 7.1.1-3.2), libopenmpi-dev (>= 1.2.4-5) [i386 amd64 alpha ia64 powerpc sparc], pvm-dev, blacs-pvm-dev, gfortran, liblapack-dev | liblapack.so.3gf , libblas-dev | libblas.so.3gf, debhelper (>= 5), blacsgf-mpich-dev, blacsgf-lam-dev, blacsgf-openmpi-dev
 Homepage: http://www.netlib.org/scalapack/
 
 Package: scalapack1-mpich
@@ -17,15 +17,15 @@
  You can choose between an implementation based on MPI or PVM. This
  package uses MPI.
  .
- The package is available for LAM and MPICH. This package uses MPICH. There
- are packages for the shared libraries (this one), for the static
+ The package is available for OpenMPI, LAM and MPICH. This package uses MPICH.
+ There are packages for the shared libraries (this one), for the static
  libraries and the development files and for test programs.
  .
  Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
 
 Package: scalapack-mpich-dev
 Architecture: any
-Depends: scalapack1-mpich (= ${binary:Version}), blacsgf-mpich-dev, ${shlibs:Depends}
+Depends: scalapack1-mpich (= ${binary:Version}), blacsgf-mpich-dev
 Suggests: scalapack-doc
 Description: Scalable Linear Algebra Package - Dev. files for MPICH
  ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
@@ -34,8 +34,8 @@
  You can choose between an implementation based on MPI or PVM. This
  package uses MPI.
  .
- The package is available for LAM and MPICH. This package uses MPICH. There
- are packages for the shared libraries, for the static libraries and
+ The package is available for OpenMPI, LAM and MPICH. This package uses MPICH.
+ There are packages for the shared libraries, for the static libraries and
  the development files (this one) and for test programs.
  .
  Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
@@ -51,8 +51,8 @@
  You can choose between an implementation based on MPI or PVM. This
  package uses MPI.
  .
- The package is available for LAM and MPICH. This package uses MPICH. There
- are packages for the shared libraries, for the static libraries and
+ The package is available for OpenMPI, LAM and MPICH. This package uses MPICH.
+ There are packages for the shared libraries, for the static libraries and
  the development files and for test programs (this one).
  .
  Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
@@ -68,15 +68,15 @@
  You can choose between an implementation based on MPI or PVM. This
  package uses MPI.
  .
- The package is available for LAM and MPICH. This package uses LAM. There
- are packages for the shared libraries (this one), for the static
+ The package is available for OpenMPI, LAM and MPICH. This package uses LAM.
+ There are packages for the shared libraries (this one), for the static
  libraries and the development files and for test programs.
  .
  Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
 
 Package: scalapack-lam-dev
 Architecture: any
-Depends: scalapack1-lam (= ${binary:Version}), lam4-dev, blacsgf-lam-dev (>= 1.1-20), ${shlibs:Depends}
+Depends: scalapack1-lam (= ${binary:Version}), lam4-dev, blacsgf-lam-dev (>= 1.1-20)
 Suggests: scalapack-doc
 Description: Scalable Linear Algebra Package - Dev. files for LAM
  ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
@@ -85,8 +85,8 @@
  You can choose between an implementation based on MPI or PVM. This
  package uses MPI.
  .
- The package is available for LAM and MPICH. This package uses LAM. There
- are packages for the shared libraries, for the static libraries and
+ The package is available for OpenMPI, LAM and MPICH. This package uses LAM.
+ There are packages for the shared libraries, for the static libraries and
  the development files (this one) and for test programs.
  .
  Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
@@ -102,12 +102,63 @@
  You can choose between an implementation based on MPI or PVM. This
  package uses MPI.
  .
- The package is available for LAM and MPICH. This package uses LAM. There
- are packages for the shared libraries, for the static libraries and
+ The package is available for OpenMPI, LAM and MPICH. This package uses LAM.
+ There are packages for the shared libraries, for the static libraries and
  the development files and for test programs (this one).
  .
  Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
 
+Package: scalapack1-openmpi
+Architecture: i386 amd64 alpha ia64 powerpc sparc
+Depends: ${shlibs:Depends}
+Suggests: scalapack-doc
+Description: Scalable Linear Algebra Package - Shared libs. for OpenMPI
+ ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
+ clusters.
+ .
+ You can choose between an implementation based on MPI or PVM. This
+ package uses MPI.
+ .
+ The package is available for OpenMPI, LAM and MPICH. This package uses
+ OpenMPI. There are packages for the shared libraries (this one), for the
+ static libraries and the development files and for test programs.
+ .
+ Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
+
+Package: scalapack-openmpi-dev
+Architecture: i386 amd64 alpha ia64 powerpc sparc
+Depends: scalapack1-openmpi (= ${binary:Version}), libopenmpi-dev, blacsgf-openmpi-dev
+Suggests: scalapack-doc
+Description: Scalable Linear Algebra Package - Dev. files for OpenMPI
+ ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
+ clusters.
+ .
+ You can choose between an implementation based on MPI or PVM. This
+ package uses MPI.
+ .
+ The package is available for OpenMPI, LAM and MPICH. This package uses
+ OpenMPI. There are packages for the shared libraries, for the static libraries
+ and the development files (this one) and for test programs.
+ .
+ Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
+
+Package: scalapack-openmpi-test
+Architecture: i386 amd64 alpha ia64 powerpc sparc
+Depends: scalapack-test-common, ${shlibs:Depends}
+Suggests: scalapack-doc
+Description: Scalable Linear Algebra Package - Test files for OpenMPI
+ ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
+ clusters.
+ .
+ You can choose between an implementation based on MPI or PVM. This
+ package uses MPI.
+ .
+ The package is available for OpenMPI, LAM and MPICH. This package uses
+ OpenMPI. There are packages for the shared libraries, for the static libraries
+ and the development files and for test programs (this one).
+ .
+ Also included: PBLAS, Parallel Basic Linear Algebra Subprograms.
+
 Package: scalapack1-pvm
 Architecture: any
 Depends:  ${shlibs:Depends}
@@ -126,7 +177,7 @@
 
 Package: scalapack-pvm-dev
 Architecture: any
-Depends: scalapack1-pvm (= ${binary:Version}), blacs-pvm-dev, pvm-dev, ${shlibs:Depends}
+Depends: scalapack1-pvm (= ${binary:Version}), blacs-pvm-dev, pvm-dev
 Suggests: scalapack-doc
 Description: Scalable Linear Algebra Package - Dev. files for PVM
  ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
@@ -158,7 +209,7 @@
 
 Package: scalapack-test-common
 Architecture: all
-Suggests: scalapack-lam-test | scalapack-mpich-test | scalapack-pvm-test
+Suggests: scalapack-lam-test | scalapack-openmpi-test | scalapack-mpich-test | scalapack-pvm-test
 Description: Test data for ScaLAPACK testers
  ScaLAPACK is the parallel version of LAPACK and is used on Beowulf type
  clusters.
diff -urN scalapack-1.8.0-2/debian/rules scalapack-1.8.0/debian/rules
--- scalapack-1.8.0-2/debian/rules	2008-08-14 11:28:24.000000000 -0400
+++ scalapack-1.8.0/debian/rules	2008-08-14 12:34:26.000000000 -0400
@@ -11,12 +11,15 @@
 
 topdir=$(shell pwd)
 
+export openmpiPACKAGES=-pscalapack-openmpi1 -pscalapack-openmpi-dev -pscalapack-openmpi-test
 export lamPACKAGES=-pscalapack-lam1 -pscalapack-lam-dev -pscalapack-lam-test
 export mpichPACKAGES=-pscalapack-mpich1 -pscalapack-mpich-dev \
 	-pscalapack-mpich-test
 export pvmPACKAGES=-pscalapack-pvm1 -pscalapack-pvm-dev -pscalapack-pvm-test
 
-build: build-lam build-mpich build-pvm
+build: build-openmpi build-lam build-mpich build-pvm
+
+build-openmpi: build-stamp-openmpi
 
 build-lam: build-stamp-lam
 
@@ -24,6 +27,41 @@
 
 build-pvm: build-stamp-pvm
 
+build-stamp-openmpi:
+	dh_testdir
+	if [ -e /usr/lib/openmpi/include/mpi.h ]; then \
+	echo *** cleaning object files ***; \
+	BASEDIR=$(topdir) make clean; \
+	echo *** building shared libraries for openmpi ***; \
+	BASEDIR=$(topdir) MPI=openmpi FPIC=-fPIC make lib; \
+	mkdir -p tmp; \
+	set -e ;\
+	for i in scalapack ; do \
+	  cd tmp ;\
+	  ar x ../$${i}_openmpi.a ;\
+	  cd .. ;\
+	  gcc -shared -Wl,-soname=lib$$i-openmpi.so.$(version_major) -o \
+	    lib$$i-openmpi.so.$(version) tmp/*.o -lblas-3gf -llapackgf-3 -lblacsCinit-openmpi -lblacs-openmpi -L/usr/lib/openmpi/lib -lmpi -lgfortran;\
+	  ln -snf lib$$i-openmpi.so.$(version) lib$$i-openmpi.so.$(version_major) ;\
+	  ln -snf lib$$i-openmpi.so.$(version_major) lib$$i-openmpi.so ;\
+	  rm tmp/* ;\
+	done; \
+	rmdir tmp; \
+	echo *** building static testing binaries for openmpi ***; \
+	BASEDIR=$(topdir) MPI=openmpi BUILD=shared make exe; \
+	set -e ;\
+	cd TESTING ;\
+	for i in $$(find -name 'x*' -maxdepth 1); do \
+	  mv $$i $$i-openmpi ;\
+	done; \
+	cd $(topdir); \
+	echo *** cleaning object files ***; \
+	BASEDIR=$(topdir) make clean; \
+	echo *** building static libraries for openmpi ***; \
+	BASEDIR=$(topdir) MPI=openmpi make lib; \
+	fi
+	touch build-stamp-openmpi
+
 build-stamp-lam:
 	dh_testdir
 
@@ -59,7 +97,7 @@
 	BASEDIR=$(topdir) MPI=lam BUILD=shared make exe
 	set -e ;\
 	cd TESTING ;\
-	for i in $$(find -name 'x*' -maxdepth 1); do \
+	for i in $$(find -name 'x*' -maxdepth 1 ! -name 'x*-openmpi'); do \
 	  mv $$i $$i-lam ;\
 	done
 
@@ -102,7 +140,7 @@
 	BASEDIR=$(topdir) MPI=mpich BUILD=shared make exe
 	set -e ;\
 	cd TESTING ;\
-	for i in $$(find -name 'x*'  -maxdepth 1 ! -name 'x*-lam'); do \
+	for i in $$(find -name 'x*'  -maxdepth 1 ! -name 'x*-openmpi' ! -name 'x*-lam'); do \
 	  mv $$i $$i-mpich ;\
 	done
 
@@ -145,7 +183,7 @@
 	BASEDIR=$(topdir) MPI=pvm BUILD=shared make exe
 	set -e ;\
 	cd TESTING ;\
-	for i in $$(find -name 'x*'  -maxdepth 1 ! -name 'x*-lam' ! -name 'x*-mpich'); do \
+	for i in $$(find -name 'x*'  -maxdepth 1 ! -name 'x*-openmpi' ! -name 'x*-lam' ! -name 'x*-mpich'); do \
 	  mv $$i $$i-pvm ;\
 	done
 
@@ -176,7 +214,7 @@
 #	done
 	dh_clean
 
-install: install-dirs install-mpich install-lam install-pvm
+install: install-dirs install-openmpi install-lam install-mpich install-pvm
 
 install-dirs: install-dirs-stamp
 
@@ -188,12 +226,33 @@
 
 	touch install-dirs-stamp
 
+install-openmpi: install-stamp-openmpi
+
 install-lam: install-stamp-lam
 
 install-mpich: install-stamp-mpich
 
 install-pvm: install-stamp-pvm
 
+install-stamp-openmpi: build-stamp-openmpi
+	dh_testdir
+	if [ -e /usr/lib/openmpi/include/mpi.h ]; then \
+	dh_testroot; \
+	set -e ;\
+	for i in scalapack ; do \
+	  install lib$$i-openmpi.so.$(version) \
+	    `pwd`/debian/scalapack1-openmpi/usr/lib/lib$$i-openmpi.so.$(version) ;\
+	done; \
+	install TESTING/x*-openmpi \
+	  `pwd`/debian/scalapack-openmpi-test/usr/lib/scalapack; \
+	set -e ;\
+	for i in scalapack ; do \
+	  install $${i}_openmpi.a \
+	    `pwd`/debian/scalapack-openmpi-dev/usr/lib/lib$$i-openmpi.a ;\
+	done; \
+	fi
+	touch install-stamp-openmpi
+
 install-stamp-lam: build-stamp-lam
 	dh_testdir
 	dh_testroot
@@ -269,7 +328,7 @@
 	dh_strip
 	dh_makeshlibs -V
 	dh_installdeb
-	dh_shlibdeps -L scalapack1-pvm -l debian/scalapack1-pvm/usr/lib -L scalapack1-lam -l debian/scalapack1-lam/usr/lib -L scalapack1-mpich -l debian/scalapack1-mpich/usr/lib
+	dh_shlibdeps -L scalapack1-pvm -l debian/scalapack1-pvm/usr/lib -L scalapack1-openmpi -l debian/scalapack1-openmpi/usr/lib -L scalapack1-lam -l debian/scalapack1-lam/usr/lib -L scalapack1-mpich -l debian/scalapack1-mpich/usr/lib
 	dh_gencontrol
 	dh_md5sums
 	dh_builddeb
diff -urN scalapack-1.8.0-2/debian/scalapack1-openmpi.dirs scalapack-1.8.0/debian/scalapack1-openmpi.dirs
--- scalapack-1.8.0-2/debian/scalapack1-openmpi.dirs	1969-12-31 19:00:00.000000000 -0500
+++ scalapack-1.8.0/debian/scalapack1-openmpi.dirs	2008-08-14 12:34:26.000000000 -0400
@@ -0,0 +1 @@
+usr/lib
diff -urN scalapack-1.8.0-2/debian/scalapack1-openmpi.links scalapack-1.8.0/debian/scalapack1-openmpi.links
--- scalapack-1.8.0-2/debian/scalapack1-openmpi.links	1969-12-31 19:00:00.000000000 -0500
+++ scalapack-1.8.0/debian/scalapack1-openmpi.links	2008-08-14 12:34:26.000000000 -0400
@@ -0,0 +1 @@
+usr/lib/libscalapack-openmpi.so.1.8.0	usr/lib/libscalapack-openmpi.so.1
diff -urN scalapack-1.8.0-2/debian/scalapack1-openmpi.postinst scalapack-1.8.0/debian/scalapack1-openmpi.postinst
--- scalapack-1.8.0-2/debian/scalapack1-openmpi.postinst	1969-12-31 19:00:00.000000000 -0500
+++ scalapack-1.8.0/debian/scalapack1-openmpi.postinst	2008-08-14 12:34:26.000000000 -0400
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+        ldconfig
+fi
+
+#DEBHELPER#
diff -urN scalapack-1.8.0-2/debian/scalapack-openmpi-dev.dirs scalapack-1.8.0/debian/scalapack-openmpi-dev.dirs
--- scalapack-1.8.0-2/debian/scalapack-openmpi-dev.dirs	1969-12-31 19:00:00.000000000 -0500
+++ scalapack-1.8.0/debian/scalapack-openmpi-dev.dirs	2008-08-14 12:34:26.000000000 -0400
@@ -0,0 +1 @@
+usr/lib
diff -urN scalapack-1.8.0-2/debian/scalapack-openmpi-dev.links scalapack-1.8.0/debian/scalapack-openmpi-dev.links
--- scalapack-1.8.0-2/debian/scalapack-openmpi-dev.links	1969-12-31 19:00:00.000000000 -0500
+++ scalapack-1.8.0/debian/scalapack-openmpi-dev.links	2008-08-14 12:34:26.000000000 -0400
@@ -0,0 +1 @@
+usr/lib/libscalapack-openmpi.so.1	usr/lib/libscalapack-openmpi.so
diff -urN scalapack-1.8.0-2/debian/scalapack-openmpi-test.dirs scalapack-1.8.0/debian/scalapack-openmpi-test.dirs
--- scalapack-1.8.0-2/debian/scalapack-openmpi-test.dirs	1969-12-31 19:00:00.000000000 -0500
+++ scalapack-1.8.0/debian/scalapack-openmpi-test.dirs	2008-08-14 12:34:26.000000000 -0400
@@ -0,0 +1 @@
+usr/lib/scalapack
diff -urN scalapack-1.8.0-2/SLmake.inc scalapack-1.8.0/SLmake.inc
--- scalapack-1.8.0-2/SLmake.inc	2008-08-14 11:28:24.000000000 -0400
+++ scalapack-1.8.0/SLmake.inc	2008-08-14 12:34:26.000000000 -0400
@@ -33,15 +33,30 @@
 #
 #  MPI setup; tailor to your system if using MPIBLACS
 #
+ifeq ($(MPI),openmpi)
+USEMPI        = -DUsingMpiBlacs
+ifeq ($(BUILD),static)
+SMPLIB        = -L/usr/lib/openmpi/lib/ -lmpi -lmpi_f77
+BLACSFINIT    = /usr/lib/libblacsF77init-openmpi.a
+BLACSCINIT    = /usr/lib/libblacsCinit-openmpi.a
+BLACSLIB      = /usr/lib/libblacs-openmpi.a
+else
+SMPLIB        = -L/usr/lib/openmpi/lib/ -lmpi -lmpi_f77
+BLACSFINIT    = -lblacsF77init-openmpi
+BLACSCINIT    = -lblacsCinit-openmpi
+BLACSLIB      = -lblacs-openmpi
+endif
+TESTINGdir    = $(home)/TESTING
+endif
 ifeq ($(MPI),lam)
 USEMPI        = -DUsingMpiBlacs
 ifeq ($(BUILD),static)
-SMPLIB        = -lmpi
+SMPLIB        = -L/usr/lib/lam/lib -lmpi
 BLACSFINIT    = /usr/lib/libblacsF77init-lam.a
 BLACSCINIT    = /usr/lib/libblacsCinit-lam.a
 BLACSLIB      = /usr/lib/libblacs-lam.a
 else
-SMPLIB        = -lmpi
+SMPLIB        = -L/usr/lib/lam/lib -lmpi
 BLACSFINIT    = -lblacsF77init-lam
 BLACSCINIT    = -lblacsCinit-lam
 BLACSLIB      = -lblacs-lam
@@ -56,7 +71,7 @@
 BLACSCINIT    = /usr/lib/libblacsCinit-mpich.a
 BLACSLIB      = /usr/lib/libblacs-mpich.a
 else
-SMPLIB        = /usr/lib/mpich/lib/libmpich.a
+SMPLIB        = -L/usr/lib/mpich/lib/shared -lmpich
 BLACSFINIT    = -lblacsF77init-mpich
 BLACSCINIT    = -lblacsCinit-mpich
 BLACSLIB      = -lblacs-mpich

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to