1. A computer program product for computer program code functional partitioning for heterogeneous multi-processor systems, the computer program product having a medium with a computer program embodied thereon, the computer program, when executed on a computing device, causes the computing device to: identify at least one system parameter of a computer system comprising one or more discrete processing nodes; receive computer program code comprising a program to be run on the computer system; generate a program representation based on received computer program code; identify at least one single-entry-single-exit (SESE) region based on the whole program representation; identify at least one node-specific SESE region based on identified SESE regions and the at least one system parameter, thereby forming a specified node; identify SESE regions proximate to the identified node-specific SESE region based on an ability of the specified node to process the identified proximate SESE regions, wherein the identified proximate SESE regions are grouped with identified node-specific SESE regions and are configured to be compiled for the specified node; present the identified node-specific SESE regions and the identified proximate SESE regions to a user; receive user input from the user as to a grouping that should be used for the identified node-specific SESE regions and the identified proximate SESE regions; group each node-specific SESE region with at least one proximate SESE region into a node-specific subroutine based on the user input; modify the computer program code based on the node-specific subroutines; and compile the modified computer program code including each node-specific subroutine based on a specified node characteristic.