bug-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-gsl] Various test failures for Solaris x86/SPARC 32/64-bit with


From: Dr. David Kirkby (Kirkby Microwave Ltd)
Subject: Re: [Bug-gsl] Various test failures for Solaris x86/SPARC 32/64-bit with libgsl 2.3
Date: Mon, 15 May 2017 21:56:28 +0100

An issue is that the SPARC uses 64-bit for the FPU, whereas an Intel chip
uses 80 bits internally, and finally rounds the result to 64 bits. This
does cause some small differences in floating point calculations between
the two types of processors.

Dave

Dr. David Kirkby Ph.D CEng MIET
Kirkby Microwave Ltd
Registered office: Stokes Hall Lodge, Burnham Rd, Althorne, Essex, CM3 6DT,
UK.
Registered in England and Wales, company number 08914892.
http://www.kirkbymicrowave.co.uk/
Tel: 07910 441670 / +44 7910 441670 (0900 to 2100 GMT only please)

On 15 May 2017 at 20:45, Rich Burridge <address@hidden> wrote:

> Hi,
>
> I recently updated the version of libgsl in Solaris to 2.3 and saw some
> test
> failures for the linalg, multifit and multilarge_nlinear tests.
>
> These were:
>
> 32-bit x86:
> -----------
>
> multilarge_nlinear/test-suite.log:
> ...
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [11113]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [11114]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [11117]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [11118]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [11621]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [11622]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [11625]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [11626]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [12129]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [12130]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [12133]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [12134]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [12637]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [12638]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=0 (1.09815933187144788e-05 observed vs 1.09815932969975976e-05 expected)
> [12641]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=1 (9.10614672185895024 observed vs 9.10614673986700218 expected) [12642]
>
> ----
>
> 64-bit x86:
> -----------
>
> multifit/test-suite.log:
> ...
> FAIL: shaw gcv: n=20 p=20 lambda (1.24921780935065999e-05 observed vs
> 1.24921780949051038e-05 expected) [21908]
>
> multilarge_nlinear/test-suite.log:
> [same as the 32-bit x86 failures]
>
> ----
>
> 32-bit SPARC:
> -------------
>
> linalg/test-suite.log:
> ...
> FAIL: cholesky_decomp unscaled hilbert: ( 11, 11)[9,10]:
> 0.0499999999999999889    0.0500000000000000028
>  (0.0499999999999999889 observed vs 0.0500000000000000028 expected)
> [273573]
> FAIL: cholesky_decomp unscaled hilbert: ( 11, 11)[10,9]:
> 0.0499999999999999889    0.0500000000000000028
>  (0.0499999999999999889 observed vs 0.0500000000000000028 expected)
> [273583]
> FAIL: cholesky_decomp unscaled hilbert: ( 12, 12)[8,8]:
> 0.0588235294117646912    0.0588235294117647051
>  (0.0588235294117646912 observed vs 0.0588235294117647051 expected)
> [274098]
> FAIL: cholesky_decomp unscaled hilbert: ( 12, 12)[8,10]:
> 0.052631578947368432    0.0526315789473684181
>  (0.052631578947368432 observed vs 0.0526315789473684181 expected) [274100]
> FAIL: cholesky_decomp unscaled hilbert: ( 12, 12)[9,9]:
> 0.0526315789473684043    0.0526315789473684181
>  (0.0526315789473684043 observed vs 0.0526315789473684181 expected)
> [274111]
> FAIL: cholesky_decomp unscaled hilbert: ( 12, 12)[10,8]:
> 0.052631578947368432    0.0526315789473684181
>  (0.052631578947368432 observed vs 0.0526315789473684181 expected) [274122]
>
> multilarge_nlinear/test-suite.log:
> ...
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [3342]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/weighted/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [3348]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [3578]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/weighted/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [3584]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [3886]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/weighted/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [3892]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [4122]
> FAIL: 
> trust-region/levenberg-marquardt+accel/solver=cholesky/scale=more/weighted/kowalik
> i=1 (0.191282309709890019 observed vs 0.191282329034459908 expected) [4128]
> ...
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [11113]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [11114]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [11117]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [11118]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [11621]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [11622]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [11625]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=levenberg/weighted/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [11626]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [12129]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [12130]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [12133]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [12134]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [12637]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [12638]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=0 (1.09815933187144822e-05 observed vs 1.09815932969975976e-05 expected)
> [12641]
> FAIL: 
> trust-region/steihaug-toint/solver=cholesky/scale=more/weighted/powell_badly_scaled
> i=1 (9.10614672185894847 observed vs 9.10614673986700218 expected) [12642]
>
> ----
>
> 64-bit SPARC:
> -------------
>
> linalg/test-suite.log:
> [same as the 32-bit SPARC failures]
>
> multilarge_nlinear/test-suite.log:
> [same as the 32-bit SPARC failures]
>
> ----
>
> I don't know if they are correct or not, but the following changes made all
> the tests successfully pass on both architectures and both platforms.
>
>
> --- gsl-2.3/linalg/test_cholesky.c.orig 2017-05-15 10:24:36.556039332
> +0000
> +++ gsl-2.3/linalg/test_cholesky.c      2017-05-15 11:18:13.319778592
> +0000
> @@ -235,7 +235,7 @@
>
>            create_hilbert_matrix2(m);
>
> -          test_cholesky_decomp_eps(0, m, expected_rcond, GSL_DBL_EPSILON,
> "cholesky_decomp unscaled hilbert");
> +          test_cholesky_decomp_eps(0, m, expected_rcond, N *
> GSL_DBL_EPSILON, "cholesky_decomp unscaled hilbert");
>            test_cholesky_decomp_eps(1, m, expected_rcond, N *
> GSL_DBL_EPSILON, "cholesky_decomp scaled hilbert");
>          }
>
> @@ -490,7 +490,7 @@
>
>            create_hilbert_matrix2(m);
>
> -          test_mcholesky_decomp_eps(1, 0, m, expected_rcond, N *
> GSL_DBL_EPSILON, "mcholesky_decomp unscaled hilbert");
> +          test_mcholesky_decomp_eps(1, 0, m, expected_rcond, 128.0 * N *
> GSL_DBL_EPSILON, "mcholesky_decomp unscaled hilbert");
>          }
>
>        gsl_matrix_free(m);
> @@ -798,8 +798,8 @@
>
>            create_hilbert_matrix2(m);
>
> -          test_pcholesky_decomp_eps(0, m, expected_rcond, N *
> GSL_DBL_EPSILON, "pcholesky_decomp unscaled hilbert");
> -          test_pcholesky_decomp_eps(1, m, expected_rcond, N *
> GSL_DBL_EPSILON, "pcholesky_decomp scaled hilbert");
> +          test_pcholesky_decomp_eps(0, m, expected_rcond, 1024.0 * N *
> GSL_DBL_EPSILON, "pcholesky_decomp unscaled hilbert");
> +          test_pcholesky_decomp_eps(1, m, expected_rcond, 1024.0 * N *
> GSL_DBL_EPSILON, "pcholesky_decomp scaled hilbert");
>          }
>
>        gsl_matrix_free(m);
> --- gsl-2.3/multifit/test_shaw.c.orig   2017-05-15 09:07:06.619430969
> +0000
> +++ gsl-2.3/multifit/test_shaw.c        2017-05-15 09:07:57.168983039 +0000
> @@ -227,7 +227,7 @@
>  {
>    const size_t npoints = 200; /* number of points on L-curve */
>    const double tol1 = 1.0e-12;
> -  const double tol2 = 1.0e-10;
> +  const double tol2 = 1.0e-9;
>    const double tol3 = 1.0e-5;
>    gsl_vector * reg_param = gsl_vector_alloc(npoints);
>    gsl_vector * G = gsl_vector_alloc(npoints);
> --- gsl-2.3/multilarge_nlinear/test_kowalik.c.orig      2017-05-15
> 11:26:18.772136287 +0000
> +++ gsl-2.3/multilarge_nlinear/test_kowalik.c   2017-05-15
> 11:26:29.094571287 +0000
> @@ -2,7 +2,7 @@
>  #define kowalik_P         4
>
>  static double kowalik_x0[kowalik_P] = { 0.25, 0.39, 0.415, 0.39 };
> -static double kowalik_epsrel = 1.0e-7;
> +static double kowalik_epsrel = 1.0e-6;
>
>  static double kowalik_J[kowalik_N * kowalik_P];
>
> --- gsl-2.3/multilarge_nlinear/test_powell3.c.orig      2017-05-15
> 08:33:00.118711090 +0000
> +++ gsl-2.3/multilarge_nlinear/test_powell3.c   2017-05-15
> 08:26:53.994741919 +0000
> @@ -2,7 +2,7 @@
>  #define powell3_P         2
>
>  static double powell3_x0[powell3_P] = { 0.0, 1.0 };
> -static double powell3_epsrel = 1.0e-10;
> +static double powell3_epsrel = 1.0e-6;
>
>  static double powell3_J[powell3_N * powell3_P];
>
>
> I believe the tolarance changes are needed because we use the BLAS routines
> provided by the Studio libsunperf library on Solaris for performance
> (instead
> of the CBLAS ones).
>
> I can easily patch our version of libgsl for these changes, but it would be
> nice if you could make similar changes to the master sources (assuming they
> are the correct ones).
>
> Thanks.
>
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]