Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've read that the transfer overhead between CPU and GPU is a big bottleneck in achieving high performance in GPU/CPU applications. Why is this so?

According to Nvidia's bandwidthtest program, my CPU/GPU bandwidth is about 4 to 5 GBps. Is this the peak performance, and actual performance is likely much lower? My application can only reach ~17 Gbps when data transfer is included in the performance measurement, a large drop from the 100+ Gbps rate when measuring only the GPU computation without data transfer.

share|improve this question

Because that's the PCI-e bandwidth, see

5GB/sec seems reasonable given that in a real system you can't do entirely back-to-back transfers all the time, you have to let go of the bus for other peripherals from time to time.

On-GPU bandwidth is only going to the DRAM, and maybe not even that (cache hits within the GPU), and is therefore much higher.

The answer to your next question "why isn't there more bandwidth in PCIe" is basically down to cost/power/size/latency tradeoffs. A PCIe lane is slower than 10G ethernet but the bus trancievers are cheaper; a higher bandwidth system would drive up the cost of all expansion cards.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .