cusolverDnXsyevd_buffersize failed, istat=3

Hello!

I tried diagonalizing a matrix of size 26700 (both complex and real 8) using cusolverDnXsyevd (which can handle all S,C,D,Z single and double precision of real and complex numbers) because cusolverDnZheevd failed due to int32 limit. But now, even with this 64bit DnXsyevd version, it does not let me go till 27000 and beyond, and it keeps throwing the error: “cusolverDnXsyevd_bufferSize failed, istat= 3” which suggests CUSOLVER_STATUS_INVALID_VALUE. I can still agree that for complex(8) matrices it fails (since they occupy double the memory as compared to real(8) ones), but how did it fail for real(8) too?

I have an example of a successful run, wherein I also print the int32 and int64 max limits, as well as size of workspace arrays…

cusolverDnXsyevd demo (ZHEEVD via generic API)

Matrix size: 26700 x 26700

workspace bytes on device = 45679742256
workspace bytes on host = 0
INT_MAX 32-bit= 2147483647
INT_MAX 64-bit= 9223372036854775807
device workspace (GiB) = 42.543 GiB
host workspace (GiB) = 0.000 GiB
cusolverDnXsyevd execution time: 59.220662 seconds
devInfo = 0
Eigenvalues (first 10):
-1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00 -1.000000E+00

And by the way, I am using an A100 80GB machine. “nvidia-smi” gives the following output:

Wed Feb 11 14:19:01 2026
±----------------------------------------------------------------------------------------+
| NVIDIA-SMI 590.44.01 Driver Version: 590.44.01 CUDA Version: 13.1 |
±----------------------------------------±-----------------------±---------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A100 80GB PCIe On | 00000000:01:00.0 Off | 0 |
| N/A 31C P0 46W / 300W | 0MiB / 81920MiB | 0% Default |
| | | Disabled |
±----------------------------------------±-----------------------±---------------------+

±----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
±----------------------------------------------------------------------------------------+

Hi sk99, thanks for reaching out. The size limitations of cusolverDnXsyevd should have been removed with CUDA Toolkit 13.0. I see that you have a 13.1 Driver installed, but could you please confirm the cuSOLVER version you are using?

Thanks for reaching out to me, christophk.

I’m using CUDA Toolkit 12.8 (module CUDA/12.8.0 via NVHPC/25.3-CUDA-12.8.0).
cuSOLVER reports CUSOLVER_VER_MAJOR=11, MINOR=7, PATCH=2 from cusolver_common.h, and the library present is libcusolver.so.11.7.2.55 (SONAME libcusolver.so.11).

Is this what you were looking for?

Yes, thanks for the details. The limitation you are seeing is expected for the CUDA Toolkit you are working with. Switching to a CUDA Toolkit 13.0 or newer should remove the limitation. You can also find the corresponding information in the release notes for 13.0.

Thanks a lot for your answer. One more question: which module of NVHPC then, contains CUDA Toolkit version >= 13?

You can ask questions about NVHPC SDK on this forum. According to the release notes HPC SDK 26.1 supports CUDA 13