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; }
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; }
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; }
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; }
int mainCore(void) { bool isOk = true; Chronos chrono; chrono.start(); //isOk &= useHello(); //isOk &= useRippling (); //isOk &= useMandelbrot(); //isOk &= useJulia (); //isOk &= useHeater(); //isOk &= useRayTracing(); isOk &= demoAll(); cout << "\n-------------------------------------------------" << endl; cout << "End Main : isOk = " << isOk << endl; return isOk ? EXIT_SUCCESS : EXIT_FAILURE; }