Note on Stride:
Memory stride is the distance between memory accesses and is measured as:

|(Starting address of next memory access) - (ending address of current memory access)|

We look at two types of memory stride, local stride & global stride.

Local stride: This is the memory stride between two memory accesses for the same memory reference.

Global stride: This is the memory stride between memory accesses for consecutive memory references.

Consider the following example:

for (i=0; i<1000; i++){
   for(j=0; j<10; j++){
       sum += arrayOne[i] + arrayTwo[j];
   }
   result[i] = sum;
}
The memory stride between consecutive memory accesses for the arrayOne memory reference is its local stride, i.e. (starting address of arrayOne[50] - ending address of arrayOne[49] ) is the local stride of arrayOne.
The memory stride between the memory accesses of arrayOne & arrayTwo is the global stride, i.e. (starting address of arrayTwo[50] - ending address of arrayOne[50]) is the global stride.

Note: This also means that if a region of code contains only 1 memory reference, global stride will be the same as local stride.

locStride3:
locStride3 or local stride 3 looks at the number of memory references that have a local stride of 3. It effectively measures the number of references that access the same 4 Byte memory location (like a float, int, uint32_t) repeatedly. Local stride looks at individual memory references and its final value is the aggregate of the locStride3 value for all memory references.

Classifying locStride3:
locStride3 can be classified as low, medium or high as follows:
BucketCondition
Low The region of code contains no memory references that access 4 Byte memory locations.
OR
The region of code contains a number of memory references and 1 or fewer references out of every 3 have a local stride of 3.
Medium The region of code contains a number of memory references and 1 out of every 2 references has a local stride of 3.
High The region of code contains a number of memory references and 2 or more references out of every 3 have a local stride of 3.

Example:
Consider the following code:

for (i=0; i<1000; i++){
   for(j=0; j<10; j++){
       sum += arrayOne[i] + arrayTwo[j];
   }
   result[i] = sum;
}
and assume that all the elements in this region belong to the float data type. This region consists of 3 memory accesses but the accesses to arrayOne & arrayTwo are the most repeated. Therefore, we can ignore the accesses made to result.
Since arrayOne keeps accessing the same 4 Byte memory location in each iteration of the inner loop, most compilers would save its value in a register, eliminating the extra memory references. Therefore, despite appearing to access the same location for all references in the inner loop, locStride3 for arrayOne will still be low.
arrayTwo accesses consecutive memory locations for almost all iterations of the inner loop and its value of locStride3 can be estimated to be low.
Therefore, the aggregate value of locStride3 can be estimated to be low.