Two serial Lisp perceptron programs can be viewed or downloaded from the home page. ``Perceptron1'' learns a function of the examples passed in to the program (the size of the perceptron is the length of the examples). ``Perceptron2'' lets the user input the number of perceptron nodes and the number of examples, and the concept to learn is generated automatically. I would like you to design a parallel version of this second perceptron in which each node of the perceptron is stored on a separate processor. In this simple implementation, this simply means storing a single weight value on each processor. Each processor will be given an input value. Using a reduction (*sum) command, the desired output and actual output values can be computed. Based upon these results, the weight values may need to be changed. The weight updates should be performed in parallel.
The transfer function here is a linear transfer function. The weighted sum of the inputs is computed. If the sum is greater or equal to the threshold, the system outputs a 1; otherwise, it outputs a 0.