Re: GLPSOL in webassemby faster than native ?

Michael Hennebry <[email protected]> Sun, 27 Sep 2020 14:08:06 -0500 (CDT)
Newsgroups gmane.comp.gnu.glpk
Message-ID <[email protected]>
On Sat, 26 Sep 2020, Domingo Alvarez Duarte wrote:

> I did a revision of the usage of "glp_long_double" see here 
> https://github.com/mingodad/GLPK/commit/4941d1633e52b802bdc5f102715ac3db25db5245
>
> ====
>
> Revised usage of glp_long_double, now it does solve hashi.mod and tiling.mod 
> faster with "--cuts" option but hashi.mod without it's a lot slower.
>
> ====
>
> - Standard glpsolĀ  => 67.6 secs
>
> - glpsol with some "long double" => 3.1 secs

I'd expect strategic use of long double to affect accuracy,
but not to have a consistent effect on speed.

Iterative refinement is one place where computing
with extra precision would be especially useful.

Note that long double=double*double raises at least three possibilities:
The product is done as double*double and assigned to long double.
The product is done as long double*long double and
converted to double before being assigned to long double.
The product is done as long double*long double and assigned to long double.
Casting a factor to long double would ensure the third.
The second really should not happen, as the product is a sub-expression,
but I would not be surprised to se it.

Storing some things as floats could speed up memory bound computations.
The constraint matrix comes to mind.
An all-integer constraint matrix with absolute values
less than 16 million could be represented exactly.
Storing them as 32-bit ints would extend the range..

Matrix factors might not be so good an idea.
It might work, but the criteria for detecting
singularity would likely have to be relaxed.

-- 
Michael   [email protected]
"Sorry but your password must contain an uppercase letter, a number,
a haiku, a gang sign, a heiroglyph, and the blood of a virgin."
                                                              --  someeecards