OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
pdblas1tim.f File Reference

Go to the source code of this file.

Functions/Subroutines

program pdbla1tim
subroutine pdbla1timinfo (summry, nout, nmat, nval, mxval, nxval, imbxval, mbxval, inbxval, nbxval, rscxval, cscxval, ixval, jxval, incxval, myval, nyval, imbyval, mbyval, inbyval, nbyval, rscyval, cscyval, iyval, jyval, incyval, ldval, ngrids, pval, ldpval, qval, ldqval, ltest, iam, nprocs, alpha, work)

Function/Subroutine Documentation

◆ pdbla1tim()

program pdbla1tim

Definition at line 11 of file pdblas1tim.f.

◆ pdbla1timinfo()

subroutine pdbla1timinfo ( character*( * ) summry,
integer nout,
integer nmat,
integer, dimension( ldval ) nval,
integer, dimension( ldval ) mxval,
integer, dimension( ldval ) nxval,
integer, dimension( ldval ) imbxval,
integer, dimension( ldval ) mbxval,
integer, dimension( ldval ) inbxval,
integer, dimension( ldval ) nbxval,
integer, dimension( ldval ) rscxval,
integer, dimension( ldval ) cscxval,
integer, dimension( ldval ) ixval,
integer, dimension( ldval ) jxval,
integer, dimension( ldval ) incxval,
integer, dimension( ldval ) myval,
integer, dimension( ldval ) nyval,
integer, dimension( ldval ) imbyval,
integer, dimension( ldval ) mbyval,
integer, dimension( ldval ) inbyval,
integer, dimension( ldval ) nbyval,
integer, dimension( ldval ) rscyval,
integer, dimension( ldval ) cscyval,
integer, dimension( ldval ) iyval,
integer, dimension( ldval ) jyval,
integer, dimension( ldval ) incyval,
integer ldval,
integer ngrids,
integer, dimension( ldpval ) pval,
integer ldpval,
integer, dimension( ldqval ) qval,
integer ldqval,
logical, dimension( * ) ltest,
integer iam,
integer nprocs,
double precision alpha,
integer, dimension( * ) work )

Definition at line 542 of file pdblas1tim.f.

550*
551* -- PBLAS test routine (version 2.0) --
552* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
553* and University of California, Berkeley.
554* April 1, 1998
555*
556* .. Scalar Arguments ..
557 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NGRIDS, NMAT, NOUT,
558 $ NPROCS
559 DOUBLE PRECISION ALPHA
560* ..
561* .. Array Arguments ..
562 CHARACTER*( * ) SUMMRY
563 LOGICAL LTEST( * )
564 INTEGER CSCXVAL( LDVAL ), CSCYVAL( LDVAL ),
565 $ IMBXVAL( LDVAL ), IMBYVAL( LDVAL ),
566 $ INBXVAL( LDVAL ), INBYVAL( LDVAL ),
567 $ INCXVAL( LDVAL ), INCYVAL( LDVAL ),
568 $ IXVAL( LDVAL ), IYVAL( LDVAL ), JXVAL( LDVAL ),
569 $ JYVAL( LDVAL ), MBXVAL( LDVAL ),
570 $ MBYVAL( LDVAL ), MXVAL( LDVAL ),
571 $ MYVAL( LDVAL ), NBXVAL( LDVAL ),
572 $ NBYVAL( LDVAL ), NVAL( LDVAL ), NXVAL( LDVAL ),
573 $ NYVAL( LDVAL ), PVAL( LDPVAL ), QVAL( LDQVAL ),
574 $ RSCXVAL( LDVAL ), RSCYVAL( LDVAL ), WORK( * )
575* ..
576*
577* Purpose
578* =======
579*
580* PDBLA1TIMINFO get the needed startup information for timing various
581* Level 1 PBLAS routines, and transmits it to all processes.
582*
583* Notes
584* =====
585*
586* For packing the information we assumed that the length in bytes of an
587* integer is equal to the length in bytes of a real single precision.
588*
589* Arguments
590* =========
591*
592* SUMMRY (global output) CHARACTER*(*)
593* On exit, SUMMRY is the name of output (summary) file (if
594* any). SUMMRY is only defined for process 0.
595*
596* NOUT (global output) INTEGER
597* On exit, NOUT specifies the unit number for the output file.
598* When NOUT is 6, output to screen, when NOUT is 0, output to
599* stderr. NOUT is only defined for process 0.
600*
601* NMAT (global output) INTEGER
602* On exit, NMAT specifies the number of different test cases.
603*
604* NVAL (global output) INTEGER array
605* On entry, NVAL is an array of dimension LDVAL. On exit, this
606* array contains the values of N to run the code with.
607*
608* MXVAL (global output) INTEGER array
609* On entry, MXVAL is an array of dimension LDVAL. On exit, this
610* array contains the values of DESCX( M_ ) to run the code
611* with.
612*
613* NXVAL (global output) INTEGER array
614* On entry, NXVAL is an array of dimension LDVAL. On exit, this
615* array contains the values of DESCX( N_ ) to run the code
616* with.
617*
618* IMBXVAL (global output) INTEGER array
619* On entry, IMBXVAL is an array of dimension LDVAL. On exit,
620* this array contains the values of DESCX( IMB_ ) to run the
621* code with.
622*
623* MBXVAL (global output) INTEGER array
624* On entry, MBXVAL is an array of dimension LDVAL. On exit,
625* this array contains the values of DESCX( MB_ ) to run the
626* code with.
627*
628* INBXVAL (global output) INTEGER array
629* On entry, INBXVAL is an array of dimension LDVAL. On exit,
630* this array contains the values of DESCX( INB_ ) to run the
631* code with.
632*
633* NBXVAL (global output) INTEGER array
634* On entry, NBXVAL is an array of dimension LDVAL. On exit,
635* this array contains the values of DESCX( NB_ ) to run the
636* code with.
637*
638* RSCXVAL (global output) INTEGER array
639* On entry, RSCXVAL is an array of dimension LDVAL. On exit,
640* this array contains the values of DESCX( RSRC_ ) to run the
641* code with.
642*
643* CSCXVAL (global output) INTEGER array
644* On entry, CSCXVAL is an array of dimension LDVAL. On exit,
645* this array contains the values of DESCX( CSRC_ ) to run the
646* code with.
647*
648* IXVAL (global output) INTEGER array
649* On entry, IXVAL is an array of dimension LDVAL. On exit, this
650* array contains the values of IX to run the code with.
651*
652* JXVAL (global output) INTEGER array
653* On entry, JXVAL is an array of dimension LDVAL. On exit, this
654* array contains the values of JX to run the code with.
655*
656* INCXVAL (global output) INTEGER array
657* On entry, INCXVAL is an array of dimension LDVAL. On exit,
658* this array contains the values of INCX to run the code with.
659*
660* MYVAL (global output) INTEGER array
661* On entry, MYVAL is an array of dimension LDVAL. On exit, this
662* array contains the values of DESCY( M_ ) to run the code
663* with.
664*
665* NYVAL (global output) INTEGER array
666* On entry, NYVAL is an array of dimension LDVAL. On exit, this
667* array contains the values of DESCY( N_ ) to run the code
668* with.
669*
670* IMBYVAL (global output) INTEGER array
671* On entry, IMBYVAL is an array of dimension LDVAL. On exit,
672* this array contains the values of DESCY( IMB_ ) to run the
673* code with.
674*
675* MBYVAL (global output) INTEGER array
676* On entry, MBYVAL is an array of dimension LDVAL. On exit,
677* this array contains the values of DESCY( MB_ ) to run the
678* code with.
679*
680* INBYVAL (global output) INTEGER array
681* On entry, INBYVAL is an array of dimension LDVAL. On exit,
682* this array contains the values of DESCY( INB_ ) to run the
683* code with.
684*
685* NBYVAL (global output) INTEGER array
686* On entry, NBYVAL is an array of dimension LDVAL. On exit,
687* this array contains the values of DESCY( NB_ ) to run the
688* code with.
689*
690* RSCYVAL (global output) INTEGER array
691* On entry, RSCYVAL is an array of dimension LDVAL. On exit,
692* this array contains the values of DESCY( RSRC_ ) to run the
693* code with.
694*
695* CSCYVAL (global output) INTEGER array
696* On entry, CSCYVAL is an array of dimension LDVAL. On exit,
697* this array contains the values of DESCY( CSRC_ ) to run the
698* code with.
699*
700* IYVAL (global output) INTEGER array
701* On entry, IYVAL is an array of dimension LDVAL. On exit, this
702* array contains the values of IY to run the code with.
703*
704* JYVAL (global output) INTEGER array
705* On entry, JYVAL is an array of dimension LDVAL. On exit, this
706* array contains the values of JY to run the code with.
707*
708* INCYVAL (global output) INTEGER array
709* On entry, INCYVAL is an array of dimension LDVAL. On exit,
710* this array contains the values of INCY to run the code with.
711*
712* LDVAL (global input) INTEGER
713* On entry, LDVAL specifies the maximum number of different va-
714* lues that can be used for DESCX(:), IX, JX, INCX, DESCY(:),
715* IY, JY and INCY. This is also the maximum number of test
716* cases.
717*
718* NGRIDS (global output) INTEGER
719* On exit, NGRIDS specifies the number of different values that
720* can be used for P and Q.
721*
722* PVAL (global output) INTEGER array
723* On entry, PVAL is an array of dimension LDPVAL. On exit, this
724* array contains the values of P to run the code with.
725*
726* LDPVAL (global input) INTEGER
727* On entry, LDPVAL specifies the maximum number of different
728* values that can be used for P.
729*
730* QVAL (global output) INTEGER array
731* On entry, QVAL is an array of dimension LDQVAL. On exit, this
732* array contains the values of Q to run the code with.
733*
734* LDQVAL (global input) INTEGER
735* On entry, LDQVAL specifies the maximum number of different
736* values that can be used for Q.
737*
738* LTEST (global output) LOGICAL array
739* On entry, LTEST is an array of dimension at least eight. On
740* exit, if LTEST( i ) is .TRUE., the i-th Level 1 PBLAS routine
741* will be tested. See the input file for the ordering of the
742* routines.
743*
744* IAM (local input) INTEGER
745* On entry, IAM specifies the number of the process executing
746* this routine.
747*
748* NPROCS (global input) INTEGER
749* On entry, NPROCS specifies the total number of processes.
750*
751* ALPHA (global output) DOUBLE PRECISION
752* On exit, ALPHA specifies the value of alpha to be used in all
753* the test cases.
754*
755* WORK (local workspace) INTEGER array
756* On entry, WORK is an array of dimension at least
757* MAX( 2, 2*NGRIDS+23*NMAT+NSUBS ) with NSUBS = 8. This array
758* is used to pack all output arrays in order to send info in
759* one message.
760*
761* -- Written on April 1, 1998 by
762* Antoine Petitet, University of Tennessee, Knoxville 37996, USA.
763*
764* =====================================================================
765*
766* .. Parameters ..
767 INTEGER NIN, NSUBS
768 parameter( nin = 11, nsubs = 8 )
769* ..
770* .. Local Scalars ..
771 LOGICAL LTESTT
772 INTEGER I, ICTXT, J
773* ..
774* .. Local Arrays ..
775 CHARACTER*7 SNAMET
776 CHARACTER*79 USRINFO
777* ..
778* .. External Subroutines ..
779 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
780 $ blacs_gridinit, blacs_setup, dgebr2d, dgebs2d,
781 $ icopy, igebr2d, igebs2d, sgebr2d, sgebs2d
782* ..
783* .. Intrinsic Functions ..
784 INTRINSIC max, min
785* ..
786* .. Common Blocks ..
787 CHARACTER*7 SNAMES( NSUBS )
788 COMMON /snamec/snames
789* ..
790* .. Executable Statements ..
791*
792*
793* Process 0 reads the input data, broadcasts to other processes and
794* writes needed information to NOUT
795*
796 IF( iam.EQ.0 ) THEN
797*
798* Open file and skip data file header
799*
800 OPEN( nin, file='PDBLAS1TIM.dat', status='OLD' )
801 READ( nin, fmt = * ) summry
802 summry = ' '
803*
804* Read in user-supplied info about machine type, compiler, etc.
805*
806 READ( nin, fmt = 9999 ) usrinfo
807*
808* Read name and unit number for summary output file
809*
810 READ( nin, fmt = * ) summry
811 READ( nin, fmt = * ) nout
812 IF( nout.NE.0 .AND. nout.NE.6 )
813 $ OPEN( nout, file = summry, status = 'UNKNOWN' )
814*
815* Read and check the parameter values for the tests.
816*
817* Get number of grids
818*
819 READ( nin, fmt = * ) ngrids
820 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval ) THEN
821 WRITE( nout, fmt = 9998 ) 'Grids', ldpval
822 GO TO 100
823 ELSE IF( ngrids.GT.ldqval ) THEN
824 WRITE( nout, fmt = 9998 ) 'Grids', ldqval
825 GO TO 100
826 END IF
827*
828* Get values of P and Q
829*
830 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
831 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
832*
833* Read ALPHA
834*
835 READ( nin, fmt = * ) alpha
836*
837* Read number of tests.
838*
839 READ( nin, fmt = * ) nmat
840 IF( nmat.LT.1 .OR. nmat.GT.ldval ) THEN
841 WRITE( nout, fmt = 9998 ) 'Tests', ldval
842 GO TO 100
843 END IF
844*
845* Read in input data into arrays.
846*
847 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
848 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
849 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
850 READ( nin, fmt = * ) ( imbxval( i ), i = 1, nmat )
851 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
852 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
853 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
854 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
855 READ( nin, fmt = * ) ( cscxval( i ), i = 1, nmat )
856 READ( nin, fmt = * ) ( ixval( i ), i = 1, nmat )
857 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
858 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
859 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
860 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
861 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
862 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
863 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
864 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
865 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
866 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat )
867 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
868 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat )
869 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
870*
871* Read names of subroutines and flags which indicate
872* whether they are to be tested.
873*
874 DO 10 i = 1, nsubs
875 ltest( i ) = .false.
876 10 CONTINUE
877 20 CONTINUE
878 READ( nin, fmt = 9996, END = 50 ) SNAMET, ltestt
879 DO 30 i = 1, nsubs
880 IF( snamet.EQ.snames( i ) )
881 $ GO TO 40
882 30 CONTINUE
883*
884 WRITE( nout, fmt = 9995 )snamet
885 GO TO 100
886*
887 40 CONTINUE
888 ltest( i ) = ltestt
889 GO TO 20
890*
891 50 CONTINUE
892*
893* Close input file
894*
895 CLOSE ( nin )
896*
897* For pvm only: if virtual machine not set up, allocate it and
898* spawn the correct number of processes.
899*
900 IF( nprocs.LT.1 ) THEN
901 nprocs = 0
902 DO 60 i = 1, ngrids
903 nprocs = max( nprocs, pval( i )*qval( i ) )
904 60 CONTINUE
905 CALL blacs_setup( iam, nprocs )
906 END IF
907*
908* Temporarily define blacs grid to include all processes so
909* information can be broadcast to all processes
910*
911 CALL blacs_get( -1, 0, ictxt )
912 CALL blacs_gridinit( ictxt, 'Row-major', 1, nprocs )
913*
914* Pack information arrays and broadcast
915*
916 CALL dgebs2d( ictxt, 'All', ' ', 1, 1, alpha, 1 )
917*
918 work( 1 ) = ngrids
919 work( 2 ) = nmat
920 CALL igebs2d( ictxt, 'All', ' ', 2, 1, work, 2 )
921*
922 i = 1
923 CALL icopy( ngrids, pval, 1, work( i ), 1 )
924 i = i + ngrids
925 CALL icopy( ngrids, qval, 1, work( i ), 1 )
926 i = i + ngrids
927 CALL icopy( nmat, nval, 1, work( i ), 1 )
928 i = i + nmat
929 CALL icopy( nmat, mxval, 1, work( i ), 1 )
930 i = i + nmat
931 CALL icopy( nmat, nxval, 1, work( i ), 1 )
932 i = i + nmat
933 CALL icopy( nmat, imbxval, 1, work( i ), 1 )
934 i = i + nmat
935 CALL icopy( nmat, inbxval, 1, work( i ), 1 )
936 i = i + nmat
937 CALL icopy( nmat, mbxval, 1, work( i ), 1 )
938 i = i + nmat
939 CALL icopy( nmat, nbxval, 1, work( i ), 1 )
940 i = i + nmat
941 CALL icopy( nmat, rscxval, 1, work( i ), 1 )
942 i = i + nmat
943 CALL icopy( nmat, cscxval, 1, work( i ), 1 )
944 i = i + nmat
945 CALL icopy( nmat, ixval, 1, work( i ), 1 )
946 i = i + nmat
947 CALL icopy( nmat, jxval, 1, work( i ), 1 )
948 i = i + nmat
949 CALL icopy( nmat, incxval, 1, work( i ), 1 )
950 i = i + nmat
951 CALL icopy( nmat, myval, 1, work( i ), 1 )
952 i = i + nmat
953 CALL icopy( nmat, nyval, 1, work( i ), 1 )
954 i = i + nmat
955 CALL icopy( nmat, imbyval, 1, work( i ), 1 )
956 i = i + nmat
957 CALL icopy( nmat, inbyval, 1, work( i ), 1 )
958 i = i + nmat
959 CALL icopy( nmat, mbyval, 1, work( i ), 1 )
960 i = i + nmat
961 CALL icopy( nmat, nbyval, 1, work( i ), 1 )
962 i = i + nmat
963 CALL icopy( nmat, rscyval, 1, work( i ), 1 )
964 i = i + nmat
965 CALL icopy( nmat, cscyval, 1, work( i ), 1 )
966 i = i + nmat
967 CALL icopy( nmat, iyval, 1, work( i ), 1 )
968 i = i + nmat
969 CALL icopy( nmat, jyval, 1, work( i ), 1 )
970 i = i + nmat
971 CALL icopy( nmat, incyval, 1, work( i ), 1 )
972 i = i + nmat
973*
974 DO 70 j = 1, nsubs
975 IF( ltest( j ) ) THEN
976 work( i ) = 1
977 ELSE
978 work( i ) = 0
979 END IF
980 i = i + 1
981 70 CONTINUE
982 i = i - 1
983 CALL igebs2d( ictxt, 'All', ' ', i, 1, work, i )
984*
985* regurgitate input
986*
987 WRITE( nout, fmt = 9999 )
988 $ 'Level 1 PBLAS timing program.'
989 WRITE( nout, fmt = 9999 ) usrinfo
990 WRITE( nout, fmt = * )
991 WRITE( nout, fmt = 9999 )
992 $ 'Timing of the real double precision '//
993 $ 'Level 1 PBLAS'
994 WRITE( nout, fmt = * )
995 WRITE( nout, fmt = 9999 )
996 $ 'The following parameter values will be used:'
997 WRITE( nout, fmt = * )
998 WRITE( nout, fmt = 9993 ) nmat
999 WRITE( nout, fmt = 9992 ) ngrids
1000 WRITE( nout, fmt = 9990 )
1001 $ 'P', ( pval(i), i = 1, min(ngrids, 5) )
1002 IF( ngrids.GT.5 )
1003 $ WRITE( nout, fmt = 9991 ) ( pval(i), i = 6,
1004 $ min( 10, ngrids ) )
1005 IF( ngrids.GT.10 )
1006 $ WRITE( nout, fmt = 9991 ) ( pval(i), i = 11,
1007 $ min( 15, ngrids ) )
1008 IF( ngrids.GT.15 )
1009 $ WRITE( nout, fmt = 9991 ) ( pval(i), i = 16, ngrids )
1010 WRITE( nout, fmt = 9990 )
1011 $ 'Q', ( qval(i), i = 1, min(ngrids, 5) )
1012 IF( ngrids.GT.5 )
1013 $ WRITE( nout, fmt = 9991 ) ( qval(i), i = 6,
1014 $ min( 10, ngrids ) )
1015 IF( ngrids.GT.10 )
1016 $ WRITE( nout, fmt = 9991 ) ( qval(i), i = 11,
1017 $ min( 15, ngrids ) )
1018 IF( ngrids.GT.15 )
1019 $ WRITE( nout, fmt = 9991 ) ( qval(i), i = 16, ngrids )
1020 WRITE( nout, fmt = 9994 ) alpha
1021 IF( ltest( 1 ) ) THEN
1022 WRITE( nout, fmt = 9989 ) snames( 1 ), ' ... Yes'
1023 ELSE
1024 WRITE( nout, fmt = 9989 ) snames( 1 ), ' ... No '
1025 END IF
1026 DO 80 i = 2, nsubs
1027 IF( ltest( i ) ) THEN
1028 WRITE( nout, fmt = 9988 ) snames( i ), ' ... Yes'
1029 ELSE
1030 WRITE( nout, fmt = 9988 ) snames( i ), ' ... No '
1031 END IF
1032 80 CONTINUE
1033 WRITE( nout, fmt = * )
1034*
1035 ELSE
1036*
1037* If in pvm, must participate setting up virtual machine
1038*
1039 IF( nprocs.LT.1 )
1040 $ CALL blacs_setup( iam, nprocs )
1041*
1042* Temporarily define blacs grid to include all processes so
1043* information can be broadcast to all processes
1044*
1045 CALL blacs_get( -1, 0, ictxt )
1046 CALL blacs_gridinit( ictxt, 'Row-major', 1, nprocs )
1047*
1048 CALL dgebr2d( ictxt, 'All', ' ', 1, 1, alpha, 1, 0, 0 )
1049*
1050 CALL igebr2d( ictxt, 'All', ' ', 2, 1, work, 2, 0, 0 )
1051 ngrids = work( 1 )
1052 nmat = work( 2 )
1053*
1054 i = 2*ngrids + 23*nmat + nsubs
1055 CALL igebr2d( ictxt, 'All', ' ', i, 1, work, i, 0, 0 )
1056*
1057 i = 1
1058 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1059 i = i + ngrids
1060 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1061 i = i + ngrids
1062 CALL icopy( nmat, work( i ), 1, nval, 1 )
1063 i = i + nmat
1064 CALL icopy( nmat, work( i ), 1, mxval, 1 )
1065 i = i + nmat
1066 CALL icopy( nmat, work( i ), 1, nxval, 1 )
1067 i = i + nmat
1068 CALL icopy( nmat, work( i ), 1, imbxval, 1 )
1069 i = i + nmat
1070 CALL icopy( nmat, work( i ), 1, inbxval, 1 )
1071 i = i + nmat
1072 CALL icopy( nmat, work( i ), 1, mbxval, 1 )
1073 i = i + nmat
1074 CALL icopy( nmat, work( i ), 1, nbxval, 1 )
1075 i = i + nmat
1076 CALL icopy( nmat, work( i ), 1, rscxval, 1 )
1077 i = i + nmat
1078 CALL icopy( nmat, work( i ), 1, cscxval, 1 )
1079 i = i + nmat
1080 CALL icopy( nmat, work( i ), 1, ixval, 1 )
1081 i = i + nmat
1082 CALL icopy( nmat, work( i ), 1, jxval, 1 )
1083 i = i + nmat
1084 CALL icopy( nmat, work( i ), 1, incxval, 1 )
1085 i = i + nmat
1086 CALL icopy( nmat, work( i ), 1, myval, 1 )
1087 i = i + nmat
1088 CALL icopy( nmat, work( i ), 1, nyval, 1 )
1089 i = i + nmat
1090 CALL icopy( nmat, work( i ), 1, imbyval, 1 )
1091 i = i + nmat
1092 CALL icopy( nmat, work( i ), 1, inbyval, 1 )
1093 i = i + nmat
1094 CALL icopy( nmat, work( i ), 1, mbyval, 1 )
1095 i = i + nmat
1096 CALL icopy( nmat, work( i ), 1, nbyval, 1 )
1097 i = i + nmat
1098 CALL icopy( nmat, work( i ), 1, rscyval, 1 )
1099 i = i + nmat
1100 CALL icopy( nmat, work( i ), 1, cscyval, 1 )
1101 i = i + nmat
1102 CALL icopy( nmat, work( i ), 1, iyval, 1 )
1103 i = i + nmat
1104 CALL icopy( nmat, work( i ), 1, jyval, 1 )
1105 i = i + nmat
1106 CALL icopy( nmat, work( i ), 1, incyval, 1 )
1107 i = i + nmat
1108*
1109 DO 90 j = 1, nsubs
1110 IF( work( i ).EQ.1 ) THEN
1111 ltest( j ) = .true.
1112 ELSE
1113 ltest( j ) = .false.
1114 END IF
1115 i = i + 1
1116 90 CONTINUE
1117*
1118 END IF
1119*
1120 CALL blacs_gridexit( ictxt )
1121*
1122 RETURN
1123*
1124 100 WRITE( nout, fmt = 9997 )
1125 CLOSE( nin )
1126 IF( nout.NE.6 .AND. nout.NE.0 )
1127 $ CLOSE( nout )
1128 CALL blacs_abort( ictxt, 1 )
1129*
1130 stop
1131*
1132 9999 FORMAT( a )
1133 9998 FORMAT( ' Number of values of ',5a, ' is less than 1 or greater ',
1134 $ 'than ', i2 )
1135 9997 FORMAT( ' Illegal input in file ',40a,'. Aborting run.' )
1136 9996 FORMAT( a7, l2 )
1137 9995 FORMAT( ' Subprogram name ', a7, ' not recognized',
1138 $ /' ******* TESTS ABANDONED *******' )
1139 9994 FORMAT( 2x, 'Alpha : ', g16.6 )
1140 9993 FORMAT( 2x, 'Number of Tests : ', i6 )
1141 9992 FORMAT( 2x, 'Number of process grids : ', i6 )
1142 9991 FORMAT( 2x, ' : ', 5i6 )
1143 9990 FORMAT( 2x, a1, ' : ', 5i6 )
1144 9989 FORMAT( 2x, 'Routines to be tested : ', a, a8 )
1145 9988 FORMAT( 2x, ' ', a, a8 )
1146*
1147* End of PDBLA1TIMINFO
1148*
#define alpha
Definition eval.h:35
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
Definition icopy.f:75
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sgebs2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1072
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
Definition mpi.f:745
subroutine dgebs2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1082
subroutine dgebr2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1123
subroutine sgebr2d(contxt, scope, top, m, n, a, lda)
Definition mpi.f:1113
subroutine blacs_gridexit(cntxt)
Definition mpi.f:762