Cognitive Computing Programming Paradigm: A Corelet Language for Composing Networks of Neurosynaptic Cores

A language for programming brains from IBM research. Abstract:

Marching along the DARPA SyNAPSE roadmap, IBM unveils a trilogy of innovations towards the TrueNorth cognitive computing system inspired by the brain’s function and efficiency. The sequential programming paradigm of the von Neumann architecture is wholly unsuited for TrueNorth. Therefore, as our main contribution, we develop a new program- ming paradigm that permits construction of complex cognitive algorithms and applications while being efficient for TrueNorth and effective for programmer productivity. The programming paradigm consists of (a) an abstraction for a TrueNorth program, named Corelet, for representing a network of neurosynaptic cores that encapsulates all details except external inputs and outputs; (b) an object-oriented Corelet Language for creating, composing, and decomposing corelets; (c) a Corelet Library that acts as an ever-growing repository of reusable corelets from which programmers compose new corelets; and (d) an end-to- end Corelet Laboratory that is a programming environment which integrates with the TrueNorth architectural simulator, Compass, to support all aspects of the programming cycle from design, through development, debugging, and up to deployment. The new paradigm seamlessly scales from a handful of synapses and neurons to networks of neurosynaptic cores of progressively in- creasing size and complexity. The utility of the new programming paradigm is underscored by the fact that we have designed and implemented more than 100 algorithms as corelets for TrueNorth in a very short time span.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Sadly, no relationship to

Sadly, this "language for programming brains" has no relationship to ;)

An attempted semantic summary

So the Corelet Language is an OO language that runs at compile time to generate a description of a TrueNorth hardware system, which takes the form of a network of cores. The cores have access to bounded state resources and their own PRNGs. The best I can tell (and I'm making some wild guesses here), communication takes the form of steadily ticking streams of fixnums, which most listeners will filter according to some threshold. Communicated information must be encoded as "spikes" to break past the threshold.

I'm interested to know whether (and how) it would possible to administrate the per-corelet state of a production system, after it's already in the form of hardware. Will programmers be able to trust that a program's state can be backed up, restored, monitored, or audited through a back door? Will they be able to trust that it cannot?