Ajout du support du multi-GPU pour Mandelbrot.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 02_Mandelbrot_Julia / moo / host / Fractal.h
1 #ifndef FRACTAL_H_
2 #define FRACTAL_H_
3
4 #include <vector>
5 #include <string>
6
7 #include "cudaTools.h"
8 #include "AnimableFonctionel_I.h"
9 #include "MathTools.h"
10 #include "VariateurI.h"
11 #include "VariateurF.h"
12
13 class Fractal : public AnimableFonctionel_I
14 {
15 public:
16 Fractal(int w, int h);
17 virtual ~Fractal();
18
19 public:
20 int getW() /*override*/;
21 int getH() /*override*/;
22 DomaineMath* getDomaineMathInit() /*override*/;
23
24 protected:
25 // Inputs
26 const int w;
27 const int h;
28
29 // Tools
30 const dim3 dg;
31 const dim3 db;
32
33 DomaineMath* ptrDomaineMathInit;
34 };
35
36 class FractalMandelbrot : public Fractal
37 {
38 public:
39 FractalMandelbrot(int w, int h, int dn, bool multiGPU = false);
40 void animationStep();
41
42 std::vector<std::string> getNames();
43 void getValues(float* values);
44
45 std::string getTitle();
46
47 private:
48 void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath);
49
50 VariateurI variateurAnimationN;
51 int n;
52
53 string title;
54
55 // Utilisé uniquement dans le cadre du multi-GPU.
56 bool multiGPU;
57 uchar4** ptrDevPixelsMultGPU; // La mémoire alloué pour les GPU autres que le premier
58 int hFirstDevice; // Hauteur de l'image à traiter par le premier GPU.
59 int hDevices; // Hauteur de l'image à traiter par les autres GPU.
60 };
61
62 class FractalJulia : public Fractal
63 {
64 public:
65 FractalJulia(int w, int h, int n, float z_r_min, float z_r_max, float z_i_min, float z_i_max);
66 void animationStep();
67
68 std::vector<std::string> getNames();
69 void getValues(float* values);
70
71 std::string getTitle();
72
73 private:
74 void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath);
75
76 const int n;
77
78 float z_r, z_i;
79 VariateurF variateurAnimationI; // Variateur pour z_i.
80 VariateurF variateurAnimationR; // Variateur pour z_r.
81 };
82
83 #endif