[comp.sys.transputer] Measuring elapsed CPU time for a single process

UHAP033@vaxb.rhbnc.ac.uk (08/10/89)

Hello all,

         I am currently working on an image processing simulation program
that requires a single process on a transputer to determine how much CPU time
it has had (but not that of any other processes in parallel with it)

ie:

PRI PAR
  PAR
    ...  pass data down
    ...  pass data up
  ...  wait for a known time  --  this it the problem bit

My current process looks something like (slightly simplified):

BOOL not.yet.finished:
TIMER clock:
INT pause.1,pause.2,elapsed.time:
SEQ
  not.yet.finished:= TRUE
  clock ? pause.1
  WHILE not.yet.finished
    SEQ
      clock ? pause.2
      elapsed.time:= pause.2-pause.1
      not.yet.finished:= (elapsed.time<required.delay)

However, this doesn't do what I want - it keeps counting time even when the
transputer is executing another process. Two possible alternatives came to
mind:

1) Write a simple loop program, disassemble it and work out how long the
loop would take. Then use something like

INT required.iterations,dummy.variable:
SEQ
  required.iterations:= required.delay*kludge.factor
  SEQ loop = 1 FOR required.iterations
    dummy.variable:= dummy.variable*1  -- time waster

Unfortunately, I know nothing about transputer machine code, and so wouldn't
know how to find out the time taken per iteration of the loop.

2) Since the clock's tick rate for a low-priority process is quite slow
(64 microseconds according to the TDS book* page 60), it might be possible
to count the ticks of the clock (the count being missed if the process is
interrupted by a higher priority one), thus

INT elapsed.time,tick.1,tick.2:
BOOL not.yet.finished:
TIMER clock:
SEQ
  not.yet.finished:= TRUE
  elapsed.time:= 0
  WHILE not.yet.finished
    SEQ
      clock ? tick.1
      clock ? tick.2
      WHILE tick.1=tick.2
        clock ? tick.2
      elapsed.time:= elapsed.time+64 -- microseconds
      not.yet.finished:= (elapsed.time<required.delay)

But this is not elegant, and isn't very accurate either.

Has anyone got any comments on these two schemes, or do they have a better
one? Thanks for any help you can give
                                           Simon Barker

* Transputer Development System, Prentice Hall, 1988, ISBN 0-13-928995-X
--------------------------------------------------------------------------------
    _______   __   __
   /       | |  | /  /   Royal Holloway and Bedford New College
  /        | |  |/  /    Machine Vision Group
 /  /| /|  | |     /     
/__/ |/ |__| |____/
Simon Barker                           Phone: (0784) 439900 (UK)
Department of Physics                         (+44) 784 439900 (international)
Royal Holloway and Bedford
 New College                           JANET: UHAP033@UK.AC.RHBNC.VAXA or
Egham Hill                                    BARKER@UK.AC.RHBNC.PH.V1
Egham
Surrey, TW20 0EX                      BITNET: UHAP033@VAXA.RHBNC.AC.UK or
England                                       BARKER@V1.PH.RHBNC.AC.UK