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
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...
Finally, there is a 64-bit version (legacy) of PrimeCoinMiner here!
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
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
Step 6. Prepare application to be GPU-ready -
[Later
]