Improving mapping for sparse direct solvers: A trade-off between data locality and load balancing