SLM Reads

Description

The metric SLM (Shared Local Memory) Reads represents the number of bytes read from shared local memory from within Compute Shaders. Shared local memory is allocated by adding the groupshared storage-class modifier to a given HLSL variable. This memory is then shared among all threads in a given thread group. Threads can read from any region of the shared local memory.

NOTE

On Intel® HD Graphics 2500/4000: to access this metric, you must explicitly enable the Intel® Graphics Performance Analyzers option in your BIOS settings:

  1. Select Advanced

  2. Select System Agent (SA) Configuration

  3. Select Graphics Configuration

  4. Reboot your machine

If the BIOS on your system does not include the Intel® Graphics Performance Analyzers option, update your BIOS to the latest version from Intel. After completing your performance monitoring activity, we recommend that you disable the Intel® Graphics Performance Analyzers BIOS option and reboot your machine.

Examples

A code example that will result in an SLM Reads:

groupshared int my_shared_local_memory[NUM_THREADS_PER_GROUP];

 

[numthreads(NUM_THREADS_PER_GROUP, 1, 1)]

void MyComputeShader(…)

{

       …

int my_var = my_shared_local_memory[any_idx];

}

Improving Performance

Reads from shared memory are much faster than from global buffers. The typical usage model for shared local memory is that each thread will initialize its portion of the shared memory buffer. Threads will then execute based on data read from across the shared memory buffer, and then results will be written back out to a global buffer. This model will provide improved performance over each thread doing multiple reads and writes to global buffers.

NOTE

This metric is always a multiple of 64 since the Intel® HD Graphics 2500/4000 SLM Reads transactions in terms of 64-byte cache lines.

See Also

SLM Writes

SLM Reads