CPC G06F 9/505 (2013.01) [G06F 9/5027 (2013.01); G06F 17/16 (2013.01)] | 13 Claims |
1. A method for providing an allocation of software processes in a software application to multiple cores in a multi-core processing system having k available cores, comprising:
obtaining a spatial representation of the software processes in a two-dimensional plane, each process of the software processes corresponds to a node in the two-dimensional plane, and, for all nodes, the distance of any two nodes is proportional to a communication load between processes represented by said two nodes;
clustering the nodes into k clusters, wherein a number k of clusters is selected as a number of available cores in the multi-core processing system, the clustering step including:
a) defining a maximum load per cluster for the k clusters based on a maximum process load per core;
b) defining k initial clusters of nodes by assigning each node to one of the k clusters, and calculating an initial current centroid for each cluster based on the position of all nodes within each cluster;
c) reassigning each node to one of the k clusters, based on a distance of the node to a current centroid of the cluster, on the defined maximum process load per core, and on a dynamic priority value of the node;
d) recalculating a current centroid of each cluster based on the clusters obtained by the reassigning of nodes; and
e) repeating the reassigning step c) and the centroid calculation step d), until the centroids converge, thus obtaining a final set of clusters defined by assigned nodes;
allocating the software processes to the k cores, wherein each one of the final set of clusters of nodes is allocated to a different one of the cores.
|