GPU Computing

cancel
Showing results for 
Search instead for 
Did you mean: 

Memory bandwidth

In the CUDA SDK examples there is a bandwidth test that measures the transfer speed to/from the GPU :

http://docs.nvidia.com/cuda/cuda-samples/index.html#bandwidth-test

Is there a similar LabVIEW example of this?  I'm interested in how well the NI LabVIEW GPU Analysis Toolkit performs these memory transfers.

Thanks,

Dan

0 Kudos
Message 1 of 2
(7,491 Views)

The toolkit uses the C API for cudaMemcpy() to do data transfers. I haven't checked the source code in recent CUDA releases but this example has used this interface in the past (and may still).

If you run the executable with the '-help' option, there is only one setting that corresponds to the toolkit's behavior:

  • --memory=pageable : this may be the default setting

The rest are based on data direction (host <-> dev or dev<->dev), block size, and/or device target. All of which are dependent on your use case in LabVIEW. There is no concept of 'write-combined' as array memory in LabVIEW is allocated by LabVIEW's memory manager.

I used bandwidthTest.exe (primarily the x64 version) in my testing of the toolkit interface to verify the VI overhead was minimal for reasonably large data transfers (e.g. 1K 1D array of DBL). If you find something to the contrary, I'd be very interested in your results.

NOTE: It is possible to work with pinned memory using the toolkit's LVGPU SDK but no precanned interfaces are available for this. Developing the proper interface in G & C is more complicated. A good comparison would be the difference between programming with the CUDA Driver API versus the CUDA Runtime API.

0 Kudos
Message 2 of 2
(4,043 Views)