<p>The purpose of <code>cudaDeviceProperties()</code> is, like the equivalent <code>cpuid</code> facility on x86 CPUs, to return relevant microarchitecural parameters. As on CPUs, performance characteristics on GPUs can differ even if the microarchitectural parameters are identical, for example due to different clock frequencies, or due to differing specifications of the attached DRAM, and the way these interact with various buffering and caching mechanisms inside the processor. In general, there is no single "memory latency" number one can assign, nor am I aware of a way to compute possible ranges from known microarchitectural parameters.</p>

<p>On both CPUs and GPU, one therefore has to utilize sophisticated microbenchmarks to determine performance parameters such as DRAM latency. How to construct such microbenchmarks for each desired parameter would be too broad to cover here. Multiple papers have been published that discuss this in detail with regard to NVDIA GPUs. One of the earliest relevant publications is (<a href="http://www.stuffedcow.net/files/gpuarch-ispass2010.pdf" rel="nofollow">online draft</a>):</p>

<p><em>Wong, Henry, et al. "Demystifying GPU microarchitecture through microbenchmarking." In Proceedings: 2010 IEEE International Symposium on Performance Analysis of Systems &amp; Software (ISPASS), pp. 235-246</em></p>

<p>A recent work that includes coverage of the Kepler architecture is (<a href="http://arxiv.org/pdf/1509.02308.pdf" rel="nofollow">online draft</a>):</p>

<p><em>Xinxin Mei, Xiaowen Chu. "Dissecting GPU Memory Hierarchy through Microbenchmarking." Arxiv manuscript, September 2015, pp. 1-14</em></p>

<p>Short of constructing one's own microbenchmarks, one has to rely on published results such as the ones cited above for various implementation-specific performance parameters of specific GPUs. </p>

<p>In many years of optimizing for GPU platforms, I have have not had a need for knowledge of this kind of data, in general the performance metrics of the CUDA profiler(s) should be sufficient to track down specific bottlenecks.</p>
How can I obtain/calculate the memory latency of my GPU without measurement?
<p>The <code>cudaGetDeviceProperties()</code> API call does not seem to tell us much about the global memory's latency (not even a typical value, or a min/max pair etc).</p>

<p><strong>Edit:</strong> When I say latency, I actually mean the different latencies for the various cases of having to read data from main device memory. So, if we take <a href="http://arxiv.org/pdf/1509.02308.pdf" rel="nofollow">this paper</a>, it's actually 6 figures:  { TLB L1 hit, TLB L2 hit, TLB miss } x L1 data cache turned { on, off }.</p>

<p><strong>Q1: Is there a way to obtain these figures, other than to measure them myself?</strong><br>Even a rule-of-thumb calculation based on SM version, SM clock and mem clock might do.</p>

<p>I would ask the secondary question, being:<br>
<strong>Q2: If not, is there a utility which does this for you?</strong> <br>
<sub>(although that  might be off-topic for the site.)</sub></p>