Telimektar's World

Aller au contenu | Aller au menu | Aller à la recherche

lundi, août 4 2008

De l'utilisation de Psyco

Si comme moi vous aimez faire du Python, vous avez sans doute remarqué que niveau vitesse, et en particulier niveau calcul pur, c'est loin d'être le pied.

Pour Danuve j'ai été amené à faire quelques recherches sur l'encapsulation de code C au sein de Python. Et là je croise ce qui est aujourd'hui devenu l'amour de ma vie :

Psyco, aucun rapport avec de l'encapsulation au final.

Psyco a pour but d'accélérer massivement la vitesse d'exécution d'un code Python.

Alors rajoutons quelques lignes après les import de notre main :

 try:
    import psyco
    psyco.full()
 except:
    pass

On essaie ici d'utiliser le module psyco, si celui ci ne peut pas être importé on passe comme si de rien n'était.

Et alors là...Un miracle, tout simplement THE miracle.

Danuve utilise actuellement deux algorithmes, Euler et Runge-Kutta 4, RK4 est plus précis mais plus gourmand niveau calcul.

Comparons sur 3 configurations :

  • Un seul oscillateur :
Algorithme utiliséC PythonC Python + PsycoGain de performance
Euler1.580.891.77
Runge-Kutta 43.361.532.19
  • Dix oscillateurs identiques
Algorithme utiliséC PythonC Python + PsycoGain de performance
Euler8.454.162.03
Runge-Kutta 419.836.203.19
  • Vingt oscillateurs identiques
Algorithme utiliséC PythonC Python + PsycoGain de performance
Euler16.007.892.03
Runge-Kutta 440.1910.993.65

Je vous laisse juger par vous même...

Avec un tel gain de performances, le projet d'implémentation du coeur de danuve en C risque de tomber à l'eau.

lundi, juin 30 2008

Danuve 0.1a

Voilà,

Aprés un mois de travail épars, voici une première version utilisable de Danuve.

Danuve est un script python permettant de résoudre les équations du mouvements d'une chaine d'oscillateurs harmoniques. Sa particularité est qu'il prend en paramétre un fichier.ini permettant de décrire de manière simple le système d'oscillateurs.

Le tar.gz contient un .ini d'exemple, nommé oscilator.ini . Pour en savoir plus sur l'utilisation de Danuve :

$ wget http://telimektar.com/physique/danuve.tar.gz
$ tar xvzf danuve.tar.gz
$ cd danuve
$ chmod u+x danuve.py
$ ./danuve.py -h

Enjoy :)

samedi, juin 7 2008

Recherche amateur de SDL et/ou d'OpenGL et/ou de création de GUI

Après pas mal de temps à tergiverser j'ai décider de mettre sur les rails un petit projet de simulation physique.
Il n'a pas pour but d'être utilisé dans le monde professionel mais seulement de servir d'outil d'illustration pour enseignant, et de test pour les étudiants.

Pour le moment je vais me concentrer sur les chaines d'oscillateur en interaction harmonique (typiquement une chaine de masse couplée par des ressorts).

Le projet est actuellement divisé en plusieurs parties/sous-projets :

  • Création d'un format permettant de décrire le systéme et ses caractéristiques.
  • Création d'un logiciel capable d'assister l'utilisateur pour générer ce fichier. ( D'où la recherche d'un amateur de GUI )
  • Création d'un module Python capable de lire, interpréter et fournir un fichier de données en sortie.
  • Création d'un programme permettant la visualisation en temps réel de l'évolution de l'objet. ( D'où la recherche d'un amateur d'OpenGL ou SDL )

Il ne reste plus qu' à trouver un nom et un logo à l'animal :)

Si le projet vous intéresse rendez-vous ici : Wiki du projet
Il se remplit peu à peu, courage !

Voilà contacter moi si le projet vous intéresse, si vous avez besoin d'éclaircisssement, etc... Je ne suis généralement pas méchant.

Bonne journée

- page 2 de 4 -