Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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

1 Answer 1

Because that's the PCI-e bandwidth, see http://en.wikipedia.org/wiki/PCI_Express

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.