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.