CuPit-2(ID:7207/cup006)Language for distributed ANNsPortable parallel programming language for artificial neural networks. Related languages
References: 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. |