I was going over the sample code for matrix multiplication in cuda and came across some lines of code i can’t really quite figure out. Can anyone please help me understand why the below bolded lines of code is used in matrix multiplication in cuda.

// Optional Command-line multiplier for matrix sizes

unsigned int uiWA, uiHA, uiWB, uiHB, uiWC, uiHC;

int iSizeMultiple = 1;

shrGetCmdLineArgumenti(argc, (const char**)argv, “sizemult”, &iSizeMultiple);

iSizeMultiple = CLAMP(iSizeMultiple, 1, 10);

```
// For GPUs with fewer # of SM's, we limit the maximum size of the matrix
if (props.multiProcessorCount <= 4) {
[b]uiWA = 2 * BLOCK_SIZE * iSizeMultiple;
uiHA = 4 * BLOCK_SIZE * iSizeMultiple;
uiWB = 2 * BLOCK_SIZE * iSizeMultiple;
uiHB = 4 * BLOCK_SIZE * iSizeMultiple;
uiWC = 2 * BLOCK_SIZE * iSizeMultiple;
uiHC = 4 * BLOCK_SIZE * iSizeMultiple;[/b]
} else {
[b]uiWA = WA * iSizeMultiple;
uiHA = HA * iSizeMultiple;
uiWB = WB * iSizeMultiple;
uiHB = HB * iSizeMultiple;
uiWC = WC * iSizeMultiple;
uiHC = HC * iSizeMultiple;[/b]
}
shrLog("\nUsing Matrix Sizes: A(%u x %u), B(%u x %u), C(%u x %u)\n\n",
uiWA, uiHA, uiWB, uiHB, uiWC, uiHC);
```

You help will be greatly appreciated.

Thank you.