Arithmétique des corps finis dans la bibliothèque LinBox



Documents pareils
Exemple d implantation de fonction mathématique sur ST240

Composants génériques de calcul scientifique

Quelques tests de primalité

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Table des matières. I Mise à niveau 11. Préface

Les formations de remise à niveau(!) l'entrée des licences scientifiques. Patrick Frétigné CIIU

Représentation des Nombres

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

as Architecture des Systèmes d Information

Bases de programmation. Cours 5. Structurer les données

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

La cryptographie du futur

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours 1 : La compilation

Limitations of the Playstation 3 for High Performance Cluster Computing

Chapitre 10 Arithmétique réelle

Conversion d un entier. Méthode par soustraction

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Introduction à l étude des Corps Finis

ELP 304 : Électronique Numérique. Cours 1 Introduction

Virtualisation Vserver et OpenVz en entreprise

Algorithmique I. Algorithmique I p.1/??

Sécuristation du Cloud

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Cours d initiation à la programmation en C++ Johann Cuenin

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Une bibliothèque de templates pour CUDA

CORBA haute performance

Programmation C. Apprendre à développer des programmes simples dans le langage C

Algorithmique et Programmation, IMA

COMPARAISONDESLANGAGESC, C++, JAVA ET

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Architecture matérielle des systèmes informatiques

Performances et optimisations

Informatique Générale

Mise en œuvre des serveurs d application

Généralités sur le Langage Java et éléments syntaxiques.

Bases Java - Eclipse / Netbeans

Cours Informatique Master STEP

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Compilation (INF 564)

Rapport de stage Master 2

Né le 13/06/1984 Russe Célibataire Langues : Russe, Anglais,

TP1 : Initiation à Java et Eclipse

Programmer en JAVA. par Tama

Sommaire Introduction Les bases de la cryptographie Introduction aux concepts d infrastructure à clés publiques Conclusions Références

Les structures de données. Rajae El Ouazzani

Introduction à NetCDF

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Rappels d architecture

Introduction à MATLAB R

Les avantages de la virtualisation sont multiples. On peut citer:

Communications performantes par passage de message entre machines virtuelles co-hébergées

ASR1 TD7 : Un microprocesseur RISC 16 bits

Programmation parallèle et distribuée

Polynômes à plusieurs variables. Résultant

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Python - introduction à la programmation et calcul scientifique


Présentation du logiciel

Introduction au langage C

Le Network File System de Sun (NFS)

TP, première séquence d exercices.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

TP1 : Initiation à Java et Eclipse

IFT2880 Organisation des ordinateurs et systèmes

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Chap III : Les tableaux

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Chapitre 2 : Abstraction et Virtualisation

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

Architecture de l ordinateur

Programme de la classe de première année MPSI

Exécution des instructions machine

Systèmes et traitement parallèles

Physique quantique et physique statistique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Peter W. Shor, Prix Nevanlinna 1998

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Initiation à la sécurité

Optimisation Discrète

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Architectures d implémentation de Click&DECiDE NSI

W4 - Workflow La base des applications agiles

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

Cours 1: Java et les objets

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

1 Recherche en table par balayage

UE C avancé cours 1: introduction et révisions

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Transcription:

Arithmétique des corps finis dans la bibliothèque LinBox Pascal Giorgi & Gilles Villard Équipe Arénaire Laboratoire de l informa tique du parallélisme ENS lyon - CNRS - INRIA

Introduction Il existe déjà plusieurs bibliothéques d algèbre linéaire (ALP, Givaro,...). LinBox est une bibliothèque d algèbre linéaire utilisant ces bibliothèques. Utilisation générique d objets exogènes (Corps Finis, Grandes Matrices...). LinBox fournit une interfaces uniques pour chaque types d objets. Facilité de comparaison des bibliothèques utilisées. CORPS FINIS. Pascal Giorgi 2

Plan I) Généricité des corps finis dans LinBox. II) Différentes arithmétiques de corps finis. III) Efficacité de ces arithmétiques et surcoût de LinBox. Pascal Giorgi 3

LinBox et les corps finis Deux Types de corps finis : Z/pZ et GF(p k ). Définition de Domaine de corps finis pour chaque bibliothèques. Exemples : Bib zpz = {Z/pZ / p IN et p premier} Bib gfq = {GF(p k ) / p, k IN et p premier} Bib représente le nom de la bibliothèque. Intégration des domaines par des s Pascal Giorgi 4

Les différents wrappers possèdent tous les mêmes méthodes (noms, paramètres et actions). Bibliothéques externes LinBox ALP Z/pZ NTL Z/pZ GIVARO Z/pZ, GF(p^k) LIDIA GF(p^k) Pascal Giorgi 5

Exemple de code LinBox template<class Domain > void Fct(Domain& field) { typedef typename Domain::element elt; elt a,b,r; // Déclaration de a,b,r comme éléments de Domaine field.init(a); field.init(b); field.init(r); // Initialisation de a,b,r sur le corps fini field 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); Pascal Giorgi 6

void main() { // Declaration of a Z/pZ field over Givaro library with p=53. givaro zpz<std16> K(53); // Declaration of a GF(p k ) 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(p k ) of Library Lidia \n"; Fct(Q); } Pascal Giorgi 7

s LinBox Avantages : Généricité des différents corps finis de LinBox. Facilité d utilisation grâce à des fonctions templates. Inconvénients : Utilisation de plusieurs objets. Taille du code compilé important. Pascal Giorgi 8

Interface standard Définition d un corps finis virtuel : L Archetype. L Archetype définit l interface. L Archetype est un objet à part entière. Il définit l ensemble de tous les domaines de corps finis possibles. Pascal Giorgi 9

Les différents wrappers possèdent tous les mêmes méthodes (noms, paramètres et actions). Bibliothéques externes LinBox ALP Z/pZ NTL Z/pZ GIVARO Z/pZ, GF(p^k) LIDIA GF(p^k) Pascal Giorgi 10

L archetype impose les méthodes des wrappers (noms, paramètres et actions). Bibliothéques externes LinBox ALP Z/pZ Méthodes NTL Z/pZ GIVARO Z/pZ, GF(p^k) Méthodes Méthodes Archetype Méthodes LIDIA GF(p^k) Méthodes Pascal Giorgi 11

Exemple de code LinBox avec l Archetype template<class Domain > void Fct(Domain& field) { typedef typename Domain::element elt; elt a,b,r; // Déclaration de a,b,r comme éléments de Domaine field.init(a); field.init(b); field.init(r); // Initialisation de a,b,r sur le corps fini field 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); Pascal Giorgi 12

void main() { // Declaration of a Z/pZ field over Givaro library with p=53. givaro zpz<std16> K(53); // Declaration of a GF(p k ) field over Lidia library with p=53 and k= 5. lidia gfq Q(53,5); Field archetype Q arch(& Q); Field archetype K arch(& K); // Construction des archetypes des corps finis. Fct(Q arch); Fct(K arch); } Pascal Giorgi 13

Archetype LinBox Avantages : Manipulation d un seul type d objet grâce à l interface. Validation de code sans connaître les wrappers. Inconvénients : Temps d exécution plus important. Pascal Giorgi 14

II) Arithmétique des différents corps finis utilisés Pascal Giorgi 15

Arithmétiques des corps finis Z/pZ vs GF(p k ) : Difficultés d implémentation différentes. Représentation des éléments - Entiers machines ou grandes précisions, Flottants. - Générateurs, Polynômes. Opérateurs de bases Niveau éléments : - Modulo sur des entiers machines, modulo paresseux. - Utilisation des flottants, conversion avec entiers. - Lecture table (représentation logarithmique). Niveau BLAS 1 : Conversion (q adic), Test d overflow. Niveau Z/2Z : Mots machine, opérateurs logiques. Pascal Giorgi 16

Stratégies des bibliothèques utilisées 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(p k ), Générateurs, Entiers (machine,longs) ou flottants, Modulo paresseux + Lectures tables. Lidia : - GF(p k ), Polynômes, Opérations sur polynômes. Pascal Giorgi 17

III) Efficacité de ces arithmétiques et surcoût de LinBox. Pascal Giorgi 18

Coût moyen d une opération dans Z/pZ Test sur un produit scalaire de vecteurs (avec un p de 32 bits): 4e 07 NTL --- GIV --- 3e 07 ALP --- NTL Tps en s 2e 07 Givaro 1e 07 ALP 0 20000 40000 60000 80000 100000 Taille des vecteurs Pascal Giorgi 19

L efficacité d une bibliothèque dépend de l architecture processeur: 1.2e 07 GIV_16 --- 4e 07 GIV_16 --- 1e 07 8e 08 GIV_tab16 --- GIV_32 --- 3e 07 GIV_tab16 --- GIV_32 --- Givaro 16 bits Tps en s 6e 08 Tps en s 2e 07 Givaro Log 4e 08 1e 07 Givaro 32 bits 2e 08 0 20000 40000 60000 80000 100000 Taille des vecteurs 0 20000 40000 60000 80000 100000 Taille des vecteurs Intel Sparc Pascal Giorgi 20

Surcoût de LinBox 6e 07 Archetype --- 4e 07 Archetype --- 5e 07 4e 07 --- Without --- 3e 07 --- Without --- Archetype Tps en s 3e 07 Tps en s 2e 07 2e 07 1e 07 Directement 1e 07 0 20000 40000 60000 80000 100000 Taille des vecteurs 0 20000 40000 60000 80000 100000 Taille des vecteurs ALP Givaro Pascal Giorgi 21

Conclusion Généricité des objets LinBox: Taille du code vs Efficacité. Arithmétiques des corps finis non optimisées BLAS 1 (en général). Vision de l arithmétique des corps finis pour BLAS 1,2,3. Étude de nouvelle représentation (courbe elliptique). Pascal Giorgi 22