Stan Tomov wrote:Hi,
I was wondering if the problem is due to a memory limitation (in which case we have forgotten to check somewhere the result of GPU memory allocation). Can you check if it would work for a fixed smaller size problem, e.g.,
./testing_zgesvd -M 1024 -N 1024
Thanks,
Stan
Thanks Stan. Yes, it seems to be the memory limitation, as smaller matrix (for example 1024*1024) will work.
What's the rule of thumb about how large the marix magma zgesvd can handle per magma implementation? Does the entire matrix is shipped on the Device memory? And how much extra workspace storage needed on the Device?
For example, the 8064*8064 double complex matrix in the testing_zgesvd is 992MB which fails magma on my GTX 470 with 1280MB GPU memory.
Another question: Is the sgesvd a working version?
I also tried using the sgesvd in the testing_zgesvd with the variables changed to float and replacing "z" to "s" in the relevant lapack function names. The sgesvd produces different errors for different size of matrices. I inject some printf checkpoint after every major function calls.
10*10: Segfaults at releasing the memory. But the error of 1.0 is too large.
$>./testing_sgesvd -M 10 -N 10
device 0: GeForce GTX 470, 1215.0 MHz clock, 1279.7 MB memory
device 1: GeForce GTX 470, 1215.0 MHz clock, 1279.7 MB memory
testing_sgesvd -M 10 -N 10
N CPU Time(s) GPU Time(s) ||R||_F / ||A||_F
==========================================================
check point: passed lapackf77_slarnv.
check point: passed lapackf77_slacpy.
check point: passed first magma_sgesvd.
check point: passed h_R=h_A.
check point: passed second magma_sgesvd.
check point: passed lapackf77_sgesvd.
10 0.00 0.00 1.000000e+00
Segmentation fault
100*100: segfaults at calling magma_sgesvd
$>./testing_sgesvd -M 100 -N 100
device 0: GeForce GTX 470, 1215.0 MHz clock, 1279.7 MB memory
device 1: GeForce GTX 470, 1215.0 MHz clock, 1279.7 MB memory
testing_sgesvd -M 100 -N 100
N CPU Time(s) GPU Time(s) ||R||_F / ||A||_F
==========================================================
check point: passed lapackf77_slarnv.
check point: passed lapackf77_slacpy.
Segmentation fault
1000*1000: The first call of magma_sgesvd looks good, but "can not bind to texture" error comes out repeatly at the second call of magma_sgesvd
$>./testing_sgesvd -M 100 -N 100
device 0: GeForce GTX 470, 1215.0 MHz clock, 1279.7 MB memory
device 1: GeForce GTX 470, 1215.0 MHz clock, 1279.7 MB memory
testing_sgesvd -M 1000 -N 1000
N CPU Time(s) GPU Time(s) ||R||_F / ||A||_F
==========================================================
check point: passed lapackf77_slarnv.
check point: passed lapackf77_slacpy.
check point: passed first magma_sgesvd.
check point: passed h_R=h_A.
can not bind to texture
can not bind to texture
..........(thousands of lines of "can not bind to texture")
can not bind to texture
can not bind to texture
check point: passed second magma_sgesvd.
check point: passed lapackf77_sgesvd.
1000 4.36 6.70 nan
Segmentation fault
Thank you.