Tus comentarios

I am afraid, quality extended-precision library for GPU is non-existent. 


Toolbox provides state-of-the-art performance on CPU. Special GPU version of toolbox is under development, but there is no strict plans on its release.

Dear Abhranil,


Thank you for your question.


At the moment, toolbox doesn't support computations on GPU. 

The quote you mention, refers to possible merits of implementing quadruple precision computations on GPU.

But this has not been done yet.


SVD decomposition in toolbox is well optimized for parallel execution. Its performance scales almost linearly with number of CPU cores. Try using CPU with more cores. On my six-core I have got 51 seconds:


>> A = rand(1000,'mp');
>> tic; [U,S,V] = svd(A); toc;
Elapsed time is 50.972569 seconds.


What is your target usage pattern of SVD (compute just once or many times)?

Please check this section in our User Manual:

https://www.advanpix.com/documentation/users-manual/#More_on_Existing_Code_Porting


It shows few examples of difference between precision & accuracy.

And, of course, I would also suggest to use powerful computer with multi-core CPU, etc. 

Laptops are not usable for any serious computations (if you happen to use the one).

It depends on situation. In general it is better to compute everything as 'mp' from the onset. 

But in some cases, e.g. ill-conditioning is localized only in one operation or your data came from real world measurements (and thus in low-precision) - then 'mp' can be applied only at some particular place.


Knowing nothing about your problem, I would suggest to try both ways and see the difference.

If you use octuple precision most of the times, you can put the mp.Digits(71) into mpstartup.m.

This will make it the default precision for every MATLAB/toolbox session.

By the way, please update toolbox to the latest version (if you use older one). 

Now it has EIGS and many other improvements....

Dear Ginette,


First of all, I am very happy to here from you! 

Hope you are doing fine and everything is good.


As for octuple precision, if we setup mp.Digits(71), toolbox will provide computations with ~99% compatibility with the standard. The only major difference would be exponent size  - IEEE requires 19 bits, whereas toolbox uses 32 bits (for better compatibility with CPU registers). 


Basically, if numbers stay inside IEEE exponent range (=most common case) - than computations with toolbox will be fully compatible with the standard. And also reproducible on different platforms.


In general, toolbox follows IEEE guidelines and requirements in implementation of arbitrary precision computations.

***


Maybe I am missing something here, do you have some particular compatibility test in mind?