30 | | === void '''_get_sbt_footprint'''( unsigned int* width, unsigned int* heigth, unsigned int* levels ) === |
31 | | A Sliced Binary Tree (SBT) can be used to implement a scalable, distributed synchronisation, such as a sbt_barrier or a sbt_lock. This function computes the footprint of the smallest SBT covering all clusters containing processors in a platform. The SBT footprint is defined by the '''width''' and '''heigth''' parameters. The '''levels''' parameter define the number of levels between the root and the leaves, with the following constraints: |
32 | | * cluster[0][0] is always covered by the SBT |
33 | | * the number of clusters in a row (width) is always power of 2 |
34 | | * the number of xlusters in a column (heigth) is always power of 2 |
35 | | * (width = heigth) OR (width = 2 * heigth) |
36 | | The width/heigth parameters can be larger than the X_SIZE/Y_SIZE parameters, when X_SIZE or Y_SIZE are not power of 2. The width/heigth parameters can be smaller than the X_SIZE/Y_SIZE parameters, when the upper row, or the right column of clusters does not contain processors. |
| 30 | === void '''_get_sqt_footprint'''( unsigned int* width, unsigned int* heigth, unsigned int* levels ) === |
| 31 | Scalable, distributed synchronisation mechanisms , such as a barrier or a lock can be implemented with a Synchronisation Quad Tree (SQT). This function computes the smallest SQT covering all clusters containing processors in a platform. The SQT footprint is defined by the '''width''' (number of clusters in a row) and '''heigth''' (number of clusters in a column) parameters. The '''levels''' parameter define the number of levels between the root and the leaves, with the following constraints: |
| 32 | * cluster[0][0] is always covered by the SQT |
| 33 | * width and heigth are not always power of 2 |
| 34 | * they cannot be larger than the mesh (X_SIZE/Y_SIZE) parameters, |
| 35 | * they can be smaller when the upper row, or the right column does not contain processors. |