A method for preventing deadlock in a multiprocessor computer system having a large plurality of processing nodes interconnected by a defined interconnection topology, in which a communication from a source processing node to a target processing node may pass through one or more intermediate nodes en route to the target processing node, the method comprising:
- for each link in the interconnection topology associating a set of virtual channels, each virtual channel having corresponding communication buffers to store communication data and each virtual channel having an associated virtual channel identifier;
- for each communication between a source processing node and a target processing node, assigning an initial virtual channel to convey the communication from the source processing node;
- at an intermediate processing node, assigning a different virtual channel to convey the communication toward the target processing node, wherein the assignment of the different virtual channel is in accordance with pre-defined rules to avoid a cycle of dependency of communication buffer resources;
- and
- receiving the communication at the target processing node.