Technical data

Parallel Programming Exercise
121
prof pixie quit 1% orig orig.Addrs orig.Counts
-------------------------------------------------------
* -p[rocedures] using basic-block counts; sorted in *
* descending order by the number of cycles executed in*
* each procedure; unexecuted procedures are excluded *
-------------------------------------------------------
10864760 cycles
cycles %cycles cum % cycles bytes procedure (file)
/call /line
10176621 93.67 93.67 484601 24 calc_
(/tmp/ctmpa00845)
282980 2.60 96.27 14149 58 move_
(/tmp/ctmpa00837)
115743 1.07 97.34 137 70 t_putc (lio.c)
The majority of time is spent in the CALC routine, which looks like this:
SUBROUTINE CALC(NUM_ATOMS,ATOMS,FORCE,THRESHOLD,WEIGHT)
IMPLICIT NONE
INTEGER MAX_ATOMS
PARAMETER(MAX_ATOMS = 1000)
INTEGER NUM_ATOMS
DOUBLE PRECISION ATOMS(MAX_ATOMS,3), FORCE(MAX_ATOMS,3)
DOUBLE PRECISION THRESHOLD
DOUBLE PRECISION WEIGHT(MAX_ATOMS)
DOUBLE PRECISION DIST_SQ(3), TOTAL_DIST_SQ
DOUBLE PRECISION THRESHOLD_SQ
INTEGER I, J
THRESHOLD_SQ = THRESHOLD ** 2
DO I = 1, NUM_ATOMS
DO J = 1, I-1
DIST_SQ(1) = (ATOMS(I,1) - ATOMS(J,1)) ** 2
DIST_SQ(2) = (ATOMS(I,2) - ATOMS(J,2)) ** 2
DIST_SQ(3) = (ATOMS(I,3) - ATOMS(J,3)) ** 2
TOTAL_DIST_SQ = DIST_SQ(1) + DIST_SQ(2) + DIST_SQ(3)
IF (TOTAL_DIST_SQ .LE. THRESHOLD_SQ) THEN
C
C ADD THE FORCE OF THE NEARBY ATOM ACTING ON THIS
C ATOM ...
C