[Cado-nfs-discuss] OpenMP Usage

Emmanuel Thomé Emmanuel.Thome at inria.fr
Wed Nov 14 08:54:01 CET 2018

On Tue, Nov 13, 2018 at 09:22:07PM -0500, Robert Pancoast wrote:
> Greetings,
> I have an interest in further exploring cado-nfs usage, but it has been quite some time since I have looked into the sources. In the current codebase, does there exist openMP usage? What are the major stages of a factorization, and which (if any) utilization openMP?


cado-nfs does use openmp. More broadly, cado-nfs has been using threads
from day one. This being said, cado-nfs comprises many subprograms, and
their use of threads varies. Here's a quick recap off the top of my head
(with some help from "git grep"):

    main program uses posix threads.
    root optimization uses openmp.
    DL polyselect uses openmp.

    "makefb" uses posix threads.
    "las" uses posix threads and C++11 threads.
    "batch cofactorization" uses openmp.

    heavylifting of relation i/o uses posix threads (with minimalist
    locking) (this is pervasive in almost all of the filter code).
    some spots in "merge" and "replay" use openmp.

linear algebra:
    most of the code uses posix threads, as well as MPI.
    linear generator computation uses openmp and MPI (subject to evolve soon).

    "characters" and "sqrt" use posix threads.
    "crtalgsqrt" uses posix threads and MPI.

Whether some code is written to use posix threads or openmp or c++11
threads or whatnot depends on multiple factors. Some things are best done
in one model rather than another. Some of the authors have a preference
towards one model rather than another, too.


More information about the Cado-nfs-discuss mailing list