510
511
512
513
514 USE timer_mod
517 USE output_mod
518
519
520
521#include "implicit_f.inc"
522
523
524
525#include "com01_c.inc"
526#include "com04_c.inc"
527#include "scr05_c.inc"
528#include "sms_c.inc"
529#include "task_c.inc"
530#include "timerc_c.inc"
531#include "timeri_c.inc"
532
533#include "units_c.inc"
534#include "filescount_c.inc"
535 COMMON /iclock/clock0
536 INTEGER CLOCK0
537 COMMON /rclock/elapsed
538 DOUBLE PRECISION ELAPSED
539
540
541
542 TYPE(TIMER_), INTENT(INOUT) :: T
543 INTEGER ,INTENT(IN) :: ITHERM
544 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
545
546
547
548 INTEGER I, NPROC, MSGTAG, IRSIZE, J, IH, IM, IS
549 DOUBLE PRECISION SECS, TOTAL, CUMUL(MAX_NB_TIMER),
550 . (MAX_NB_TIMER), DEVIATION(MAX_NB_TIMER),
551 . DMIN(MAX_NB_TIMER), DMAX(MAX_NB_TIMER),CUMUL_MAT,CUMUL_ELEM,
552 . CUMUL_FAIL,ARRAY(NSPMD),X_MINVALUE,X_MAXVALUE,Y_MAXVALUE
553 INTEGER MEMUSE(),MEM_L,MMIN,MMAX,MTOT,MAVR,
554 . OUTSIZE,RFILESIZE,NB_INTERV
555 INTEGER VMPEAK, VMSIZE,VMRSS,VMHWM, VMSTK,MEMSTAT(5,NSPMD),
556 . GOT_MEM_MAP
557 CHARACTER(LEN=9) TITLES(MAX_NB_TIMER)
558 INTEGER FIELDS(11),
559 REAL ZEROS
560 INTEGER :: ,IJK,IJKL,LEN_RST_NAME
561 CHARACTER*8 DATE
562 CHARACTER*10 TIME
563 LOGICAL :: BOOL_FILE
564 INTEGER :: CURRENT_RUN,OFFSET
565 INTEGER, DIMENSION(2148) :: RST_NAME
566 INTEGER :: LEN_TMP_NAME
567 CHARACTER(len=4096) :: TMP_NAME
568 INTEGER :: INDICE
569 INTEGER, PARAMETER :: INTSIZE = 4
570 REAL, DIMENSION(:,:), ALLOCATABLE :: CPUTIME
571 REAL, DIMENSION(:,:), ALLOCATABLE :: SYSTIME
572 REAL, DIMENSION(:,:), ALLOCATABLE :: REALTIME
573
574
575 titles(macro_timer_resol ) = "RESOL"
576 titles(macro_timer_contsort ) = "CONTSORT"
577 titles(macro_timer_contfor ) = "CONTFOR"
578 titles(macro_timer_element ) = "ELEMENT"
579 titles(macro_timer_kin ) = "KINCOND"
580 titles(macro_timer_integ ) = "INTEG"
581 titles(macro_timer_p0 ) = "T0"
582 titles(macro_timer_io ) = "IO"
583 titles(macro_timer_asm ) = "ASM"
584 titles(macro_timer_ams ) = "SMS"
585
586
587 titles(macro_timer_alemain ) = "ALEMAIN"
588 titles(macro_timer_ifsub0 ) = "IFSUB0"
589 titles(macro_timer_multifvm ) = "MULTIFVM"
590 titles(macro_timer_spmdcfd ) = "SPMDCFD"
591 titles(macro_timer_muscl ) = "MUSCL"
592
593
594 titles(31) = '[K]SETUP'
595 titles(32) = '[M]SETUP'
596 titles(33) = 'IMP_SOLV'
597 titles(34) = 'IMP_TOT'
598 titles(36) = 'CRITER'
599 titles(37) = 'FOR'
600 titles(38) = 'VEL'
601
602 zeros=zero
603 IF (icray==1) THEN
604 irsize = 8
605 ELSE
606 irsize = 4
607 ENDIF
608
609 vmpeak=-1
610 vmsize=-1
611 vmrss=-1
612 vmhwm=-1
613 vmstk=-1
614 CALL map_memory(vmpeak, vmsize,vmrss,vmhwm, vmstk)
615 nproc = nspmd
616
617
618
619
620 ALLOCATE(cputime(max_nb_timer,nspmd))
621 ALLOCATE(systime(max_nb_timer,nspmd))
622 ALLOCATE(realtime(max_nb_timer,nspmd))
623
624 DO i = 1, max_nb_timer
625
626 cputime(i,1) = t%CPUTIME(i)
627 systime(i,1) = t%SYSTIME(i)
628 realtime(i,1) = t%REALTIME(i)
629 ENDDO
630
631 memuse(ispmd+1)=vmpeak
632 memstat(1,ispmd+1) = vmpeak
633 memstat(2,ispmd+1) = vmsize
634 memstat(3,ispmd+1) = vmrss
635 memstat(4,ispmd+1) = vmhwm
636 memstat(5,ispmd+1) = vmstk
637
638
639
640 IF (nspmd > 1) THEN
641
642 msgtag = 1000
643 IF (ispmd/=0) THEN
645 . msgtag+ispmd+1,intsize)
647 . msgtag+ispmd+1,intsize)
649 . msgtag+ispmd+1,intsize)
650 ELSE
651 DO i = 2, nspmd
652 CALL rad_spmd_recv(cputime(1,i),max_nb_timer*irsize,i-1,it_spmd,
653 . msgtag+i,intsize)
654 CALL rad_spmd_recv(systime(1,i),max_nb_timer*irsize,i-1,it_spmd,
655 . msgtag+i,intsize)
656 CALL rad_spmd_recv(realtime(1,i),max_nb_timer*irsize,i-1,it_spmd,
657 . msgtag+i,intsize)
658 ENDDO
659 ENDIF
660
661
662 msgtag = 1100
663 memuse=0
664 mem_l=0
665
666
667
668
669
670
671
672
673 IF (ispmd/=0) THEN
675 . msgtag+ispmd+1,intsize)
677 . msgtag+ispmd+1,intsize)
679 . msgtag+ispmd+1,intsize)
681 . msgtag+ispmd+1,intsize)
683 . msgtag+ispmd+1,intsize)
684 ELSE
685 DO i = 2, nspmd
687 . msgtag+i,intsize)
688 memstat(1,i) = memuse(i)
690 . msgtag+i,intsize)
692 . msgtag+i,intsize)
694 . msgtag+i,intsize)
696 . msgtag+i,intsize)
697
698 ENDDO
699
700 indice = 1
701 IF(memstat(4,1)/=-1) THEN
702 indice = 4
703 ELSEIF(memstat(1,1)/=-1) THEN
704 indice = 1
705 ELSEIF(memstat(2,1)/=-1) THEN
706 indice = 2
707 ELSEIF(memstat(3,1)/=-1) THEN
708 indice = 3
709 ENDIF
710 mmin = memstat(indice,1)
711 mmax = memstat(indice,1)
712 mtot = memstat(indice,1)
713 DO i=2,nspmd
714 IF (mmin > memstat(indice,i) ) THEN
715 mmin = memstat(indice,i)
716 ENDIF
717 IF (mmax < memstat(indice,i) ) THEN
718 mmax = memuse(i)
719 ENDIF
720 mtot = mtot+ memstat(indice,i)
721 ENDDO
722 mavr=mtot/nspmd
723 ENDIF
724 ELSE
725
726
727 IF(vmhwm/=-1) THEN
728 mem_l = vmhwm
729 ELSEIF(vmpeak/=-1) THEN
730 mem_l = vmpeak
731 ELSEIF(vmsize/=-1) THEN
732 mem_l = vmsize
733 ELSE
734 mem_l = -1
735 ENDIF
736 mmin = mem_l
737 mmax = mem_l
738 mtot = mem_l
739 mavr = mem_l
740 ENDIF
741
742
744
746
747
748
749
750 IF (ispmd/=0) RETURN
751
752 WRITE(istdo,*)' '
753 WRITE(istdo,*)' ** CPU USER TIME **'
754 WRITE(istdo,*)' '
755
756 CALL print_summary(1,max_nb_timer,cputime,titles,istdo,itherm)
757
758 WRITE(iout,*)' '
759 WRITE(iout,*)' ** CPU USER TIME **'
760 WRITE(iout,*)' '
761
762
763 CALL print_summary(1,max_nb_timer,cputime,titles,iout,itherm)
764
765
766
767
768
769
770 IF(imon_mat==1)THEN
771 cumul_mat=zero
772 cumul_elem=zero
773 cumul_fail=zero
774 DO i = 1, nproc
775 cumul_mat = cumul_mat +cputime(35,i)
776 cumul_elem= cumul_elem+cputime(3,i)
777 cumul_fail= cumul_fail+cputime(121,i)
778 ENDDO
779
780 WRITE(iout,*)' '
781 WRITE(iout,*)' ** MATERIAL LAWS COST **'
782 WRITE(iout,*)' '
783 WRITE(istdo,*)' '
784 WRITE(istdo,*)' ** MATERIAL LAWS COST **'
785 WRITE(istdo,*)' '
786 WRITE(iout, '(A)')' #PROC ELEM COST MAT COST FAIL COST'
787 WRITE(istdo,'(A)')' #PROC ELEM COST MAT COST FAIL COST'
788 DO i = 1, nproc
789 WRITE(iout, '(I4,3x,E9.4,3x,E9.4,3x,E9.4)') i,cputime(3,i),cputime(35,i),cputime(121,i)
790 WRITE(istdo,'(I4,3x,E9.4,3x,E9.4,3x,E9.4)') i,cputime(3,i),cputime(35,i),cputime(121,i)
791 ENDDO
792 WRITE(iout,*)' '
793 WRITE(istdo,*)' '
794 WRITE(iout,'(A,E9.4)') ' TOTAL ELEMENT COST..............: ',cumul_elem
795 WRITE(iout,'(A,E9.4)') ' TOTAL MATERIAL COST.............: ',cumul_mat
796 WRITE(iout,'(A,E9.4)') ' TOTAL FAIL COST.................: ',cumul_fail
797
798 WRITE(istdo,'(A,E9.4)') ' TOTAL ELEMENT COST..............: ',cumul_elem
799 WRITE(istdo,'(A,E9.4)') ' TOTAL MATERIAL COST.............: ',cumul_mat
800 WRITE(istdo,'(A,E9.4)') ' TOTAL FAIL COST.................: ',cumul_fail
801 WRITE(iout,*)' '
802 WRITE(istdo,*)' '
803 ENDIF
804
805 WRITE(iout,*)' '
806
807
808
809 DO i = 1, max_nb_timer
810 cumul(i) = zero
811 END DO
812 DO i = 1,nproc
813 DO j = 1, max_nb_timer
814 cumul(j) = cumul(j) + cputime(j,i)
815 ENDDO
816 ENDDO
817 IF(idtmins==0.AND.idtmins_int==0)THEN
818 total = cumul(1)-cumul(2)-cumul(8)-cumul(3)-cumul(4)-cumul(5)
819 - -cumul(9)-cumul(macro_timer_alemain)
820 ELSE
821 total = cumul(1)-cumul(2)-cumul(8)-cumul(3)-cumul(4)-cumul(5)
822 - -cumul(9)-cumul(39)-cumul(macro_timer_alemain)
823 END IF
824 IF(cumul(1)<=zero)cumul(1)=em10
825
826
827 WRITE(istdo,*) ''
828
829 WRITE(istdo,*)
830 . ' ** CUMULATIVE CPU TIME SUMMARY **'
831 WRITE(istdo,*)' '
832 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' CONTACT SORTING.............: ',
833 + cumul(2),100*cumul(2)/cumul(1),' % '
834 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' CONTACT FORCES..............: ',
835 + cumul(8),100*cumul(8)/cumul(1),' % '
836 IF(ninter25/=0)
837 * WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' ..INCLUDING CONTACT NORMALS: ',
838 * cumul(106),100*cumul(106)/cumul(1),' % '
839 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' ELEMENT FORCES..............: ',
840 + cumul(3),100*cumul(3)/cumul(1),' % '
841 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' KINEMATIC COND..............: ',
842 + cumul(4),100*cumul(4)/cumul(1),' % '
843 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' INTEGRATION.................: ',
844 + cumul(5),100*cumul(5)/cumul(1),' % '
845 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' ASSEMBLING..................: ',
846 + cumul(9),100*cumul(9)/cumul(1),' % '
847 IF(idtmins/=0.OR.idtmins_int/=0)THEN
848 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' AMS.........................: ',
849 + cumul(39),100*cumul(39)/cumul(1),' % '
850 END IF
851 IF(iale+ieuler+itherm/=0) THEN
852 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' ALE.........................: ',
853 + cumul(macro_timer_alemain),
854 + 100*cumul(macro_timer_alemain)/cumul(1),' % '
855 ENDIF
856
857 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' OTHERS (including I/O)......: ',
858 + total,100*total/cumul(1),' % '
859 WRITE(istdo,'(A,E9.4,3x,F6.2,A)')' TOTAL.......................: ',
860 + cumul(1),100*cumul(1)/cumul(1),' % '
861
862
863
864
865
866
867
868
869 WRITE(istdo,*)' '
870
871 WRITE(iout,*) ''
872 WRITE(iout,*)
873 . ' ** CUMULATIVE CPU TIME SUMMARY **'
874 WRITE(iout,*)' '
875 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' CONTACT SORTING.............: ',
876 + cumul(2),100*cumul(2)/cumul(1),' % '
877 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' CONTACT FORCES..............: ',
878 + cumul(8),100*cumul(8)/cumul(1),' % '
879 IF(ninter25/=0)
880 * WRITE(iout,'(A,E9.4,3x,F6.2,A)')' .. INCLUDING CONTACT NORMALS: ',
881 * cumul(106),100*cumul(106)/cumul(1),' % '
882 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' ELEMENT FORCES..............: ',
883 + cumul(3),100*cumul(3)/cumul(1),' % '
884 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' KINEMATIC COND..............: ',
885 + cumul(4),100*cumul(4)/cumul(1),' % '
886 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' INTEGRATION.................: ',
887 + cumul(5),100*cumul(5)/cumul(1),' % '
888 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' ASSEMBLING..................: ',
889 + cumul(9),100*cumul(9)/cumul(1),' % '
890 IF(idtmins/=0.OR.idtmins_int/=0)THEN
891 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' AMS.........................: ',
892 + cumul(39),100*cumul(39)/cumul(1),' % '
893 END IF
894 IF(iale+ieuler+itherm/=0) THEN
895 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' ALE.........................: ',
896 + cumul(macro_timer_alemain)
897 + ,100*cumul(macro_timer_alemain)/cumul(1),' % '
898 ENDIF
899 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' OTHERS (including I/O)......: ',
900 + total,100*total/cumul(1),' % '
901 WRITE(iout,'(A,E9.4,3x,F6.2,A)')' TOTAL.......................: ',
902 + cumul(1),100*cumul(1)/cumul(1),' % '
903 WRITE(iout,*)' '
904
905
906
907
908 WRITE(iout,*)' '
909 WRITE(iout,*)' ** ELAPSED TIME **'
910 WRITE(iout,*)' '
911
912 CALL print_summary(2,max_nb_timer,realtime,titles,iout,itherm)
913
914 IF(.false.)THEN
915 WRITE(iout,*)' '
916 WRITE(iout,*)' ** ADDITIONAL DEBUG TIMERS (2) **'
917 WRITE(iout,*)' '
918 DO i = 1, nproc
919 WRITE(iout,5550)i,
920 . realtime(96,i),realtime(97,i),realtime(98,i),realtime(99,i),
921 . realtime(100,i),realtime(101,i),realtime(102,i)
922 ENDDO
923 END IF
924
925 WRITE(iout,*)' '
926
927 WRITE(istdo,*)
928 . ' ** MEMORY USAGE STATISTICS **'
929 WRITE(istdo,*)' '
930 WRITE(istdo,'(A,A,I8,A)')' TOTAL MEMORY USED ',
931 + '.........................: ',mtot,' MB'
932 WRITE(istdo,'(A,A,I8,A)')' MAXIMUM MEMORY PER PROCESSOR' ,
933 * '...............: ', mmax,' MB'
934 WRITE(istdo,'(A,A,I8,A)')' MINIMUM MEMORY PER PROCESSOR',
935 * '...............: ',mmin,' MB'
936 WRITE(istdo,'(A,A,I8,A)')' AVERAGE MEMORY PER PROCESSOR',
937 * '...............: ', mavr,' MB'
938 WRITE(istdo,*)' '
939
940 IF (imonm > 0)THEN
941 WRITE(istdo,'(A)') ' #PROC MEMORY USED'
942 DO i = 1, nproc
943 WRITE(istdo,'(I4,A,I8,A)') i,' ',memuse(i),' MB'
944 ENDDO
945 WRITE(istdo,*)' '
946 ENDIF
947
948
949
950 WRITE(iout,*)
951 . ' ** MEMORY USAGE STATISTICS **'
952 WRITE(iout,*)' '
953 WRITE(iout,'(A,A,I8,A)')' TOTAL MEMORY USED ',
954 + '.........................: ',mtot,' MB'
955 WRITE(iout,'(A,A,I8,A)')' MAXIMUM MEMORY PER PROCESSOR' ,
956 * '...............: ', mmax,' MB'
957 WRITE(iout,'(A,A,I8,A)')' MINIMUM MEMORY PER PROCESSOR',
958 * '...............: ',mmin,' MB'
959 WRITE(iout,'(A,A,I8,A)')' AVERAGE MEMORY PER PROCESSOR',
960 * '...............: ', mavr,' MB'
961 WRITE(iout,*)' '
962
963
964
965
966
967
968
969
970
971
973 IF(got_mem_map==1 .OR. imonm > 0)THEN
974 WRITE(iout,'(A)') ' ** PROCESS MEMORY MAPPING'
975 WRITE(iout,*)' '
976 WRITE(iout,'(A)') ' #PROC VMPEAK VMSIZE VMRSS VMHWM VMSTK'
977 DO i = 1, nproc
978 WRITE(iout,'(I4,A,I10,A,I10,A,I10,A,I10,A,I10)')
979 * i,' ',memstat(1,i),' ',memstat(2,i),' ',memstat(3,i),' ',
980 * memstat(4,i),' ',memstat(5,i)
981 ENDDO
982 WRITE(istdo,*)' '
983
984 ENDIF
985
986
987
988
989
990
991 h3dtotalsize = h3dtotalsize*1024
992 outsize=animtotalsize+thfilesize+outpfilesize+h3dtotalsize
993 DO i=1,9
994 outsize = outsize+multithfilesize(i)
995 ENDDO
996 rfilesize=restartfilesize
997 DO i=1,26
998 rfilesize = rfilesize+multirests(i)
999 ENDDO
1000 totalfilecount = (outsize)+rfilesize+mumpsfilesize+
1001 * bcsfilesize
1002 totalfilecount = totalfilecount/1024
1003 outsize = outsize / 1024
1004 rfilesize = rfilesize / 1024
1005 mumpsfilesize = mumpsfilesize / 1024
1006 bcsfilesize = bcsfilesize / 1024
1007 WRITE(istdo,*)
1008 . ' ** DISK USAGE STATISTICS **'
1009 WRITE(istdo,*)' '
1010 WRITE(istdo,'(A,A,I10,A)')' TOTAL DISK SPACE USED ',
1011 * '.....................: ',totalfilecount,
1012 * ' MB'
1013 WRITE(istdo,'(A,A,I10,A)')' ANIMATION/H3D/TH/OUTP SIZE ',
1014 * '................: ',outsize,
1015 * ' MB'
1016 WRITE(istdo,'(A,A,I10,A)')' RESTART FILE SIZE ',
1017 * '.........................: ',
1018 * rfilesize,' MB'
1019 IF (mumpsfilesize > 0)THEN
1020 WRITE(istdo,'(A,A,I10,A)')' MUMPS INTERNAL FILE USAGE ',
1021 * '.................: ',
1022 * mumpsfilesize,' MB'
1023 ENDIF
1024 IF (bcsfilesize > 0) THEN
1025 WRITE(istdo,'(A,A,I10,A)')' BCS INTERNAL FILE USAGE ',
1026 * '...................: ',
1027 * bcsfilesize,' MB'
1028 ENDIF
1029
1030
1031 WRITE(istdo,*)' '
1032
1033
1034 WRITE(iout,*)
1035 . ' ** DISK USAGE STATISTICS **'
1036 WRITE(iout,*)' '
1037 WRITE(iout,'(A,A,I10,A)')' TOTAL DISK SPACE USED ',
1038 * '.....................: ',totalfilecount,
1039 * ' MB'
1040 WRITE(iout,'(A,A,I10,A)')' ANIMATION/H3D/TH/OUTP SIZE ',
1041 * '................: ',outsize,
1042 * ' MB'
1043 WRITE(iout,'(A,A,I10,A)')' RESTART FILE SIZE ',
1044 * '.........................: ',
1045 * rfilesize,' MB'
1046 IF (mumpsfilesize > 0)THEN
1047 WRITE(iout,'(A,A,I10,A)')' MUMPS INTERNAL FILE USAGE ',
1048 * '.................: ',
1049 * mumpsfilesize/1024,' MB'
1050 ENDIF
1051 IF (bcsfilesize > 0) THEN
1052 WRITE(iout,'(A,A,I10,A)')' BCS INTERNAL FILE USAGE ',
1053 * '...................: ',
1054 * bcsfilesize/1024,' MB'
1055 ENDIF
1056
1057 WRITE(iout,*)' '
1058
1059
1060
1061
1063 CALL date_and_time(date,time)
1064 output%CHECKSUM%DATE = date
1065 output%CHECKSUM%TIME = time
1066
1067 IF(ispmd==0) THEN
1073
1074 DO i = 1, len_tmp_name
1075 rst_name(i) = ichar(tmp_name(i:i))
1076 END DO
1077 bool_file=.false.
1078 INQUIRE(file=tmp_name(1:len_tmp_name), exist=bool_file)
1079
1080 IF(bool_file) THEN
1082 CALL open_c(rst_name,len_tmp_name,2)
1088 ENDIF
1089 ENDIF
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099 ih=int(secs/3600.0d0)
1100 im=int((secs-ih*3600.0d0)/60.0d0)
1101 is=int(secs-ih*3600.0d0-im*60.0d0)
1102
1103 WRITE(iout,*)
1104 . ' ** COMPUTE TIME INFORMATION **'
1105 WRITE(iout,*)
1106 . ' ** CURRENT ENGINE **'
1107 WRITE(iout,*)' '
1108
1109 WRITE(iout,6200)startdate(1:4),startdate(5:6),startdate(7:8),
1110 . starttime(1:2),starttime(3:4),starttime(5:6)
1111 WRITE(iout,6300)date(1:4),date(5:6),date(7:8),
1112 . time(1:2),time(3:4),time(5:6)
1113 WRITE(iout,*)' '
1114
1115 WRITE(istdo,6000)secs
1116 WRITE(istdo,6100)ih,im,is
1117 IF(nproc>1.AND.secs>zero)WRITE(istdo,8000)cumul(1)/secs
1118 WRITE(istdo,*)' '
1119 WRITE(iout,6000)secs
1120 WRITE(iout,6100)ih,im,is
1121 IF(nproc>1.AND.secs>zero)WRITE(iout,8000)cumul(1)/secs
1122
1123 1000 FORMAT(' ** PROCESSOR NUMBER **',16(i8,5x,"%",2x))
1124 2000 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','ELEMENT ',
1125 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1126 . 'ASSEMB. ','RESOL ')
1127 2001 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','ELEMENT ',
1128 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1129 . 'ASSEMB. ','AMS ','RESOL ')
1130 2050 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1131 . 1x,e9.4,1x,e9.4,1x,e9.4)
1132 2051 FORMAT(i4,3x,f6.2,a,1x,f6.2,a,1x,f6.2,a,1x,f6.2,a,1x,f6.2,a,
1133 . 1x,f6.2,a,1x,f6.2,a,1x,f6.2,a,1x,f6.2,a)
1134 2055 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1135 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1136 2057 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1137 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1138 2100 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','ELEMENT ',
1139 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1140 . 'ASSEMB. ','RESOL ')
1141 2101 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','ELEMENT ',
1142 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1143 . 'ASSEMB. ' ,'AMS ','RESOL ')
1144 2102 FORMAT(' ','CONT.SORT ','CONT. F ','ELEMENT ',
1145 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1146 . 'ASSEMB. ','RESOL ')
1147 2103 FORMAT(' ','CONT.SORT ','CONT. F ','ELEMENT ',
1148 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1149 . 'ASSEMB. ' ,'AMS ','RESOL ')
1150 2110 FORMAT(' #PROC ','[K]SETUP ','[M]SETUP ','IMPL.SOLV ',
1151 . 'IMPL.TOTAL')
1152 2120 FORMAT(' #PROC ',' COMM DOT',' COMM V ','COMM GPU>CPU ',
1153 . 'COMM CPU>GPU ')
1154 2121 FORMAT(' ',' COMM DOT',' COMM V ','COMM GPU>CPU ',
1155 . 'COMM CPU>GPU ')
1156 2125 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1157 2126 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1158 2150 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,
1159 . e9.4,1x,e9.4,1x,e9.4)
1160 2151 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,
1161 . e9.4,1x,e9.4,1x,e9.4)
1162 2155 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1163 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1164 2156 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1165 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1166 2157 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1167 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1168 2158 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1169 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1170 2160 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1171 2200 FORMAT(' #PROC ','CRITER ','ADAPT FOR ','ADAPT VEL ')
1172 2201 FORMAT(' ','CRITER ','ADAPT FOR ','ADAPT VEL ')
1173 2250 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4)
1174 2251 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4)
1175 3000 FORMAT(' #PROC ','FORCES ','RBY.FOR. ','RBY.VEL. ',
1176 . 'VELOCITIES',' TOTAL ','% CPU')
1177 3001 FORMAT(' ','FORCES ','RBY.FOR. ','RBY.VEL. ',
1178 . 'VELOCITIES',' TOTAL ')
1179 3050 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,2x,f6.2)
1180 3051 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1181 3330 FORMAT(' #PROC ',' PCG ',' PARIT F ',' COMM R ',
1182 . ' COMP M.V ',' COMM VFI ',' COMM M.V ',' TOT PROJ ',
1183 . ' MAV_LT2 ',' MAM_NM ',' MAV_N,MN ',' COMP MV/E',
1184 . ' BUILD M ')
1185 3331 FORMAT(' ',' PCG ',' PARIT F ',' COMM R ',
1186 . ' COMP M.V ',' COMM VFI ',' COMM M.V ',' TOT PROJ ',' MAV_LT2 ',
1187 . ' MAM_NM ',' MAV_N,MN ',' COMP MV/E',' BUILD M ')
1188 3335 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1189 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1190 3336 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1191 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1192 4000 FORMAT(' #PROC ','BUCKCRIT ',' COMMCRIT',' BUCKET ',
1193 . ' gfront ',' cont.opt ',' cont.f** ',
1194 . ' cont.dst ',' c+e force',' cont.norml')
1195 4001 FORMAT(' ','buckcrit ',' commcrit',' bucket ',
1196 . ' gfront ',' cont.opt ',' cont.f** ',
1197 . ' cont.dst ',' c+e force')
1198 4050 FORMAT(I4,3x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,
1199 . E9.4,1x,E9.4,1x,E9.4)
1200 4051 FORMAT(1x,A4,2x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,
1201 . E9.4,1x,E9.4)
1202 4500 FORMAT(' #PROC ','RB+SENS ',' CLOADS ',' BCS ',
1203 . ' RL+RW ',' FIXVEL ',' RBE3 ',' GRAV')
1204 4501 FORMAT(' ','RB+SENS ',' CLOADS ',' BCS ',
1205 . ' RL+RW ',' FIXVEL ',' RBE3 ',' GRAV')
1206 4550 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,2x,e9.4,1x,
1207 . e9.4,1x,e9.4,1x,e9.4)
1208 4551 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,2x,e9.4,1x,
1209 . e9.4,1x,e9.4,1x,e9.4)
1210 5000 FORMAT(' #PROC ','FICOM1 ',' FICOM2 ',' ISDXV1 ',
1211 . ' ISDXV2 ',' TRI MMX**',' TRI BOX ',
1212 . ' TRI BUC**',' TRI GAT**',' SYNC COM ',
1213 . ' SHOOTING ',' INT2 F+V')
1214 5001 FORMAT(' ','FICOM1 ',' FICOM2 ',' ISDXV1 ',
1215 . ' ISDXV2 ',' TRI MMX**',' TRI BOX ',
1216 . ' TRI BUC**',' TRI GAT**',' SYNC COM ',
1217 . ' SHOOTING ',' INT2 F+V')
1218 5050 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1219 + 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1220 5051 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1221 + 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1222 5500 FORMAT(' #PROC ','MANCTR ',' MONVOL ',' DAMP ',
1223 . ' INT2* ',' FIXVEL* ',' CLOADS* ',
1224 . ' DT2 ',' AUX ',' FORINTS ',
1225 . ' R2R ',' R2M')
1226 5501 FORMAT(' ','MANCTR ',' MONVOL ',' DAMP ',
1227 . ' INT2* ',' FIXVEL* ',' CLOADS* ',
1228 . ' DT2 ',' AUX ',' FORINTS ',
1229 . ' R2R ',' R2M')
1230 5550 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1231 + 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1232 + 1x,e9.4,1x,e9.4)
1233 5551 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1234 + 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1235 + 1x,e9.4,1x,e9.4)
1236 5600 FORMAT(' #PROC ',' SPH/TOTAL',' SPH/SORT ','SPH/FORCES',
1237 . ' SPH/OTHER',' SPH/SORT1',' COMM.SORT1',' SPH/SORT0',
1238 . ' COMM.SORT0',' COMM.FORCES')
1239 5601 FORMAT(' ',' SPH/TOTAL',' SPH/SORT ','SPH/FORCES',
1240 . ' SPH/OTHER',' SPH/SORT1',' COMM.SORT1',' SPH/SORT0',
1241 . ' COMM.SORT0',' COMM.FORCES')
1242 6000 FORMAT(' ELAPSED TIME =',f14.2,' s')
1243 6100 FORMAT(' ',i8,':',i2.2,':',i2.2)
1244 6200 FORMAT(' EXECUTION STARTED .........................: ',
1245 . a4,'/',a2,'/',a2,' ',a2,':',a2,':',a2)
1246 6300 FORMAT(' EXECUTION COMPLETED .......................: ',
1247 . a4,'/',a2,'/',a2,' ',a2,':',a2,':',a2)
1248 6500 FORMAT(' #PROC ','BEG CRIT ','EOF CRIT ','EOF SORT ',
1249 . ' EOF FORCE',' EOF CYCLE',' EOF SPH')
1250 6501 FORMAT(' ','BEG CRIT ','EOF CRIT ','EOF SORT ',
1251 . ' EOF FORCE',' EOF CYCLE',' EOF SPH')
1252 6550 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1253 6551 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1254 8000 FORMAT(' ESTIMATED SPEEDUP=',f14.2)
1255
1256 RETURN
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine print_summary(flag, ntimax, tabtime, titles, out_id, itherm)
subroutine get_mem_map_var(got_m_map)
void map_memory(int *VmPeak, int *VmSize, int *VmRSS, int *VmHWM, int *VmStk)
subroutine rad_spmd_recv(a, siz, ispmd, it_spmd, msgtag, intsize)
subroutine rad_spmd_send(a, siz, ispmd, it_spmd, msgtag, intsize)
subroutine spmd_glob_isum9(v, len)