Page 1 of 1

Premium version issues

PostPosted: Thu Oct 28, 2010 8:34 am
by langland
My system: windows XP 64,
GPU: quadro FX 570

1, I bought premium academic version for $95 and found out it seems has no difference than the basic version? For example I ran the gesv example and the premium part (marked by "#ifdef CULA_PREMIUM")didn't run. I followed the link from the invoice mail you sent to me and downloaded the package. If I did something wrong or missing something please tell me.

2, How can I call "GESV (Iteratively Refined)"? Because there's no help on how to get this iteratively refined function, no examples also. And this is the major reason why I bought premium version.

3, I can post a new topic in private forum which you said users who bought premium version can get support there.

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 8:57 am
by john
It sounds like you are still looking at an installation of CULA Basic. Check the headers in the include directory - they should be somewhere around 200-300 lines in length for Premium. If they are around 50 lines, then they're still Basic. Same for question 2 - a Premium installation will describe this function in the API reference.
For question 3, the private support is not a feature of the academic version as per http://www.culatools.com/user/signup.php

Your card, the FX 570, is compute model 1.1 which means that it does not have double precision hardware. It will be unable to run the refined GESV solver - you will be restricted to single precision for all routines. Even for singles, the card might not perform as well as you hope, as it has only 16 CUDA cores (compared to 448 for the C2050).

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 9:16 am
by langland
I guess I downloaded the wrong version then? How can I download the premium though? I followd the link and I got 4 files:

cula_premium_2.0-win32.exe
cula_premium_2.0-win64.exe
cula_premium_2.1-win32.exe
cula_premium_2.1-win64.exe

These looks like premium to me?

however I just checked the header file cula.h/hpp, they're 47 lines. So is the downloading link wrong? If that is can you give me the right link?

I know FX 570 doesn't support double, however it will show "DGesv" if it is the premium. We're getting a newst testla C2070.

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 10:23 am
by john
Definitely use CULA Premium 2.1 - win64. Try uninstalling first and then installing a fresh copy from the Premium exe. I have personally just doublechecked that the Premium 2.1 Win64 installer is correct.

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 11:31 am
by langland
Ok I just unisntalled what I had and reinstalled the cula_premium_2.1-win64.exe. I checked before the installation and made sure that the old ones was deleted and the new one is installed into the default directory.

however, I'm still having the same problem, I'm looking at the gesv.c from example folders and this part "#ifdef CULA_PREMIUM
culaDoubleExample();
culaDoubleComplexExample();
#endif"

is still not working. Also the cula.h/hpp are still 47 lines, indicating this is not the premium version.

Any clue why is this happening?

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 12:27 pm
by john
The cula.h is a convenience header and doesn't change in size - how about the culapack.h files? Those are the ones that declare the meaty functions.

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 1:14 pm
by langland
culapack.h has 202 lines. Does this mean it is the premium version?

I found culaDgesv funtion, however according to the reference manual there's a GESV (Iteratively Refined) version? Since I know my matrices are more suited for iterative solving method. How can I find/get to call this feature?

Re: Premium version issues

PostPosted: Thu Oct 28, 2010 5:16 pm
by kyle

Re: Premium version issues

PostPosted: Fri Oct 29, 2010 6:48 am
by langland
GESV first attempts to factorize the matrix in single-precision and use this factorization within an iterative refinement procedure to produce a solution with double-precision normwise backward error quality (see below). If the approach fails the method switches to a double-precision factorization and solve.

I read this and am still confusing.

According to this paragraph, even if I called culadgesv, will it still try single-precision first factorization first? which kind of factorization does it use? what iterative procedure will it use?

Like I said in my last post, I know the property of my matrices and I know at least LU fac will do no good, iterative method fits the best for my problems. The reference leave these details in mystery which I need to know.

Re: Premium version issues

PostPosted: Fri Oct 29, 2010 7:28 am
by kyle
The "iterative" GESV is still an LU based direct solver for double precision data; It simply takes advantage of that fact that on some older CUDA GPUs the single precession hardware is many times (up to 8x) faster than the double precision hardware.

The solver will internally demote a double precision matrix to single precision, solve using LU in single precision, check the answer, refine for more accuracy, and solve again if needed. This process is repeated until a "double" accurate answer is found.

For some data sets (when combined with hardware where single precision performance is much greater than double precision performance), this will result in a faster solution than a direct double precision solution.

Hope this helps.

Re: Premium version issues

PostPosted: Fri Oct 29, 2010 8:20 am
by langland
Thanks for the reply, however the answer is disappointing. I expected the "iterative" version is using some iterative algorithm.

Re: Premium version issues

PostPosted: Fri Oct 29, 2010 12:09 pm
by john
It uses iterative refinement.

Are you looking for a true iterative algorithm, such as GMRES, CG, etc? If so, those are not components of LAPACK and are thus not components of CULA. I think you'll find that the GESV routine performs better and produces a more stable answer, in predictable time. Why do you prefer true iterative for this?

The system solution function names are a little confusing. Let me run through:
culaDgesv - will solve, via LU factorization, the system in double precision
culaSgesv - will solve, via LU factorization, the system in single precision
culaDsgesv - will solve, via LU factorization, the system using single precision and then attempt to iteratively refine the result to double precision quality