• Aucun résultat trouvé

Arithm´etique des corps finis dans la biblioth`eque LinBox

N/A
N/A
Protected

Academic year: 2022

Partager "Arithm´etique des corps finis dans la biblioth`eque LinBox"

Copied!
22
0
0

Texte intégral

(1)

Pascal Giorgi & Gilles Villard Equipe ´ Ar´ enaire

Laboratoire de l’informa tique du parall´elisme

ENS lyon - CNRS - INRIA

(2)

Introduction

• Il existe d´ej` a plusieurs biblioth´eques d’alg`ebre lin´eaire (ALP, Givaro, ...).

• LinBox est une biblioth`eque d’alg`ebre lin´eaire utilisant ces biblioth`eques.

• Utilisation g´en´erique d’objets exog`enes

(Corps Finis, Grandes Matrices ...).

• LinBox fournit une interfaces uniques pour chaque types d’objets.

• Facilit´e de comparaison des biblioth`eques utilis´ees.

CORPS FINIS.

(3)

Plan

I) G´en´ericit´e des corps finis dans LinBox.

II) Diff´erentes arithm´etiques de corps finis.

III) Efficacit´e de ces arithm´etiques et surcoˆ ut de LinBox.

(4)

LinBox et les corps finis

• Deux Types de corps finis : Z /p Z et GF(p

k

).

• D´efinition de Domaine de corps finis pour chaque biblioth`eques.

Exemples :

Bib zpz = {Z /p Z / p ∈ IN et p premier }

Bib gfq = { GF(p

k

) / p, k ∈ IN et p premier } Bib repr´ esente le nom de la biblioth` eque.

• Int´egration des domaines par des Wrappers

(5)

• Les diff´ erents wrappers poss` edent tous les mˆ emes m´ ethodes (noms, param` etres et actions).

ALP

NTL

GIVARO

LIDIA

Wrapper

Wrapper

Wrapper

Wrapper

LinBox Bibliothéques externes

Z/pZ

Z/pZ

GF(p^k) Z/pZ , GF(p^k)

(6)

Exemple de code LinBox

template<class Domain >

void Fct(Domain& field)

{ typedef typename Domain::element elt;

elt a,b,r; // D´eclaration de a,b,r comme ´el´ements de “Domaine”

field.init(a);

field.init(b); // Initialisation de a,b,r sur le corps fini “field”

field.init(r);

field.read(cin,a);

field.read(cin,b);

field.mul(r,a,b); // r ← a ∗ b dans le corps fini “field”

field.write(cout,r);

(7)

void main() {

// Declaration of a Z/pZ field over Givaro library with p=53.

givaro zpz<Std16> K(53);

// Declaration of a GF(pk) field over Lidia library with p=53 and k= 5.

lidia gfq Q(53,5);

cout" Z/pZ of Library Givaro \n";

Fct(K);

cout" GF(pk) of Library Lidia \n";

Fct(Q);

}

(8)

Wrappers LinBox

• Avantages :

∗ G´en´ericit´e des diff´erents corps finis de LinBox.

∗ Facilit´e d’utilisation grˆ ace ` a des fonctions templates.

• Inconv´enients :

∗ Utilisation de plusieurs objets.

∗ Taille du code compil´e important.

(9)

Interface standard

• D´efinition d’un corps finis virtuel : L’Archetype .

• L’Archetype d´efinit l’interface.

• L’Archetype est un objet ` a part enti`ere.

• Il d´efinit l’ensemble de tous les domaines de corps finis possibles.

(10)

• Les diff´ erents wrappers poss` edent tous les mˆ emes m´ ethodes (noms, param` etres et actions).

ALP

NTL

GIVARO

LIDIA

Wrapper

Wrapper

Wrapper

Wrapper

LinBox Bibliothéques externes

Z/pZ

Z/pZ

GF(p^k) Z/pZ , GF(p^k)

(11)

• L’archetype impose les m´ ethodes des wrappers (noms, param` etres et actions).

ALP

NTL

GIVARO

LIDIA

LinBox Bibliothéques externes

Z/pZ

Z/pZ

GF(p^k) Z/pZ , GF(p^k)

Archetype

Wrapper

Wrapper

Wrapper

Wrapper Méthodes

Méthodes

Méthodes

Méthodes

Méthodes

(12)

Exemple de code LinBox avec l’Archetype

template<class Domain >

void Fct(Domain& field)

{ typedef typename Domain::element elt;

elt a,b,r; // D´eclaration de a,b,r comme ´el´ements de “Domaine”

field.init(a);

field.init(b); // Initialisation de a,b,r sur le corps fini “field”

field.init(r);

field.read(cin,a);

field.read(cin,b);

field.mul(r,a,b); // r ← a ∗ b dans le corps fini “field”

field.write(cout,r);

(13)

void main() {

// Declaration of a Z/pZ field over Givaro library with p=53.

givaro zpz<Std16> K(53);

// Declaration of a GF(pk) field over Lidia library with p=53 and k= 5.

lidia gfq Q(53,5);

Field archetype Q arch(& Q); // Construction des archetypes des corps finis.

Field archetype K arch(& K);

Fct(Q arch);

Fct(K arch);

}

(14)

Archetype LinBox

• Avantages :

∗ Manipulation d’un seul type d’objet grˆ ace ` a l’interface.

∗ Validation de code sans connaˆıtre les wrappers.

• Inconv´enients :

∗ Temps d’ex´ecution plus important.

(15)

II) Arithm´ etique des diff´ erents corps finis utilis´ es

(16)

Arithm´etiques des corps finis

Z/pZ vs GF(pk) : Difficult´es d’impl´ementation diff´erentes.

Repr´esentation des ´el´ements

- Entiers machines ou grandes pr´ecisions, Flottants.

- G´en´erateurs, Polynˆomes.

Op´erateurs de bases

• Niveau ´el´ements :

- Modulo sur des entiers machines, modulo paresseux.

- Utilisation des flottants, conversion avec entiers.

- Lecture table (repr´esentation logarithmique).

• Niveau BLAS 1 :

Conversion (q adic), Test d’overflow.

• Niveau Z/2Z :

(17)

Strat´egies des biblioth`eques utilis´ees

• ALP :

- Z/pZ, Entiers machine (32 bits), modulo machines.

• NTL :

- Z/pZ, Entiers longs, utilisation flottant, modulo paresseux.

• Givaro :

- Z/pZ, Entiers machine (16,32 bits), modulo machines + modulo paresseux.

- GF(pk), G´en´erateurs, Entiers (machine,longs) ou flottants, Modulo paresseux + Lectures tables.

• Lidia :

- GF(pk), Polynˆomes , Op´erations sur polynˆomes.

(18)

III) Efficacit´ e de ces arithm´ etiques et

surcoˆ ut de LinBox.

(19)

Coˆ ut moyen d’une op´eration dans Z /p Z

Test sur un produit scalaire de vecteurs (avec un p de 32 bits):

ALP --- GIV --- NTL ---

0 1e–07 2e–07 3e–07 4e–07

Tps en s

20000 40000 60000 80000 100000

Taille des vecteurs

NTL

Givaro

ALP

(20)

L’efficacit´e d’une biblioth`eque d´epend de l’architecture processeur:

GIV_32 --- GIV_tab16 ---

GIV_16 ---

0 2e–08 4e–08 6e–08 8e–08 1e–07 1.2e–07

Tps en s

20000 40000 60000 80000 100000

Taille des vecteurs

GIV_32 --- GIV_tab16 ---

GIV_16 ---

0 1e–07 2e–07 3e–07 4e–07

Tps en s

20000 40000 60000 80000 100000

Taille des vecteurs

Givaro 16 bits

Givaro Log

Givaro 32 bits

(21)

Surcoˆ ut de LinBox

Without --- Wrapper --- Archetype ---

0 1e–07 2e–07 3e–07 4e–07 5e–07 6e–07

Tps en s

20000 40000 60000 80000 100000

Taille des vecteurs

Without --- Wrapper --- Archetype ---

0 1e–07 2e–07 3e–07 4e–07

Tps en s

20000 40000 60000 80000 100000

Taille des vecteurs

Archetype

Wrapper

Directement

ALP Givaro

(22)

Conclusion

• G´en´ericit´e des objets LinBox: Taille du code vs Efficacit´e.

• Arithm´etiques des corps finis non optimis´ees BLAS 1 (en g´en´eral).

• Vision de l’arithm´etique des corps finis pour BLAS 1,2,3.

• Etude de nouvelle repr´esentation (courbe elliptique). ´

Références

Documents relatifs

— arange(xmin,xmax,pas) ( array range ) : cr´ ee un array dont le premier ´ el´ ement est xmin et dont chaque ´ el´ ement est distant de pas, le dernier ´ etant strictement

Ils sont ´ecrit dans `a partir d’un alphabet de 256 caract`eres le code ASCII, chaque caract`ere peut ˆetre repr´esent´e par un code, un nombre entre 0 et 255 (un entier sur 8

Dans tout le sujet, sauf mention explicite contraire, la notation ˙ x d´ esigne la classe de x dans l’ensemble quotient consid´ er´ e. S’il y a ambigu¨ıt´ e (plusieurs

2) Soit E un ensemble. Quelle est la d´ efinition de “E est d´ enombrable”?. 3) Parmi les affirmations suivantes, lesquelles

On veut d´ emontrer (avec une preuve diff´ erente du cours) que la s´ erie des inverses des p

(b) La fonction grille derouler qui permet de retracer le d´ eroulement du jeu en affichant, pour chaque coup jou´ e de 1 au nombre de coups jou´ es de la partie : si une case a ´ et´

a) Montrer qu’un anneau factoriel est int´ egralement clos.. b) Soit A un anneau int´ egralement clos et K son corps

Dans le cas d’une relation d’´equivalence, ´ pr´eciser les classes ; dans le cas d’une relation d’ordre, pr´eciser si elle est totale, si l’ensemble admet un plus petit ou