Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Explorateur de fractale de Mandelbrot  (Lu 10868 fois)

0 Membres et 1 Invité sur ce sujet

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Explorateur de fractale de Mandelbrot
« le: Septembre 09, 2012, 05:18:35 pm »
J'aimerais vous présenter un petit projet sur lequel j'ai travaillé pendant quelques jours.

Il s'agit d'un explorateur de fractale de Mandelbrot. Vous pouvez zoomer jusqu'à 10 000 milliards de fois et garder un rendu précis même à de telles échelles (mais au prix de davantage de temps de rendu). Déplacez-vous où vous voulez, prenez des captures d'écrans et faites vous plaisir !

L'explorateur repose sur SFML pour l'affichage, Thor pour la gestion des commandes et Intel TBB pour paralléliser le travail de rendu et exploiter au mieux les capacités de votre ordinateur.




Téléchargements

Pour Windows (XP et ultérieur) :
- si Visual C++ 2010 n'est pas déjà installé sur votre ordinateur, téléchargez le paquet redistribuable Visual C++ 2010 et installez le
- téléchargez l'explorateur de fractale pour Windows

Et pour OS X 10.7+ :
- téléchargez l' explorateur de fractale pour OS X

Vous pouvez aussi jeter un œil aux sources si cela vous intéresse, mais il n'y a pour l'instant aucun moyen simple de compiler le programme, sans compter les petites modifications effectuées depuis. C'est donc principalement en cas de curiosité :) .

Voilà j'espère que vous aimerez l'exploration autant que moi !
Tout retour/commentaire est bien entendu le bienvenu :)
Want to play movies in your SFML application? Check out sfeMovie!

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #1 le: Septembre 10, 2012, 10:25:17 am »
C'est zoli!  :D

Je vois que tu as utilisé TBB. Par curiosité, pourquoi ce choix et pas CUDA ou encore C++AMP ?
SFML / OS X developer

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #2 le: Septembre 10, 2012, 01:01:28 pm »
Content que ça te plaise !

À vrai dire j'ai utilisé TBB surtout parce que je connaissais déjà et que je savais que ça me permettrait de faire ce que je voulais, et ceci de manière portable. D'après ce que j'ai lu là, C++AMP n'est que pour Windows et CUDA que pour les cartes NVIDIA non ? Dans l'absolu si je devais choisir une solution de GPGPU je prendrais OpenCL je pense car il me semble que c'est celui qui peut fonctionner sur le plus de matériel (et je sais que même si le matériel ne le supporte pas, le code reste le même).

Edit : j'ai aussi réalisé une petite vidéo pour ceux qui veulent voir le logiciel en action : http://www.youtube.com/watch?v=pYSXlWgMZsE
« Modifié: Septembre 10, 2012, 01:06:21 pm par Ceylo »
Want to play movies in your SFML application? Check out sfeMovie!

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #3 le: Septembre 10, 2012, 04:58:01 pm »
Merci pour ton commentaire; j'aurais peut-être à utiliser une ou plusieurs de ces techno, c'est donc toujours bon d'avoir un avis supplémentaire. :)
SFML / OS X developer

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #4 le: Septembre 12, 2012, 08:31:43 pm »
J'ai creusé un peu la question pour OpenCL, et voici la liste des GPU qui le supportent (en version 1.0) :

AMD FirePro S9000
AMD FirePro V5900
AMD FirePro V7800
AMD FirePro V7800
AMD FirePro V7900
AMD FirePro W8000
AMD FirePro W9000
AMD FirePro W9000X2
AMD FireStream 9200 Series GPU
AMD FireStream 9250
AMD FireStream 9270
AMD Radeon HD 5800 Series GPU
AMD Radeon HD 6250
AMD Radeon HD 6300 Series GPU
AMD Radeon HD 6310
AMD Radeon HD 6400 Series GPU
AMD Radeon HD 6500 Series GPU
AMD Radeon HD 6600 Series GPU
AMD Radeon HD 6700 Series GPU
AMD Radeon HD 6800 Series GPU
AMD Radeon HD 6900 Series GPU
AMD Radeon HD 7800 Series GPU
AMD Radeon HD 7900 Series GPU
ATI FirePro V3700 Series GPU
ATI FirePro V3800 Series GPU
ATI FirePro V4800 Series GPU
ATI FirePro V5700 Series GPU
ATI FirePro V5800 Series GPU
ATI FirePro V7700 Series GPU
ATI FirePro V7800 Series GPU
ATI FirePro V8700 Series GPU
ATI FirePro V8800 Series GPU
ATI Mobility Radeon HD 4600 Series GPU
ATI Mobility Radeon HD 4800 Series GPU
ATI Mobility Radeon HD 5400 Series GPU
ATI Mobility Radeon HD 5600 Series GPU
ATI Mobility Radeon HD 5700 Series GPU
ATI Mobility Radeon HD 5800 Series GPU
ATI Radeon E4690 Discrete GPU
ATI Radeon HD 4600 Series GPU
ATI Radeon HD 4800 Series GPU
ATI Radeon HD 5400 Series GPU
ATI Radeon HD 5500 Series GPU
ATI Radeon HD 5600 Series GPU
ATI Radeon HD 5700 Series GPU
ATI Radeon HD 5800 Series GPU
Intel HD Graphics 2500
Intel HD Graphics 4000
NVIDIA GeForce 8100 mGPU
NVIDIA GeForce 8200 mGPU
NVIDIA GeForce 8300 mGPU
NVIDIA GeForce 8400 GS
NVIDIA GeForce 8400M GS
NVIDIA GeForce 8400M GT
NVIDIA GeForce 8500 GT
NVIDIA GeForce 8600 GT
NVIDIA GeForce 8600 GTS
NVIDIA GeForce 8600M GS
NVIDIA GeForce 8600M GT
NVIDIA GeForce 8700M GT
NVIDIA GeForce 8800 GS
NVIDIA GeForce 8800 GT
NVIDIA GeForce 8800 GTS
NVIDIA GeForce 8800 GTX
NVIDIA GeForce 8800 Ultra
NVIDIA GeForce 8800M GTS
NVIDIA GeForce 9100M G
NVIDIA GeForce 9200M GS
NVIDIA GeForce 9300 mGPU
NVIDIA GeForce 9300M G
NVIDIA GeForce 9300M GS
NVIDIA GeForce 9400 mGPU
NVIDIA GeForce 9400GT
NVIDIA GeForce 9500 GT
NVIDIA GeForce 9500M G
NVIDIA GeForce 9500M GS
NVIDIA GeForce 9600 GSO
NVIDIA GeForce 9600 GT
NVIDIA GeForce 9600M GS
NVIDIA GeForce 9600M GT
NVIDIA GeForce 9650M GS
NVIDIA GeForce 9700M GT
NVIDIA GeForce 9700M GTS
NVIDIA GeForce 9800 GT
NVIDIA GeForce 9800 GTX
NVIDIA GeForce 9800 GTX+
NVIDIA GeForce 9800 GX2
NVIDIA GeForce 9800M GS
NVIDIA GeForce 9800M GT
NVIDIA GeForce 9800M GTS
NVIDIA GeForce 9800M GTX
NVIDIA GeForce G100
NVIDIA GeForce G102M
NVIDIA GeForce G105M
NVIDIA GeForce G110M
NVIDIA GeForce GT 120
NVIDIA GeForce GT 130
NVIDIA GeForce GT 130M
NVIDIA GeForce GT 650M
NVIDIA GeForce GTS 150
NVIDIA GeForce GTS 150M
NVIDIA GeForce GTS 160M
NVIDIA GeForce GTS 250
NVIDIA GeForce GTX 260
NVIDIA GeForce GTX 260M
NVIDIA GeForce GTX 275
NVIDIA GeForce GTX 280
NVIDIA GeForce GTX 280M
NVIDIA GeForce GTX 285
NVIDIA GeForce GTX 295
NVIDIA GeForce GTX 465
NVIDIA GeForce GTX 470
NVIDIA GeForce GTX 480
NVIDIA GeForce GTX 480M
NVIDIA Quadro CX
NVIDIA Quadro FX 1600M
NVIDIA Quadro FX 1700
NVIDIA Quadro FX 1700M
NVIDIA Quadro FX 1800
NVIDIA Quadro FX 2700M
NVIDIA Quadro FX 3600M
NVIDIA Quadro FX 360M
NVIDIA Quadro FX 370
NVIDIA Quadro FX 370 Low Profile
NVIDIA Quadro FX 3700
NVIDIA Quadro FX 3700M
NVIDIA Quadro FX 370M
NVIDIA Quadro FX 380
NVIDIA Quadro FX 3800
NVIDIA Quadro FX 4600
NVIDIA Quadro FX 470
NVIDIA Quadro FX 4700 X2
NVIDIA Quadro FX 4800
NVIDIA Quadro FX 5600
NVIDIA Quadro FX 570
NVIDIA Quadro FX 570M
NVIDIA Quadro FX 580
NVIDIA Quadro FX 5800
NVIDIA Quadro FX 770M
NVIDIA Quadro NVS 130M
NVIDIA Quadro NVS 135M
NVIDIA Quadro NVS 140M
NVIDIA Quadro NVS 150M
NVIDIA Quadro NVS 160M
NVIDIA Quadro NVS 290
NVIDIA Quadro NVS 295
NVIDIA Quadro NVS 320M
NVIDIA Quadro NVS 420
NVIDIA Quadro NVS 450
NVIDIA Quadro Plex 1000 Model IV
NVIDIA Quadro Plex 2100 D4
NVIDIA Quadro Plex 2100 S4
NVIDIA Quadro Plex 2200 D2
NVIDIA Tesla C1060
NVIDIA Tesla C2050
NVIDIA Tesla C2070
NVIDIA Tesla C870
NVIDIA Tesla D870
NVIDIA Tesla M2050
NVIDIA Tesla M2070
NVIDIA Tesla S1070
NVIDIA Tesla S2050
NVIDIA Tesla S2070
NVIDIA Tesla S870

Donc globalement surtout NVIDIA et ATI/AMD.
« Modifié: Septembre 12, 2012, 08:37:27 pm par Ceylo »
Want to play movies in your SFML application? Check out sfeMovie!

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #5 le: Septembre 13, 2012, 12:43:09 am »
Ah, super ça, c'est bon à savoir. merci pour l'info.
SFML / OS X developer

yamashi

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Explorateur de fractale de Mandelbrot
« Réponse #6 le: Septembre 13, 2012, 04:25:36 am »
J'ai forké et implémenté une version qui fonctionne avec OpenCL.

Je ferais peut-être une version GMP pour explorer bien profond et une heuristique pour trouver les singularités demain midi si je m'ennuie ^^

Enjoy
« Modifié: Septembre 13, 2012, 04:29:00 am par yamashi »

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #7 le: Septembre 13, 2012, 09:50:11 am »
Oh wow :o , et moi qui pensais regarder comment faire une implémentation OpenCL cet après-midi.
Want to play movies in your SFML application? Check out sfeMovie!

yamashi

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Explorateur de fractale de Mandelbrot
« Réponse #8 le: Septembre 13, 2012, 03:58:23 pm »
Je viens de push une version sans TBB et avec GMP.
J'ai enlevé TBB car il existe OpenMP qui est mieux d'après moi et moin penible car la plus part des compilateur l'implémente.

Pour GMP c'est terriblement long, 5secondes sur mon i5 2500k avec un nombre d'iteration maximum de 30...
Mais bon en théorie on doit pouvoir descendre a l'infini avec ca.

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Re : Explorateur de fractale de Mandelbrot
« Réponse #9 le: Septembre 13, 2012, 04:25:08 pm »
Salut yamashi,

Je ne compte pas passer à OpenMP car les versions gratuites de Visual Studio ne permettent pas de l'utiliser. Concernant TBB je n'ai pour l'instant rencontré aucun problème quelque soit le compilateur utilisé, donc je compte le garder.

Pour ce qui est de la vitesse de calcul avec GMP cela ne m'étonne pas vraiment, peut-être que tu peux tester directement avec MPFR.

Pour ce qui est de l'implémentation OpenCL j'ai vu que tu as ajouté des fichiers utilitaires en plus des en-êtes OpenCL. Pourquoi ces fichiers utilitaires ? est-ce que c'est vraiment compliqué sinon ?
Want to play movies in your SFML application? Check out sfeMovie!

yamashi

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Explorateur de fractale de Mandelbrot
« Réponse #10 le: Septembre 14, 2012, 12:27:28 am »
Salut,

Je suis passé a OpenMP car TBB marche pas chez moi, ca compile, ca link mais a l'execution une erreur 0xc000007 impossible de démarrer l'application si je me souviens bien...
Je vais voir ce que donne MPFR surtout que j'utilise une vieille version de GMP ca doit jouer...
OpenCL n'est pas compliqué a utiliser mais c'est lourd a faire...
Ensuite au début j'ai utilisé des classes utilitaires que j'avais fait moi même pour la gestion de OpenCL mais mon code de mandelbrot était lent et après quelques recherches je suis tombé sur une thèse qui parlait justement de EPGPU que j'ai adopté suite a sa lecture.
Mais non c'est vraiment pas compliqué juste très pénible car faut faire du cas par cas pour chaque OS...

yamashi

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Explorateur de fractale de Mandelbrot
« Réponse #11 le: Septembre 14, 2012, 11:23:22 am »
Voici un petit rendu OpenCL fp64 vs GMP/MPRI :

OpenCL :


GMP :

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Re : Re : Explorateur de fractale de Mandelbrot
« Réponse #12 le: Septembre 14, 2012, 11:41:13 am »
Je suis passé a OpenMP car TBB marche pas chez moi, ca compile, ca link mais a l'execution une erreur 0xc000007 impossible de démarrer l'application si je me souviens bien...
Sur Windows ? La seule fois où j'ai eu ce problème c'est parce que j'ai mis la DLL 64 bits de TBB alors que mon programme était en 32 bits.

OpenCL n'est pas compliqué a utiliser mais c'est lourd a faire...
Ensuite au début j'ai utilisé des classes utilitaires que j'avais fait moi même pour la gestion de OpenCL mais mon code de mandelbrot était lent et après quelques recherches je suis tombé sur une thèse qui parlait justement de EPGPU que j'ai adopté suite a sa lecture.
Mais non c'est vraiment pas compliqué juste très pénible car faut faire du cas par cas pour chaque OS...
Au vu de ce que j'ai dû faire pour tester (et qui ne marche pas encore :D ) et en comparaison avec ton simple GPU_FILLKERNEL_2D, je veux bien te croire !

Voici un petit rendu OpenCL fp64 vs GMP/MPRI :
Jusqu'à avant un zoom à 1e13 le rendu est équivalent non ? Sinon c'est assez sympa 123ms quand même ! Dans l'absolu si on voulait avoir à la fois les performances d'OpenCL et la précision de GMP je pense qu'il faudrait réimplémenter GMP (ou au moins la partie calcul flottant) dans OpenCL...

Edit : si j'ai bien compris tu travailles sur Windows non ? qu'est-ce que tu as dû installer pour pouvoir faire fonctionner OpenCL dessus ?
« Modifié: Septembre 14, 2012, 11:45:56 am par Ceylo »
Want to play movies in your SFML application? Check out sfeMovie!

yamashi

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Explorateur de fractale de Mandelbrot
« Réponse #13 le: Septembre 14, 2012, 12:14:14 pm »
Oui au dessus c'est identique, on arrive a la limite du double après malheureusement...
J'ai trouvé un article pour utiliser des flotants sur 128 bits sous OpenCL je vais essayer de le faire !

Je compile le projet en 64 bits maintenant pour avoir certaines extensions du processeur (Nehalem).

Pour avoir OpenCL suffit d'avoir les drivers installés :)

Ceylo

  • Hero Member
  • *****
  • Messages: 2325
    • Voir le profil
    • http://sfemovie.yalir.org/
    • E-mail
Re : Re : Explorateur de fractale de Mandelbrot
« Réponse #14 le: Septembre 14, 2012, 01:43:23 pm »
Pour avoir OpenCL suffit d'avoir les drivers installés :)
Des pilotes spécialement pour OpenCL ou les pilotes classiques de la carte graphique ?

Pour ce qui est des flottant sur 128 bits j'avais regardé rapidement aussi mais quand j'ai voulu utiliser le type correspondant (quad), le compilateur OpenCL m'a engueulé :( .
Want to play movies in your SFML application? Check out sfeMovie!