Commit ab35a83c authored by Emmanuel Thomé's avatar Emmanuel Thomé
Browse files

getting close to a situation where we have everything, it seems

parent 78eb0fdc
......@@ -561,7 +561,8 @@ follows
`64*64/8*32768=16777216` bytes would be enough.)
After having successfully followed the steps above, a file named
`W.sols0-64` will be in `$DATA`. This file represents a kernel vector.
`W.sols0-64` will be in `$DATA` (with a symlink to it called `W`). This
file represents a kernel vector.
## Reproducing the characters step
......@@ -572,7 +573,7 @@ We used the following command on the machine `wurst`:
$CADO_BUILD/linalg/characters -poly rsa240.poly -purged $DATA/purged11.gz -index $DATA/rsa240.index11.gz -heavyblock $DATA/rsa240.matrix11.200.dense.bin -out $DATA/rsa240.kernel -ker $DATA/W -lpb0 36 -lpb1 37 -nchar 50 -t 56
```
This gave after a little more than one hour 21 dependencies
(rsa240.dep.000.gz to rsa240.dep.020.gz).
(`rsa240.dep.000.gz` to `rsa240.dep.020.gz`).
## Reproducing the square root step
......
......@@ -2,6 +2,22 @@
This repository contains information to reproduce the RSA-250 factoring record.
Several chapters are covered.
* [Software prerequisites, and reference hardware configuration](#software-prerequisites-and-reference-hardware-configuration)
* [Searching for a polynomial pair](#searching-for-a-polynomial-pair)
* [Estimating the number of (unique) relations](#estimating-the-number-of-unique-relations)
* [Estimating the cost of sieving](#estimating-the-cost-of-sieving)
* [Cost of 2-sided sieving in the q-range [1e9,4e9]](#cost-of-2-sided-sieving-in-the-q-range-1e94e9)
* [Cost of 1-sided sieving + batch in the q-range [4e9,12e9]](#cost-of-1-sided-sieving-batch-in-the-q-range-4e912e9)
* [Estimating linear algebra time (coarsely)](#estimating-linear-algebra-time-coarsely)
* [Validating the claimed sieving results](#validating-the-claimed-sieving-results)
* [Reproducing the filtering results](#reproducing-the-filtering-results)
* [Estimating linear algebra time more precisely, and choosing parameters](#estimating-linear-algebra-time-more-precisely-and-choosing-parameters)
* [Reproducing the linear algebra results](#reproducing-the-linear-algebra-results)
* [Reproducing the characters step](#reproducing-the-characters-step)
* [Reproducing the square root step](#reproducing-the-square-root-step)
Note that this computation has many similarities with the previous
[RSA-240](../rsa240/README.md) computation.
......@@ -337,9 +353,14 @@ $CADO_BUILD/filter/merge -out $DATA/history5 -t 112 -target_density 250 -mat $DA
```
and took about 3 hours on the machine wurst, with a peak memory of 1500GB.
Finally the replay step can be reproduced as follows:
Finally the replay step can be reproduced as follows. Note that we
created the two data files `$DATA/rsa250.matrix.250.bin` and
`$DATA/rsa250.index.gz` in two separate steps, in order to save memory
(the first command line below, which generates the matrix file, took 15
hours and used 1.4TB of RAM).
```shell
$CADO_BUILD/filter/replay -purged $DATA/purged3.gz -his $DATA/history5 -out $DATA/rsa250.matrix.250.bin
$CADO_BUILD/filter/replay -purged $DATA/purged3.gz -his $DATA/history5 -index $DATA/rsa250.index.gz
```
The matrix that we eventually selected has 404711409 rows, and an average
......@@ -382,7 +403,11 @@ export MPI
./rsa250-linalg-3-krylov.sh sequence=15 start=0
```
And the rest:
Once this is done, data must be collated before being processed by the
later steps. After step `5-acollect` below, a file named
`A0-512.0-1185792` with size 77712064512 bytes will be in `$DATA`. Step
`6-lingen` below runs on 64 nodes, and completes in approximately 3 days.
```shell
export matrix=$DATA/rsa250.matrix.250.bin
export DATA
......@@ -399,31 +424,35 @@ export MPI
./rsa240-linalg-9-finish.sh
```
After having successfully followed the steps above, a file named
`W.sols0-64` will be in `$DATA` (with a symlink to it called `W`). This
file represents a kernel vector.
## Reproducing the characters step
Let **W** be the kernel vector computed by the linear algebra step.
Let `W` be the kernel vector computed by the linear algebra step.
The characters step transforms this kernel vector into dependencies.
We used the following command on the machine `wurst`:
```shell
$CADO_BUILD/linalg/characters -poly rsa250.poly -purged $DATA/purged3.gz -index rsa250.index.gz -heavyblock rsa250.matrix.250.dense.bin -out rsa250.kernel -ker K.sols0-64.0 -lpb0 36 -lpb1 37 -nchar 50 -t 56
$CADO_BUILD/linalg/characters -poly rsa250.poly -purged $DATA/purged3.gz -index $DATA/rsa250.index.gz -heavyblock $DATA/rsa250.matrix.250.dense.bin -out $DATA/rsa250.kernel -ker $DATA/W -lpb0 36 -lpb1 37 -nchar 50 -t 56
```
This gave after about 2 hours 23 dependencies.
## Reproducing the square root step
The following command line can be used to produce the actual dependencies
(rsa250.dep.000.gz to rsa250.dep.022.gz) from the `rsa250.kernel` file:
(`rsa250.dep.000.gz` to `rsa250.dep.022.gz`) from the `rsa250.kernel` file:
```shell
$CADO_BUILD/sqrt/sqrt -poly rsa250.poly -prefix rsa250.dep.gz -purged $DATA/purged3.gz -index rsa250.index.gz -ker rsa250.kernel -t 56 -ab
$CADO_BUILD/sqrt/sqrt -poly rsa250.poly -prefix $DATA/rsa250.dep.gz -purged $DATA/purged3.gz -index $DATA/rsa250.index.gz -ker $DATA/rsa250.kernel -t 56 -ab
```
Then the following command line can be used to compute the square root on the
rational side of dependency `nnn`:
```shell
$CADO_BUILD/sqrt/sqrt -poly rsa250.poly -prefix rsa250.dep -dep nnn -side0
$CADO_BUILD/sqrt/sqrt -poly rsa250.poly -prefix $DATA/rsa250.dep -dep nnn -side0
```
and similarly on the algebraic side:
```shell
$CADO_BUILD/sqrt/sqrt -poly rsa250.poly -prefix rsa250.dep -dep nnn -side1
$CADO_BUILD/sqrt/sqrt -poly rsa250.poly -prefix $DATA/rsa250.dep -dep nnn -side1
```
Then we can simply compute `gcd(x-y,N)` where `x` and `y` are the square
roots on the rational and algebraic sides respectively, and `N` is RSA-250.
......@@ -24,7 +24,7 @@ set -ex
export DISPLAY= # safety precaution
mpi=(
$MPI/bin/mpiexec -n 16
$MPI/bin/mpiexec -n 64
-machinefile $OAR_NODEFILE
--map-by node
--mca plm_rsh_agent oarsh
......@@ -35,7 +35,7 @@ $MPI/bin/mpiexec -n 16
)
args=(
m=1024 n=512 prime=2
mpi=4x4
mpi=8x8
wdir=$DATA
--afile A0-512.0-1185792
--ffile F
......
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