Développementlogicielpourlecalculexacthauteperformance
Transcription
Développementlogicielpourlecalculexacthauteperformance
Développement logiciel pour le calcul exact haute performance Brice B OYER, Jean-Guillaume D UMAS, Laurent F OUSSE Équipe CASYS, Laboratoire Jean Kuntzmann Application : PIR et Private Searching LinBox Private Information Retrieval and Private Searching. L IN B OX , a C++ template library for exact linear algebra [6, 3, 13, 11, 9, 12] Les protocoles de retrait privé d’information (Private Information Retrieval) permettent de récupérer des éléments d’une base de données sans révéler à la base de quels éléments il s’agit. La problématique voisine du filtre à mots-clefs secrets (Private Searching) permet de demander à un serveur d’extraire d’une base de documents ceux qui correspondent à un ensemble de critères eux aussi gardés secrets. PSRec est une bibliothèque C++ pour le private searching capable d’utiliser le protocole PIR de son choix grâce au mécanisme des templates. En particulier le protocole PIR développé par Carlos Aguilar Melchor et Philippe Gaborit utilise des réseaux euclidiens et permet d’obtenir de grandes performances à l’aide d’opérations très simples d’algèbre linéaire sur des corps finis. Il sera en outre possible d’utiliser de la récursion, et donc d’augmenter la taille du dictionnaire de mots-clefs possibles, grâce à ses bonnes propriétés d’homomorphie. L IN B OX est une bibliothèque internationale (U. Grenoble, ENS Lyon, U. Montpellier, North Carolina State U., U. of Delaware, U. Waterloo, U. Calgary), structurée en quatre niveaux d’abstraction. Solutions Algorithms Adaptive BlackBox Matrices Input Les template C++ permettent d’instancier potentiellement chaque élément d’un niveau avec tous les autres : les domaines des coefficients sont les entiers en précision arbitraire (GMP), les rationnels, des corps ou des anneaux finis (Givaro), des polynômes ; les matrices peuvent être denses, creuses, structurées, boîtes noires ; une centaine d’algorithmes génériques ou spécifiques a été développée. Un répertoire solutions contient en outre des algorithmes de plus haut niveau qui s’adaptent automatiquement aux Plug−in Coefficient Domains données et aux ressources disponibles pour fournir les solutions les plus performantes aux problèmes suivants : déterminant ; rang ; résolution de systèmes ; formes échelons ; formes normales de Frobenius et de Smith ; polynômes minimaux et caractéristiques . . . La bibliothèque comporte des interfaces pour Maple, MuPad, Gap et la majorité de l’algèbre linéaire de SAGE utilise L IN B OX. F IGURE 1 – Retrait privé avec récursion (base de taille 9 vue comme 3 × 3): la requête sélectionne d’abord la ligne, puis la bonne colonne dans cette ligne, à chaque fois par un produit de matrices effectué en aveugle par le serveur. F IGURE 2 – Matrice creuse et ses Laplaciens pour le calcul de groupes d’Homologie de complexes simpliciaux n 50 250 500 PaloAlto Bibliothèque d’arithmétique pour la cryptologie L’accent est mis sur la précision fixée (par opposition à la précision arbitraire de GMP par exemple) afin de fournir des performances optimales aussi bien sur PC que sur architecture dédiée (FPGA) ou multi-cœurs et GPU. 128 123.36 56.68 32.26 256 41.94 20.97 15.20 512 9.36 8.59 8.59 1024 1.80 2.54 1.86 2048 0.11 0.79 0.52 TABLE 3 – Vitesses de la multiplication d’entiers (en million d’op./s) de PaloAlto, GMP et openSSL, icc v11, Xeon 3.2GHz http://linalg.org FFLAS-FFPACK Routines d’algèbre linéaire dense pour les corps finis [8, 10, 2, 4, 5] https://www.ljkforge.imag.fr/projects/paloalto Givaro Bibliothèque C++ pour l’arithmétique exacte[7]. Givaro implémente l’arithmétique de nombreuses entités mathématiques : corps et anneaux finis, polynômes, entiers et rationnels à précision arbitraire (GMP). La bibliothèque propose également des structures de données et des classes génériques pour la manipulation d’objets algébriques comme des vecteurs, des matrices (denses, creuses), des polynômes univariés (et donc récursivement multi-variés) ainsi que des algorithmes de théorie des nombres. Classe Zpz<Std16> Zpz<Std32> Zpz<Std64> Zpz<Integer> Zpz<Log16> Montgomery<Std32> GFq<mot> GFqPack<mot> Extension< Field > 100 300 800 3000 5000 7500 10000 0.010s 0.83s 15.64s 802.0s 3793s MT MT 0.006s 0.105s 1.387s 61.09s 273.4s 991.4s 2080s TABLE 2 – Polynôme caractéristique modulo 547909 sur Athlon 1.8GHz Arithmétique Limite entiers modulo sur 16 bits m < 28 − 1 = 255 entiers modulo sur 32 bits m < 215.5 − 1 = 46339 entiers modulo sur 64 bits m < 231.5 − 1 = 3037000499 entiers modulo en précision arbitraire log(m) < RAM entiers modulo, opérations tabulées m < 215 − 1 = 32767 entiers modulo, op. de Montgomery m < 40504 corps finis en logarithmes de Zech 3q < RAM petits corps finis compressés q < 1274641 (arch. 64 bits) corps finis représentation polynomiale log(q) < RAM TABLE 4 – Quelques corps et anneaux finis de Givaro (les paramètres template sont en italique) Ces routines fournissent les mêmes outils que les BLAS (Basic Linear Algebra Subroutines) et LAPACK (Linear Algebra PACKage) mais sur des corps finis génériques. Les principales caractéristiques de FFLAS-FFPACK sont : – Utilisation des routines numériques en plug-in comme noyau de calcul mais de manière exacte. – Accélérations des algorithmes rapides, de type Strassen car aucun problème d’instabilité sur un corps fini. – Masquage du surcoût des corps finis (O(n2 ) modulo vs O(nω ) calculs). – Compression de plusieurs éléments par mot machine pour les petits corps finis. – Adaptation automatique des différents ordonnancements et algorithmes rapides aux ressources et aux données. 9000 8000 25 7000 6000 20 GIGA finite field operations per second 64 310.67 72.31 34.24 n magma-2.11 LinBox 1.1.6 TABLE 1 – Forme normale d’Hermite dans Z, entrées sur 32 bits, sorties de 400 à 5000 bits, sur un Xeon 2.66 GHz Mega finite field operations per second Taille (bits) PaloAlto-0.1α GMP-4.3.1 openSSL-0.9.8 ntl pari gap LinBox 0.31s 0.26s 0.19s 0.24s 494.46s 776.91s 165.49s 7.3s 12199s 15263s 3982s 47s 5000 4000 3000 2000 1000 15 10 5 0 0 1000 2000 long-noblock long-block-40 3000 4000 Matrix order GOTO::dgemm FFLAS::classic 5000 6000 7000 FFLAS::fgemm over Z/65521Z FFLAS::fgemm over GF(32) 8000 Right Compressed double fgemm mod 3 float fgemm mod 3 double fgemm mod 11 dgemm 0 0 2000 4000 6000 8000 10000 Matrix order F IGURE 3 – Vitesse de la multiplication de matrices et Accélération par la compression d’éléments sur un XEON, 3.6 GHz http://ljk.imag.fr/CASYS/LOGICIELS/givaro http://ljk.imag.fr/CASYS/LOGICIELS/FFLAS SpMV sur nouvelles architectures Finite Field Sparse Matrix-Vector multiplication on multi-X architectures. Cette librairie implémente l’opération y ← αAx + βy sur un corps premier. La matrice A est creuse et x un (ou un bloc de) vecteur(s). On tire parti de la présence ou non d’une carte graphique supportant la technologie Cuda de Nvidia ainsi que des architectures multicœurs. Différentes représentations de matrice creuse, classique ou non, sont fournies pour s’adapter aux situations. matrice 6 (Dim ; #non zéro) ×10 Linbox 1core 8 core GTX m133.b3 (0.2M ; 0.8M) 0.2 0.3 1.5 6.6 GL7d15 (0.4M ; 6M) 0.3 0.4 1.6 8.3 F IGURE 4 – GFlops sur l’opération y ← A20 x mod 31 sur Intel 8core 3.2GHz avec Nvidia GTX 280 Dans le futur seront implémentés les petits corps finis et dès que Cuda le permettra, une représentation hybride (multi)GPU+multi CPU. https://ljkforge.imag.fr/projects/ffspmvgpu/ Galet Références Multiplication schedule generator [1] Galet est un logiciel de recherche exhaustive d’ordonnancements, en particulier des algorithmes de multiplication rapide de matrices. Il utilise un jeu de galets se déplaçant sur un graphe de dépendance et modélisant les espaces mémoire disponibles. Il aide notamment à découvrir (ou prouver l’optimalité) de nouveaux ordonnancements moins gourmands en mémoire. A11 P5 B11 T2 A12 [1] B. Boyer, J. G. Dumas, C. Pernet et W. Zhou: Memory efficient scheduling of StrassenWinograd’s matrix multiplication algorithm . Dans E. Kaltofen (réd.) : Proceedings of the 2009 ACM International Symposium on Symbolic and Algebraic Computation, Seoul, Korea , p. 135– 143. ACM Press, New York, July 2009. P3 B12 T3 A21 S1 [2] J. G. Dumas: Q-adic Transform revisited . Dans D. Jeffrey (réd.) : Proceedings of the 2008 ACM International Symposium on Symbolic and Algebraic Computation, Hagenberg, Austria , p. 63–69. ACM Press, New York, July 2008. P4 [3] J. G. Dumas et D. Duval: Towards a diagrammatic modeling of the LinBox C++ linear algebra library . Dans R. Rousseau, C. Urtado et S. Vauttier (réds.) : LMO’2006, Nîmes, France , p. 117–132. Hermes science, March 2006. B21 A22 S4 [4] J. G. Dumas, L. Fousse et B. Salvy: Compressed Modular Matrix Multiplication . Dans Milestones in Computer Algebra 2008, Tobago , p. 1–8, May 2008. B22 P1 S3 U4 P2 S2 [5] J. G. Dumas, L. Fousse et B. Salvy: Simultaneous Modular Reduction and Kronecker Substitution for Small Finite Fields . rap. tech., 2008. LJK-hal-00315772, arXiv cs.SC/0809.0063. C12 [6] J. G. Dumas, T. Gautier, M. Giesbrecht, P. Giorgi, B. Hovinen, E. Kaltofen, B. D. Saunders, W. J. Turner et G. Villard: LinBox : A Generic Library for Exact Linear Algebra . Dans A. M. Cohen, X. S. Gao et N. Takayama (réds.) : Proceedings of the 2002 International Congress of Mathematical Software, Beijing, China , p. 40–50. World Scientific Pub., August 2002. C21 P7 T1 C11 T4 P6 U2 U3 C22 F IGURE 5 – Multiplication rapide de matrices en place Dims. (m, k, n) (4096,4096,4096) (4096,8192,4096) (8192,8192,8192) (8192,16384,8192) Classique 14.03 28.29 113.07 231.86 Huss-Lederman et al. 11.93 23.39 85.97 MT IPMM 13.59 27.16 98.75 197.24 IP0vMM 11.98 23.88 85.02 170.72 TABLE 5 – Multiplication de matrices rectangulaires avec différents ordonnancements (en secondes) sur un core2 duo, 3.00GHz, 2×2Gb RAM http://ljk.imag.fr/CASYS/LOGICIELS/Galet [7] J. G. Dumas, T. Gautier, P. Giorgi, C. Pernet, J. L. Roch et G. Villard: Givaro 3.3.0 : C++ library for arithmetic and algebraic computations , 2009. ljk.imag.fr/CASYS/LOGICIELS/givaro. [8] J. G. Dumas, T. Gautier et C. Pernet: Finite Field Linear Algebra Subroutines . Dans T. Mora (réd.) : Proceedings of the 2002 ACM International Symposium on Symbolic and Algebraic Computation, Lille, France , p. 63–74. ACM Press, New York, July 2002. [9] J. G. Dumas, P. Giorgi, P. Elbaz-Vincent et A. Urbańska: Parallel Computation of the Rank of Large Sparse Matrices from Algebraic K-theory . Dans S. Watt (réd.) : PASCO 2007 , p. 43–52. Waterloo University, Ontario, Canada, July 2007. [10] J. G. Dumas, P. Giorgi et C. Pernet: FFPACK : Finite Field Linear Algebra Package . Dans J. Gutierrez (réd.) : Proceedings of the 2004 ACM International Symposium on Symbolic and Algebraic Computation, Santander, Spain , p. 119–126. ACM Press, New York, July 2004. [11] J. G. Dumas, C. Pernet et J. L. Roch: Adaptive Triangular System Solving . Dans Challenges in Symbolic Computation Software , p. 1 – 18. Dagstuhl Seminar proceedings 06271, October 2006. [12] J. G. Dumas, C. Pernet et B. D. Saunders: On finding multiplicities of characteristic polynomial factors of black-box matrices . Dans E. Kaltofen (réd.) : Proceedings of the 2009 ACM International Symposium on Symbolic and Algebraic Computation, Seoul, Korea , p. 55–62. ACM Press, New York, July 2009. [13] J. G. Dumas et A. Urbańska: An introspective algorithm for the determinant . Dans J. G. Dumas (réd.) : Proceedings of Transgressive Computing 2006, Granada, España , p. 185–202. Universidad de Granada, Spain, April 2006.