Author

Topic: [UPD][XPM] PrimeCoin Miner - CPU [Windows only][x86/x64L][pre-alpha][+18% perf.] (Read 8639 times)

jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
13.04.2014

New update is OUT!  Cool Check the links in the first message!

Log:
!: Optimization of the sieve in x86 version gives plus ~15% and above to overall performance (in comparison to r8 pre-alpha release)!
!: Re-compilation of x64L code with ICC (instead of MSVC) gave additional ~18% of performance.

Join us in Twitter for latest news!
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
01.04.2014

New update is OUT! (and it is not the Fool's day joke) Cool Check the links in the first message!

Log:
!: Most speed-critical parts of HugeInteger library were rewritten in assembler.
!: 64-bit "legacy" version is now available = 1.53 times faster than 32-bit.
F: Bug, where shares were unable to pass the primality check, was fixed; but some shares are still rejecting by server with the "Share target too low" error message  Sad
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
24.02.2014

New update is OUTCool Check the links in the first message!

Log:
!: Modular exponentiation now uses fastest possible algo + some other performance improvements = plus ~8.7% and above to overall performance (in comparison to r6 pre-alpha release)!


Quote from: primer-
7ch block found after 45 min, however it was rejected by ypool with error :
01/18/14 - 08:28:36 - SHARE FOUND !!! (Th#: 0) --- DIFF: 7.258384 >6 >7
Invalid share
Reason: Share failed Primecoin's CheckPrimeProofOfWork()
PoW send: 998 bytes

Yes, I know about this problem, and will fix that in one of the next releases.
legendary
Activity: 1092
Merit: 1000
I've been running it for 20 minutes and not a single 6ch has been found. Hp11 finds 6ch blocks every couple of seconds. Why is it so slow ?

Edit: 7ch block found after 45 min, however it was rejected by ypool with error :
01/18/14 - 08:28:36 - SHARE FOUND !!! (Th#: 0) --- DIFF: 7.258384 >6 >7
Invalid share
Reason: Share failed Primecoin's CheckPrimeProofOfWork()
PoW send: 998 bytes

full member
Activity: 182
Merit: 100
I never mined this coin before, can anyone explain to me why i am getting NO shares? pic related, my miner

legendary
Activity: 1428
Merit: 1001
getmonero.org
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
Happy New Year!

02.01.2014

New update is OUTCool Check the links in the first message!

Log:
!: Montgomery reduction method was replaced with optimized variant = plus ~28% and above to overall performance (in comparison to r5 pre-alpha release)!
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
24.12.2013

New update is OUT!  Cool Check the links in description!

Log:
!: Montgomery multiplication algo has changed from generic implementation to CIOS method (but there is a chance to supporting modified FIOS method instead of CIOS) = plus ~15% and above to overall performance (in comparison to r4 pre-alpha release)!
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
05.12.2013

New update is OUT now!  Cool Check the links in description!

Log:
+: Miner now uses Montgomery multiplication algo + improved squaring  = plus ~23% and above to overall performance (in comparison to r3 pre-alpha release)!
full member
Activity: 124
Merit: 100
Good luck to you Emilio  Wink

I'm not sure why you would bother with the 32-bit step, except to make it easier to implement?  Wouldn't 64 bit provide better performance?

Quote
HugeInteger library uses conception of "wide register", and thus could be only 32-bit

What does that mean?
sr. member
Activity: 362
Merit: 250
Eager to test this out, but ypool is intermittent. Thanks will post with results when I get it working. Since this is CPU only, it might run in parallel with some GPU miners.
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
24.11.2013

New great update is OUT now!  Cool Check the links in description!

Log:
!: Made some improvements to Montgomery reduction (SOS) = plus ~50% and above to overall performance!


Has anyone used this?

According to SF DL statistics - almost 100 people use this, I suppose;  Cheesy but they are too lazy to write smth. about their experience here  Grin Grin Grin
hero member
Activity: 1036
Merit: 504
Becoming legend, but I took merit to the knee :(
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
Oops! It looks like download link for 2nd pre-alpha I gave, is incorrect. So I append an alternate one ("PrimeChainBuster", just a codename for second release)...


News:
Made some changes in Montgomery reduction algo, and it now runs MUCH faster! Just need to do some last tests and 3rd release will available soon.
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
22.11.2013

New update is OUTSmiley Check the links!

Log:
!: Some improvements in long division = plus 26.5% - 37.5% to overall performance
jr. member
Activity: 44
Merit: 10
Bitcoin Enthusiast
I started to work at PrimeCoin miner about 6.5 months ago, and here are some results.


Technically it is based on original jhPrimeminer 0.5 by jh00, but uses my own (written from scratch) HugeInteger numeric library, instead of GMP library. I did some small changes in jhPrimeminer code, including of replacement of GMP vars & calls by HugeInteger ones.

Of course, using of jhPrimeminer 0.5 as a "shell" for HugeInteger is a subject of changes in future, since this client has very restricted functionality: it supports only ypool.net as mining pool, and only XPT mining protocol... but you, probably, want more  Wink

HugeInteger library is also subject of changes - it is still unoptimized enough. Currently, it is just only 1.02 times faster in average (with 13.04.2014 update), than GMP library (this is applicable to 32-bit version only). So, there is a little progress... Smiley

Finally, there is a 64-bit version (legacy) of PrimeCoinMiner here!  Smiley Performance of 64-bit legacy version is about  1.56 times greater than performance of 32-bit version.

Note: "Legacy" (and letter "L" in the filename) means that source code, optimized for 32-bit architecture, was just recompiled as 64-bit application. For true 64-bit code, I will use the word "Native" and letter "N". Unfortunately, MSVC does not support inline assembly for 64-bit applications, so this "native" code is not available at this moment (but 32-bit inline assembly is OK), but will be available in the next release.

There are some performance numbers (just for 1 core):

System: Intel Pentium E5300 @2.6GHz (default clock)
jhPrimeminer v.0.5 r4 with GMP (x86):                                      3350-3420 "knumps"
PrimeCoinMiner-CPU [pre-alpha] with HugeInteger (x86):           4065-4110 "knumps" [for 13.04.2014 update (r9)]
PrimeCoinMiner-CPU [pre-alpha] with HugeInteger (x64 legacy): 6425-6455 "knumps" [for 13.04.2014 update (r9)]

The speed measures in "knumps" (kilonumbers per second), not in the PPS (primes per second).


Where you can download it:

Current PrimeCoinMiner's pre-alpha release has limited functionality and slow a bit (and also buggy), but nevertheless, you can still download it just for test drive  Wink

Official project's location at SourceForge: https://sourceforge.net/projects/primecoincpugpuminers/ (all old & new releases)

The eighth pre-alpha release binary (01.04.2014 (r8)) still available here (x86) and here (x64 legacy) (as separate SFX archives).

You can download the ninth pre-alpha release binary (13.04.2014 (r9)) here (both x86 and x64L in one SFX archive).


Get latest news about development via Twitter!

Yes, PrimeCoinMiner now has its own Twitter account! Join us for latest news!



How to use PrimeCoinMiner:

Same, as you have used original jhPrimeminer:

PrimeCoinMiner-prealpha-CPU-x86(x64L).exe -o http://ypool.net:10034 -u <YPoolUsername>.<worker_ID> -p <password>


Known problems/issues:

This release has a following bug:
Some shares are not accepted with "Share target too low" error.

I will try to fix this bug in one of the next releases.

Note:
Currently, PCM only fully supports "Default" mining mode. In this release, "Multipass" mode will work too, but there are no any optimizations for it.


Steps to improvement (before it could be implemented for GPU):

Since I wrote HugeInteger just from scratch, it requires some serious steps for its improvement...

Step 1. (Important step) Try to find as fastest algos, as it possible - [Partially finished...]
I have just two opportunities to check at this moment - one is the some fast multiplication method, and second is "tiling".

Step 2. Memory optimizations and assembler code optimizations - [In process...]
Looks like I need another compiler to compile HugeInteger library's inline assembly in 64-bit mode...

Step 3. Also porting it to x64 platform - [In process...]
x64 "native" version will be available in the next release.

Step 4. (Important step) Improve the sieve algo - [In process...]
Sieve now operates up to 40% faster in x86 version - great improvement! But sieve algo is still subject of research...

Step 5. (Miner improvement) Add support for other pools, protocols and solo mining... - [Later]
...or just change "shell" application  Grin

Step 6. Prepare application to be GPU-ready  Cheesy - [Later]
Jump to: