We observe that efficient synchronization becomes increasingly important within multicore machines as a result of current hardware trends. First, multicores offer more hardware-parallelism, which requires software to be more parallel as well. Concurrently executing threads then need an efficient way of synchronizing themselves.
Second, as resources in multicores are more distributed, there is an effort to explore how to program multicores as distributed system. In such cases, services are replicated and consequently, synchronization is needed for replicated services to communicate.
While it is increasingly important to consider hardware characteristics to achieve good performance of synchronization primitives, at the same time hardware becomes too complex for many programmers to understand. As a result, they struggle to tune programs to work well on a wide set of multicore hardware.
In response, we develop Smelt, where we explore how to build multicast tree topologies automatically for synchronization within a multicore. Smelt has two key ideas: First, we develop a multicore machine model to evaluate the performance of message passing algorithms. The model can be generated fully automatically and captures characteristics of multicore hardware. Based on that, we use a Simulation approach to generate a machine-aware tree topology out of peer-to-peer message channels automatically based on the machine model generate for each machine.
Smelt is available
from github.