I have run into a "maximum variable size allowed on device is exceeded" error.
zeros([7676,7420,37],'single','gpuArray') is fine.
zeros([7676,7420,38],'single','gpuArray') produces the error.
The device is a tesla k40 with ~ 12Gb memory available. 64 bit matlab (17b/16b) 64 bit Linux OS (Ubuntu and Fedora.)
Given the size of the arrays above, whos product straddle the value intmax('int32') my best guess is that the limit is being set assuming the array might be reshaped into one dimension? The maximum grid size.
MaxGridSize: [2.1475e+09 65535 65535] %
sizeToMake = double(intmax('int32'))
g = zeros([sizeToMake,1],'single','gpuArray'); % works
g = zeros([sizeToMake+1,1],'single','gpuArray'); % fails
So is the maximum size intentionally set to the first dimension allowed by max grid size? Can this be avoided?