A New Way To Think About Parallel Programming

Welcome to Avian Computing

Thank you for visiting Avian Computing, where our goal is to make parallel programming easier and faster and (dare we say it) fun. Avian Computing fully expects the number of CPU cores to keep increasing until 1,000 core systems are common. This large number of cores will require us to think differently about how we create programs so we can take advantage of all these cores. The primary tool used in Avian Computing is the Concurrency Explorer (ConcX), an open-source project available for free download, not to be confused with a Microsoft tool named at one time, the ConcurrencyExplorer (one word).

All birds follow this basic life cycle

The Avian approach is to develop parallel programs using flocks of birds as a model. Each “bird” in the flock is a thread. Birds have to eat, so they “eat” food pods which are actually containers that each hold an intermediate result. Each bird looks for a food pod, digests (processes) it, stores any resulting food pod, and then takes a little nap. When the bird wakes up, it repeats the above cycle until it dies.

A food pod stored by one bird is eaten by the next bird. This behavior forces developers to decompose their task into “atomic” chunks, which results in the developers learning how to break their task into pieces that can be digested/performed in parallel. As the program runs, all of the birds setup by the developer are concurrently and asynchronously eating, processing, and storing food pods until, bite by bite, all of the food pods have been processed and the final result(s) achieved.

ConcX is intended to be a development tool. It offers numerous features that encourage dynamic and interactive development:

GUI display at run time that dynamically displays the activity of each bird and type of food

Dynamic control of bird populations

Birds that find a lot of food will reproduce and hatch more birds exactly like them

Birds that cannot find food will starve and die

Timestamping of all events of every food pod

Timestamping of all events of every bird

Each bird maintains its own history of events

Adjustable level of detail for events that each bird encounters

Unprocessed food pods are retained after each run for diagnostic purposes

Error pods can be generated when bird doesn’t know how to process the pod and retained for diagnostic purposes

All parallel requirements (synchronizing, locking, etc) are handled by ConcX so developers can concentrate on how to digest (process) its type of food

To learn more about Avian Computing, click the “Getting Started” link in the sidebar and read about how to setup and run ConcX. Or to learn why the Avian Computing Project was started, click on the Avian Blogs menu option at the top of the page. Or click on the code download button and experiment with the Java code.