nice work alek !
could you please add a stride function on it ?
There, for starting keys in the getGPUStartingKeys function, the step is set here.
else {
//
keys[i].Set(&startKey);
Int offT((uint64_t)i);
//offT.ShiftL(32);
Int offG((uint64_t)thId);
//offG.ShiftL(40);
// new offset
int nbBit = startKey.GetBitLength();
offT.ShiftL((uint32_t)(nbBit / 2));
offG.ShiftL((uint32_t)(nbBit - 4));
//
keys[i].Add(&offT);
keys[i].Add(&offG);
if (i < 10 || i > nbThread - 10) { printf("Bit %d GPU startKey Base Key %d: %s\n", Random_bits, i, keys[i].GetBase16().c_str()); }
//
}
I don’t want to, I will need to recalculate the distance traveled and create an addition for a new start of the keys. A table and steps are used. +1 and -1 further to +512 and -512 Delta is needed to increase the speed when calculating the inversion modulo distance - this is when adding points.
You can generate starting keys in increments. The dot addition step cannot be changed.
For example, you won’t be able to add 16, 64 or 2048. The addition step is 1 - all because of the table.