Page 1 of 1


Posted: Tue Apr 17, 2012 11:01 am
by Nicolas_S
I am quite newbie in CUDA and i am very interested in Magma. I try to use magma_dgeev.
I would like my programm to do :
1 - Copy datas from host to device
2 - Execute magma_dgeev
3 - Do other stuff with the results on the device.
4 - Copy results from device to host

In the testing example testing_dgeev.cpp, matrix memory is allocated with cudaMallocHost, that is on the host. My first attemp works the same way, but to achieve "step 3" i need to (re)send the data to the device... Is it possible to keep it there ? I mean, i would rather call magma_dgeev with inputs that are in device memory, and results written in device memory.
How can i do that ?

Thanks !

(and sorry for english mistakes)

Re: magma_dgeev

Posted: Fri May 04, 2012 5:46 pm
by mgates3
The magma dgeev code is a hybrid algorithm -- it uses both the CPU and the GPU to solve the system. Currently magma provides only the interface that takes the data on the CPU. Internally it copies blocks to the GPU during certain operations such as the Hessenberg factorization, while other operations like the QR iteration are done entirely on the CPU. The QR iteration algorithm is not amenable to speedup on the GPU, which is why we use existing CPU code to solve it. So if you send the eigenvalues or eigenvectors to the GPU, you are not re-sending them, as they were computed on the CPU.

Re: magma_dgeev

Posted: Fri May 11, 2012 4:45 am
by Nicolas_S
Thanks for your answer !