[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?

Hi,

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"):


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

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

filter:
    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).

other:
    "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.

E.


More information about the Cado-nfs-discuss mailing list