How does memory coalescing work on a GPU, and how would you design a matrix multiplication kernel to maximize global memory bandwidth?
Implement choose_matmul_tile(m, n, k) to select a tile configuration for multiplying an m x k matrix by a k x n matrix. Evaluate the candidate tiles listed in the function contract, count 32-element coalesced global-memory transactions for all required tiles, and return the configuration with the fewest transactions. Break ties by larger output-tile area, then larger tile_k.
Signature: def choose_matmul_tile(m, n, k):
Return a dictionary containing tile, global_transactions, and shared_bytes.
def choose_matmul_tile(m, n, k):