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

Calcul scientifique Python Discussion :

Comment réduire le temps d'exécution sous Windows?


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut Comment réduire le temps d'exécution sous Windows?
    Bonjour,

    J'ai écrit un bout de programme qui fait des calculs avec des arrays Numpy.

    Le script tournant sous Windows XP est horriblement long à s'exécuter ..

    Premièrement le CPU est systématiquement chargé à 50%, je pense que cela vient du fait que ma machine est équipée d'un Core 2 Duo et que le script Python utilise 100% des capacités d'un des Core.

    Deuxièmement, il fait des accès disque en permanence .. il semblerait donc qu'il utilise de la mémoire virtuelle

    C'est sur le 2ième point que je voudrais faire quelque chose.

    Vu la très petite taille des arrays Numpy, il n'y a aucune raison d'utiliser de la mémoire virtuelle.
    Mon PC a 4 Go de RAM, je sais qu'XP ne peut en utiliser que 3 Go, mais le gestionnaire de tâches me dit que seulement 490Mo sont utilisés ... il y a donc 2,4Go de RAM non utilisés.

    Y a t-il un moyen pour forcer Python (ou Windows) à utiliser la RAM disponible plutôt que d'utiliser de la mémoire virtuelle?

    Merci d'avance à ceux qui pourraient m'aider.

    Bonne journée

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    es tu sur que le script fait swapper WinXp?
    ca me parait peut probable.

    teste peut être les temps d'execution via un time clock.
    Essaie de découper ton code pour en faire des tests unitaire et trouver la portion de code qui mérite d'être optimisée!

    est ce que ce n'est pas une fonction d'une librairie qui déclenche l'utilisation du disque dur, plutot que python. (hypothèse!)

    a+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par airod Voir le message
    es tu sur que le script fait swapper WinXp?
    ca me parait peut probable.
    Merci pour ta réponse.

    Effectivement, tu as sûrement raison !!
    Avec cette m.... de XP, on ne sait jamais ce qui se passe
    Je viens de constater qu'il y a des accès disque même si j'arrête tout ...

    Comme je débute, il faut que je regarde comment utiliser time clock.

    Le problème est que je fais de la simulation et j'utilise un pas de calcul de 1 microsecondes, ce qui fait 1 million de passages dans le calcul pour simuler 1 seconde
    Mais si j'augmente le pas de calcul, je peux me retrouver avec des imprécisions numériques qui produisent des divisions par zéro

    Les variables de mes matrices Numpy sont de type "float"

    Je ne sais pas si cela correspond à des valeurs codées sur 32 bits ou sur 64 bits.
    Peut-être qu'en augmentant la précision du calcul, je pourrais augmenter le pas de calcul, donc réduire le nombre de calculs par seconde et globalement gagner du temps même si les opérations sur 64 bits sont plus longues à exécuter que sur 32 bits.

    Bonne journée

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Par défaut, Numpy travaille en double précision. Si tu veux de la simple, il faut ajouter un dtype = numpy.float32 lors de la création des tableaux.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Par défaut, Numpy travaille en double précision. Si tu veux de la simple, il faut ajouter un dtype = numpy.float32 lors de la création des tableaux.
    Bonjour Matthieu et merci,

    Effectivement, j'ai remplacé "float" par "numpy.float64" et cela ne change rien; donc Numpy bosse bien en double précision comme tu me le confirmes ...

    Il va falloir que je cogite dur

    Mon prog a tourné 12 heures cette nuit pour me sortir un peu plus de 3 minutes de simulation ...
    Les résultats sont nickel, mais il faut être patient

    Bonne journée

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Salut

    Les disques qui tournent sous Windows... hélas, la bestiole veut faire tellement de truc que çà en est prise de tête pour savoir ce qu'il s'y passe vraiment. Personnellement j'en suis à préférer développer sous Linux ou OSX puis déployer sous Windows...
    Enfin bon, vous n'en êtes peut être pas à devoir appliquer ces remèdes.

    En mettant de côté le bruit du disque, vous dites:
    Premièrement le CPU est systématiquement chargé à 50%, je pense que cela vient du fait que ma machine est équipée d'un Core 2 Duo et que le script Python utilise 100% des capacités d'un des Core.
    => votre exécution est limité par la capacité CPU que vous pouvez lui donner

    Citation Envoyé par jlg_47 Voir le message
    Mon prog a tourné 12 heures cette nuit pour me sortir un peu plus de 3 minutes de simulation ...
    Que pourriez vous faire pour paralléliser l'exécution sur "beaucoup" de CPU?
    Sans trop savoir ce que font vos algos, impossible de vous suggérer autre chose qu'une sorte de direction de travail.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. code qui donne le temps d'exécution sous windows
    Par shadowless dans le forum C++
    Réponses: 3
    Dernier message: 20/06/2011, 17h03
  2. Réponses: 2
    Dernier message: 24/04/2011, 08h43
  3. comment exploiter les codes d'erreurs sous windows xp?
    Par lejum2005 dans le forum Windows XP
    Réponses: 4
    Dernier message: 03/03/2006, 17h26
  4. [FreePascal] Exécutables sous Windows et sous Linux
    Par etranger dans le forum Free Pascal
    Réponses: 8
    Dernier message: 24/09/2005, 19h58
  5. Réponses: 6
    Dernier message: 22/09/2005, 16h59

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