pfunit: add mpi-test patch (#9387)
This commit is contained in:
parent
583617ed67
commit
d149ab63a9
35
var/spack/repos/builtin/packages/pfunit/mpi-test.patch
Normal file
35
var/spack/repos/builtin/packages/pfunit/mpi-test.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
From Ferenbaugh, Charles <cferenba@lanl.gov>
|
||||||
|
|
||||||
|
This patch modifies pfunit to be usable by codes that have MPI_COMM_WORLD hardcoded
|
||||||
|
as their communicator, by skipping over any tests whose PE count does not match the
|
||||||
|
size of the current MPI_COMM_WORLD.
|
||||||
|
--- pFUnit-3.2.8/source/TestSuite.F90 2016-09-05 17:55:26.000000000 -0600
|
||||||
|
+++ pFUnit-3.2.8.mod1/source/TestSuite.F90 2017-01-04 12:41:24.818441000 -0700
|
||||||
|
@@ -117,6 +117,9 @@
|
||||||
|
end subroutine run
|
||||||
|
|
||||||
|
recursive subroutine addTest(this, aTest)
|
||||||
|
+#ifdef USE_MPI
|
||||||
|
+ use MpiTestCase_mod
|
||||||
|
+#endif
|
||||||
|
class (TestSuite), intent(inout) :: this
|
||||||
|
class (Test), intent(in) :: aTest
|
||||||
|
#ifdef DEFERRED_LENGTH_CHARACTER
|
||||||
|
@@ -129,6 +134,17 @@
|
||||||
|
integer :: suiteNameLength
|
||||||
|
integer :: testNameLength
|
||||||
|
#endif
|
||||||
|
+#ifdef USE_MPI
|
||||||
|
+ integer :: numpe, error
|
||||||
|
+ include 'mpif.h'
|
||||||
|
+
|
||||||
|
+ select type (t => aTest)
|
||||||
|
+ class is (MpiTestCase)
|
||||||
|
+ call MPI_Comm_size(MPI_COMM_WORLD, numpe, error)
|
||||||
|
+ if (t%getNumProcessesRequested() /= numpe) return
|
||||||
|
+ end select
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
call extend(this%tests)
|
||||||
|
allocate(this%tests(this%getNumTests())%pTest, source=aTest)
|
||||||
|
#ifdef DEFERRED_LENGTH_CHARACTER
|
@ -22,12 +22,16 @@ class Pfunit(CMakePackage):
|
|||||||
variant('shared', default=True,
|
variant('shared', default=True,
|
||||||
description='Build shared library in addition to static')
|
description='Build shared library in addition to static')
|
||||||
variant('mpi', default=False, description='Enable MPI')
|
variant('mpi', default=False, description='Enable MPI')
|
||||||
|
variant('use_comm_world', default=False, description='Enable MPI_COMM_WORLD for testing')
|
||||||
variant('openmp', default=False, description='Enable OpenMP')
|
variant('openmp', default=False, description='Enable OpenMP')
|
||||||
variant('docs', default=False, description='Build docs')
|
variant('docs', default=False, description='Build docs')
|
||||||
|
|
||||||
depends_on('python@2.7:', type=('build', 'run')) # python3 too!
|
depends_on('python@2.7:', type=('build', 'run')) # python3 too!
|
||||||
depends_on('mpi', when='+mpi')
|
depends_on('mpi', when='+mpi')
|
||||||
|
|
||||||
|
conflicts("use_comm_world", when="~mpi")
|
||||||
|
patch("mpi-test.patch", when="+use_comm_world")
|
||||||
|
|
||||||
def patch(self):
|
def patch(self):
|
||||||
# The package tries to put .mod files in directory ./mod;
|
# The package tries to put .mod files in directory ./mod;
|
||||||
# spack needs to put them in a standard location:
|
# spack needs to put them in a standard location:
|
||||||
|
Loading…
Reference in New Issue
Block a user