[Cado-nfs-discuss] OpenMP Usage

Emmanuel Thomé Emmanuel.Thome at inria.fr
Thu Nov 15 14:21:42 CET 2018


No.

(long answer: absolutely no interest in exploring GPUs for sieving.
Return over investment is not even provably positive).

E.

On Thu, Nov 15, 2018 at 05:43:48AM -0500, Robert Pancoast wrote:
> Hello Emmanuel,
> 
> Thanks for the information. I am specifically curious about OpenMP because the latest release supports offload to Nvidia GPU. What are your thoughts on accelerating the Cado-nfs system with GPU?
> 
> Thanks,
> Robert
> 
> > On Nov 15, 2018, at 2:35 AM, Emmanuel Thomé <Emmanuel.Thome at inria.fr> wrote:
> > 
> >> On Wed, Nov 14, 2018 at 07:06:23PM -0500, Robert Pancoast wrote:
> >> Hello Emmanuel,
> >> 
> >> I appreciate the insight.  Is it possible to convert the subprograms
> >> that use C++11 threads.and posix threads to use OpenMP?
> > 
> > Probably not, and we won't do that anyway. These are three different
> > interfaces to mostly the same bare bones, and it's pointless to express a
> > strong preference or dislike for one versus the others. All have pros and
> > cons. The idea of convenience or habits for the person programming the
> > software comes first.
> > 
> >> Additionally,
> >> which subprograms compose the majority of execution time throughout
> >> factorization?
> > 
> > sieving (aka "las" in cado-nfs).
> > 
> > E.
> > 
> >> 
> >> Thanks,
> >> Robert
> >>> On Wed, Nov 14, 2018 at 2:54 AM Emmanuel Thomé <Emmanuel.Thome at inria.fr> wrote:
> >>> 
> >>>> 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