News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

Yeppp! High performance mathematical library

Started by Gunther, October 08, 2013, 12:28:08 PM

Previous topic - Next topic

Gunther

Dave,

Quote from: KeepingRealBusy on October 10, 2013, 05:53:48 AM
I guess with a math paper, the translation would probably be accurate in any case.

Dave.

I think no one would read it if it were not written in English. It is the lingua franca in science.

Gunther
You have to know the facts before you can distort them.

Adamanteus

Quote from: Gunther on May 19, 1974, 02:12:08 AM

Good idea. We can try to make our own HPC library. Why not? Any ideas?

Gunther

That's possible to join entusiasts on Math DLL Project, on old site version there is it.

Gunther

Quote from: Adamanteus on October 11, 2013, 08:33:14 AM
That's possible to join entusiasts on Math DLL Project, on old site version there is it.

Couldn't find a HPC approach.

Gunther
You have to know the facts before you can distort them.

Marat Dukhan

Yeppp! author here and ready to answer your questions!

jj2007

Quote from: Marat Dukhan on October 11, 2013, 06:06:32 PM
Yeppp! author here and ready to answer your questions!

Yeppp, that's an excellent service!

Welcome to the Forum. We have some looooong threads aiming at beating the best C compilers with even better hand-crafted assembler. If you have a frequently-used Yeppp! algo that needs a speedup, this is your chance :bgrin:

But of course, some of us will also be interested to produce an interface Yeppp! - Masm. GSL has already one.

Marat Dukhan

Quote from: jj2007 on October 11, 2013, 07:05:51 PM
If you have a frequently-used Yeppp! algo that needs a speedup, this is your chance :bgrin:
All of Yeppp! is a collection of algos which need speedups. Contributors are welcome! :icon14:

Quote from: jj2007 on October 11, 2013, 07:05:51 PM
But of course, some of us will also be interested to produce an interface Yeppp! - Masm.
This is easy. Most of Yeppp! is auto-generated, so one would only need to patch the code-generator.

dedndave

welcome to the forum   :t

i haven't used the library yet, but i have looked it over
looks very interesting   :biggrin:

Gunther

Marat,

first things first: Welcome to the forum.

It's good to know that another experienced programmer is floating around here. I hope you'll have fun.

Gunther
You have to know the facts before you can distort them.

Adamanteus

Quote from: Gunther on October 11, 2013, 09:02:07 AM
Couldn't find a HPC approach.

Gunther

YES - there only algos, but using threads or standalone MPI-like libraries is deal for it - or, "two in one" only modern  :eusa_boohoo:

qWord

Marat Dukhan,

is there any documentation (or literature) on the used methods for approximation? What precision-reference did you use to test the math functions (the folder unit-test/source/math is empty).

regards, qWord
MREAL macros - when you need floating point arithmetic while assembling!

Marat Dukhan

Quote from: qWord on October 12, 2013, 04:29:00 AM
is there any documentation (or literature) on the used methods for approximation? What precision-reference did you use to test the math functions (the folder unit-test/source/math is empty).

The framework I developed for testing performance & accuracy is open sourced at bitbucket.org/MDukhan/hysteria. For accuracy testing it computes functions to 160-bit precision with GMP, and then converts the result to double-double. I also work on mathematical proofs of error bounds, and plan to release a tech report on that.

Gunther

Marat,

Quote from: Marat Dukhan on October 12, 2013, 04:49:15 AM
The framework I developed for testing performance & accuracy is open sourced at bitbucket.org/MDukhan/hysteria. For accuracy testing it computes functions to 160-bit precision with GMP, and then converts the result to double-double. I also work on mathematical proofs of error bounds, and plan to release a tech report on that.

Thank you for your fast reply. Your test framework looks impressive. Is double-double 128 bit? Which kind of error analysis do you use?

Gunther
You have to know the facts before you can distort them.

Marat Dukhan

Quote from: Gunther on October 12, 2013, 05:11:36 AM
Is double-double 128 bit?
Yes, double-double is an unevaluated sum of two doubles. From high-level perspective you can imagine it as double with 106-bit mantissa.

Quote from: Gunther on October 12, 2013, 05:11:36 AM
Which kind of error analysis do you use?
To analyse error of interpolating polynomial, I split function domain into intervals of constant ULP, bound the absolute error of approximation (with Sollya) and evaluation (with Gappa), compute the total ULP error on each interval, and choose the maximum of all intervals. Other kinds of errors (range reduction and reconstruction) are analysed on case-by-case basis.

Gunther

Quote from: Marat Dukhan on October 12, 2013, 05:41:21 AM
To analyse error of interpolating polynomial, I split function domain into intervals of constant ULP, bound the absolute error of approximation (with Sollya) and evaluation (with Gappa), compute the total ULP error on each interval, and choose the maximum of all intervals. Other kinds of errors (range reduction and reconstruction) are analysed on case-by-case basis.

That's the approximation error, of course. My question has two directions. The other is: What's with the numerical stability? Do you use some backward error analysis (introduced by Wilkinson) or an error interval (see my PM)?

Gunther
You have to know the facts before you can distort them.

qWord

Quote from: Marat Dukhan on October 12, 2013, 05:41:21 AMYes, double-double is an unevaluated sum of two doubles. From high-level perspective you can imagine it as double with 106-bit mantissa.
I'm right in when assuming the method described by T.J. Dekker[1]?

Quote from: Marat Dukhan on October 11, 2013, 07:42:32 PM
All of Yeppp! is a collection of algos which need speedups. Contributors are welcome! :icon14:
For the polynomials, it might be possible to reformulate them in such a way that the packed instructions (SSE2, add/mulpd) can be used.

[1]T.J. Dekker, "A Floating-Point Technique for Extending the Available Precision", Springer
MREAL macros - when you need floating point arithmetic while assembling!