Does cudaDeviceProp.memoryClockRate always report DDR effective memory speed?


does cudaDeviceProp.memoryClockRate always report DDR effective memory clock?
The documentation only states:

int cudaDeviceProp::memoryClockRate [inherited]
    Peak memory clock frequency in kilohertz

nvidia-smi also seems to refer to the effective DDR memory speed instead of the real clock.

GPU Tools and GPU Memory Clock: Real and Effective Speeds Demystified

Example: Our K80 with GDDR5 shows 2505 MHz for the memory clock given by cudaDeviceProp or nvidia-smi. The real clock is 1252 MHz and the effective QDR memory speed is 5010 MHz.

GDDR3/DDR3 is probably not worth mentioning it, but how about HBM2? Just want to know if it is save to always divide the memoryClockRate by 2 to get the real memory clock rate.

Best Regards and Thank you for your consideration.

Hi again

I found this post with the memory clock on a P100 given by cudaDeviceProp:

Memory Clock rate:  715 Mhz

This is the real clock (P100).
For the computation of theoretical bandwidth it seems to be safe to multiply by two (DDR). GDDR5 is QDR, so memoryClockRate has to return DDR effective memory speed to be consistent on the computation of theoretical bandwidth. Would be nice to have this documented here.

To get the real clock it is not safe to divide by two, so we have to use other libraries or use workarounds determining the different memory types.

Best Regards.