I am writing some code for modeling semi-biologically realistic neural networks, which is to be run/distributed across nodes in a computer cluster. I begin with a very large adjacency matrix (representing the neural connectivity), and I want to split the $n\times n$ matrix into $k$ smaller $n \times (n/k)$ matrices. From there each machine will do some expensive computations on it's assigned matrix. Additionally, I can remove empty rows from the $n \times (n/k)$ matrices before distributing to the machines (so that they are $\leq n \times (n/k)$). So my question is: how do I split the matrix into $k$ sub-matrices, so that I can minimize the size of the largest sub-matrix.
My graph theory knowledge is limited, and so any references or direction would be great in lieu of an explicit answer if there are already resources out there that are related to this kind of problem.