Generalized Fermat Number Prime Search
(GPU Sieving)

This is the instructional page for GPU sieving in the GFN Prime Search.

We are using axn's GFNSvCUDA sieve program.  It can be downloaded here.  Please note you need an nVidia GPU card under Windows (32 or 64-bit) to run this program.  At this time we do not have an AMD version, nor a program version that runs on Linux or Mac.

This is a dat-less sieving program – no sieve file is required or produced.

Quick Start Instructions:

  1. First, go to the reservation thread and post a reply reserving a base and range, choosing from what's Available.  Choose a range starting at the beginning of what's available, so there are no unsieved gaps.  For this example, we will use N = 4194304, 4000P-4050P and pretend we're user Lennart:

    N=4194304, 4000P-4050P Lennart

    It doesn't matter whether (in this case) you say N=4194304 or n=22, we'll understand either. Once we add your range to the main reservation post, we'll delete your post.

  2. Open up a command line and switch to the directory where you unpacked GFNSvCUDA.  In this case the command line is:

    GFNSvCUDA-0_5_1-win32 22  4000  4050

    A factor file called f22_4000P_4050P.txt will be created, along with a checkpoint file c22_4000P_4050P.txt  The checkpoint file automatically records how far you've gotten, in case you need to interrupt and restart the program.  GFNSvCUDA then uses the checkpoint file to restart where you left off.

  3. Once the program is finished, upload your factor file(s) here:, choosing the proper subdirectory.  We need only factor files, not checkpoint files.  It's easy to upload the checkpoint file by mistake as alphabetically it comes before the checkpoint file. The factor file begins with an f.  After uploading all files in your reserved range, return to the reservation thread and post your range as complete:

    N=4194304, 4000P-4100P Lennart COMPLETE

    If you have multiple factor files or you just want to reduce the upload size, feel free to archive the factor file(s) before uploading.  i.e.

Full usage instructions:

GFNSvCUDA is a Windows 32-bit executable that requires an nVidia GPU with compute 1.1 capability or above.  It works much faster on compute 2.0 cards.

GFNSvCUDA <n> <startp> <endp> [B<n>] [D<n>]

n is the exponent for b^(2^n)+1.  It has a minimum value of 18 and a maximum of 24. Currently we're sieving three different n's:

startp and endp specify the p range to be sieved.  The numbers are already assumed to be in P (10^15) so you just specify numbers, leaving off the P suffix.  The valid p range is between 1 and 604462909.

B is block size (optional).  This settings controls the size of the block of work sent to GPU.  Possible values are B5 through B13 with a default of B7.  Lower values should reduce screen lag but run more slowly.  Higher values run faster but also increase screen lag.  Experiment to see what you can live with.  You can always stop the program (ctrl-break) and restart with a different B value - GFNSvCUDA will resume from where it left off.  Please note that B and b are both acceptable.

D is the optional device number for those with more than one GPU.  Defaults to D0 (i.e. Primary device).  You would use D1 to run on your second GPU.  Please note that D and d are both acceptable.

Multiple instances of GFNSvCUDA can be run from the same directory.  Each will use its own checkpoint and factor file.  Checkpoint files are written once per minute and upon shutdown.  If you restart a completed sieve, the program will read the checkpoint file and exit immediately with a message saying "This range is already done".

For anyone comparing David Underbakke's AthGfn64 with this program, you might be wondering about the absence of b min and b max values.  In order to make the interface simpler and avoid mistakes, they're hardcoded at 2 and 100M, respectively.

Tricks and Tips

GFNSvCUDA uses less than 100% of a GPU.  Two GFNsvCUDA jobs on the same GPU are usually more productive than one.  For example, if you were sieving the "Lennart" example above but wanted split it into two jobs, you would use the following two command lines, each in its own command window:

GFNSvCUDA-0_5_1-win32  22  4000  4025
GFNSvCUDA-0_5_1-win32  22  4025  4050

If you had two GPU cards and wanted to use both at the same time, the command lines would look like this (again, each in its own command window):

GFNSvCUDA-0_5_1-win32  22  4000  4025  D0
GFNSvCUDA-0_5_1-win32  22  4025  4050  D1

Some people prefer to reserve large ranges but split the sieving into smaller pieces.  In that case, it's up to you whether you want to upload each factor file as it completes or wait and upload them all at once.  If you decide to upload all at once, you can either upload the separate files put them all into a single archive file like .7z, .zip or .rar.  You should not report anything as complete until the entire range you reserved has been finished and uploaded, though.

Receiving Credit

Manual BOINC credits are earned as shown here.  They are awarded in batches and then doled out based off your current RAC.

Once you report a range as Complete, we download it and run a few tests to make sure it was run properly.  Every factor in the file is tested to make sure it's accurate and any duplicates are removed. When that's done your range is marked as completed in the main reservation post.  Approximately once a week completed ranges are processed and BOINC PSA credit is calculated for each range.  The color of those entries is changed to cyan to indicate that credit has been granted. Within a day or two those entries are then moved from the main reservation post to the Archive post.  The credit is then distributed depending on your current RAC.  The higher your RAC, the more credit is granted per day. This is done so your daily credit more reflects the type of work you're doing.  One day spikes do not represent that.

Daily distributions will continue to rise each day as they drive up your RAC until all of your credit is distributed.  If you are continuously doing manual work, your distributions will most likely finish before the next week's processing.

This completes the instructions.  The answers to most questions can be found in the discussion thread.  You can ask questions there or in the chat.  Alternative you can PM JimB or Honza with inquiries.  Thank you for participating in the GFN sieve!