IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Optimisation de temps


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 21
    Par défaut Optimisation de temps
    Bonjour à tous

    Je développe actuellement une application de traitement d'images en temps réel. Les images que j'utilise sont en HD (1920 *1080 pixels) avec une acquisition de 30 FPS. malheureusement je n'arrive pas à atteindre un temps d'analyse inférieur à 1/30 seconde par image.

    J'ai pensé à utiliser plusieurs thread ou utiliser une carte graphique mais n'ayant pas une grande connaissance dans ce domaine je m'en remet à vous. Quelles sont mes possibilités, puis-je baisser de manière significative mon temps de traitements ?

    Merci d'avance vos réponse

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Bonjour

    Si tu peux nous fournir le kernel de calcul, on pourra vraiment t'aider.

    Sinon :
    - vérifie que tu as bien activé les options d'optimisation du compilateur
    - vérifie s'il n'y a pas d'optimisation de l'algo lui-même
    - fait attention au parcours dans la mémoire (pour minimiser les défauts de cache)
    - si tu as plusieurs cœurs disponibles, regarde du côté d'OpenMP (ou std::thread)
    - essaye d'utiliser les extensions SIMD
    - après il te reste l'utilisation de la carte graphique avec OpenCL ou Cuda

  3. #3
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Tout dépend des traitements que tu as à faire.
    J'ai personnellement utilisé les intstructions SSE2, ou CUDA pour l'optimisation de traitements sur des images Full HD.
    Les gains étaient vraiment appréciables, mais avec le SSE2 il faut une grande rigueur et une bonne compréhension de ce que tu fais.
    Pour CUDA, il faut penser d'une toute autre manière, à cause de la manière dont est parallélisé le traitement.
    Et une autre solution que je n'ai pas testée c'est OpenMP.

    [EDIT]

    Owned.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  4. #4
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Il n'y a pas à tortiller. Il faut utilisr le gpu pour le traitement d'images haute def. Tu peux utiliser des langages gpu comme Cuda ou Opencl qui sont très bons et bien documentés.
    Mais sans aller jusque là, tu peux très bien écrire un petit prog OpenGL et faire le traitement d'image par des shaders (GLSL ou Cg) dans un FBO et récupérer les données par un glReadPixels. Y'a pas plus "temps réel"

  5. #5
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    Il n'y a pas à tortiller. Il faut utilisr le gpu pour le traitement d'images haute def. Tu peux utiliser des langages gpu comme Cuda ou Opencl qui sont très bons et bien documentés.
    Mais sans aller jusque là, tu peux très bien écrire un petit prog OpenGL et faire le traitement d'image par des shaders (GLSL ou Cg) dans un FBO et récupérer les données par un glReadPixels. Y'a pas plus "temps réel"
    Il s'agit d'une option, qui portera très probablement ses fruits car généralement les problèmes de traitements d'images sont des problèmes que les GPU aiment bien.
    Cependant (sauf erreur de ma part) Cuda ne fonctionne que sur les cartes graphiques nVidia, OpenCL est relativement compliqué à utiliser. Les deux sont assez difficiles à installer correctement. (D'une carte graphique à l'autre, les performances ne sont pas (toujours) portables).
    Envisager une optimisation CPU (multi-thread) n'est pas stupide, si elle amène les performances voulues, le développement sera plus rapide et le code plus facilement maintenable.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 21
    Par défaut
    Bonsoir,

    Tout d'abord merci d'avoir porté attention à mon problème

    je traite mes images à l'aide de la bibliothèque OpenCV. Elle marche très bien mais sur des tailles d'images plus petites.

    Mon but est repérer des marqueurs de couleur (une douzaine) dans mes images. Au début j'utilisé des régions d’intérêt pour chacun de mes points afin de minimiser le temps de calcul. L'ennui c'est que mes marqueurs se déplacent rapidement et ils sortent des régions d’intérêts. J'ai donc décidé de traiter entièrement l'image, mais en contre partie la complexité explose ...

    Je ne connais aucune des solutions que vous m'avez proposé, je vais me renseigner sur les acronymes que j'ai pu voir passer dans la discussion ^^.

    Je recherche avant tout une solution simple et qui peut être rapidement mis en place. Je ne suis pas encore un expert en c++

  7. #7
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par cocs78 Voir le message
    Je recherche avant tout une solution simple et qui peut être rapidement mis en place. Je ne suis pas encore un expert en c++
    Regarde du côté d'OpenMP alors (dans un premier temps) (après avoir vérifié tes options de compilation).

Discussions similaires

  1. Optimisation du temps de traitement
    Par djuddju dans le forum Oracle
    Réponses: 4
    Dernier message: 20/04/2006, 21h16
  2. optimiser le temps d'exécution de l'explorateur windows
    Par ben_iap dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 31/01/2006, 22h04
  3. Réponses: 9
    Dernier message: 20/06/2005, 12h17
  4. [SGBD]Optimiser le temps d'accès aux données (schéma BD)
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 08/10/2004, 18h33
  5. optimisation de temps de traitement xml/xslt
    Par Erwy dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/05/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo