/***** for MPI, remove // below *****/ //#define USEMPI /******************************************/ #include #include #include #include "SSI32rand.c" #ifdef USEMPI #include /*MPI*/ #endif /// parameters ///////////////////////////// // (RN:random number) // int NoOfRNsGeneratedBySubJob=2000000; // int PositionNoOfRNGeneratedFrom=0; // int NoOfSequenceOfRNs=0; // // // //////////////////////////////////////////// /*******************/ void SubJobCountChars(int SubJobNo, int *NoOfHexChars) { int i, j; unsigned int SSI32RN; for (i=0; i<16; i++) {NoOfHexChars[i]=0;} SSI32IniKnml((unsigned long long int)SubJobNo, (unsigned long long int)NoOfRNsGeneratedBySubJob, (unsigned long long int)PositionNoOfRNGeneratedFrom); // start from // (SubJobNo*NoOfRNsGeneratedBySubJob+PositionNoOfRNGeneratedFrom)-th // random number for (i=0; i>=4; } } return; } /*******************/ int main(int argc, char * argv[]) { int i, j; int SumOfNoOfHexChars[16]; int NoOfHexChars[16]; time_t startTime, endTime; int elapTime; #ifdef USEMPI MPI_Status mpistat; /*MPI*/ int mpierr=0; #endif int mpisize=1, myrank=0; int RecvNo; #ifdef USEMPI MPI_Init(&argc, &argv); /*MPI*/ MPI_Comm_size(MPI_COMM_WORLD, &mpisize); /*MPI*/ MPI_Comm_rank(MPI_COMM_WORLD, &myrank); /*MPI*/ #endif if ((argc<2) && (myrank==0)) {printf("prog-name [# of RNs generated by each SubJob]\n [position# of RN generated_from] [# of sequence of RNs]\n");} if (argc>=2) {NoOfRNsGeneratedBySubJob=atoi(argv[1]);} if (argc>=3) {PositionNoOfRNGeneratedFrom=atoi(argv[2]);} if (argc>=4) { NoOfSequenceOfRNs=atoi(argv[3]); SSI32ChangeRandSeqK((unsigned long long int)NoOfSequenceOfRNs); } if (myrank==0) { printf("\n[# of SubJobs] = %d ", mpisize); printf("[# of RNs generated by each SubJob] = %d\n", NoOfRNsGeneratedBySubJob); printf("[position# of RN generated_from] = %d ", PositionNoOfRNGeneratedFrom); printf("[# of sequence of RNs] = %d\n\n", NoOfSequenceOfRNs); } for (i=0; i<16; i++) {SumOfNoOfHexChars[i]=0;} time (&startTime); SubJobCountChars(myrank, NoOfHexChars); for (i=0; i<16; i++) {SumOfNoOfHexChars[i]=NoOfHexChars[i];} #ifdef USEMPI if (myrank==0) { for (RecvNo=1; RecvNo