Le forum de XCAS

Xcas: un logiciel libre de calcul formel
Nous sommes actuellement le Lun Déc 11, 2017 7:03 pm

Heures au format UTC




Publier un nouveau sujet Répondre au sujet  [ 20 messages ]  Aller à la page Précédent  1, 2
Auteur Message
 Sujet du message: Re: giacpy et sage
MessagePublié: Sam Oct 05, 2013 9:46 am 
Hors-ligne

Inscrit le: Mar Déc 20, 2005 4:02 pm
Messages: 4153
Je viens d'essayer cyclic9 mod en 32 bits, ca passe (1700 secondes au lieu de 650 sur la meme machine mais en 64 bits).
Tu peux avoir des infos avec export GIAC_DEBUG=2
Voila mon cyclic9mod (ou je lui ai fait calculer le nombre de monomes de la reponse, c'est un peu plus de 1 millions, et la taille des coefficients est de 1600 chiffres environ en base 10 pour cyclic9 pas mod).
Code:
cyclic9:=[x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9, x1*x2 + x2*x3 + x3*x4 + x4*x5 + x5*x6 + x6*x7 + x7*x8 + x1*x9 + x8*x9, x1*x2*x3 + x2*x3*x4 + x3*x4*x5 + x4*x5*x6 + x5*x6*x7 + x6*x7*x8 + x1*x2*x9 + x1*x8*x9 + x7*x8*x9, x1*x2*x3*x4 + x2*x3*x4*x5 + x3*x4*x5*x6 + x4*x5*x6*x7 + x5*x6*x7*x8 + x1*x2*x3*x9 + x1*x2*x8*x9 + x1*x7*x8*x9 + x6*x7*x8*x9, x1*x2*x3*x4*x5 + x2*x3*x4*x5*x6 + x3*x4*x5*x6*x7 + x4*x5*x6*x7*x8 + x1*x2*x3*x4*x9 + x1*x2*x3*x8*x9 + x1*x2*x7*x8*x9 + x1*x6*x7*x8*x9 + x5*x6*x7*x8*x9, x1*x2*x3*x4*x5*x6 + x2*x3*x4*x5*x6*x7 + x3*x4*x5*x6*x7*x8 + x1*x2*x3*x4*x5*x9 + x1*x2*x3*x4*x8*x9 + x1*x2*x3*x7*x8*x9 + x1*x2*x6*x7*x8*x9 + x1*x5*x6*x7*x8*x9 + x4*x5*x6*x7*x8*x9, x1*x2*x3*x4*x5*x6*x7 + x2*x3*x4*x5*x6*x7*x8 + x1*x2*x3*x4*x5*x6*x9 + x1*x2*x3*x4*x5*x8*x9 + x1*x2*x3*x4*x7*x8*x9 + x1*x2*x3*x6*x7*x8*x9 + x1*x2*x5*x6*x7*x8*x9 + x1*x4*x5*x6*x7*x8*x9 + x3*x4*x5*x6*x7*x8*x9, x1*x2*x3*x4*x5*x6*x7*x8 + x1*x2*x3*x4*x5*x6*x7*x9 + x1*x2*x3*x4*x5*x6*x8*x9 + x1*x2*x3*x4*x5*x7*x8*x9 + x1*x2*x3*x4*x6*x7*x8*x9 + x1*x2*x3*x5*x6*x7*x8*x9 + x1*x2*x4*x5*x6*x7*x8*x9 + x1*x3*x4*x5*x6*x7*x8*x9 + x2*x3*x4*x5*x6*x7*x8*x9, x1*x2*x3*x4*x5*x6*x7*x8*x9 - 1]:;
p:=prevprime(45000);
//p:=prevprime(2^25); // 33554393
time(H:=gbasis(cyclic9 % p,indets(cyclic9),revlex,with_cocoa=false));
size(eval(H,1));
b:=0:; for j from 0 to size(eval(H,1))-1 do b+=size(eval(H,1)[j]); od:; b;
write("Hcyclic9",H);


Haut
 Profil  
 
 Sujet du message: Re: giacpy et sage
MessagePublié: Sam Oct 05, 2013 11:57 am 
Hors-ligne

Inscrit le: Dim Mai 20, 2007 7:09 am
Messages: 1022
Localisation: Paris
Ah, j'avais essaye en caracteristique nulle!

Je vais refaire une essai modulo p. Le cocoa=false est il obligatoire?
Frederic


Haut
 Profil  
 
 Sujet du message: Re: giacpy et sage
MessagePublié: Sam Oct 05, 2013 12:48 pm 
Hors-ligne

Inscrit le: Mar Déc 20, 2005 4:02 pm
Messages: 4153
non, pas besoin de with_cocoa=false, c'est le defaut (mais ca ne l'etait pas quand j'ai cree mes fichiers de script de tests).
Si ca marche en caracteristique p, ca devrait marcher sur Q, sauf s'il y a un probleme d'allocation memoire pour la reconstruction.


Haut
 Profil  
 
 Sujet du message: Re: giacpy et sage
MessagePublié: Ven Mai 02, 2014 9:34 am 
Hors-ligne

Inscrit le: Dim Mai 20, 2007 7:09 am
Messages: 1022
Localisation: Paris
Bon j'ai reussi d'avoir une base de grobner sur Q pour cyclic9 depuis sage avec giacpy.
Config:
Pc de bureau a moins de 500Eur en 2013: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz avec seulement 4Go de RAM
Fedora 20: x86_64
rpm de sage officiel et la derniere version de giac 1.1.0, et la vesion de giacpy pour HOME dir (ie sans patcher sage)
[url]
http://www.math.jussieu.fr/~han/xcas/sa ... rtable.tgz
[/url]

voici les temps (environ 15h (wall) avec 4 threads :lol: ) et la feuille:
Code:
sage: n=6;R=PolynomialRing(QQ,n,'x');
sage: I = sage.rings.ideal.Cyclic(R,n);
sage: I.gens()
[x0 + x1 + x2 + x3 + x4 + x5, x0*x1 + x1*x2 + x2*x3 + x3*x4 + x0*x5 + x4*x5, x0*x1*x2 + x1*x2*x3 + x2*x3*x4 + x0*x1*x5 + x0*x4*x5 + x3*x4*x5, x0*x1*x2*x3 + x1*x2*x3*x4 + x0*x1*x2*x5 + x0*x1*x4*x5 + x0*x3*x4*x5 + x2*x3*x4*x5, x0*x1*x2*x3*x4 + x0*x1*x2*x3*x5 + x0*x1*x2*x4*x5 + x0*x1*x3*x4*x5 + x0*x2*x3*x4*x5 + x1*x2*x3*x4*x5, x0*x1*x2*x3*x4*x5 - 1]
sage: time B = I.groebner_basis("libsingular:std")
Time: CPU 0.15 s, Wall: 0.15 s
sage: import sys;sys.path.append('/home/fred/giacpy-sage')
<p>(If you have the standalone version of giacpy for sage in /home/fred/giacpy-sage )</p>
<p>if not, then patch sage and do:</p>
<p>from sage.libs.giac import *</p>
sage: import giacpy
// Giac share root-directory:/usr/share/giac/
// Using keyword file /usr/share/giac/doc/fr/keywords
// Giac share root-directory:/usr/share/giac/
Help file /usr/share/giac/doc/fr/aide_cas not found
Added 0 synonyms
sage: from giacpy import *
sage: I1=libgiac(I.gens())
<p>In&nbsp; giac 1.1 there is a new code for grobner basis with revlex.</p>
<p>It is much faster than the old ones, but only with revlex and doesn't use cocoa.</p>
sage: time B1=I1.gbasis([R.gens()],'revlex')
Time: CPU 0.08 s, Wall: 0.07 s
sage: time B1=I1.gbasis([R.gens()],'revlex,cocoa=false')
Time: CPU 0.09 s, Wall: 0.08 s
sage: [(B[-i-1]/B1[i]).simplify()  for i in range(len(B))] #singular donne des fractions. les degres ne sont pas dans le meme ordre
[1, 1, 1/14, 1, 1/2, 1/7, 1/2, 1/903, 1/1806, 1/258, 1/903, 1/903, 1/1806, 1/903, 1/1806, 1/1806, 1/7, 1/602, 1/258, 1/1806, 1/18, 1/274400, 1/54880, 1/109760, 1/164640, 1/86596, 1/43298, 1/86596, 1/35739035160, 1/2978252930, 1/1191301172, 1/2382602344, 1/3573903516, 1/35739035160, 1/14, 1/24990, 1/42, 1/24990, 1/99960, 1/6664, 1/99960, 1/19992, 1/99960, 1/2040, 1/16660]
sage: n=9;R=PolynomialRing(QQ,n,'x');
sage: I = sage.rings.ideal.Cyclic(R,n);I
Ideal (x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8, x0*x1 + x1*x2 + x2*x3 + x3*x4 + x4*x5 + x5*x6 + x6*x7 + x0*x8 + x7*x8, x0*x1*x2 + x1*x2*x3 + x2*x3*x4 + x3*x4*x5 + x4*x5*x6 + x5*x6*x7 + x0*x1*x8 + x0*x7*x8 + x6*x7*x8, x0*x1*x2*x3 + x1*x2*x3*x4 + x2*x3*x4*x5 + x3*x4*x5*x6 + x4*x5*x6*x7 + x0*x1*x2*x8 + x0*x1*x7*x8 + x0*x6*x7*x8 + x5*x6*x7*x8, x0*x1*x2*x3*x4 + x1*x2*x3*x4*x5 + x2*x3*x4*x5*x6 + x3*x4*x5*x6*x7 + x0*x1*x2*x3*x8 + x0*x1*x2*x7*x8 + x0*x1*x6*x7*x8 + x0*x5*x6*x7*x8 + x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5 + x1*x2*x3*x4*x5*x6 + x2*x3*x4*x5*x6*x7 + x0*x1*x2*x3*x4*x8 + x0*x1*x2*x3*x7*x8 + x0*x1*x2*x6*x7*x8 + x0*x1*x5*x6*x7*x8 + x0*x4*x5*x6*x7*x8 + x3*x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5*x6 + x1*x2*x3*x4*x5*x6*x7 + x0*x1*x2*x3*x4*x5*x8 + x0*x1*x2*x3*x4*x7*x8 + x0*x1*x2*x3*x6*x7*x8 + x0*x1*x2*x5*x6*x7*x8 + x0*x1*x4*x5*x6*x7*x8 + x0*x3*x4*x5*x6*x7*x8 + x2*x3*x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5*x6*x7 + x0*x1*x2*x3*x4*x5*x6*x8 + x0*x1*x2*x3*x4*x5*x7*x8 + x0*x1*x2*x3*x4*x6*x7*x8 + x0*x1*x2*x3*x5*x6*x7*x8 + x0*x1*x2*x4*x5*x6*x7*x8 + x0*x1*x3*x4*x5*x6*x7*x8 + x0*x2*x3*x4*x5*x6*x7*x8 + x1*x2*x3*x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5*x6*x7*x8 - 1) of Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5, x6, x7, x8 over Rational Field
sage: #time B = I.groebner_basis("libsingular:std")
sage: I1=libgiac(I.gens())
sage: giacsettings.threads=4
sage: time B1=libgiac(I.gens()).gbasis([R.gens()],'revlex')
Running a probabilistic check for the reconstructed Groebner basis. If successfull, error probability is less than 1e-15 and is estimated to be less than 10^-119. Use proba_epsilon:=0 to certify (this takes more time).
Time: CPU 127584.53 s, Wall: 55808.73 s
sage: tutu=B1[-1].coeff([R.gens()])
sage: tutu.approx(20).max()
0.33367613068506562166e611
sage: time tutu=B1[500].coeff([R.gens()])
Time: CPU 0.03 s, Wall: 0.92 s
sage: tutu.approx(20).max().log10().approx(12)._double
597.0994441999974
<p>NB: time on a desktop PC with 4go ram only so a lot of time in swapping.</p>
sage: time logcoeff=[ (j.coeff([R.gens()])).approx(20).max().log10().approx(12)._double for j in B1]
Time: CPU 27.40 s, Wall: 340.95 s
sage: max(logcoeff)
1643.9074942499938
sage: B1.dim()
1344


Haut
 Profil  
 
 Sujet du message: Re: giacpy et sage
MessagePublié: Sam Mai 03, 2014 6:57 am 
Hors-ligne

Inscrit le: Mar Déc 20, 2005 4:02 pm
Messages: 4153
il me semble qu'il faut environ 7Go de RAM pour ne pas avoir besoin de swapper avec 4 threads. Sinon, ca swappe pour reconstruire (si ma memoire est bonne le resultat tient sur presque 2 Go).


Haut
 Profil  
 
Afficher les messages publiés depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 20 messages ]  Aller à la page Précédent  1, 2

Heures au format UTC


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduction réalisée par Maël Soucaze © 2009 phpBB.fr