void InitEverything() { new ImgBase(); randInit(); fontInit(); screen = InitScreen(); SDL_WM_SetCaption("Xombie", "Xombie"); }
int getRand() { int i = 0; if(fp == 0){ randInit(); } fscanf(fp, "%i", &i); if(i == 0){ printf("ERROR - END OF FILE\n"); } return i; // returns int between ~1 and MAX_INT }
Generations* newGen(char* r, int w) { Generations* gen_p = (Generations*)malloc(sizeof(Generations)); gen_p->rule = r; gen_p->width = w; w++; gen_p->current = (CellType)malloc(sizeof(CellType)*w); gen_p->next = (CellType)malloc(sizeof(CellType)*w); randInit(gen_p); /*centerInit(gen_p);*/ return gen_p; }
int main() { const int N = 6; const int M = 8; int d[N][M]; randInit(d, N, M); #pragma omp parallel sections { #pragma omp section { int mean = 0; printf("Num threads %d\n", omp_get_num_threads()); for(int i = 0; i < N; i++) for(int j = 0; j < M; j++) mean += d[i][j]; printf("Thread num %d. Arithmetic mean %f\n", omp_get_thread_num(), mean / (float)(N*M)); } #pragma omp section { int min, max; min = max = d[0][0]; for(int i = 0; i < N; i++) for(int j = 0; j < M; j++) { if (min > d[i][j]) min = d[i][j]; if (max < d[i][j]) max = d[i][j]; } printf("Thread num %d. min = %d, max = %d\n", omp_get_thread_num(), min, max); } #pragma omp section { int count = 0; for(int i = 0; i < N; i++) for(int j = 0; j < M; j++) if (d[i][j] % 3 == 0) count++; printf("Thread num %d. Count = %d\n", omp_get_thread_num(), count); } } return 0; }
int main(int argc, char* argv[]) { unsigned long long i, locN_U, locStart, locEnd; rndtype r, recvBuf[2]; MPI_Request recvReq; int base, iter, errorCnt = 0, totalErrors; double starttime, finishtime, exectime; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); parseArgs(argc, argv); if (rank == 0) { printf("Number of nodes = %d\n", nprocs); fflush(stdout); printf("Problem size = %lld (2**%d)\n", m, n); fflush(stdout); printf("Number of updates = %lld (2**%d)\n", N_U, N_U_log2); fflush(stdout); } randInit(); A = malloc(sizeof(rndtype)*m/nprocs); if (A == NULL) { printf("malloc failed for main array.\n"); fflush(stdout); MPI_Abort(MPI_COMM_WORLD, 1); } base = rank * (m / nprocs); for (i=0; i < m / nprocs; i++) { A[i] = i + base; } MPI_Barrier(MPI_COMM_WORLD); // first iteration does the benchmark, second reverses it for validation. for (iter=0; iter < 2; iter++) { doneCount = 0; doneWithRecvs = 0; if (iter == 0) { starttime = now_time(); } MPI_Irecv(recvBuf, 2*sizeof(rndtype), MPI_BYTE, MPI_ANY_SOURCE, 1, MPI_COMM_WORLD, &recvReq); locN_U = N_U / nprocs; locStart = locN_U * rank; locEnd = locStart+locN_U; r = getNthRandom(locStart); for (i=locStart; i < locEnd; i++) { int loc = idxToLocale(r & idxMask); if (loc < 0 || loc > nprocs-1) { printf("error: r=%llu, r&mask=%llu, loc=%d\n", r, r&idxMask, loc); } if (loc == rank) { A[ind2localIdx(r & idxMask)] ^= r; } else { dosend(loc, r, 0, &recvReq, recvBuf); } getNextRandom(&r); } for (i = 0; i < nprocs; i++) { dosend(i, 0, 1, &recvReq, recvBuf); } while (!doneWithRecvs) { tryRecv(&recvReq, recvBuf); } MPI_Barrier(MPI_COMM_WORLD); if (iter == 0) { finishtime = now_time(); exectime = (finishtime - starttime) / 1.0e+6; } } for (i=0; i < m/nprocs; i++) { if (A[i] != i + base) { errorCnt++; } } MPI_Reduce(&errorCnt, &totalErrors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (rank == 0) { printf("Number of errors: %d\n", totalErrors); fflush(stdout); if (totalErrors <= errorTolerance * N_U) { printf("Validation: SUCCESS\n"); fflush(stdout); } else { printf("Validation: FAILURE\n"); fflush(stdout); } printf("Execution time = %lf\n", exectime); fflush(stdout); printf("Performance (GUPS) = %lf\n", (N_U / exectime) * 1.0e-9); fflush(stdout); } MPI_Finalize(); return 0; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); populationSize = 30; ui->popSizeSpinBox->setValue(populationSize); srand(static_cast <unsigned> (time(0))); stopFlag = false; pop = new Population(populationSize,true); setup(); model = new PopulationModel(*pop); ui->listView->setModel(model); QVector<double> ax(11); for(int i=0;i<11;i++){ ax[i] = i*100; } QCPCurve *newCurve = new QCPCurve(ui->citiesPlot->xAxis, ui->citiesPlot->yAxis); newCurve->setKeyAxis(ui->citiesPlot->xAxis); newCurve->setValueAxis(ui->citiesPlot->yAxis); newCurve->setLineStyle(QCPCurve::lsNone); newCurve->setPen(QPen(Qt::red)); newCurve->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, Qt::darkBlue, 5)); for(int i=0; i<TourManager::numberOfCities(); i++){ int x = TourManager::getCity(i).getX(); int y = TourManager::getCity(i).getY(); newCurve->addData(x, y); } newCurve->addData(TourManager::getCity(0).getX(), TourManager::getCity(0).getY()); ui->citiesPlot->addPlottable(newCurve); ui->citiesPlot->xAxis->setRange(0, 1000); ui->citiesPlot->yAxis->setRange(0, 1000); ui->citiesPlot->xAxis->setAutoTickStep(false); ui->citiesPlot->yAxis->setAutoTickStep(false); ui->citiesPlot->xAxis->setTickStep(100); ui->citiesPlot->yAxis->setTickStep(100); ui->citiesPlot->xAxis->setTickVector(ax); ui->citiesPlot->yAxis->setTickVector(ax); //ui->citiesPlot->xAxis->setTicks(false); //ui->citiesPlot->yAxis->setTicks(false); ui->citiesPlot->xAxis->setTickLabels(true); ui->citiesPlot->yAxis->setTickLabels(true); ui->citiesPlot->xAxis->grid()->setPen(Qt::SolidLine); ui->citiesPlot->yAxis->grid()->setPen(Qt::SolidLine); //ui->citiesPlot->yAxis->setScaleRatio(ui->citiesPlot->xAxis,1.0); ui->statPlot->setBackground(Qt::gray); ui->statPlot->addGraph(); ui->statPlot->addGraph(); ui->statPlot->graph(0)->setPen(QPen(Qt::red)); ui->statPlot->graph(1)->setPen(QPen(Qt::blue)); ui->statPlot->graph(0)->setName(tr("Best")); ui->statPlot->graph(0)->addToLegend(); ui->statPlot->graph(1)->setName(tr("Average")); ui->statPlot->graph(1)->addToLegend(); ui->statPlot->xAxis->setRangeLower(0); QFont legendFont = font(); legendFont.setPointSize(9); QMargins margins(0,0,0,0); ui->statPlot->legend->setFont(legendFont); ui->statPlot->legend->setMargins(margins); ui->statPlot->legend->setVisible(true); ui->statPlot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop|Qt::AlignRight); //Population pop(50, true); generation = 0; ui->statPlot->graph(0)->addData(0, pop->getFittest().getDistance()); ui->statPlot->graph(1)->addData(0,pop->getAverage()); ui->statPlot->graph(1)->rescaleAxes(); ui->statPlot->xAxis->setRange(0, 101); ui->statPlot->xAxis->setTickStep(1); ui->statPlot->yAxis->setRangeLower(0); ui->statPlot->setInteraction(QCP::iRangeZoom); ui->statPlot->setInteraction(QCP::iRangeDrag); //ui->statPlot->axisRect()->setRangeDrag(Qt::Horizontal); GeneticEngine *ge = new GeneticEngine(); ui->mutationSpinBox->setValue(GeneticEngine::getMutationRate()); ui->tournamentSpinBox->setValue(GeneticEngine::getTournamentSize()); ui->tournamentSpinBox->setMaximum(pop->populationSize()); ui->elitismCheckBox->setChecked(GeneticEngine::getElitism()); ui->mutTypeComboBox->setCurrentIndex(GeneticEngine::getMutationType()); ui->crossTypeComboBox->setCurrentIndex(GeneticEngine::getCrossoverType()); ui->listView->setWindowTitle(tr("Generation :")); connect(ui->listView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),this, SLOT(drawPath(QItemSelection))); connect(ui->runButton, SIGNAL(clicked(bool)),this, SLOT(run())); connect(ui->repopulateButton, SIGNAL(clicked()), this, SLOT(restart())); connect(ui->mutationSpinBox, SIGNAL(valueChanged(double)), ge,SLOT(setMutationRate(double))); connect(ui->tournamentSpinBox, SIGNAL(valueChanged(int)), ge, SLOT(setTournamentSize(int))); connect(ui->elitismCheckBox, SIGNAL(toggled(bool)), ge, SLOT(setElitism(bool))); connect(ui->mutTypeComboBox, SIGNAL(currentIndexChanged(int)), ge, SLOT(setMutationType(int))); connect(ui->crossTypeComboBox, SIGNAL(currentIndexChanged(int)), ge, SLOT(setCrossoverType(int))); connect(ui->popSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setPopulationSize(int))); connect(ui->actionAbout_Qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); connect(ui->actionSave, SIGNAL(triggered()), this, SLOT(save())); connect(ui->actionRandom_Initialization, SIGNAL(triggered()), this, SLOT(randInit())); connect(ui->actionLoad, SIGNAL(triggered()), this, SLOT(open())); readSettings(); //qDebug()<<pop->getFittest().getDistance(); }