US 12,367,076 B2
Method for process allocation on multicore systems
Syed Aoun Raza, Stuttgart (DE); Amal Jose Vallavanthara, Stuttgart (DE); and Nidavani Rakesh, Karanataka (IN)
Assigned to ROBERT BOSCH GMBH, Stuttgart (DE)
Filed by Robert Bosch GmbH, Stuttgart (DE)
Filed on Sep. 9, 2022, as Appl. No. 17/941,119.
Claims priority of application No. 10 2021 211 020.7 (DE), filed on Sep. 30, 2021.
Prior Publication US 2023/0098447 A1, Mar. 30, 2023
Int. Cl. G06F 9/50 (2006.01); G06F 17/16 (2006.01)
CPC G06F 9/505 (2013.01) [G06F 9/5027 (2013.01); G06F 17/16 (2013.01)] 13 Claims
OG exemplary drawing
 
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.