Multicore SWARM

(Software and Algorithms for Running on Multicore)


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.


Multicore SWARM 1.1

Linux, FreeBSD, Solaris, AIX: Download
MS Windows: Download

Linux, FreeBSD, Solaris, AIX:

1. Download the multicore-swarm tar ball.
2. Type tar -xvzf swarm-x.y.tar.gz. Where 'x.y' is the version number. This will create a subdirectory called swarm-x.y . All of swarm's source code will be untarred here.
3. Type in the following commands to get SWARM running.
        cd swarm-x.y
        ./configure           This will create the makefile
        make                   This will create the library
        make test            This will check the library with test routines
4. An executable swarm_test is created in the swarm-x.y/tests directory. Type ./swarm_test to run the test code. -t option can be used to specify the number of threads to be used.

MS Windows:

1.On installation, following 2 folders will be created in swarm-x.y (x.y is the version number) directory:
           pthreads/include - requisite pthreads header files
           pthreads/lib - dynamic library for pthreads
           swarm/include - function declarations for SWARM API
           swarm/lib - dynamic library for swarm
           swarm/tests - test codes
2. The System PATH will automatically be set to point to the dll files swarm.dll and pthreadVC2.dll
3. In the tests folder, double click the VC++ project 'SWARM_Test'
4. Click on Build -> Build Solution to compile. You will be asked to save Swarm_Test. Select Save.
5. Click on Debug -> Start without debugging to Execute.
6. Command line arguments can be specified in Project -> Swarm_Test Properties -> Configuration Properties -> Debugging -> Command arguments. (eg -t <number of threads>).
Swarm.pdf - This documentation provides descriptions for various variables, functions and macros that can be used as API’s for developing parallel codes and is supported by the explanation of an example code.
Prof. David A. Bader
Georgia Institute of Technology
Kamesh Madduri
Ph.D Student, College of Computing
Georgia Institute of Technology
Rucheek H. Sangani
M.S. Student, College of Computing
Georgia Institute of Technology

This site is maintained by David A. Bader