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

Go to the source code of this file.

Functions/Subroutines

program pcbla1tim
subroutine pcbla1timinfo (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

◆ pcbla1tim()

program pcbla1tim

Definition at line 12 of file pcblas1tim.f.

◆ pcbla1timinfo()

subroutine pcbla1timinfo ( 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,
complex alpha,
integer, dimension( * ) work )

Definition at line 573 of file pcblas1tim.f.

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