SWARM

Since the inception of desktop computer, software performance has improved at an exponential rate, primarily driven by rapid growth in processing power. Performance of an algorithm kept on simply improving by the arrival of newer and faster processors. However, we can no longer solely rely on Moore’s law for performance improvements. Fundamental physical limitations such as the size of the transistor and power constraints have now necessitated a radical change in commodity microprocessor architecture to multicore designs. Dual and quad-core processors are slowly and steadily finding their way into the desktops and the laptops. Software developers and programmers are now required to exploit this concurency at algorithmic level. SWARM (SoftWare and Algorithms for Running on Multicore) has been introduced as an open source parallel programming framework. It is a library of primitives that fully exploit the multicore processors. SWARM is built on POSIX threads that allow the user to use either the already developed primitives or direct thread primitives. SWARM has constructs for parallelization, restricting control of threads, allocation and de-allocation of shared memory, and communication primitives for synchronization, replication and broadcasting. The framework has been successfully used to implement efficient parallel versions of primitive algorithms. Viz. List ranking, Prefix sums, Symmetry breaking etc.