cl-local-work & cl-global-work settings

rebelexplorerrebelexplorer London, EnglandMember Posts: 16
edited April 2016 in Mining
I've seen a lot of talk about about setting cl-local-work & cl-global-work settings for optimizing ethminer, but I can't figure out what they actually refer to.

Would anyone be kind enough to explain these to me?

Thank you for your time.


  • bbcoinbbcoin Member Posts: 377 ✭✭✭
    edited April 2016
    They increase they size of the workload your GPU will have to process.
    I find running global work 16384 only gives me best and fairly stable results.
    Messing with local work gives visual increase in hash rate but does not increase the amount of shares you will supply to the pool. It will also increase your variance.
  • rebelexplorerrebelexplorer London, EnglandMember Posts: 16
    Thanks for the explanation. Now I wanna know more =)
    1. Why would increasing the workload size be advantageous and how did you arrive at the value 16384?
    2. How does one determine the workload limit of a GPU?
    3. What's the difference between local and global work?
    4. Why doesn't increasing local work increase the amount of shares, but rather increases variance?
    Again, thanks for your time.
  • bbcoinbbcoin Member Posts: 377 ✭✭✭
    1. kernel spends more time processing it, it's a digital eletronic unit, which means it operates best with powers of 2 like 2,4,8,16,32 etc.
    2. most AMD cards have a local workload limit of 256, not sure about the global workload but some folks here use values exceeding 32000
    3. google it ;)
    4. increased delay between workloads, when a new job drops from the server your kernel might be still processing the old share and then it will upload the result to the new workload resulting in an invalid share.
  • caesar0901caesar0901 NYCMember Posts: 18
    edited April 2016
  • bitmaxtbitmaxt Member Posts: 81
    ethminer-0.9.41 im test whit this configuration

    ethminer -F -G --cl-global-work 64
    (--cl-global-work 64) or (--cl-global-work 128) duplicate this final number if you have a powerfull video card..whit 4 or 8 gigas or video ram
  • rebelexplorerrebelexplorer London, EnglandMember Posts: 16
    Okay, from what I have gathered, the difference between local and global work:


    -each wavefront consists of 64 work items
    -work items (integer multiples of 64) are grouped in local workgroups
    -local dimensions define the size of the workgroups (256 for most cards)
    -share local memory and synchronization
    -executed together on one device


    -number of work groups is not limited (large workloads might be limited by memory available)
    -one work item per computation, executed in parallel
    -global dimensions define the range of computation
    -kernels are executed across a global domain of work items

    Parallel Computing for CPUs and GPUs

    And this...


    With all of this in mind...
    1. What are the default global/local work sizes?

    2. How do I figure out what the optimal global-work size is for my set up?

    3. How do I measure the effects of changing global-work size? For instance what is a good vs. bad outcome from adjusting the values?
    Thanks @caesar0901 , I actually saw that already. Though it's a great abstract explanation, it doesn't really clarify the "how" in optimizing my settings.

    Thanks @bitmaxt. I'm using 5 x 280x and am running 8g RAM. What is the outcome I'm measuring by setting your recommended values?
  • bbcoinbbcoin Member Posts: 377 ✭✭✭

    1. 64x4096
    2. Testing, testing, testing
    3. Run qtminer into or ethminer + startum proxy into f2pool they will give you a percentage of you invalid/stale shares. You shouldn't go above 5% invalid with a properly setup rig.
  • bitmaxtbitmaxt Member Posts: 81
    ok for soft mining test with (--cl-global-work 128) or (--cl-global-work 256) tets and post your experience..
  • cpluscotecpluscote Member Posts: 86
    The higher I have my local work the higher the hashrate and higher the variation. 64 gives 180 consistently, 128 gives 182 with a little variation, and 256 gives 184.5 with a little more variation.

    Global work doesn't seem to mess with variation as much as local. It seems to just only affect the hashrate slightly.

    I'm running 6 290x.
  • o0ragman0oo0ragman0o Member, Moderator Posts: 1,291 mod
    @cpluscote, do you mean the variation in reported hashrate? You can either average that out by a long --farm-recheck to determine your real hashrate or try and match --farm-recheck to the time taken to complete the global work pacakges.

    I believe the reason higher global work leads to higher hashrate is because there is less time wasted in cache swapping/loading (whatever).
  • rebelexplorerrebelexplorer London, EnglandMember Posts: 16
    edited April 2016
    Thanks @bbcoin. I'll get testin'!

    Quick note, I noticed on it advises that if you get "5 invalid shares" that you should check your worker. Is it 5 invalid shares or 5% ?
  • caesar0901caesar0901 NYCMember Posts: 18
    @rebelexplorer Should be 5%. The worker row gets highlighted yellow at 5% invalid, and red at 10%.
  • rebelexplorerrebelexplorer London, EnglandMember Posts: 16
  • Dr_House86Dr_House86 Member Posts: 566 ✭✭✭
    At First the genoil miner runs perfect for me, but after a few days he was really unstable.
    Nothing helps, so i switched.
  • citronickcitronick Member Posts: 110
    My GPU is R9-390 and have 5 cards running in a rig, using qtminer.
    Initially I used the cl-local-work & cl-global-work settings as advised by many in this forum and also other forums. However, after mining for awhile, I realised that NOT using these parameters actually gave me better performance, less variance and pretty stable. And so my ETH mining now runs without them.
Sign In or Register to comment.