Unfortunately, there's no way to do that. The nearest you can get is to pre-allocate the gpuArray, fread chunks of data, and then assign into the gpuArray. The only benefit here is that you don't need the whole array in host memory at any one time.
% Create a test file
a = rand(100);
fh = fopen( 'test.bin', 'wb' );
fwrite( fh, a, 'double' );
fclose( fh );
% Read the test file into a gpuArray one column at a time
g = parallel.gpu.GPUArray.zeros(100);
fh = fopen( 'test.bin', 'rb' );
for ii = 1:100
col = fread( fh, 100, 'double' );
g(:,ii) = col;
end
assert( isequal( a, g ) );
You'd probably want to read bigger chunks than that to get good performance. Also, note that gpuArrays can be saved into MAT files.