← Back to team overview

dolfin team mailing list archive

Re: [Bug 424159] Re: Reaction demo fails when GMP is enabled

 

I'd be very surprised if this doesn't affect all platforms. The problem is
that the precision in GMP isn't set correctly which leads to different
real variables having different precision. This should be solved when
Anders have merged.

Anders: I just commit'ed a small update which change a call til error() to
warning() so the demoes are allowed to run even without calling
dolfin_set_precision(). This changeset should also be pushed to dolfin.

Sorry, I'm don't know Launchpad very well. Should a reply like this be
posted to dolfin-dev or (in this case) 424159@xxxxxxxxxxxxxxxxxx?

Benjamin

> I can confirm that this affects 32-bit systems.
>
> --
> Reaction demo fails when GMP is enabled
> https://bugs.launchpad.net/bugs/424159
> You received this bug notification because you are subscribed to DOLFIN.
>
> Status in DOLFIN: Confirmed
>
> Bug description:
> [ Testing Launchpad's email interface [0]. ]
>
> Hi,
>
> There is a problem with demo/ode/reaction/cpp when GMP is enabled. I have
> the latest from HG of all FEniCS packages and this is the output I get
> when I run the demo:
>
> $ ./demo
> Reaction ODE demo needs to be fixed.
> Using 128 bits per digit, eps = 4.701977e-39
> Creating ODE of size 3191.
> Solving ODE over the time interval [0.0, 0.01]
>   Solving primal problem
>     *** Warning: PythonFile: Precision lost. Values will be saved with
> double precision
>     Initializing continuous Galerkin method cG(1).
>     Using multi-adaptive fixed-point solver.
>     Using discrete tolerance tol = 1e-06....
>     Computing transpose (inverse) of dependency pattern.
>     Time-stepping over the time interval [0, 0.01]
>       *** Warning: Time slab system did not converge.
>       Direct fixed-point iteration does not converge.
>       Trying diagonally damped fixed-point iteration.
>       Rejecting time slab K = 1.000e-05, trying again.
>       Rejecting time slab K = 8.205e-06, trying again.
>       Rejecting time slab K = 6.317e-06, trying again.
>       Rejecting time slab K = 4.628e-06, trying again.
> demo: dolfin/ode/MultiAdaptiveTimeSlab.cpp:939: void
> dolfin::MultiAdaptiveTimeSlab::cg_feval(dolfin::real*, dolfin::uint,
> dolfin::uint, dolfin::uint, dolfin::real, dolfin::real, dolfin::real):
> Assertion `e1 != -1' failed.
> [simula-x61:25117] *** Process received signal ***
> [simula-x61:25117] Signal: Aborted (6)
> [simula-x61:25117] Signal code:  (-6)
> [simula-x61:25117] [ 0] [0xb7f8b440]
> [simula-x61:25117] [ 1] /lib/tls/i686/cmov/libc.so.6(abort+0x101)
> [0xb5b82a01]
> [simula-x61:25117] [ 2] /lib/tls/i686/cmov/libc.so.6(__assert_fail+0xee)
> [0xb5b7a10e]
> [simula-x61:25117] [ 3]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin21MultiAdaptiveTimeSlab8cg_fevalEP10__gmp_exprIA1_12__mpf_structS3_EjjjS4_S4_S4_+0x133a)
> [0xb7e9216a]
> [simula-x61:25117] [ 4]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin29MultiAdaptiveFixedPointSolver9iterationE10__gmp_exprIA1_12__mpf_structS3_EjS4_S4_+0xded)
> [0xb7eb3b8d]
> [simula-x61:25117] [ 5]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin14TimeSlabSolver5solveEj+0x17b)
> [0xb7e896bb]
> [simula-x61:25117] [ 6]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin14TimeSlabSolver5solveEv+0x42)
> [0xb7e89eb2]
> [simula-x61:25117] [ 7]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin21MultiAdaptiveTimeSlab5solveEv+0x117)
> [0xb7e8f057]
> [simula-x61:25117] [ 8]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin11TimeStepper4stepERNS_11ODESolutionE10__gmp_exprIA1_12__mpf_structS5_ES6_+0x204)
> [0xb7ea70c4]
> [simula-x61:25117] [ 9]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin11TimeStepper4stepERNS_11ODESolutionE+0x84)
> [0xb7ea75c4]
> [simula-x61:25117] [10]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin11TimeStepper5solveERNS_11ODESolutionE10__gmp_exprIA1_12__mpf_structS5_ES6_+0x149)
> [0xb7ea80d9]
> [simula-x61:25117] [11]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin11TimeStepper5solveERNS_11ODESolutionE+0x66)
> [0xb7ea8426]
> [simula-x61:25117] [12]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin9ODESolver12solve_primalERNS_11ODESolutionE+0x72)
> [0xb7ea54e2]
> [simula-x61:25117] [13]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin9ODESolver5solveERNS_11ODESolutionE+0x95)
> [0xb7ea5635]
> [simula-x61:25117] [14]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin9ODESolver5solveEv+0x4b)
> [0xb7ea5a1b]
> [simula-x61:25117] [15]
> /home/johannr/src/hg/dolfin/local/lib/libdolfin.so.0(_ZN6dolfin3ODE5solveEv+0x3e)
> [0xb7e9a51e]
> [simula-x61:25117] [16] ./demo(main+0x454) [0x805a314]
> [simula-x61:25117] [17]
> /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0) [0xb5b6c450]
> [simula-x61:25117] [18]
> ./demo(_ZN6dolfin3ODE2JTEPK10__gmp_exprIA1_12__mpf_structS3_EPS4_S6_S4_+0x101)
> [0x8059d71]
> [simula-x61:25117] *** End of error message ***
> Aborted
>
>
> Using gdb I get this:
>
> Program received signal SIGABRT, Aborted.
> [Switching to Thread 0xb57c36c0 (LWP 25525)]
> 0xb7f57410 in __kernel_vsyscall ()
> (gdb) where
> #0  0xb7f57410 in __kernel_vsyscall ()
> #1  0xb5b4d085 in raise () from /lib/tls/i686/cmov/libc.so.6
> #2  0xb5b4ea01 in abort () from /lib/tls/i686/cmov/libc.so.6
> #3  0xb5b4610e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
> #4  0xb7e5e16a in dolfin::MultiAdaptiveTimeSlab::cg_feval (this=0x8385ef8,
> f=0x841f344, s0=0, e0=3188, i0=3188,
>     a0=@0xbf84d074, b0=@0xbf84d064, k0=@0xbf84d054) at
> dolfin/ode/MultiAdaptiveTimeSlab.cpp:939
> #5  0xb7e7fb8d in dolfin::MultiAdaptiveFixedPointSolver::iteration
> (this=0x841f368, tol=@0xbf84d22c, iter=0,
>     d0=@0xbf84d21c, d1=@0xbf84d20c) at
> dolfin/ode/MultiAdaptiveFixedPointSolver.cpp:151
> #6  0xb7e556bb in dolfin::TimeSlabSolver::solve (this=0x841f368,
> attempt=0) at dolfin/ode/TimeSlabSolver.cpp:71
> #7  0xb7e55eb2 in dolfin::TimeSlabSolver::solve (this=0x841f368) at
> dolfin/ode/TimeSlabSolver.cpp:51
> #8  0xb7e5b057 in dolfin::MultiAdaptiveTimeSlab::solve (this=0x8385ef8) at
> dolfin/ode/MultiAdaptiveTimeSlab.cpp:118
> #9  0xb7e730c4 in dolfin::TimeStepper::step (this=0xbf84d5cc,
> u=@0xbf84d6d0, t0=@0xbf84d44c, t1=@0xbf84d45c)
>     at dolfin/ode/TimeStepper.cpp:96
> #10 0xb7e735c4 in dolfin::TimeStepper::step (this=0xbf84d5cc,
> u=@0xbf84d6d0) at dolfin/ode/TimeStepper.cpp:78
> #11 0xb7e740d9 in dolfin::TimeStepper::solve (this=0xbf84d5cc,
> u=@0xbf84d6d0, t0=@0xbf84d57c, t1=@0xbf84d58c)
>     at dolfin/ode/TimeStepper.cpp:67
> #12 0xb7e74426 in dolfin::TimeStepper::solve (this=0xbf84d5cc,
> u=@0xbf84d6d0) at dolfin/ode/TimeStepper.cpp:54
> #13 0xb7e714e2 in dolfin::ODESolver::solve_primal (this=0xbf84d868,
> u=@0xbf84d6d0) at dolfin/ode/ODESolver.cpp:64
> #14 0xb7e71635 in dolfin::ODESolver::solve (this=0xbf84d868,
> u=@0xbf84d6d0) at dolfin/ode/ODESolver.cpp:44
> #15 0xb7e71a1b in dolfin::ODESolver::solve (this=0xbf84d868) at
> dolfin/ode/ODESolver.cpp:33
> #16 0xb7e6651e in dolfin::ODE::solve (this=0xbf84d8a8) at
> dolfin/ode/ODE.cpp:230
> #17 0x0805a314 in main () at main.cpp:106
> (gdb)
>
>
> If I reduce the size of the variable N from 5000 to 3190, the demo runs
> fine.
>
> diff -r 717eaa11d058 demo/ode/reaction/cpp/main.cpp
> --- a/demo/ode/reaction/cpp/main.cpp	Thu Sep 03 11:10:26 2009 +0200
> +++ b/demo/ode/reaction/cpp/main.cpp	Thu Sep 03 14:34:57 2009 +0200
> @@ -89,7 +89,7 @@
>    const real epsilon = 0.01;
>    const real gamma = 1000.0;
>    const real L = 1.0;
> -  const unsigned int N = 5000;
> +  const unsigned int N = 3190;
>
>    // Create ODE
>    Reaction ode(N, T, L, epsilon, gamma);
>
> It only seems to affect 32 bits systems since both hardy-i386 [1] and
> mac-osx [2] buildbot slaves has this problem while the demo runs fine on
> jaunty-amd64 and linux64-exp.
>
> The demo also runs fine when GMP is disabled.
>
> [0] https://help.launchpad.net/Bugs/EmailInterface
> [1]
> http://fenics.org:8080/builders/dolfin-hardy-i386/builds/770/steps/dolfin%20check/logs/demo.log
> [2]
> http://fenics.org:8080/builders/dolfin-mac-osx/builds/719/steps/dolfin%20check/logs/demo.log
>
>  affects dolfin
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
>




Follow ups

References