示例#1
0
bool useRayTracing(void)
    {
    int nbMeasure = 5;
    int maxDimension = 5000;
    Chronos init;
    Chronos core;
    for (int d = 2000; d < maxDimension; d += 500)
	{
	for (int nbSphere = 100; nbSphere < 1000; nbSphere += 200)
	    {
	    for (int numThreads = 1; numThreads < 6; numThreads++)
		{
		for (int i = 0; i < nbMeasure; i++)
		    {
		    cout << d << ",";
		    cout << nbSphere << ",";
		    cout << numThreads << ",";
		    init.start();
		    RayTracingImageCudaMOO rayTracing(d, d, 0, 0.005, nbSphere, numThreads);
		    cout << init.stop() << ",";

		    core.start();
		    rayTracing.fillImageGL();
		    cout << core.stop() << endl;
		    }
		}
	    }
	}

    return true;
    }
示例#2
0
void useProduitScalaire(void)
    {
    int n = 8192;

    Chronos chronoCuda;

    chronoCuda.start();

    ProduitScalaire *produitScalaire = new ProduitScalaire(n);
    produitScalaire->launchProduitScalaire();

    double secondesCuda = chronoCuda.stop();

    Chronos chronoCPU;

    chronoCPU.start();

    float resultatSequentiel = produitScalaireSequentielleCuda(n);

    double secondesCPU = chronoCPU.stop();

    cout << "Resultat produit scalaire cuda= " << produitScalaire->getResultat() << " temps d'execution= " << secondesCuda << endl;
    cout << "Resultat produit scalaire sequentiel= " << resultatSequentiel << " temps d'execution= " << secondesCPU << endl;

    delete produitScalaire;
    }
示例#3
0
void useMonteCarlo(void)
    {
    int n = 8192;
    float a = -1.0;
    float b = 1.0;
    float m = 8.5;

    Chronos chronoCudaMonteCarlo;

    chronoCudaMonteCarlo.start();

    MonteCarlo *monteCarlo = new MonteCarlo(a, b, m, n);
    monteCarlo->run();

    double secondesCudaMonteCarlo = chronoCudaMonteCarlo.stop();

    Chronos chronoMonteCarloSequentiel;

    float resultatSequentiel = monteCarloSequentielleCuda(n * 10000);

    double secondesMonteCarloSequentiel = chronoMonteCarloSequentiel.stop();

    cout << "Resultat monte carlo cuda= " << monteCarlo->getResultat() << " temps d'excecution = " << secondesCudaMonteCarlo << endl;
    cout << "Resultat monte carlo sequentielle= " << resultatSequentiel << " temps d'excecution = " << secondesMonteCarloSequentiel << endl;

    delete monteCarlo;
    }
示例#4
0
static void useHistogramme(void)
    {
    Chronos chronoHistogramme;

    chronoHistogramme.start();

    Histogramme *histogramme = new Histogramme();
    histogramme->run();

    double secondesHistogramme = chronoHistogramme.stop();

    histogramme->printTabFrequence();
    cout << "Temps d'execution= " << secondesHistogramme << endl;

    delete histogramme;
    }
/*--------------------------------------*\
 |*		Public			*|
 \*-------------------------------------*/
void algo_histogramme(Algo_Pi algo, int n, string titre)
    {
    cout << "Title: " << titre << endl;
    cout << "n= " << n << endl;

    Chronos chrono;

    unsigned int* tabFrequence = algo(n);

    for (int i = 0; i < 256; i++)
	{
	cout << "tabFrequence[" << i << "]=" << tabFrequence[i] << endl;
	}

    chrono.stop();
    chrono.print("time= ");

    cout << "-----------------------------------" << endl;
    }
bool isAlgo_OK(AlgoMonteCarlo algoPI, int n, string title)
    {
    cout << endl << "[" << title << " running ...]" << endl;
    cout << "n=" << n << endl;

    Chronos chrono;
    double piHat = algoPI(n);
    chrono.stop();

    cout.precision(8);
    cout << "Pi hat  = " << piHat << endl;
    cout << "Pi true = " << PI << endl;

    bool isOk = MathTools::isEquals(piHat, PI, 1e-6);
    cout << "isOk = " << isOk << endl;

    cout.precision(3);
    chrono.print("time : ");

    return isOk;
    }