Commit d9fb902d authored by Charles Bouillaguet's avatar Charles Bouillaguet
Browse files

block-lanczos

parent d77d494e
......@@ -6,7 +6,7 @@ CFLAGS += -fopenmp
LDFLAGS += -fopenmp
LDLIBS += -lm
all: parser_demo parser_demo_alt moebius_demo monica monica_vector macaulay_gen
all: parser_demo parser_demo_alt moebius_demo monica monica_vector macaulay_gen lanczos
monica: parser.o monica.o
monica_vector: parser.o monica_vector.o
......@@ -30,4 +30,4 @@ macaulay_gen.o: CFLAGS += `pkg-config --cflags m4ri`
clean:
rm -f *.o
rm -f parser_demo moebius_demo parser_demo_alt monica monica_vector macaulay_gen
rm -f parser_demo moebius_demo parser_demo_alt monica monica_vector macaulay_gen lanczos
n | m | D | v | matrix size | matrix nnz |
---+-----+---+----+-------------+------------+
64 | 64 | 3 | 12 | 4 K | 356 K |
50 | 64 | 3 | 13 | 4 K | 356 K |
64 | 64 | 4 | 13 | 120 K | 22 M |
54 | 64 | 4 | 14 | 90 K | 17 M |
54 | 64 | 5 | 15 | 1.5M | 422 M | 1.6Go, 23 min de BWc sur un noeud de dahu (n=128, m=256), 24min42 (n=256, m=512)
64 | 64 | 3 | 12 | 4 K | 356 K | BW=0. 350K it/s --> 14.3 kh énumération
50 | 64 | 3 | 13 | 4 K | 356 K | BW=0. 300K it/s --> 8.0 kh
64 | 64 | 4 | 13 | 120 K | 22 M | BL=2min.
54 | 64 | 4 | 14 | 90 K | 17 M | BL=16h. 260K it/s --> 4.6 kh <-----------------------------------
41 | 64 | 4 | 15 | 50 K | 9 M | BL=booom --> 2.6 hk (NON)
54 | 64 | 5 | 15 | 1.5M | 422 M | 1.6Go, 23 min de BWc sur un noeud de dahu (n=128, m=256). 12kh de BWc
43 | 64 | 5 | 16 | 670 K | 180 M |
---+-----+---+----+-------------+------------+
72 | 72 | 3 | 13 |
| | 4 | 14 |
52+| 72 | 4 | 15 | 100 K | 21 M | 1.5kh de BL + 0.16Mh 2**18 tâches de 20s BL + 2400s enum
54 | 72 | 4 | 15 | 100 K | 21 M | 4kh de BL + 0.66Mh <---------------------------
72 | 72 | 5 | 15 | 4 M | 1.4G | 128h de BWc
55 | 72 | 5 | 16 | 1.7M | 550 M | 2Mh de BWc
---+-----+---+----+-------------+------------+
80 | 80 | 3 | 14 | 6 K | 780 K |
75 | 80 | 4 | 15 | 220 K | 52 M |
71 | 80 | 5 | 16 | 4.3M | 1.6G | ---> 4h de bwc sur un noeud de grvingt
---+-----+---+----+-------------+------------+
80 | 160 | 3 | 20 | 13 K | 3 M |
80 | 160 | 4 | 21 | 493 K | 213 M |
79 | 160 | 4 | 22 | 480 K | 223 M | --> 2x 5min de bwc
66 | 160 | 4 | 23 | 330 K | 150 M | --> 2^14 * 160s == 730h de BW
73 | 160 | 5 | 24 | 8.5M | 6 G | --> 16h de bwc ?
64 | 160 | 5 | 25 | 5.3M | 3.5G | --> 8h de bwc ?
74 | 148 | 4 | 21 | 380 K | 163 M | --> 90kh énumération
65 | 148 | 4 | 22 | 300 K | 125 M | --> BL negl 45kh enum
71 | 148 | 5 | 23 | 300 K | 125 M | --> BW negl 26kh enum <-----------
62 | 148 | 5 | 24 | 4.5M | 2.7G | --> 1Mh de BWC
---+-----+---+----+-------------+------------+
80 | 160 | 3 | 20 | 13 K | 3 M | --> 9.7Mh enumeration
80 | 160 | 4 | 21 | 493 K | 213 M | --> 5.5Mh
79 | 160 | 4 | 22 | 480 K | 223 M | --> 2x 5min de bwc + 3Mh énumeration
66 | 160 | 4 | 23 | 330 K | 150 M | --> 2^14 * 30min == 8Kh BL + 1.7Mh énumération
73 | 160 | 5 | 24 | 8.5M | 6 G | --> 2^7 * 16h de bwc, give or take == 65 kh de BW + 0.9Mh enumeration <-------------------
64 | 160 | 5 | 25 | 5.3M | 3.5G | --> NON
64 --> 1024 jobs de BWc + enumeration de 39 variables. Viable ?
Type I et IV dans https://www.mqchallenge.org/
Cible : n = 80 et m = 160 (type I)
m = 72 et n = 108 (type IV)
Architecture logicielle :
-----------------------
- comme CADO-NFS
- un script driver en python, des exécutables en C
- des jeux de paramètres en yaml, éditables par l'utilisateur
- mode standalone ou bien client-serveur
- prep (seulement pour les systèmes sous-définis):
- doit être capable de gérer un nombre arbitraire de variables en entrée
- effectue le changement de variable spécial, l'écrit dans un fichier
(ou dans LE fichier sous forme de commentaire spéciaux)
- randomizer (seulement pour les systèmes sous-définis):
- fixe un nombre défini de variables **aléatoirement**
- détecte l'apparition de polynômes linéaires
- effectue la substitution le cas échéant, garde une trace des polynômes linéaires
- hybrider:
- fonctionne avec <= 128 variables
- effectue l'hybridation sur k variables
- écrit les 2**k sous-systèmes dans des fichiers (ou juste un sous-ensemble)
- macaulay_gen:
- on ne le présente plus !
- lanczos:
- on ne le préente plus non plus
- re-hybrider (facultatif):
- un peu comme outer, casse les grosses tâches d'énumérations en trucs plus petits
- prévoir une durée environ 1h ?
- enumeration
- le script driver corrige la solution (chgmt de variables) et la renvoie
(*) sur un dahu
m = n = 64 ---> 3min 30s
n = 64, m=128 --> 2min 57s
n = 64, m=256 --> 3min 07s
n = 128, m=256 --> 2min 40s
n = 256, m=256 --> 2min 49s
n = 256, m=512 --> 2min 59s
Sous-déterminés
---------------
"Phase Transition of Multivariate Polynomial Systems", de Giordano Fusco & Eric Bach
avec m=n, proba de trouver une solution = 1 - exp(-1) = 63%
avec m=n+1, proba de trouver une solution = 1 - 1 - exp(-2**(-1)) = 39.3%
avec m=n+2, proba de trouver une solution = 1 - 1 - exp(-2**(-2)) = 22.1%
avec m=n+3, proba de trouver une solution = 1 - 1 - exp(-2**(-3)) = 11.8%
empty columns = multiples de :
- x59*x60*x61
- x59*x60*x62
- x59*x61*x62
- x60*x61*x62
- x59*x60*x63
- x59*x61*x63
- x60*x61*x63
- x59*x62*x63
- x60*x62*x63
- x61*x62*x63
Donc se ramener à m variables --> 1.58x itérations
Donc se ramener à m-1 variables --> 2.54x itérations, qui sont 2x plus rapide --> 1.27 itérations equiv.
Donc se ramener à m-2 variables --> 4.52x itérations, qui sont 4x plus rapide --> 1.13 itérations equiv.
Donc se ramener à m-3 variables --> 8.51x itérations, qui sont 8x plus rapide --> 1.06 itérations equiv.
par les variables "spéciales" (300 à chaque fois)
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment