A methodology for parallelizing programs for multicomputers and complex memory multiprocessors | Synapse