/Curling-sequences

On curling sequences, trying to find a sequence with infinite tail length. Let's crunch some sequences!

Primary LanguageC++

Curling-sequences

On curling sequences, trying to find a sequence with infinite tail length. Let's crunch some sequences!

Largest generator length achieved: n = 345.

Record values:

n Ω(n) n Ω(n) n Ω(n)
2 2 48 131 133 342
4 4 68 132 149 343
6 8 73 133 154 356
8 58 77 173 176 406
9 59 85 179 197 1668
10 60 115 215 199 1669
11 112 116 228 200 1670
14 118 118 229 208 1708
19 119 128 332 217 1836
22 120 132 340 290 3382

File instructions:
The default file is Sequences-negative.cpp. This can be run either on Windows (Visual Studio recommended) or Linux (using GCC). Its implementation, however, is limited to one CPU only. For extensive calculations, there is MPI_Sequences.cpp. This file has identical algorithms, but uses the MPI standard in order to enable the use of an HPC or Beowolf cluster. Below, you can find the flags that currently show the best performance on the GCC compiler. Note that MPICXX is just a wrapper of GCC that enables the use of the MPI standard. These flags make use of Profile-Guided Optimization. This requires two compiles: the first compile can use a shorter length (e.g. 200, depending on the cluster), while the second compile should be kept as identical as possible, but maybe a larger length or higher limit.

GCC compile instructions for Sequences-negative.cpp:
First compile: g++ -Ofast -march=native -fprofile-generate -pthread Sequences-negative.cpp -o final.out
Second compile: g++ -Ofast -march=native -fprofile-use -fprofile-correction -flto -pthread Sequences-negative.cpp -o final.out

MPI(CH) compile instructions for MPI_Sequences.cpp:
First compile: mpicxx -Ofast -march=native -fprofile-generate MPI_Sequences.cpp -o final.out
Second compile: mpicxx -Ofast -march=native -fprofile-use -fprofile-correction -flto MPI_Sequences.cpp -o final.out

Contributors: Steven Boonstoppel, Vladimir Feinstein, Levi van de Pol