memory limit to pass from host to device


i have a problem with data transfer from host to device. i need to pass really big database from host to device and do some calculations. but i just could pass 18.6 Mbytes, i want to learn what restricts this and how i can pass more datas in one time?

and here some properties of my nvidia. at first i thought i could use all of this 911605760 bytes, is it a wrong idea :)? (btw another thing maybe restrict me because i use shared memory?)
Device 0: “GeForce GTX 275”
CUDA Driver Version: 3.20
CUDA Runtime Version: 3.20
CUDA Capability Major/Minor version number: 1.3
Total amount of global memory: 911605760 bytes
Multiprocessors x Cores/MP = Cores: 30 (MP) x 8 (Cores/MP) = 240 (Cores)
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 16384

and last thing when i try to transfer more than 18.6 mbytes, the graphics card stop working for 2 seconds and work again.

Is the problem in the allocation of the memory or the copying? There are some reasons why allocation might not give you as much memory as you are asking for, but there should be no limit on how much can be copied. What OS are you using?

i am using 64 bit windows 7 professional and i am working with visual studio 2008.

and i think problem is about copying the memory, because when i just allocate memory and not copy it from host to device, it allows me as much as i want?

and i dont know if it affects but maybe i should also mention about this: i am sending all database in many arrays (for example for now i divide database into 10 and i just send it with 10 arrays)