CuPit is a parallel programming language with two main design
1. to allow the simple, problem-adequate formulation of
learning algorithms for neural networks with focus on
algorithms that change the topology of the underlying
neural network during the learning process and
2. to allow the generation of efficient code for massively
parallel machines from a completely machine-independent program
description, in particular to maximize both data locality and
load balancing even for irregular neural networks.
The idea to achieve these goals lies in the programming model:
CuPit programs are object-centered, with connections and nodes
of a graph (which is the neural network) being the objects.
Algorithms are based on parallel local computations in the
nodes and connections and communication along the connections
(plus broadcast and reduction operations).
This report describes the design considerations and the
resulting language definition and discusses in detail a
tutorial example program.