Article View: comp.sys.transputer
Article #211Measuring elapsed CPU time for a single process
From: UHAP033
Date: Thu, 10 Aug 1989 14:38
Date: Thu, 10 Aug 1989 14:38
85 lines
3435 bytes
3435 bytes
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
Technical Details
Message-ID:
<202015A9_00111388.0092910DC5B2FD80$8_1@UK.AC.RHBNC.VAXB>Path:
arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!vaxb.rhbnc.ac.uk!UHAP033Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!vaxb.rhbnc.ac.uk!UHAP033 From: UHAP033@vaxb.rhbnc.ac.uk Newsgroups: comp.sys.transputer Subject: Measuring elapsed CPU time for a single process Message-ID: <202015A9_00111388.0092910DC5B2FD80$8_1@UK.AC.RHBNC.VAXB> Date: 10 Aug 89 14:38:23 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 85