20 views (last 30 days)

Show older comments

Hi,

I have matrix A with 7936*7936 dimensions. I use eig to find its eigenvalues and eigenvectors, the command is [vect,eigen]=eig(A). But if I perform this calculations on GPU, it is more slower than cpu. My code on GPU is as follows

A=rand(7936,7936,'gpuArray');

[vect,eigen]=eig(A);

I do not know why is this calculations on GPU is so slowly? Are there some other good methods to accelerate the eig on GPU?

Thanks very much!

Matt J
on 23 Oct 2021

Edited: Matt J
on 23 Oct 2021

It might be a question of your hardware. On the GTX 1050 in R2020b, I see only about a 10% speed-up in double precision and about 50% in single-precision. On the GTX 1080 Ti in R2020a, I see a factor of 2 speed-up at both precisions.

gd=gpuDevice;

Ac=rand(2500);

Ag=gpuArray(Ac);

tic;

[vect,eigen]=eig(Ac);

toc;

tic;

[vect,eigen]=eig(Ag);

wait(gd)

toc

Elapsed time is 9.484250 seconds.

Elapsed time is 5.183906 seconds.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!