The kernel will multiply a matrix M by another matrix N, storing the product matrix P.  M, N, and P will not necessarily be square. Instead, M can have m rows and k columns, N will have k rows and n columns, and the product will then have m rows and n columns. The values of m, k, and n will not necessarily necessarily be multiples of the TILE_WIDTH.