Block size estimation for data partitioning in HPC applications using machine learning techniques