The Blob computing project

A Blob is a generic primitive used to structure a uniform computing medium into an easier-to-program parallel vir-tual machine: a Self Developping - self mapping network of automata.

We find inherent limitations in the main trend of today's parallel computing, and propose an alternative bio-inspired approach combining both scalability and programmability. We program a uniform computing medium such as 2D cellular automata, using two levels:
a system level and a programmable level

1st system level
Blob Division on a
cellular automata
2nd programmable level
Self Developping and
self mapping netword

In the first system level a local rule (pre-programmed) can maintain global connected regions called blobs. A blob is similar to a deformable elastic balloon filled with a gas of particles. Each hardware processing element can host one particle. Blobs can also be interconnected. The rule can cause Blobs to move, duplicate or delete themselves. The rule can also propagate signals intra-blob, or inter-blob, like wave.

In the second programmable level each particle contains an elementary piece of data and code, and can receive, process or send signals. The set of particles contained in a given blob encodes a user-programmed finite state automaton with output action (i.e machine instruction) including duplicate-blob, delete-blob, duplicate-link, delete-link. Execution starts with a single ancestor blob that divides repeatedly, and generates a network of blobs. The blob is designed to be a generic distributed-computing primitive installing a higher level virtual machine on top of a low level uniform computing medium. This virtual machine called "self developing automata network" has a number of properties with respect to parallelism. Moreover, its language has been used in machine learning, since 1992 under the name of "cellular encoding".

The following overview summerizes the project challenges. We present the motivation, and state of the art. Next, we outline "self developing automata network" by listing its specific features that ensure programmability, parallelization, and performance. The fine grain blob machine is presented last, as the most promising option to fit self-development, while allowing scalability.