Skip to content

kryzar/thesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Support repository for my PhD thesis

This is the support repository for my PhD thesis. We explain:

Running SageMath

We explain how to run the SageMath version of the thesis.

Run SageMath from the already built Docker Hub image

The docker image associated to the Dockerfile has already been built, and was pushed to the Docker Hub. It can directly be used. First of all, pull the image:

docker pull kryzar/thesis-sagemath

To run it:

docker run --rm --interactive kryzar/thesis-sagemath

Warning

The image is about 10 GB in size.

Run your own Docker image

To build the Docker image associated to the Dockerfile, clone the repository:

git clone https://github.com/kryzar/thesis

then go to the newly created directory (which contains the Dockerfile):

cd thesis

and build the image using docker build (the name leudiere-thesis-sagemath can be freely changed):

docker build -t leudiere-thesis-sagemath .

Note

It is possible to build the image with docker-buildx, an extension of Docker, running docker buildx build -t leudiere-thesis-sagemath .. This may offer better performances. The extension must be installed; on Debian and Ubuntu, use sudo apt install docker-buildx.

Once the image is built, run it with docker run; the following opens a SageMath shell:

docker run --rm --interactive kryzar/thesis-sagemath

Optionally, to push the image to the Docker Hub, run:

docker tag leudiere-thesis-sagemath:latest kryzar/thesis-sagemath:latest
docker login -u kryzar  # Will prompt for a password; use an access token
docker push kryzar/thesis-sagemath:latest

Manually build SageMath on your computer

One can avoid using Docker and manually build SageMath from source. The compilation instructions can be found here and here. We also mention that the SageMath Developer Guide is valuable learning resource.

Important

Be sure to have all the dependencies installed. Their list for each platform (Linux, macOS, Windows) is available here. However, we stress that those prerequisites are heavy and numerous. In order to keep the userspace clean, using Docker could be recommended.

Important

Be sure to use the branch thesis of kryzar/sagemath and not the branch develop of sagemath/sage (default branch to build SageMath).

Roughly, the sequence of commands is the following:

Warning

Run those at your own risk.

git clone -c core.symlinks=true --filter blob:none \
          --origin origin --branch thesis --tags   \
          https://github.com/kryzar/sage.git sage
cd sage
make configure
./configure
make build -j64  # Parallelize on 64 processors

Once this has finished, run:

./sage

Tip

As per the installation guide, we highly recommend parallelizing the build process. This can be achieved by running make build -jN (where N is the number of processors); for example, make build -j64 builds on 64 parallel processors, while make build -j8 builds on 8 parallels processors.

Note

The command make build does not compile the whole SageMath suite, but only the main executable. For instance, the documentation is not built. This saves significant time, as well as space.

Running benchmarks

We give the code for two classes of benchmarks:

  • The benchmarks of Chapters 4 and 5. The code is available in benchmarks/chapters-4-5. To reproduce our tests, run the module benchmarks.sage with an appropriate version of SageMath. The results as well as the console logs are written to various files; the global variable WORKDIR (line 17) should therefore be set to an appropriate value. We have fixed the random seed so that the exact same random isogenies and endomorphisms are used.
  • The benchmarks of Chapter 6. The code is available in benchmarks/chapter-6. These were originally written by Xavier Caruso (@xcaruso) for the Software Presentation Drinfeld Modules in SageMath (ACM Communications in Computer Algebra, Volume 57, Issue 2, 2023).