Error using gpuArray Maximum variable size allowed on the device is exceeded.

>> X = gpuArray(X);
>> Error using gpuArray
>> Maximum variable size allowed on the device is exceeded.
My X has the size
[230227128 10] = size(X)
230227128 x 10 > 2147483647 == int32
I am using
R2019a (9.6.0.1072779)
64-bit (win64)
March 8, 2019
and GPU has 45 GB (RTX 8000 48 GiB).
I am aware that there is a hard limit of GPU memory usage in Matlab.
But it is indeed discouraging and I am trying to write a C++ code to circumvent it.
Can there be a hotfix on this?

답변 (1개)

Joss Knight
Joss Knight 2020년 11월 2일
The NVIDIA libraries that MATLAB uses to do GPU computation store array lengths as 32-bit integers and therefore MATLAB cannot use any of those libraries for arrays with more than intmax('int32') elements. Therefore this is a hard limit on the array size. Try dividing your computation up.

댓글 수: 3

How stupid I am since it took very long time to truly understand that I can really split the data into smaller pieces. Thanks for the advice.
May I know how to split the data then feed it to a function and again combine the result
I am experiencing the same problem. I just started to use a A100 80GB PCIe anticipating to calculate eig() on a single very large matrix close to half of the GPU memory size. And I found this post.
The gpuArray size limit of intmax('uint32') seems to be too restrictive these days. It means I could just use 3090Ti or even 1080Ti since I don't use many gpuArray variables simultaneously.
Is there a MATLAB's plan to increase the gpuArray size limit to intmax('uint64'), or
is there a multi-step numerical algorithm to make the input matrix to eig() smaller and achieve the same end result (I doubt)?

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 GPU Computing in MATLAB에 대해 자세히 알아보기

제품

릴리스

R2019a

태그

질문:

2020년 10월 29일

댓글:

2022년 11월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by