PART THREE.

 

PARALLEL PROCESSING

 

 

 

 

I posted a 'fig -- FORTH INTEREST GROUP' logo on the door of my office.  About two years ago, a fellow knocked the door and introduced himself, saying that he saw the poster and was glad to find another Forth enthusiast.  He told me that he had programmed in STOIC, which is a early variant of Forth, and was working on a parallel processor project.  He also asked me if I would be interested in this project.  He spoke in an Eastern European accent, with every vowel and consonant meticulously pronounced.  It was not surprising to find out in a short while that he was a Polish mathematician.  His name was Wlodzimierz Holsztynski, which I still cannot spell without looking at my notebook.

 

So, I started working on this parallel processor project.  The processor was produced by NCR, with a strange name-- Geometric Arithmetic Parallel Processor-- or GAPP for short.  The central processing unit in it was a strange one bit ALU.  It was very difficult to think in bits, after cutting the teeth on 8 bit processors, and gradually migrating to 16 bit processors and 32 bit processors.  However, Dr. Holsztynski was able to show how complicated problems could be broken down and solved very elegantly using bit-serial algorithms.  When you have a very large array of these simple processors working coherently together, suddenly you have a extremely powerful computing structure with the throughput of CRAY supercomputers at a very small fraction of the costs.

 

After working with him for several months, a colleague told me that he was no less than the inventor of the GAPP chip.  No wonder that he was so much at ease in thinking at the bit and gate level.  In many ways, Dr. Holsztynski and Chuck Moore are very similar.  In their programs, they would not allow a single instruction, even a single bit in an instruction, or a single machine cycle to be wasted by not serving useful function.  They are computer poetry in the purest form.  These are the people who push the state of the art.

 

Parallelism seems to be the only way to achieve the computation throughput needed for large and complicated applications.  GAPP chip is a very unique way to link a large amount of processing units together with the least amount of silicon and interconnections.  In this section I am presenting the limited experience in learning to use it.  Lots of material are still under development and are proprietary information.  However, what's published here can give us a glimpse of the potential of this technology.

 

Once we build the processor array and some form of a controller to operate the array, Forth can be of great help in the use and the programming of the processor array.  Two papers were presented at the 1987 Rochester Forth Conference, and they are reprinted here showing the status of this parallel processor project.  A GAPP array simulator was developed before the array was built, using an image processor to simulator a 512 by 512 GAPP array.  Code for this simulator is also included here. GAPP machine code is very similar to bit slice microcontroller code.  Forth is a natural language to implement an assembler for GAPP array.  The fourth paper in this section shows how to assemble GAPP code.

 

The last paper is of a different nature.  It was a paper I presented at the FPS Array Processor Users Conference in May, 1984 at Denver, Co.  It shows how one can put a large floating point math processor under interactive control for program development.  It turns a floating point processor into a huge vector stack machine to process large arrays of floating point vectors.  This proves two assertions: that Forth can handle floating point numbers in a grand style, and that floating point number is an I/O problem.