Newsgroups: comp.sys.transputer
From: jdd@aiki.demon.co.uk (Jim Dixon)
Subject: Re: Large link transfers
Organization: AIKI Parallel Systems Ltd
Date: Tue, 26 Jul 1994 10:29:12 +0000
Message-ID: <775218552snz@aiki.demon.co.uk>

In article <froning.13.00101193@aps.rwth-aachen.de>
           froning@aps.rwth-aachen.de "Dieter Froning" writes:
> 
> Reading the Performance Improvement Manual of the OCCAM 2 Toolset we 
> changed in a test programm the following lines
> 
> out.channel ! 101 
> out.channel ! 102 
> out.channel ! 103 
> 
> to the construct described in chapter 8.2 "Large Link transfers"
> 
> out.channel ! 101; 102; 103
> 
> and received the compiler error message "Too many items in I/O-List".
> The receiving process expected three inputs :
> 
> in.channel ? testvar1
> in.channel ? testvar2
> in.channel ? testvar3

You have to understand what is actually happening on the transputer.
The first out.channel ! ... construct synchronizes the processes three
times, sending an INT each time.  The second out.channel ! ... construct
synchronizes once, sending three INTs.	The compiler detects this and
complains.  Both processes must synchronize the same number of times and
must transmit the same amount of data each time.

However, if the sender and the receiver were on different transputers,
this would actually work.

> So there occurs the question if it is possible to send a data list (e.g. 
> protocol type any) down a channel like an array ("out.channel ! [array FROM
> 0 TO 100]")?

Sure.  You could also send things like

    out.channel ! 15 ; [array FROM 0 TO 15]

and much more complex lists.  But the receiver has to be expecting it.
-- 
+-----------------------------------+--------------------------------------+
|  Jim Dixon<jdd@aiki.demon.co.uk>  |	    Compuserve: 100114,1027	   |
|AIKI Parallel Systems Ltd + parallel processing hardware & software design|
|	     voice +44 272 291 316  | fax +44 272 272 015		   |
+-----------------------------------+--------------------------------------+

