# using eig to find the eigenvalues and eigenvectors of a large matrix on GPU

19 ビュー (過去 30 日間)
Qiu Xu 2021 年 10 月 23 日
コメント済み: Matt J 2021 年 10 月 26 日
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!
##### 2 件のコメント表示非表示 1 件の古いコメント
Qiu Xu 2021 年 10 月 23 日
Thanks for your reply. I have tested for swithc the matrix to single, but is also very slowly, it looks like the GPU does not work, and the calclulation is still performed on CPU.

サインインしてコメントする。

### 採用された回答

Matt J 2021 年 10 月 23 日

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.
##### 7 件のコメント表示非表示 6 件の古いコメント
Matt J 2021 年 10 月 26 日
How to check the memory used by the GPU data?
gpuDevice() will display that.

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!

Translated by