Début du TP convolution. Pour l'instant uniquement lecture d'une vidéo.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 02_Mandelbrot_Julia / moo / host / Fractal.h
index d9b8841..e9299a0 100755 (executable)
@@ -1,9 +1,13 @@
 #ifndef FRACTAL_H_\r
 #define FRACTAL_H_\r
 \r
+#include <vector>\r
+#include <string>\r
+\r
 #include "cudaTools.h"\r
 #include "AnimableFonctionel_I.h"\r
 #include "MathTools.h"\r
+#include "VariateurI.h"\r
 #include "VariateurF.h"\r
 \r
 class Fractal : public AnimableFonctionel_I\r
@@ -17,8 +21,6 @@ class Fractal : public AnimableFonctionel_I
         int getH() /*override*/;\r
         DomaineMath* getDomaineMathInit() /*override*/;\r
 \r
-        string getTitle(void) /*override*/;\r
-\r
     protected:\r
         // Inputs\r
         const int w;\r
@@ -29,39 +31,54 @@ class Fractal : public AnimableFonctionel_I
         const dim3 db;\r
 \r
         DomaineMath* ptrDomaineMathInit;\r
-\r
-        // Outputs\r
-        const string title;\r
     };\r
 \r
 class FractalMandelbrot : public Fractal\r
     {\r
     public:\r
-        FractalMandelbrot(int w, int h, float dn);\r
+        FractalMandelbrot(int w, int h, int dn, bool multiGPU = false);\r
+        ~FractalMandelbrot();\r
         void animationStep();\r
-        float getT() /*override*/;\r
+\r
+        std::vector<std::string> getNames();\r
+        void getValues(float* values);\r
+\r
+        std::string getTitle();\r
 \r
     private:\r
-        void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;\r
+        void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath);\r
 \r
-        VariateurF variateurAnimationN;\r
+        VariateurI variateurAnimationN;\r
+        int n;\r
 \r
-        float n;\r
+        string title;\r
+\r
+        // Utilisé uniquement dans le cadre du multi-GPU.\r
+        bool multiGPU;\r
+        uchar4** ptrDevPixelsMultGPU; // La mémoire alloué pour les GPU autres que le premier\r
+        int hFirstDevice; // Hauteur de l'image à traiter par le premier GPU.\r
+        int hDevices; // Hauteur de l'image à traiter par les autres GPU.\r
     };\r
 \r
 class FractalJulia : public Fractal\r
     {\r
     public:\r
-        FractalJulia(int w, int h, float dn, float z_r_min, float z_r_max, float z_i_min, float z_i_max);\r
+        FractalJulia(int w, int h, int n, float z_r_min, float z_r_max, float z_i_min, float z_i_max);\r
         void animationStep();\r
-        float getT() /*override*/;\r
+\r
+        std::vector<std::string> getNames();\r
+        void getValues(float* values);\r
+\r
+        std::string getTitle();\r
 \r
     private:\r
-        void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;\r
+        void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath);\r
+\r
+        const int n;\r
 \r
         float z_r, z_i;\r
-        VariateurF variateurAnimationI;\r
-        VariateurF variateurAnimationR;\r
+        VariateurF variateurAnimationI; // Variateur pour z_i.\r
+        VariateurF variateurAnimationR; // Variateur pour z_r.\r
     };\r
 \r
 #endif\r