![]() |
![]() |
#34 |
"Dylan"
Mar 2017
2×13×23 Posts |
![]()
I have figured how to allow cksieve to take 1 as an argument for the -n flag without the error described in the previous post. This requires only one change to the CarolKyneaApp.cpp file. Instead of
Code:
status = Parser::Parse(arg, 2, 1000000000, ii_MinN); Code:
status = Parser::Parse(arg, 1, 1000000000, ii_MinN); With this change I ran the following input: Code:
cksieve -P1e9 -n 1 -N50000 -b50 |
![]() |
![]() |
![]() |
#35 |
"Mark"
Apr 2003
Between here and the
2×3,613 Posts |
![]()
That is the fix, but an additional change is needed. For small bases, n=1 with c=-1 yields a negative number, so those need to be excluded.
The next release will have GPU support for afsieve. My fingers are crossed that compiling and linking OpenCL with mingw works. It took me a while to figure out how to get mingw objects to link with the OpenCL library. It now links. The question is, does it run without crashing. Last fiddled with by rogue on 2018-02-24 at 15:25 |
![]() |
![]() |
![]() |
#36 |
"Mark"
Apr 2003
Between here and the
2·3,613 Posts |
![]()
I have released version 1.2 of the framework.
Code:
fkbnsieve is now working. Modify cksieve to detect candidates that are prime and to log them. Fixed an asm bug that at worst causes factors to be missed by fbncsieve and gfndsieve. It will nor result in invalid factors and if it did, they would be caught at runtime due to built-in factor checking that relies on completely different code. Added -A option to apply factors (or reformat candidate file) and exit immdiately without sieving. Added GPU classes. This adds the following command line options: -D - to select the GPU platform -d - to select the GPU device -G - to specify the number of GPU workers -g - to set multiple of workgroupsize which is used to compute the number of primes per GPU worker Added GPU workers to afsieve. There are a some things I need to do. First, I need to implement factor validation for the afsieve GPU worker. Second, the build on OS X is broken because getrusage doesn't have the same capabilities on OS X as it does on Linux. I have not tested the -A option, but if it doesn't work, it should be easy to fix. I need help from Linux developers to determine the correct settings for compiling and linking with OpenCL. Here are some notes on using the GPU:
|
![]() |
![]() |
![]() |
#37 |
"Dylan"
Mar 2017
11268 Posts |
![]()
Thanks for fixing the -n issue and the removal of candidates that result in unity, zero or negative unity in cksieve. However I have run into another bug - when I put this as input:
Code:
cksieve -P150e9 -n 1 -N10000 -b214 -W 4 Code:
Fatal Error: 393216 is not a root (mod 77309411329) Code:
WARNING: 393216 is not a root (mod 77309411329) |
![]() |
![]() |
![]() |
#38 | |
"Mark"
Apr 2003
Between here and the
11100001110102 Posts |
![]() Quote:
|
|
![]() |
![]() |
![]() |
#39 |
Dec 2011
After 1.58M nines:)
110100010102 Posts |
![]()
If you continue sieve from file ( sieve depth for example 50000000) you cannot use switches -p 1000000000000 -P 2000000000000 becauseprogram will still start from 50000000.
So if you have few workers threads you must change header line in a file for right sieve range |
![]() |
![]() |
![]() |
#40 | |
"Mark"
Apr 2003
Between here and the
2×3,613 Posts |
![]() Quote:
Last fiddled with by rogue on 2018-02-26 at 23:03 |
|
![]() |
![]() |
![]() |
#41 |
Aug 2003
Europe
2×97 Posts |
![]()
I have a machine with 2x Intel Xeon E5-2620 v2. Which are 12 cores or 24 threads. When I tried to run cksieve version 1.2, I first received an error about a missing OpenCL.dll library.
After installing the OpenCL Runtime version 16.1.2, it no longer crashes, but it notes it is not able to find a suitable device. Code:
C:>cksieve.exe List of available platforms and devices Platform 0 is a Intel(R) Corporation Intel(R) OpenCL, version OpenCL 1.2 No devices Fatal Error: No devices were found that can run this code |
![]() |
![]() |
![]() |
#42 | |
"Mark"
Apr 2003
Between here and the
2·3,613 Posts |
![]() Quote:
ENABLE_GPU=yes to ENABLE_GPU=no I haven't tested a build with that set to no, but it might solve your problem. In any case that it requires a "device" at runtime is a bug. I have fixed it, but not posted an update. You can d/l the previous build from here. Last fiddled with by rogue on 2018-03-08 at 15:46 |
|
![]() |
![]() |
![]() |
#43 |
Aug 2003
Europe
2×97 Posts |
![]()
Thank you Mark for the 1.1 build .7z. That one works ok.
As example: Code:
C:>cksieve -b 2 -p 2 -P 1000000 -n 100 -N 10000 -o ck_remain.out -O ck_factors.out cksieve v1.2, a program to find factors of (b^n+/-1)^2-2 numbers Sieve started: 2 < p < 1e6 with 19802 terms Sieve completed at p=1000033. Processor time: 0.36 sec. (0.02 sieving) (0.61 cores) 3750 terms written to ck_remain.out Primes tested: 39222. Factors found: 16052. Remaining terms: 3750. Time: 0.59 seconds. |
![]() |
![]() |
![]() |
#44 |
"Mark"
Apr 2003
Between here and the
11100001110102 Posts |
![]()
Once nice feature with mtsieve is that when starting a new sieve you don't need to specify -p. For many you probably don't want to use -P either and you just wait for the removal rate to reach what you need before you start PRP testing. Also many of the programs will generate an output file name if you don't specify one and that file name will often include information that makes it unique based upon the inputs.
And of course you can use scientific notation for most inputs that are numeric. Who wants to type --P1000000000000 when -P1e12 doesn't require you to count zeros? |
![]() |
![]() |