home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sys.transputer
- Path: sparky!uunet!haven.umd.edu!darwin.sura.net!Sirius.dfn.de!rz.ruhr-uni-bochum.de!jan
- From: jan@pallas.neuroinformatik.ruhr-uni-bochum.de (Jan Vorbrueggen)
- Subject: Re: Protocol query
- Message-ID: <JAN.92Sep7142820@pallas.neuroinformatik.ruhr-uni-bochum.de>
- In-reply-to: MJP@starlink.roe.ac.uk's message of 4 Sep 92 12:51:00 GMT
- Organization: Inst. f. Neuroinformatik, Ruhr-Universitaet Bochum, FRG
- References: <7271.9209041250@prg.ox.ac.uk>
- Date: 7 Sep 92 14:28:20
- Lines: 22
-
- What you're really trying to do is extracting a part of memory with
- nonunit stride. (Unit stride is of course handled just by using
- assignment in occam and translated into the MOVE instruction.) The
- T800 and followon (T425, T400, T805, T801) have MOVE2D exactly for
- this purpose. Unfortunately, the compiler's builtin function has
- a braindamaged interface (IMHO) requiring massive RETYPES, as well
- as some code generation bugs (if certain arguments aren't constant
- or VALs, space is allocated for their computation, but the computation
- is never done :)). So I defined my own routine(s) for the purpose.
- It is very efficient: For instance, if you're doing, say, a 2D FFT,
- for the column part it is better to extract each column into a 1D array,
- perform the FFT on it, and reinsert it with MOVE2D. This works because
- you save massively on address computations, need only a 1D FFT that is
- unaware it is working on a 2D array, and you can PLACE the temporary
- array into the WORKSPACE.
-
- So the solution is to extract your data from your 2D array into a buffer
- using MOVE2D, send that, and scatter it at the receiving end via MOVE2D,
- if required.
-
- Jan Vorbrueggen, Inst. f. Neuroinformatik, RuhrUniversitaet Bochum, FRG
- jan@neuroinformatik.ruhrunibochum.de
-