Esempio n. 1
0
File: main.cpp Progetto: pmer/xombie
void InitEverything()
{
	new ImgBase();
	randInit();
	fontInit();

	screen = InitScreen();

	SDL_WM_SetCaption("Xombie", "Xombie");
}
Esempio n. 2
0
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
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
File: ex5.c Progetto: kfu218/OpenMP
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;
}
Esempio n. 5
0
File: ra.c Progetto: AbheekG/chapel
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;
}
Esempio n. 6
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();
}