interruptions

Xcas devel: interface utilisateur/user interface

Modérateur : xcasadmin

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

interruptions

Message par frederic han » mar. sept. 10, 2013 7:23 pm

Salut,

Est il possible de desactiver pari lors de l'execution si la libgiac a ete compilee avec?

Je pense que ca serait bien utile car giac est plus stable sans pari. (Pour giacpy on ne peut pas faire control C lorsque c'est pari qui travaille, et dans sage j'ai des conflits avec le pari de sage)

De maniere generale, je ne realise pas trop ce que l'on perd avec:

- S'il n'y a pas ntl
- S'il n'y a pas pari, je trouve que les instructions generalistes sont devenues plus efficaces:

Ex: nextprime, et ifactor


Fred

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

Re: interruptions

Message par parisse » mer. sept. 11, 2013 6:41 am

Je pense que c'est difficile de desactiver pari alors qu'on a linke avec. Il faudrait sans doute reecrire giac pour appeler pari en chargeant dynamiquement le module a la volee (s'il est present), et ce serait d'ailleurs un truc a faire pour toutes les autres libs dynamiques, ca permettrait de s'adapter au systeme. Par contre on doit pouvoir desactiver les appels a pari en verrouillant le mutex, en C++:
pthread_mutex_trylock(pari_mutex_ptr);
Pour ifactor, normalement pari n'est plus appele sauf si l'entier a factoriser ne peut l'etre par Pollard-rho ou/et le crible quadratique de giac (taille limite 1e71), il ne devrait pas y avoir de differences, et nextprime n'utilise pas pari mais GMP.
Si on desactive pari, on perd bien sur toutes les instructions PARI. Ce qui n'est pas vraiment genant jusqu'a l'agreg incluse, a part le certificat de primalite (mais c'est pas tres difficile a reecrire).
Pour NTL, c'est utile pour quelques cas de polynomes a factoriser qui necessitent l'algorithme knapsack a l'etape de recombinaison des facteurs modulaires (cf. les polys zimmer* de examples/polyfact).

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

Re: interruptions

Message par frederic han » mer. sept. 11, 2013 12:03 pm

Je pense que ca n'est pas une bonne idee de faire un pari_lock car par exemple dans sage ca bloquerait aussi le pari de sage.

En revanche, s'il n'y a que ifactor et peut etre isprime, ca vaudrait peut etre le coup d'y mettre un test vers une variable de config du genre: enable_pari ou autre. (peut etre aussi pour pari())

Effectivement lorsque l'on fait essayer ifactor sur des grands p*q pour faire sentir l'ordre de grandeur de la difficulte on tombe dans la zone ou pari est appele.

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

Re: interruptions

Message par parisse » mer. sept. 11, 2013 2:32 pm

Non pthread_mutex_trylock(pari_mutex_ptr); va bloquer un mutex qui est interne a giac, ca n'aura aucune consequence sur le reste de sage.
Apres pour l'appel a pari dans ifactor, faudrait nettoyer le code un peu pour par exemple pouvoir definir la limite (sachant que pari sera plus rapide que giac s'il y a des facteurs detectes dans pari par ECM).

Répondre