![]() |
- I've finished a newer version, see payam2.c at [URL="https://sites.google.com/site/robertgerbicz/payam"]https://sites.google.com/site/robertgerbicz/payam[/URL]. (the old code is still available).
- Now you can use E=28,36. There is a nice speedup due to a new sieve and some improved parts of the code. - I've also included the small changes from Thomas, (in some places modified them), but feel free to modify it further if you want. - It takes a little longer time for the code to do all initializations. - It should be faster for every E, the speedup is larger for larger E value. In some cases I can imagine that it is in fact slower for some small E values, say for E=52,58, depending on you computer. - There are more subiterations, this means 217728 subiterations. - But one iteration covers (very close to) the same number of K values, so it is safe to restart your computations with your current iteration, and I=0. (the subiterations are different) I've no 64 bits windows, so I can't provide an exe. |
[QUOTE=R. Gerbicz;292999]- I've finished a newer version, see payam2.c at [URL="https://sites.google.com/site/robertgerbicz/payam"]https://sites.google.com/site/robertgerbicz/payam[/URL]. (the old code is still available).
... I've no 64 bits windows, so I can't provide an exe.[/QUOTE] Welcome back, Robert! And many thanks for the new improved version. It seems to work very well on my Linux machine. However, I've run into lots of errors and warning when trying to compile it on Windows. I'm using Visual C++ 2008/2010 and the MPIR library (version 2.5.0) for GMP. I'm trying to get the code working by myself, but perhaps you could help at least with the following: line 96: mpz_random(K,1); This no longer works for newer version of GMP/MPIR, since this function is obsolete. The manual tells that one should mpz_urandomb or mpz_urandomm instead. But those functions are slightly different, and since I do not fully understand the purpose of your usage of mpz_random there (e.g. random K up to which size?), it's difficult to set a proper replacement. There seems also to a problem with the use of assert in Visual C++, but perhaps I find the solution by myself... |
[QUOTE=R. Gerbicz;292999]
I've no 64 bits windows, so I can't provide an exe.[/QUOTE] Welcome back, Robert G! Can you do a 32 bit for windows, I don't use 64. Afghanistan is behind the times! |
By a little rearrangement of the code (moving variable declarations to the beginning of each function) and some replacement for the random function I was able to get the code compiled on a Windows machine.
However, it is crashing right after the initialization phase for both, 32 bits and 64 bits. Most probably a memory problem (there are still many warnings regarding improper type conversations). From the Linux side I can report a speed-up by an impressive factor of 8 for E=36 (compared to my variant). |
1 Attachment(s)
Finally I managed to get working Windows binaries. Please find them attached.
The (slightly modified) source code is also included. So far I haven't noticed any deviations from the results of the unmodified version on my Linux machine. Robert G., please have a look at my modifications, especially the call to the random routine. I've added some explicit type casts and/or changed some data types to reduce most of the compiler warnings on that (mainly regarding the newly introduced "unsigned long long ints"). Please check whether the former implicit type casting was by intention... Edit: There might be a problem for the 32 bit binary with the screen output (zero timings). |
[QUOTE=Thomas11;293011]
Robert G., please have a look at my modifications, especially the call to the random routine. I've added some explicit type casts and/or changed some data types to reduce most of the compiler warnings on that (mainly regarding the newly introduced "unsigned long long ints"). Please check whether the former implicit type casting was by intention...[/QUOTE] Random function is now good. The only problem is with: "hi=(int)n;" (line number=215) here you should use: hi=(unsigned int)n; |
I had a speed up of 70 % however the number of subiterations doubled.
|
1 Attachment(s)
The screen output problem should be fixed now.
Also added the change into hi=(unsigned int)n; Please find the (now hopefully working) binaries attached. BTW.: The following were already found by payam2: [CODE]S 930600822907 36 100/9682 100/10000 K=40695281004817744305 iteration=0 I=1102 Wed Mar 14 19:28:54 2012 S 286389065043 36 100/9556 102/10000 K=12523826749072869945 iteration=0 I=1211 Wed Mar 14 19:42:08 2012 [/CODE] And my earlier modifications (payam28/payam36) produced: [CODE]S 373703051 28 100/8409 100/10000 K=441677767461645 iteration=70 I=34 Wed Mar 14 17:07:17 2012 S 3215769923 28 100/9923 100/10000 K=3800702393144085 iteration=609 I=20 Wed Mar 14 19:14:00 2012 S 177693671 36 100/7398 106/10000 K=7770564667602165 iteration=0 I=310 Wed Mar 14 16:38:18 2012 S 3230664515 36 100/8902 101/10000 K=141277330767369225 iteration=8 I=80 Wed Mar 14 18:44:16 2012 [/CODE] |
[QUOTE=pinhodecarlos;293018]... however the number of subiterations doubled.[/QUOTE]
Note, that each subiteration now covers a smaller range (about 1/2 the size as before). So, what really matters is the time per full iteration (which is, according to Robert Gerbicz, still at a comparable size). This should be faster now. |
[QUOTE=Thomas11;293019]
Please find the (now hopefully working) binaries attached.[/QUOTE] Coo a new toy...brilliant. I would like to reserve Riesel E36 iteration 10...I'm assuming that Carlos is already looking at some iterations, hopefully this won't be an overlap. The smithcheck in the zip file in.txt was dialled down really low for E36. In my original work at this level using axn's software I used 30,5 50,11 100,19 200,27 500,38 1000,54 2000,67 3000,74 6000,90 The comparable levels shown in the in.txt 5 50 12 100 22 200 32 500 52 1000 65 2000 75 3000 90 6000 A very significant speed up can be expected therefore by raising the barrier at the Smith check. Given that we are expecting to break only low level records, I'm intending raise the barrier and plan only checking to n=6000 using the software. The records for Riesel E36 before we start the exercise: [CODE] 1 1 689741 m/36 2 2 10340403 m/36 3 3 11528261 m/36 4 4 73652687 m/36 5 5 45998055 m/36 6 6 87261285 m/36 7 7 165081579 m/36 8 8 213933499 m/36 9 9 213933499 m/36 10 10 213933499 m/36 11 11 3982100443 m/36 12 14 370441035 m/36 13 15 37410915885 m/36 14 17 370441035 m/36 15 18 370441035 m/36 16 22 370441035 m/36 17 27 1027006295 m/36 18 28 1027006295 m/36 19 32 4467870581 m/36 20 35 4467870581 m/36 21 42 5392318323 m/36 22 46 5392318323 m/36 23 53 370441035 m/36 24 54 370441035 m/36 25 55 370441035 m/36 26 63 4467870581 m/36 27 64 4467870581 m/36 28 67 4467870581 m/36 29 81 4467870581 m/36 30 87 370441035 m/36 31 89 370441035 m/36 32 92 370441035 m/36 33 94 370441035 m/36 34 98 370441035 m/36 35 101 370441035 m/36 36 131 864233139 m/36 37 140 864233139 m/36 38 155 27854056019 m/36 39 162 27854056019 m/36 40 173 641092949 m/36 41 180 27854056019 m/36 42 192 27854056019 m/36 43 212 27854056019 m/36 44 237 27854056019 m/36 45 245 1040267283 m/36 46 265 27854056019 m/36 47 269 27854056019 m/36 48 278 27854056019 m/36 49 317 27854056019 m/36 50 342 1030001517 m/36 51 363 3706149515 m/36 52 368 3706149515 m/36 53 399 3706149515 m/36 54 427 27854056019 m/36 55 465 3706149515 m/36 56 491 27854056019 m/36 57 506 27854056019 m/36 58 513 27854056019 m/36 59 530 27854056019 m/36 60 535 27854056019 m/36 61 589 27854056019 m/36 62 603 27854056019 m/36 63 664 27854056019 m/36 64 699 27854056019 m/36 65 813 27854056019 m/36 66 838 27854056019 m/36 67 867 27854056019 m/36 68 915 27854056019 m/36 69 1109 27854056019 m/36 70 1115 27854056019 m/36 71 1242 27854056019 m/36 72 1426 27854056019 m/36 73 1448 27854056019 m/36 74 1550 27854056019 m/36 75 1762 27854056019 m/36 76 1873 27854056019 m/36 77 1874 27854056019 m/36 78 2151 27854056019 m/36 79 2238 27854056019 m/36 80 2538 2441761733 m/36 81 2583 93061801369 m/36 82 2726 27854056019 m/36 83 2855 93061801369 m/36 84 2880 93061801369 m/36 85 2981 93061801369 m/36 86 3079 93061801369 m/36 87 3221 93061801369 m/36 88 3239 93061801369 m/36 89 3592 93061801369 m/36 90 3603 93061801369 m/36 91 4927 93061801369 m/36 92 4949 93061801369 m/36 93 5547 93061801369 m/36 94 5675 59863409059 m/36 95 5993 59863409059 m/36 96 6038 93061801369 m/36 97 6788 93061801369 m/36 98 6904 93061801369 m/36 99 7046 93061801369 m/36 100 7480 93061801369 m/36 101 8088 93061801369 m/36 102 8555 93061801369 m/36 103 8594 93061801369 m/36 104 10736 93061801369 m/36 105 11039 93061801369 m/36 106 11289 93061801369 m/36 107 14437 93061801369 m/36 108 18873 93061801369 m/36 109 18973 93061801369 m/36 110 19999 93061801369 m/36 111 23859 93061801369 m/36 112 26606 93061801369 m/36 [/CODE] |
A couple of pointers for the programming:
On both my computers I got the error message msvcr100.dll missing. I solved it on my vista by copying and renaming msvcr100_clr0400.dll to the required name. On my older machine I have a variety of msvcr files, but they are only numbered up to 90. |
| All times are UTC. The time now is 21:51. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.