Réponse différente de gbasis selon la version.

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Réponse différente de gbasis selon la version.

Message par Dominique MICOLLET » jeu. janv. 22, 2015 1:53 pm

Bonjour,


Voici deux traces d'execution de icas sur un même problème de calcul de base de GroeBner, différant par la version de libcas mise en œuvre

icas + libcas 0.9.8 :
  • $ /usr/local/giac-0.9.8/bin/icas
    // Maximum number of parallel threads 2
    // Using keyword file /usr/local/giac-0.9.8/share/giac/doc/fr/keywords
    Help file /usr/local/giac-0.9.8/share/giac/doc/fr/aide_cas not found
    Added 164 synonyms
    Welcome to giac readline interface
    (c) 2001,2011 B. Parisse & others
    Homepage http://www-fourier.ujf-grenoble.fr/~parisse/giac.html
    Released under the GPL license 3.0 or above
    See http://www.gnu.org for license details
    May contain BSD licensed software parts (lapack, atlas, tinymt)
    -------------------------------------------------
    Press CTRL and D simultaneously to finish session
    Type ?commandname for help
    0>> version()
    "giac 0.9.8"
    // Time 0
    1>> gbasis ([(X_1*X_6+X_4*X_6)/2-Y_2,(X_3^2+X_5^2)/2-Y_3,(3*X_1^2+2*X_1*X_4+4*X_2^2+3*X_4^2)/8-Y_4,(X_1^2+6*X_1*X_4-4*X_2^2+X_4^2)/8-Y_5,(X_1^2-2*X_1*X_4+4*X_2^2+X_4^2)/8-Y_6,X_6-Y_7,(X_1+X_4)/2-Y_8],[X_1,X_2,X_3,X_4,X_5,X_6,Y_2,Y_3,Y_4,Y_5,Y_6,Y_7,Y_8])
    [-Y_5-Y_6+Y_8^2,-Y_4+Y_6+Y_8^2,-Y_2+Y_7*Y_8,X_6-Y_7,X_3^2+X_5^2-2*Y_3,X_2^2+X_4^2-2*X_4*Y_8-2*Y_6+Y_8^2,X_1+X_4-2*Y_8]
    // Time 0
    2>>
icas + libcas 1.1.2 :
  • $ /usr/local/giac-1.1.2/bin/icas
    // Using locale /usr/local/giac-1.1.2/share/locale/
    // fr_FR.UTF-8
    // /usr/local/giac-1.1.2/share/locale/
    // giac
    // UTF-8
    // Maximum number of parallel threads 2
    // Using keyword file /usr/local/giac-1.1.2/share/giac/doc/fr/keywords
    Help file /usr/local/giac-1.1.2/share/giac/doc/fr/aide_cas not found
    Added 174 synonyms
    Welcome to giac readline interface
    (c) 2001,2014 B. Parisse & others
    Homepage http://www-fourier.ujf-grenoble.fr/~parisse/giac.html
    Released under the GPL license 3.0 or above
    See http://www.gnu.org for license details
    May contain BSD licensed software parts (lapack, atlas, tinymt)
    -------------------------------------------------
    Press CTRL and D simultaneously to finish session
    Type ?commandname for help
    0>> version();
    "giac 1.1.2, (c) B. Parisse and R. De Graeve, Institut Fourier, Universite de Grenoble I"
    // Time 0
    1>> gbasis ([(X_1*X_6+X_4*X_6)/2-Y_2,(X_3^2+X_5^2)/2-Y_3,(3*X_1^2+2*X_1*X_4+4*X_2^2+3*X_4^2)/8-Y_4,(X_1^2+6*X_1*X_4-4*X_2^2+X_4^2)/8-Y_5,(X_1^2-2*X_1*X_4+4*X_2^2+X_4^2)/8-Y_6,X_6-Y_7,(X_1+X_4)/2-Y_8],[X_1,X_2,X_3,X_4,X_5,X_6,Y_2,Y_3,Y_4,Y_5,Y_6,Y_7,Y_8])
    [Y_4-Y_5-2*Y_6,X_6-Y_7,X_1+X_4-2*Y_8,Y_8^2-Y_5-Y_6,Y_7*Y_8-Y_2,Y_5*Y_7+Y_6*Y_7-Y_2*Y_8,X_3^2+X_5^2-2*Y_3,X_2^2+X_4^2-2*X_4*Y_8+Y_5-Y_6]
    // Time 0.01
    2>>
Les bases resultantes diffèrent en nombre de polynomes, et en valeur de ces polynomes. C'est le résultat en 0.9.8 qui semble le plus intéressant.

Pour cet exemple, l'exploitation ultérieure de la base aboutit au même resultat dans les deux cas.

Mais j'ai un autre cas, ou le temps de traitement passe de 10 secondes à je ne sais combien parce que j'ai interrompu le calcul au bout d'une heure et demie.

Au vu d'autres messages sur le forum, je pressens une mauvaise utilisation de l'ordre lexicographique.

Sauriez-vous me suggérer une piste ?

Remarques :
- je mets en œuvre des versions compilées par mes soins de libcas
- la version 0.9.8 a été compilée avec g++-4.4 pour bénéficier de l'optimisation O3
- la version 1.1.2 a été compilée avec g++-4.7 sans optimisation.
- si nécessaire, je peux recompiler la version 1.1.2 dans les mêmes conditions que la 0.9.8.
- pour le moment, je n'utilise pas libcocoa.
- la machine est sous Debian Wheezy standard
- j'ai essayé d'"uploader" ces traces sous forme de fichiers, mais l'interface me les a systématiquement refusés au motif que les extensions n'étaient pas reconnues (.8 ou .txt ou pas d'extension).
Cordialement

Dominique MICOLLET

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Re: Réponse différente de gbasis selon la version.

Message par Dominique MICOLLET » jeu. janv. 22, 2015 3:54 pm

Rebonjour,

J'ai procédé à quelques essais supplémentaires pour déterminer si l'ordre lexicographique influe sur le comportement d'icas.

Pour la version 0.9.8 optimisée compilée par g++-4.4, sur la requête
  • gbasis([X_9^2*X_3^2-Y_10,X_9^2*X_2^2-Y_11,X_9^2*X_1^2-Y_12,X_8*X_9*X_2*X_3-Y_16,X_7*X_9*X_3^2-Y_22,X_7*X_9*X_2^2-Y_23,X_7*X_9*X_1^2-Y_24,X_6*X_9*X_1*X_3-Y_26,X_5*X_9*X_1*X_2-Y_28,X_4*X_9*X_3^2-Y_30,X_4*X_9*X_2^2-Y_31,X_4*X_9*X_1^2-Y_32,X_8^2*X_3^2-Y_39,X_8^2*X_2^2-Y_40,X_8^2*X_1^2-Y_41,X_7*X_8*X_2*X_3-Y_43,X_6*X_8*X_1*X_2-Y_45,X_5*X_8*X_1*X_3-Y_46,X_4*X_8*X_2*X_3-Y_47,X_7^2*X_3^2-Y_53,X_7^2*X_2^2-Y_54,X_7^2*X_1^2-Y_55,X_6*X_7*X_1*X_3-Y_57,X_5*X_7*X_1*X_2-Y_59,X_4*X_7*X_3^2-Y_61,X_4*X_7*X_2^2-Y_62,X_4*X_7*X_1^2-Y_63,X_6^4-Y_64,X_6^2*X_3^2-Y_67,X_6^2*X_2^2-Y_68,X_6^2*X_1^2-Y_69,X_5*X_6*X_2*X_3-Y_70,X_4*X_6*X_1*X_3-Y_71,X_5^2*X_3^2-Y_74,X_5^2*X_2^2-Y_75,X_5^2*X_1^2-Y_76,X_4*X_5*X_1*X_2-Y_77,X_4^2*X_3^2-Y_79,X_4^2*X_2^2-Y_80,X_4^2*X_1^2-Y_81,X_3^4-Y_82,X_2^2*X_3^2-Y_83,X_1^2*X_3^2-Y_84,X_2^4-Y_85,X_1^2*X_2^2-Y_86,X_1^4-Y_87,X_9*X_3^2-Y_97,X_9*X_2^2-Y_98,X_9*X_1^2-Y_99,X_5*X_6*X_8-Y_102,X_8*X_2*X_3-Y_103,X_7*X_3^2-Y_109,X_7*X_2^2-Y_110,X_7*X_1^2-Y_111,X_6*X_1*X_3-Y_113,X_5*X_1*X_2-Y_115,X_4*X_3^2-Y_117,X_4*X_2^2-Y_118,X_4*X_1^2-Y_119,X_8^2-Y_123,X_6^2-Y_126,X_5^2-Y_127,X_3^2-Y_129,X_2^2-Y_130,X_1^2-Y_131,X_9-Y_132,X_7-Y_133,X_4-Y_134],[X_1,X_2,X_3,X_4,X_5,X_6,X_7,X_8,X_9,Y_10,Y_11,Y_12,Y_16,Y_22,Y_23,Y_24,Y_26,Y_28,Y_30,Y_31,Y_32,Y_39,Y_40,Y_41,Y_43,Y_45,Y_46,Y_47,Y_53,Y_54,Y_55,Y_57,Y_59,Y_61,Y_62,Y_63,Y_64,Y_67,Y_68,Y_69,Y_70,Y_71,Y_74,Y_75,Y_76,Y_77,Y_79,Y_80,Y_81,Y_82,Y_83,Y_84,Y_85,Y_86,Y_87,Y_97,Y_98,Y_99,Y_102,Y_103,Y_109,Y_110,Y_111,Y_113,Y_115,Y_117,Y_118,Y_119,Y_123,Y_126,Y_127,Y_129,Y_130,Y_131,Y_132,Y_133,Y_134])
j'obtiens une réponse en moins de 10 secondes.

Dès lors que j'explicite un ordre lexicographique ....Y_134],plex) (ou revlex ou tdeg), je n'obtiens plus de réponse dans cette durée.
Je suis contraint d'interrompre le calcul par CTRL+C (ce qui ne tue pas icas au demeurant).

Y aurait-il donc un quatrième ordre lexicographique caché ?
Cordialement

Dominique MICOLLET

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Re: Réponse différente de gbasis selon la version.

Message par Dominique MICOLLET » jeu. janv. 22, 2015 4:09 pm

Rerebonjour,

Par curiosité, j'ai essayé ...Y_134],lex) : je retrouve une réponse en moins de 10 secondes.
Je me suis empressé de l'essayer avec une version 1.1.3 optimisée (compilée depuis mon premier message) : pas de réponse dans ce délai.
Je suis revenu à la version 0.9.8 et ai essayé ...Y_134],miko) : je retrouve une réponse en moins de 10 secondes.

J'en conclue donc que lorsque gbasis ne reconnait pas l'ordre lexicographique, il bascule sur une version par défaut qui diffère selon la version, et qui rallonge pharamineusement les temps de calcul pour les versions 1.x.
Cordialement

Dominique MICOLLET

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Réponse différente de gbasis selon la version.

Message par frederic han » ven. janv. 23, 2015 7:24 am

Bonjour,

Juste une piste:

avant giac avait 2 possibilites pour les bases de groner: une interne tres tres lente et une via la librairie cocoalib si giac a ete compile avec cette librairie.

Ensuite la version interne a ete fortement amelioree pour l'ordre revlex (mais je ne pense pas pour les autres). Je pense que la version par defaut est maintenant revlex avec la version interne de giac. En revanche (au moins) pour les autres ordres, il vaut mieux avoir compile giac avec cocoalib.

Frederic

parisse
Messages : 5740
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Réponse différente de gbasis selon la version.

Message par parisse » ven. janv. 23, 2015 8:06 am

L'ordre par defaut pour gbasis a ete change vers revlex qui est beaucoup plus efficace dans l'implementation actuelle, si le nombre de variables est raisonnable (<=14). L'ancien ordre/algorithme peut etre atteint avec les arguments plex,with_cocoa=true.
Je viens de regarder, il y a un petit bug dans read_gbargs qui empeche la prise en compte de with_cocoa=true :
diff solve.cc solve.cc~
6104d6103
< modular=false;

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Re: Réponse différente de gbasis selon la version.

Message par Dominique MICOLLET » ven. janv. 30, 2015 1:33 pm

Bonjour,
parisse a écrit : L'ancien ordre/algorithme peut etre atteint avec les arguments plex,with_cocoa=true.
J'avais compilé les deux versions sans libcocoa, dont les sources n'étaient pas installées sur ma machine.

Depuis, j'ai compilé à part la dernière version de cocoa, et fait quelques essais avec l'interpréteur de coca, sans grand succès.
A terme, je pense ne pas pouvoir utiliser cette librairie car, si je ne me trompe, elle ne manipule pas les polynômes à coefficients réels.

parisse a écrit : Je viens de regarder, il y a un petit bug dans read_gbargs qui empeche la prise en compte de with_cocoa=true :
Je vais recompiler mes librairies et icas et refaire quelques essais. À suivre donc.

Merci.
Cordialement

Dominique MICOLLET

Répondre