Methodologies for co-designing supercomputer-scale systems and deep learning software