CuPit-2(ID:7207/cup006)

Language for distributed ANNs 


Portable parallel programming language for artificial neural networks.



Related languages
CuPit => CuPit-2   Evolution of

References:
  • Hopp H. and L. Prechelt. CuPit-2: A parallel language for neural algorithms: Language reference and tutorial. TR 4/97, Univ. Karlsruhe, Fakultät für Informatik, Germany, Mar. 1997. view details
  • Hopp, Holger; Prechelt, Lutz "CuPit-2: a portable parallel programming language for artificial neural networks" in: 15th IMACS World Congress on Scientific Computation, Modelling and Applied Mathematics, Berlin 1997. Ed.: A. Sydow. Vol. 6. Berlin 1997. S. 493-498. Universität Karlsruhe; Institut für Programmstrukturen und Datenorganisation. 1997. view details Abstract: CuPit-2 is a programming language specifically designed to express neural network learning algorithms. It provides most of the flexibility  of general-purpose languages like C/C++, but results in much clearer and more elegant programs due to higher  expressiveness, in particular for algorithms that change the network topology dynamically  (constructive algorithms, pruning algorithms). Furthermore, CuPit-2 programs can be compiled into  efficient code for parallel machines; no changes are required in the  source program. This article presents a description of the language constructs and reports performance results for an  implementation of CuPit-2 on symmetric multiprocessors (SMPs).
    External link: Online copy Extract: Language Overview
    Language Overview

    The programming language CuPit-2 is based on the observation that neural algorithms predominantly execute local operations (on nodes or  connections), reductions (e. g. sum over all weighted incoming connections) and broadcasts (e. g. apply a global parameter to  all nodes). Operations can be described on local objects (connections, nodes, network replicates) and  can be performed groupwise (connections of a node, nodes of a node group, replicates of a network,  or subsets of any of these).
    This leads to three nested levels of parallelism: connection parallelism, node parallelism and example parallelism. There is usually  no other form of parallelism in neural algorithms, such that we can restrict parallelism to the above three levels without loss of  generality.
    CuPit-2 is a procedural, object-centered language; there are object types and associated operations but no inheritance or polymorphism. The identification of network  elements is based on three special categories of object types: connection, node, and network types. A  simplified view of the CuPit-2 network model is shown in the example in Figure 1. In order to support constructive neural algorithms, special operations are included for creation and deletion of  network, node, and connection objects.
    This approach makes a wealth of information readily available to the compiler that would be difficult to extract from a similar program in a normal parallel programming language. We use this information to generate efficient parallel and sequential code. The rest of this section will describe the main parts of a CuPit-2 program consisting of connection, node, and network  descriptions (including operations) and a main program that controls the algorithm.