CUBLAS_STATUS_MAPPING_ERROR on transfer of large matrix

I have a method for doing matrix multiplication via CUBLAS and have been testing out performance with large matrices. I now have one that is 10000x3000 that I try to transfer to GPU-space via cublasSetVector(). This CUBLAS function works fine for smaller matrices, but it fails on this large matrix, giving me the error CUBLAS_STATUS_MAPPING_ERROR. I read around and have seen someone mention it was a timeout by the driver after taking so long to transfer. As this would be a function of size of what was being transferred, I am wondering if there is a way to either:

  1. turn off this timer in the CUDA driver

or

  1. create an algorithm for transferring chunks of the matrix at a time to keep from hitting the timer

I am doing this work on Windows 7 and have the latest drivers. I am not finding any luck with Google to find a way around the problem. :(

Jonathan Scott

Are you sure you are not just running out of memory? A 10000x3000 single precision matrix is 120Mb. 240Mb in double precision. What card are you using?

As for your other questions

  1. No, but no memcpy will be effected by the watchdog timer in the display driver anyway
  2. Yes, but it depends on which matrix operation you are performing.

I am just performing the cublasGetMatrix() and it gives me the CUBLAS error CUBLAS_STATUS_MAPPING_ERROR. My card is the GeForce GTX 295. When I make the matrix size be 10,000 by 10,000, I get a different error at a different location: CUBLAS_STATUS_INVALID_VALUE when I try to allocate the memory for the matrix in GPU-space.

Is there a central document detailing the limitations of memory size, copying of contents to/from GPU-space, etc?

Your help would be greatly appreciated!

Jonathan Scott