spiccioli
Legendary
Offline
Activity: 1378
Merit: 1003
nec sine labore
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 12:11:39 PM |
|
... kano, intensity has an even bigger influence than CPU speed, at intensity 'd', same 800 MHz CPU speed, cgminer uses around 50% CPU time spiccioli Actually - logically as the intensity drops, the CPU must increase. When the intensity goes down, it means the work is broken up into smaller pieces. More pieces means more CPU processing and transferring for the same amount of hashes. I run 2x6950 on a 3.07GHz i3 CPU running at 1.2GHz and -I 9 and get ~2% CPU (hmm 2 seems low - I would have guessed 5 ...) (that % number means of a single core in linux coz if you e.g. have 2 cores - total is CPU 200%) So it's not totally surprising getting high CPU use with 5 GPU's and low power CPU and lower intensity. kano, with lower intensity occupation of GPU is lower, so I was thinking that the thread serving a GPU with lower intensity had to be sleeping a lot more, while it is, instead, sleeping a lot less. 73.0 C F: 24% (1335 RPM) E: 800 MHz M: 150 Mhz V: 1.000V A: 80% P: 0% Last initialised: [2012-02-26 23:06:14] Intensity: Dynamic (only one thread in use) Thread 1: 299.8 Mh/s Enabled ALIVE
How many more hashes (or how longer does it keep counting) are counted by a GPU when intensity is increased by one? spiccioli. Yes the CPU is sleeping a lot less with lower intensity as I said here: When the intensity goes down, it means the work is broken up into smaller pieces. More pieces means more CPU processing and transferring for the same amount of hashes. I'll explain again I guess: A work request is 2^32 hashes (a full nonce range) It maybe could be done in 1 one long go or 2^32 tiny goes. It is actually, of course, done somewhere in the middle of that. kano goes read the code to try get the numbers ... OK it looks like (though I could be wrong) that with intensity 9 it divides the work into pieces of (2^(15+9) * vectors) hashes So about 16 million hashes with -v 1 (there are other limitations it does to this number but it looks like that's maybe correct for me with -I 9) This figure doesn't really matter if it's wrong, but how I've described how it works is correct. Anyway assuming it is (2^(15+9)) or 16 million - it takes about 52ms for a single 6950 GPU to do that. Thus every 52ms (if I had only one 6950) the CPU needs to setup and feed data into the GPU and then wait about 52ms to get the answer back, then setup the next 16 million hashes and feed them into the GPU ... over and again ... until it's processed the whole 2^32 hashes If instead the intensity was 8, each setup would contain half the number of hashes (2^(15+8)) or 8 million, or approx 26ms so the CPU would have to setup work twice as often to complete the whole 2^32 nonce range - thus the CPU usage would increase since it's doing twice as many setups for the same amount of work - to do the complete 2^32 hashes kano, interesting numbers, in particular for p2pool, because we can now find out, given hashing power, which is max intensity we can use. So a 300Mh/s card, at intensity 6, thakes takes around 6ms to do a batch and so wastes around 1% of its mining time when there are fast, 1 second long, rounds. But if we say that median rounds are 5 seconds long, at intensity 6 we are wasting just 0.1% of our time. Thanks for your explanation. spiccioli
|
|
|
|
DeathAndTaxes
Donator
Legendary
Offline
Activity: 1218
Merit: 1079
Gerald Davis
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 01:49:28 PM |
|
Some of my 5970's are not accepting any commands from cgminer. I had to use afterburner on about half my rigs. This is to be expected?
What do you mean not accepting commands? You can't change any parameter to any value? If so that is something new but likely you mean "I am trying to raise voltage or select a clock way outside what bios allows" right? cgminer can't FORCE the card to do anything (not even return to stock clocks). All it can do is ask. cgminer: "card #1 please raise clock to 800 Mhz" card #1: "request recevied" card #1 (internally): fuck off cgminer I am tired.
|
|
|
|
Diapolo
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 01:53:45 PM Last edit: February 27, 2012, 03:24:45 PM by Diapolo |
|
Dia, have you though on changing (for example, in VECTORS2), V[7] ^= 0x136032edU; bool result = V[7].x & V[7].y; if (!result) { if (!V[7].x) output[FOUND] = output[NFLAG & nonce.x] = nonce.x; if (!V[7].y) output[FOUND] = output[NFLAG & nonce.y] = nonce.y; }
to uint result = V[7].x == 0x136032edU ? nonce.x:0u; result = V[7].y == 0x136032edU ? nonce.y:result; if (result) output[FOUND] = output[NFLAG & result] = result;
This should give a small boost. Btw, the probability that both nonce.x and nonce.y are correct at the same time is 1/(2^64). This means, that on a 400MH/s card, this will probably happen once in every ~1463 years! ![Grin](https://bitcointalk.org/Smileys/default/grin.gif) I came up with this (which is by far the fastest solution I found to date), and currently test how it's working (things are looking good so far). if((V[7].x == 0x136032ed) ^ (V[7].y == 0x136032ed)) { output[FOUND] = output[NFLAG & nonce.x] = (V[7].x == 0x136032ed) > (V[7].y == 0x136032ed) ? nonce.x : nonce.y; }
This checks V[7].x and V[7].y for a valid nonce and will continue, if only one is true (as we discussed before, the chance that both are true is too small to lower efficiency). The next line checks if .x or .y contain the valid nonce and then writes it to output[NFLAG & nonce.x], which is a pseudo-random possition, so no need to ever use .y. I will open a pull-request soon, to get it integrated into CGMINER and hope Con accepts it for diakgcn. Edit: Your idea seems even faster, which is pretty cool if it works ... will play around with it. Edit 2: I now see 1 problem with your code, the most used codepath is out of the if-clause and is more expensive on GCN in comparison to Cons current code or my posted version. My version uses the least number of instructions, if the if-clause is false ... your version would be the best, if there were more positive nonces, than negative ones! Edit 3: Well, I took one idea from your code and created this one ![Cheesy](https://bitcointalk.org/Smileys/default/cheesy.gif) . if((V[7].x == 0x136032edU) + (V[7].y == 0x136032edU)) output[FOUND] = output[NFLAG & nonce.x] = (V[7].x == 0x136032edU) ? nonce.x : nonce.y;
Edit 4: Created the pull-request as this looks like a great little change ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) ! Dia
|
|
|
|
DeathAndTaxes
Donator
Legendary
Offline
Activity: 1218
Merit: 1079
Gerald Davis
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 02:01:13 PM |
|
... with intensity 9 it divides the work into pieces of (2^(15+9) * vectors) hashes So about 16 million hashes with -v 1 (there are other limitations it does to this number but it looks like that's maybe correct for me with -I 9) Thanks for that. Intensity is an often misunderstood value. Hindsight being 20/20 a less "biased" name like "chunk-size" would have been better. I mean biased as in "why would I want to be less intense I want the most hashez?" Still it works out like this: Millions of hashes calculated in each batch.
I V1 V2 V3 V4 1 0.07 0.13 0.20 0.26 2 0.13 0.26 0.39 0.52 3 0.26 0.52 0.79 1.05 4 0.52 1.05 1.57 2.10 5 1.05 2.10 3.15 4.19 6 2.10 4.19 6.29 8.39 7 4.19 8.39 12.58 16.78 8 8.39 16.78 25.17 33.55 9 16.78 33.55 50.33 67.11 10 33.55 67.11 100.66 134.22 11 67.11 134.22 201.33 268.44 12 134.22 268.44 402.65 536.87 13 268.44 536.87 805.31 1073.74 14 536.87 1073.74 1610.61 2147.48 15 1073.74 2147.48 3221.23 4294.97 16 2147.48 4294.97 4294.97 17 4294.97
So it likely will be some time before we have processor capable of handling full nonce range (4.295 billion) in one pass efficiently.
|
|
|
|
tenzor
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 02:54:39 PM |
|
About graphs, what I did recently. It seems to be wrong, because I ran 4 instances of cgminer with small interval and small memclock diff. And each next cgminer process overrides memclock for all GPUs even if you use -d 0 So, this does not work ./cgminer -d0 --remove-disabled --gpu-memclock=305 this work ./cgminer -d0 --remove-disabled --gpu-memclock=305,0,0,0
|
|
|
|
zefir
Donator
Hero Member
Offline
Activity: 919
Merit: 1000
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 03:02:51 PM |
|
[...] kano goes read the code to try get the numbers ...
while you did ^this, you maybe learned one obvious thing I don't get: where in the code is the nonce incremented? I understood that FPGAs are counting the nonce range up in their FW, but I can't see this done for GPUs. Either I'm double-blind or using grep wrongly, but there is no nonce-increment in the source code, or? ![Undecided](https://bitcointalk.org/Smileys/default/undecided.gif)
|
|
|
|
Diapolo
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 06:25:43 PM |
|
ckolivas,
I'm running one 7970card with
--auto-gpu --auto-fan --gpu-engine 450-1179 --gpu-memdiff -150 --gpu-powertune 20 -q -I 12 -k diakgcn -d 0 -v 2 -w 256
right now, I see Q: counter steadily increasing, is that something to worry about?
Also, what is the efficiency (E:) that you get in your Linux setup?
On win7, with Sapphire card I'm getting AT avg of 680-685Mh/s, efficiency swings between 75-85%. Is that normal?
Also, I've noticed that sometimes one thread hash rate drops significantly and then the whole thing recovers to above 650 (for two). Is that just sampling of context switching artifact? Or my intensity is too high?
On Win7, I cannot run this card to 1200Mhz the way you run it on Linux.
Does anybody get better AT avg on Windows?
Perhaps I can share some observations I made, because you use diakgcn (cool ^^) and I'm on Windows, too ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) . It's normal that Q raises, as this is a counter for the total requested work items. The efficieny swing is also something normal, because it's simply luck when a valid share is found ... so you can have minutes where no share is found, which lowers efficieny and the opposite is true, if you are lucky and find many shares in a short period of time, efficiency raises. To diakgcn, I and Con can confirm your findings, the displayed hash-rate is not very stable with that kernel, so best thing you can do is to compare the final hash-rate, which is displayed after you quit CGMINER. I have a XFX Core Edition card an I'm not able to hit 1200 MHz without raisind the VCore via AfterBurner, so that seems to depend on the card and perhaps Windows in general (because of the GUI / drivers or whatever) allows a bit lower stable clocks, than Linux does. Con always recommends to set -I 9 on Windows, as higher values will raise CPU usage upto 100% for one CPU core and I can confirm this. If CPU-usage or the power-usage doesn't matter, you can use whatever intensity you like and which works for you (-I 11 is what Con uses to bench kernels). Dia
|
|
|
|
jake262144
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 06:31:09 PM Last edit: February 27, 2012, 06:51:41 PM by jake262144 |
|
ckolivas,
I'm running one 7970card with
--auto-gpu --auto-fan --gpu-engine 450-1179 --gpu-memdiff -150 --gpu-powertune 20 -q -I 12 -k diakgcn -d 0 -v 2 -w 256
right now, I see Q: counter steadily increasing, is that something to worry about?
Also, what is the efficiency (E:) that you get in your Linux setup?
On win7, with Sapphire card I'm getting AT avg of 680-685Mh/s, efficiency swings between 75-85%. Is that normal?
Also, I've noticed that sometimes one thread hash rate drops significantly and then the whole thing recovers to above 650 (for two). Is that just sampling of context switching artifact? Or my intensity is too high?
On Win7, I cannot run this card to 1200Mhz the way you run it on Linux.
Does anybody get better AT avg on Windows?
It's all explained in the README file: Q: The number of requested (Queued) work items from the poolsThe sum of all work items cgminer requested from the pools has little choice but to go up. E: The Efficiency defined as number of shares returned / work itemIn other words, efficiency is the ratio of accepted shares to all requested work items (E=A/Q) Efficiency >=75% is nothing unusual, it means cgminer is able to process 3/ 4 of all the work items it requests. The 10 second average hash rate (marked as 10s in cgminer main window) will oscillate quite a bit, you should only pay heed to the total average ( avg). Is that the latest version of cgminer you're running? 2.2.7 had a minor glitch where the hash rate would fall on LP requests. This issue is fixed in version 2.3.1.
|
|
|
|
jake262144
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 07:50:46 PM |
|
BTW, I've tried to change voltage with Trixx, but GPU-Z did not see the change. Was accepted by the driver but refused by bios, I guess.
Precisely. The driver doesn't check whether or not the card actually honored the change requests and assumes that it did. Programs that query the driver might get an incorrect answer. The only way to check the GPU status is to query the device, not the driver. Instead of - Hey, driver, what clocks is that hd6970 running at? - Ummm... I told it to run at 950/300 so it's running at 950/300. (the card refused to downclock the memory) *facepalm*
use - hd6970, what clocks are you running at? - 950/1370. The driver wanted 950/300 but I told it to shove off.
|
|
|
|
DeathAndTaxes
Donator
Legendary
Offline
Activity: 1218
Merit: 1079
Gerald Davis
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 08:33:01 PM |
|
Trying to get familiar with some of the params I never use: --scan-time|-s <arg> Upper bound on time spent scanning current work, in seconds (default: 60) --expiry|-E <arg> Upper bound on how many seconds after getting work we consider a share from it stale (default: 120)
Does scan-time or expiry have any effect if pool is using LP? Would there be any advantage to setting it shorter when using p2pool for example (avg LP interval ~10 sec)? --retry-pause|-R <arg> Number of seconds to pause, between retries (default: 5)
I am assuming this refer to pool <-> miner communication not miner <-> API client communication. Or is it not used for pool mining and only used for solo/bitcoind mining?
|
|
|
|
-ck (OP)
Legendary
Offline
Activity: 4214
Merit: 1644
Ruu \o/
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 10:45:43 PM |
|
Trying to get familiar with some of the params I never use: --scan-time|-s <arg> Upper bound on time spent scanning current work, in seconds (default: 60) --expiry|-E <arg> Upper bound on how many seconds after getting work we consider a share from it stale (default: 120)
Does scan-time or expiry have any effect if pool is using LP? Would there be any advantage to setting it shorter when using p2pool for example (avg LP interval ~10 sec)? --retry-pause|-R <arg> Number of seconds to pause, between retries (default: 5)
I am assuming this refer to pool <-> miner communication not miner <-> API client communication. Or is it not used for pool mining and only used for solo/bitcoind mining? scan time is set high intentionally with longpoll since longpoll tells the miner when to get new work. Setting it less than longpoll time will only make you throw out good work. Expiry is irrelevant when you have submit stale enabled or the pool asks for submitold (as p2pool does). Retry pause is between miner and pool after each communication failure. They really shouldn't happen at all when talking to a p2pool node running on the same machine but maybe if talking to a node elsewhere they might.
|
Developer/maintainer for cgminer, ckpool/ckproxy, and the -ck kernel 2% Fee Solo mining at solo.ckpool.org -ck
|
|
|
-ck (OP)
Legendary
Offline
Activity: 4214
Merit: 1644
Ruu \o/
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 11:03:52 PM |
|
I'll be taking an extended break from coding on cgminer shortly since most things are stable at the moment for my sanity.
This begins now and I have disabled all notifications from the forum and github so do not be surprised when I don't respond for many days. Email me if it's urgent but try to use the forums please as there are heaps of helpful people here. Thanks everyone for your understanding.
|
Developer/maintainer for cgminer, ckpool/ckproxy, and the -ck kernel 2% Fee Solo mining at solo.ckpool.org -ck
|
|
|
jake262144
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 27, 2012, 11:09:24 PM |
|
I'll be taking an extended break from coding on cgminer shortly since most things are stable at the moment for my sanity.
This begins now and I have disabled all notifications from the forum and github so do not be surprised when I don't respond for many days. Email me if it's urgent but try to use the forums please as there are heaps of helpful people here. Thanks everyone for your understanding. Roger that. You do deserve to get some real life, have a great time.
|
|
|
|
Vbs
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 12:46:56 AM Last edit: February 28, 2012, 02:23:35 AM by Vbs |
|
Edit 3: Well, I took one idea from your code and created this one ![Cheesy](https://bitcointalk.org/Smileys/default/cheesy.gif) . if((V[7].x == 0x136032edU) + (V[7].y == 0x136032edU)) output[FOUND] = output[NFLAG & nonce.x] = (V[7].x == 0x136032edU) ? nonce.x : nonce.y;
Nice! ![Grin](https://bitcointalk.org/Smileys/default/grin.gif) Here is alternative solution that should have the same performance as yours (same min & max exec time, same alu count, etc): V[7] -= 0x136032EDu; uint result = V[7].x ? 0u:nonce.x; result = V[7].y ? result:nonce.y; if (result) output[FOUND] = output[NFLAG & result] = result;
Would be nice to see if there's any significant difference between both on real GCN hardware! ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) --------------------------------- EDIT: Another similar performance solution: bool result = V[7].x == 0x136032EDu ? true:false; result = V[7].y == 0x136032EDu ? true:result; if (result) output[FOUND] = output[NFLAG & nonce.x] = (V[7].x == 0x136032EDu) ? nonce.x : nonce.y;
|
|
|
|
cuz0882
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 02:22:50 AM |
|
Some of my 5970's are not accepting any commands from cgminer. I had to use afterburner on about half my rigs. This is to be expected?
What do you mean not accepting commands? You can't change any parameter to any value? If so that is something new but likely you mean "I am trying to raise voltage or select a clock way outside what bios allows" right? cgminer can't FORCE the card to do anything (not even return to stock clocks). All it can do is ask. cgminer: "card #1 please raise clock to 800 Mhz" card #1: "request recevied" card #1 (internally): fuck off cgminer I am tired. Some ignore any change, even returning to stock. (excluding fan speed) If I put in 725 engine in cgminer it displays back Engine Clock: 157 Mhz Memory Clock: 150 Mhz Vddc:0.950 V
|
|
|
|
Diapolo
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 06:28:32 AM |
|
I'll be taking an extended break from coding on cgminer shortly since most things are stable at the moment for my sanity.
This begins now and I have disabled all notifications from the forum and github so do not be surprised when I don't respond for many days. Email me if it's urgent but try to use the forums please as there are heaps of helpful people here. Thanks everyone for your understanding. Take your time, enjoy your break and come back, when the fire is burning again ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) . Dia
|
|
|
|
Internet151
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 08:34:24 AM |
|
Found a small bug, when cgminer passes 200k accepted shares in Windows 7 the GPU temp and fan speed columns go completely blank and are also unable to be accessed via the API (which I noticed vis ANUBIS).
|
|
|
|
tnkflx
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 09:24:00 AM |
|
Found a small bug, when cgminer passes 200k accepted shares in Windows 7 the GPU temp and fan speed columns go completely blank and are also unable to be accessed via the API (which I noticed vis ANUBIS).
Ha, +1, I also noticed this, didn't link it with the 200k shares though... ;-)
|
| Operating electrum.be & us.electrum.be |
|
|
|
kano
Legendary
Offline
Activity: 4578
Merit: 1851
Linux since 1997 RedHat 4
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 09:58:59 AM |
|
Found a small bug, when cgminer passes 200k accepted shares in Windows 7 the GPU temp and fan speed columns go completely blank and are also unable to be accessed via the API (which I noticed vis ANUBIS).
Ha, +1, I also noticed this, didn't link it with the 200k shares though... ;-) It's more likely to be simply that the ADL library gave up and now says it's not working. Not really helpful, but you can check the API config command: It will say (ADL=Y,ADL in use=N) if all cards are showing blank for the GPU/Fan/Temp values. If any cards are still working (unexpected) then it will still say (ADL in use=Y) Also, if you are using ANUBIS - does it have a log of the stats over time? You should be able to tell exactly what and where if it logs all the stats (I don't know how much it logs)
|
|
|
|
tenzor
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
February 28, 2012, 11:13:12 AM |
|
I would love to see an expanded version of this that goes down to 100 (or lower) memclock using latest version of cgminer, latest drivers, and SDK 2.1.
Here is some tests ![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FTPRiot.png&t=665&c=XqWn9puK5l9DcQ) You sir, are full of awesome. Will we be able to see the other test results soon? Do you have a 5870 to test with? @tenzor Were you running this on linux? And are you willing to share the script you used to generate these results? Here is it http://pastebin.com/gpFDyXefrequires screenCopy it into cgminer's directory. Make sure you change values on config section. Results will appear in directory defined in "results" variable. Make sure it writable. Cgminer always include default config, so rename it or remove. Config to run cgminer in "cgminer_config_path" var. Here is my config for device #0 (test0.conf) { "pools" : [ { "url" : "http://pit.deepbit.net:8332", "user" : "XXX", "pass" : "XXX" } ], "intensity" : "9", "gpu-engine" : "0-930", "gpu-fan" : "0-85", "gpu-powertune" : "0", "gpu-vddc" : "0.000", "temp-cutoff" : "95", "temp-overheat" : "85", "temp-target" : "75", "auto-fan" : true, "expiry" : "120", "gpu-threads" : "2", "log" : "5", "no-restart" : true, "queue" : "1", "retry-pause" : "5", "scan-time" : "60", "temp-hysteresis" : "3", "api-listen" : true, "donation" : "0.00", "shares" : "0", "kernel-path" : "/usr/local/bin" }
sometimes X server hangs, in this case script will create file "reboot_required" in current dir, so you could use ither script to reboot automatically First parameter is device number to run tests on. It 0 by default. Also run another instances of cgminer befor running this script, because it will overwrite another GPU clock values. Sometimes identical GPUs with same clocks produce different MH/s, so be careful comparing results from different GPU. Results will appear in subfolders in json files. I wrote php script that draw graphs. http://dl.dropbox.com/u/569082/cgminer-tester.zip Put it into webserver webroot somewere, tests put in tests dir inside. Currently I am testing 5850 all kernels 150-300 memclock. I expect results will be ready after 3 days
|
|
|
|
|