Suppose I have two square matrices, A (2x2) and B (2x2). The product AB is stored in C.

If I declare the arrays in C with the notation:

```
int A[2][2];
int B[2][2];
int C[2][2];
```

I can easily refer to elements using operator condition. However, I am seeing from numerous examples (incl. NVIDIA_SDK) that programmers seem to flatten these 2D matrices into a 1D dimension (where one can choose from row-order or column-order).

Why do we do this? Is it easier to manipulate matrix elements by referring to one index (Using: x + y * Dim.x)? Performance-wise, would be faster to compute C[x+y*Dim.x] than C[y]?

Thanks