home *** CD-ROM | disk | FTP | other *** search
- -- This is the report generator to execute if A000043.ADA was
- -- used for PIWG_IO
-
- with TEXT_IO ; use TEXT_IO ;
- with DIRECT_IO ;
- with DURATION_IO ; use DURATION_IO ;
-
- procedure A000049 is
- subtype NAME_STRING is STRING ( 1 .. 12 ) ;
- subtype LINE_STRING is STRING ( 1 .. 80 ) ;
- USED_NAME : NAME_STRING := "************" ;
-
- --
- type IO_RECORD is
- record
- TESTNAME : NAME_STRING ;
- CLASSNAME : NAME_STRING ;
- CPU_DELTA : DURATION ;
- WALL_DELTA : DURATION ;
- NUM_OF_ITERATIONS : INTEGER ;
- TEST_DESC_1 : LINE_STRING ;
- TEST_DESC_2 : LINE_STRING ;
- TEST_DESC_3 : LINE_STRING ;
- end record ;
-
- --
- DATA_REC : IO_RECORD ;
-
-
- package PIWG_DIRECT_IO is new DIRECT_IO ( IO_RECORD ) ;
- use PIWG_DIRECT_IO ;
-
- --
- type DATA_ARRAY is array ( PIWG_DIRECT_IO.COUNT range <> ) of IO_RECORD ;
-
- --
- DISK_DATA : DATA_ARRAY ( 1 .. 2000 ) ;
- CPU_TIMES : array ( 1 .. 20 ) of DURATION ;
- WALL_TIMES : array ( 1 .. 20 ) of DURATION ;
- COUNT_TIMES : POSITIVE ;
-
- --
- DISK_FILE : PIWG_DIRECT_IO.FILE_TYPE ;
- RECORD_INDEX : PIWG_DIRECT_IO.COUNT ;
- RECORD_INDEX_FIRST : PIWG_DIRECT_IO.COUNT ;
- RECORD_INDEX_LAST : PIWG_DIRECT_IO.COUNT ;
- RECORD_SEARCH : PIWG_DIRECT_IO.COUNT ;
-
- --
- TESTNAME : NAME_STRING ;
- CLASSNAME : NAME_STRING ;
- CPU_DELTA : DURATION ;
- WALL_DELTA : DURATION ;
- NUM_OF_ITERATIONS : INTEGER ;
- TEST_DESC_1 : LINE_STRING ;
- TEST_DESC_2 : LINE_STRING ;
- TEST_DESC_3 : LINE_STRING ;
-
- --
-
- procedure OPEN_INPUT is
- begin
- begin
- OPEN ( DISK_FILE , IN_FILE , "PIWGRES" ) ;
- exception
- when others =>
- PUT ( "Error in opening disk file - PIWGRES " ) ;
- NEW_LINE ;
- PUT ( "Please check file namings for your particular host" ) ;
- NEW_LINE ;
- end ;
- end OPEN_INPUT ;
-
- --
-
- procedure CLOSE_INPUT is
- begin
- CLOSE ( DISK_FILE ) ;
- end CLOSE_INPUT ;
-
- --
-
- procedure PIWG_OUTPUT ( TESTNAME : in STRING ;
- CLASSNAME : in STRING ;
- CPU_DELTA : in DURATION ;
- WALL_DELTA : in DURATION ;
- NUM_OF_ITERATIONS : in INTEGER ;
- SAMPLE_COUNT : POSITIVE ;
- TEST_DESC_1 : in STRING ;
- TEST_DESC_2 : in STRING ;
- TEST_DESC_3 : in STRING ) is
- begin
- NEW_LINE ;
- PUT ( "Test Name: " ) ;
- PUT ( TESTNAME ) ;
- PUT ( " Class Name: " ) ;
- PUT_LINE ( CLASSNAME ) ;
- PUT ( "CPU Time: " ) ;
- DURATION_IO.PUT ( CPU_DELTA , 6 , 1 ) ;
- PUT_LINE ( " microseconds " ) ;
- PUT ( "Wall Time: " ) ;
- DURATION_IO.PUT ( WALL_DELTA , 6 , 1 ) ;
- PUT ( " microseconds. Iteration Count: " ) ;
- PUT_LINE ( INTEGER'IMAGE( NUM_OF_ITERATIONS )) ;
- PUT ( " number of samples:" ) ;
- PUT_LINE ( POSITIVE'IMAGE( SAMPLE_COUNT )) ;
- PUT_LINE ( "Test Description:" ) ;
- PUT_LINE ( TEST_DESC_1 ) ;
- PUT_LINE ( TEST_DESC_2 ) ;
- PUT_LINE ( TEST_DESC_3 ) ;
- NEW_LINE ( 2 ) ;
- end PIWG_OUTPUT ;
-
- --
- begin
- PUT_LINE ( "A000049 report beginning" ) ;
- if not IS_OPEN ( DISK_FILE ) then
- OPEN_INPUT ;
- end if ;
-
- --
- RECORD_INDEX_LAST := SIZE ( DISK_FILE ) ;
- RECORD_INDEX_FIRST := PIWG_DIRECT_IO.COUNT ( 1 ) ;
- RECORD_INDEX := RECORD_INDEX_FIRST ;
-
- --
- while RECORD_INDEX <= RECORD_INDEX_LAST loop
- READ ( DISK_FILE , DATA_REC , RECORD_INDEX ) ;
- DISK_DATA ( RECORD_INDEX ) := DATA_REC ;
- RECORD_INDEX := RECORD_INDEX + PIWG_DIRECT_IO.COUNT ( 1 ) ;
- end loop ;
- CLOSE_INPUT ;
- RECORD_INDEX := RECORD_INDEX_FIRST ;
- --
- while RECORD_INDEX <= RECORD_INDEX_LAST loop
- TESTNAME := DISK_DATA ( RECORD_INDEX ).TESTNAME ;
- if TESTNAME /= USED_NAME then
- CLASSNAME := DISK_DATA ( RECORD_INDEX ).CLASSNAME ;
- NUM_OF_ITERATIONS := DISK_DATA ( RECORD_INDEX ).NUM_OF_ITERATIONS ;
- TEST_DESC_1 := DISK_DATA ( RECORD_INDEX ).TEST_DESC_1 ;
- TEST_DESC_2 := DISK_DATA ( RECORD_INDEX ).TEST_DESC_2 ;
- TEST_DESC_3 := DISK_DATA ( RECORD_INDEX ).TEST_DESC_3 ;
- COUNT_TIMES := 1 ;
- CPU_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_INDEX ).CPU_DELTA ;
- WALL_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_INDEX ).WALL_DELTA ;
-
- --
- RECORD_SEARCH := RECORD_INDEX + 1 ;
- while RECORD_SEARCH <= RECORD_INDEX_LAST loop
- if TESTNAME = DISK_DATA ( RECORD_SEARCH ).TESTNAME then
- DISK_DATA ( RECORD_SEARCH ).TESTNAME := USED_NAME ;
- COUNT_TIMES := COUNT_TIMES + 1 ;
- CPU_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_SEARCH ).CPU_DELTA ;
- WALL_TIMES ( COUNT_TIMES ) := DISK_DATA ( RECORD_SEARCH ).WALL_DELTA ;
- end if ;
- RECORD_SEARCH := RECORD_SEARCH + 1 ;
- end loop ;
- CPU_DELTA := 0.0 ;
- WALL_DELTA := 0.0 ;
- for I in 1 .. COUNT_TIMES loop
- CPU_DELTA := CPU_DELTA + CPU_TIMES ( I ) ;
- WALL_DELTA := WALL_DELTA + WALL_TIMES ( I ) ;
- end loop ;
- CPU_DELTA := DURATION ( CPU_DELTA / DURATION ( COUNT_TIMES ) ) ;
- WALL_DELTA := DURATION ( WALL_DELTA / DURATION ( COUNT_TIMES ) ) ;
- PIWG_OUTPUT ( TESTNAME , CLASSNAME , CPU_DELTA , WALL_DELTA ,
- NUM_OF_ITERATIONS , COUNT_TIMES , TEST_DESC_1 , TEST_DESC_2 ,
- TEST_DESC_3 ) ;
-
- --
- end if ;
- RECORD_INDEX := RECORD_INDEX + PIWG_DIRECT_IO.COUNT ( 1 ) ;
- end loop ;
- PUT_LINE ( "A000049 report complete" ) ;
- end A000049 ;
-