int ApduDetails::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 25) qt_static_metacall(this, _c, _id, _a); _id -= 25; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = getAid(); break; case 1: *reinterpret_cast< bool*>(_v) = getSelectOnly(); break; case 2: *reinterpret_cast< bool*>(_v) = getPpse(); break; case 3: *reinterpret_cast< int*>(_v) = getTargetInx(); break; case 4: *reinterpret_cast< QString*>(_v) = getCla(); break; case 5: *reinterpret_cast< QString*>(_v) = getIns(); break; case 6: *reinterpret_cast< QString*>(_v) = getP1p2(); break; case 7: *reinterpret_cast< QString*>(_v) = getLc(); break; case 8: *reinterpret_cast< QString*>(_v) = getCommand(); break; case 9: *reinterpret_cast< QString*>(_v) = getLe(); break; } _id -= 10; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setAid(*reinterpret_cast< QString*>(_v)); break; case 1: setSelectOnly(*reinterpret_cast< bool*>(_v)); break; case 2: setPpse(*reinterpret_cast< bool*>(_v)); break; case 3: setTargetInx(*reinterpret_cast< int*>(_v)); break; case 4: setCla(*reinterpret_cast< QString*>(_v)); break; case 5: setIns(*reinterpret_cast< QString*>(_v)); break; case 6: setP1p2(*reinterpret_cast< QString*>(_v)); break; case 7: setLc(*reinterpret_cast< QString*>(_v)); break; case 8: setCommand(*reinterpret_cast< QString*>(_v)); break; case 9: setLe(*reinterpret_cast< QString*>(_v)); break; } _id -= 10; } else if (_c == QMetaObject::ResetProperty) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 10; } #endif // QT_NO_PROPERTIES return _id; }
int main(int argc, char** argv) { size = 10; rank = 0; MPI_Init(&argc,&argv); clOptions options; if(getCla(argc, argv, &options)) { //NOTHING TO WORRY ABOUT } else { printf("command line options failure\n"); return 1; } clock_start(); takeTime(10); clock_stop(argv[0], options, "words"); clock_start(); takeTime(100); clock_stop(argv[0], options, "x1000"); clock_start(); takeTime(1000); clock_stop(argv[0], options, "E6"); char * newtag; newtag = "hardcoded_string"; clock_start(); takeTime(100); clock_stop(argv[0], options, newtag); MPI_Finalize(); }
int main(int argc, char ** argv){ clOptions options; printf("argc=%d\n", argc); if(getCla(argc, argv, &options)){ printf("%d\tnParticles\n", options.nParticles); printf("%d\ttiming\n", options.timing); printf("%s\ttimingFName\n", options.timingFName); printf("%d\treadInput\n", options.readInput); printf("%s\treadFName\n", options.readFName); printf("%d\twriteOutput\n", options.writeOutput); printf("%s\twriteFName\n", options.writeFName); printf("%d\tgenFunction\n", options.genFunction); printf("%d\tgenFunctionSeed\n", options.genFunctionSeed); printf("%d\tcompareResults\n", options.compareResults); printf("%d\tverbosity\n", options.verbosity); }else{ printf("Cla reading failed"); return 1; } return 0; }
int main(int argc, char ** argv){ //MPI Initialization MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); clOptions options; if(getCla(argc, argv, &options)){ //NOTHING TO WORRY ABOUT }else{ printf("command line options failure\n"); return 1; } MPI_Status status_ignore; //MPI Particle Initialization //MPI_Datatype MPI_particle; create_MPI_struct(&MPI_particle); MPI_Type_commit(&MPI_particle); //Deprecated and dangerous as superseded by options structure //char * readFName =NULL; //char * writeFName = NULL; //char * defaultFName = "default.dat"; //int writeData = 0; //int compareData = 0; //change to allow command line arguments //Setup if(options.timing >=1){ clock_start(); } char * initTypeTimingTag = "undefined_tag"; int nParticles = options.nParticles; int nEachMax = pieceSize(nParticles, size, 0); double diff; particle * buffers[4]; particle * spare_particle_pointer; buffers[0] = calloc(sizeof(particle), nEachMax); buffers[1] = calloc(sizeof(particle), nEachMax); buffers[2] = calloc(sizeof(particle), nEachMax); buffers[3] = calloc(sizeof(particle), nEachMax); int buf_index[3] = {rank, rank, rank}; int nEach[3]; nEach[0] = pieceSize(nParticles, size, rank); nEach[1] = pieceSize(nParticles, size, rank); nEach[2] = pieceSize(nParticles, size, rank); //diff =compareMultipleParticles(buffers[0], buffers[1], nEachMax); //Read or Randomize and print if(options.readInput == 1){ if(options.verbosity>=2){ printf("reading particles\n"); } initTypeTimingTag = "init_read"; readParticles(options.readFName, buffers[3], nParticles, size, rank); }else if(options.genFunction == 2){ if(options.verbosity>=2){ printf("generating particles\n"); } initTypeTimingTag = "init_gen2"; initialize_2(buffers[3], nEachMax); //fprintParticles(stdout, buffers[3], nEachMax); }else{ //no input printf("error: no initial data specified\n"); MPI_Finalize(); } if(options.verbosity>=2){ printf("should have particles now\n"); } int i; for(i=0;i<nEachMax;i++){ buffers[0][i] = buffers[3][i]; buffers[0][i].dvx = 0; buffers[0][i].dvy = 0; buffers[0][i].dvz = 0; buffers[1][i] = buffers[0][i]; buffers[2][i] = buffers[0][i]; } if(options.verbosity>=3){ printf("rank %d printing particles set 0 \n", rank); fprintParticles(stdout, buffers[0], nEachMax); printf("rank %d printing particles set 1 \n", rank); fprintParticles(stdout, buffers[1], nEachMax); printf("rank %d printing particles set 2 \n", rank); fprintParticles(stdout, buffers[2], nEachMax); printf("rank %d printing particles set 3 \n", rank); fprintParticles(stdout, buffers[3], nEachMax); } //diff =compareMultipleParticles(buffers[0], buffers[3], nEachMax); //printf("rank %d diff = %g \t\t expected different \n", rank, diff); //Loop //Pass //Calculate //Collect if(options.timing == 2){ clock_stop(argv[0], options, initTypeTimingTag); } if(options.timing >=1){ clock_start(); } int j; int passTimes; int passingBuffer = 0; for(passTimes = size; passTimes >0;passTimes -=3){ for(i=0;i<passTimes;i++){ MPI_pass(buffers, passingBuffer, nEachMax, 1, buf_index); nEach[passingBuffer] = pieceSize(nParticles, size, buf_index[passingBuffer]); printf("pass:%d:\t%d\t%d\t%d\n", rank, buf_index[0], buf_index[1], buf_index[2]); func(buffers, nEach, buf_index); } if(passTimes ==3){passTimes+=1;} passingBuffer == (passingBuffer+1)%3; } //Passing to rank that should have particle buffer if(options.verbosity>=0){ printf("old:%d\t%d\t%d\t%d\n", rank, buf_index[0], buf_index[1], buf_index[2]); } int dist; passingBuffer =0; dist = (rank *2 - buf_index[passingBuffer])%size; MPI_pass(buffers, passingBuffer, nEachMax, dist, buf_index); nEach[passingBuffer] = pieceSize(nParticles, size, buf_index[passingBuffer]); passingBuffer =1; dist = (rank *2 - buf_index[passingBuffer])%size; MPI_pass(buffers, passingBuffer, nEachMax, dist, buf_index); nEach[passingBuffer] = pieceSize(nParticles, size, buf_index[passingBuffer]); passingBuffer =2; dist = (rank *2 - buf_index[passingBuffer])%size; MPI_pass(buffers, passingBuffer, nEachMax, dist, buf_index); nEach[passingBuffer] = pieceSize(nParticles, size, buf_index[passingBuffer]); if(options.verbosity>=0){ printf("new:%d\t%d\t%d\t%d\n", rank, buf_index[0], buf_index[1], buf_index[2]); } if(options.verbosity>=3){ printf("combining results\n"); } if(options.verbosity>=3){ printf("rank %d printing particles set 0 \n", rank); fprintParticles(stdout, buffers[0], nEachMax); printf("rank %d printing particles set 1 \n", rank); fprintParticles(stdout, buffers[1], nEachMax); printf("rank %d printing particles set 2 \n", rank); fprintParticles(stdout, buffers[2], nEachMax); printf("rank %d printing particles set 3 \n", rank); fprintParticles(stdout, buffers[3], nEachMax); } //Combine results for(i=0;i<nEach[0];i++){ buffers[0][i].dvx += buffers[1][i].dvx+buffers[2][i].dvx; //buffers[0][i].dvx /= 6; buffers[1][i].dvx = buffers[0][i].dvx; buffers[2][i].dvx = buffers[0][i].dvx; buffers[0][i].dvy += buffers[1][i].dvy+buffers[2][i].dvy; //buffers[0][i].dvy /= 6; buffers[1][i].dvy = buffers[0][i].dvy; buffers[2][i].dvy = buffers[0][i].dvy; buffers[0][i].dvz += buffers[1][i].dvz+buffers[2][i].dvz; //buffers[0][i].dvz /= 6; buffers[1][i].dvz = buffers[0][i].dvz; buffers[2][i].dvz = buffers[0][i].dvz; } if(options.timing >= 1){ clock_stop(argv[0], options, "no_duplicates"); } if(rank == 0){ //fprintParticles(stdout, buffers[3], nEachMax); //fprintParticles(stdout, buffers[0], nEachMax); } //Check results //use buffers[3] if(options.compareResults == 1){ if(options.verbosity>=2){ printf("comparing results"); } if(options.timing == 2){ clock_start(); } diff =compareMultipleParticles(buffers[0], buffers[3], nEach[0]); if(options.timing == 2){ clock_stop(argv[0], options, "comparison"); } printf("rank %d diff = %g\n", rank, diff); } if(options.writeOutput == 1){ if(options.timing == 2){ clock_start(); } writeParticles(options.writeFName, buffers[0], nParticles, size, rank); if(options.timing == 2){ clock_stop(argv[0], options, "writing"); } } //freeing and finalization free(buffers[0]); free(buffers[1]); free(buffers[2]); free(buffers[3]); //MPI Finalization MPI_Type_free(&MPI_particle); MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); }