View Single Post
Old 2018-03-20, 14:59   #353
kriesel
 
kriesel's Avatar
 
"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

116348 Posts
Default

Quote:
Originally Posted by SELROC View Post
What is the use of the -step argument in gpuOwl ?
It seems to me after a quick look at the source, the ability for the user to override the automatic program behavior, with a specified constant step count between Gerbicz checks. I interpret this to mean -step requires a step count parameter in the range 1000 to 500000 that are 1, 2, or 5 times a power of ten; 1000 or 2000 or 5000 or 10000 ... 500000. Or perhaps larger also.

args.h excerpt:
Code:
else if (!strcmp(arg, "-step")) {
      if (i < argc - 1) {
        step = atoi(argv[++i]);
        if (step <= 0 || step % 1000) {
          log("invalid -step '%s', must be positive and multiple of 1000.\n", argv[i]);
          return false;
        }
      } else {
        log("-step expects <N> argument\n");
        return false;
      }
    }
gpuowl.cpp excerpt:
Code:
int autoStep(int nIters, int nErrors, int blockSize) {
  int x = nIters / (100 + nErrors * 1000);
  int steps[] = {1, 2, 5, 10, 20, 50, 100, 200, 500};
  for (int i = 0; i < size(steps) - 1; ++i) {
    if (x < steps[i] * steps[i + 1]) { return std::max(steps[i] * 1000, blockSize * 2); }
  }
  return steps[size(steps) - 1] * 1000;
}
gpuowl.cpp again:
Code:
  auto getCheckStep = [forceStep = args.step, startK = k, startErrors = nErrors, blockSize](int currentK, int currentErrors) {
    return forceStep ? forceStep : autoStep(currentK - startK, currentErrors - startErrors, blockSize);
  };
Two use cases I've run into are:
1) Hardware and software are very stable, exponent is far from an fft length limit, overhead of starting at small step sizes is not necessary, run a large step size from the start. (This case might benefit from adaptive step size after starting large if an error occurs during the run. Also user settable number of consecutive retries if an error occurs)
2) Repeatable error has occurred, such as the exponent is slightly too large for the fft length, I'd like to determine as finely as possible, at what iteration it occurs, with a rerun from last known good save file, using minimum step size until encountering the error again. (This case might benefit from a user set limit of retries 0 - ~9) before giving up on the exponent and starting or resuming the next worktodo entry.)

Last fiddled with by kriesel on 2018-03-20 at 15:05
kriesel is offline   Reply With Quote