Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think computer benchmarks should compute something useful, like mersenne prime verification. Million of benchmarks are run every day mostly on newer device with decent computing power. This amounts to a large amount of currently unused cycles.

Maybe it would be possible to create a block-chain technology in which their participants calculate something scientifically meaningful.



A benchmark must always perform the exact same computation for the same reason that all tape measures must be the exact same length.


> all tape measures must be the exact same length.

Tape measures are useful even if they're not the same length.

Higher-end engineering tapes acknowledge that length isn't constant, and provide temperature coefficients, ranges of accuracy, and tensioning guidelines.

You can spend a lot of money on a tape measure which is more exact under more conditions. Most people don't need this.


Maybe it would be possible to design the scientifical computational tasks so that they are very similar in terms of stress for the CPU, but not completely even. You could then state that the benchmark offers comparable results with a statistical error of something like 2% +-0.5. You can also average the error by running the benchmark multiple times before you compare the score with other devices.


By that point aren't you wasting as much computation time as you're trying to "save" by making it useful.


I don't think so, because every single benchmark/computation would be scientifically useful, even if you run it multiple times.


Is Mersenne prime verification really scientifically useful? At this point, getting one more number verified seems about as useful as stamp collecting.


Mersenne prime verification is useful for the science field of mathematics, where the results can be used to (in)validate theories and predictions of (Mersenne) Prime Numbers. Sure, it is a niche with little contact area with the rest of thr world, but so were Elliptic Curves (used in cryptography), Set Theory and Relational Algebra (both heavily used in relational DB technology).


I don't see why we should be limited to Mersenne prime verification, there are many other scientific computational projects in various fields that could benefit from it, astrophysics, molecular biology, genetics, chemistry, climate study, cancer research, ...

Wikipedia lists a few https://en.wikipedia.org/wiki/List_of_distributed_computing_...


You could run the exact same computation and still do something useful. The inputs do not have to be identical, but they can be coordinated (or random). Think of running a brute force search on some useful problem.


Inputs definitely need to be identical because different inputs may lead to different behaviours in branch predictors and memory access patterns, affecting the score.

The impact may be small, but I see no reason why the impact should be there in the first place just to satisfy some mathematicians' curiosity about special numbers.


Sorry, I meant running different inputs on a program that does not branch or have an input-dependent memory access pattern. Any computation can be written in such a form, although there might be a large overhead compared to programs that do branch.


There are certain problems for which different inputs do not require different amounts of computer. "Add one to a number between 128 and 256" is an obvious example. The question is whether there are useful problems with that property.


Even such a task is subject to very specific requirements, because adding a number between 128 and 256 may be enough to take another path in the microcode depending on if the result overflows or not. I'm not saying this happens kn practice, but I wouldn't be surprised if a future generation of processor would do this and make the entire benchmark invalid from that point on.

A more likely scenario for such independent instructions would operate on an entire bit string, like boolean operators and vector instructions. I think you'd have a tough time producing any useful output from such an algorithm, though, because you wouldn't be able to do much with conditionals to keep the branch predictor score fair.

I don't think that there are any algorithms that could operate within a generic benchmark that could have random elements in them _and_ product a useful result. Either the calculations are different and fair but meaningless, or they're exactly the same with the same result.


> I don't think that there are any algorithms that could operate within a generic benchmark that could have random elements in them _and_ product a useful result.

One that springs to mind is Monte-Carlo sampled raytracing. An individual ray might take more or less time to compute, but the time to compute 10 million rays will be statistically be roughly constant. You could even imagine averaging a bunch of renders of the same scene from different machines to get a lower-noise result, thereby demonstrating a benchmark combined with useful work.

Statistical predictability is the key.

(Confession - this isn't exactly theoretical. I sometimes have occasion to render light fields, and I shard the work over as many random workstations as I can get my hands on. It's always obvious which workstations are faster than others, even without making any special attempt to balance the workload. I think this is actually a workable concept.)


We already have a existence proof for useful tasks for which changing inputs do not invalidate benchmark results - namely cryptography, where algorithms must run in constant time to avoid timing side-channel attacks. If your hardware takes a non-constant amount of time to add 8-bit integers, your hardware is broken and should receive a benchmark score of zero. The interesting question is how much overhead would be involved in turning scientific tasks like Mersenne prime search into benchmark-friendly workloads.


Wow. That makes it sound like even a perfectly deterministic calculation cannot be compared across machines. Some will be good at some, some good at others, and whether one machine is overall better than another depends on their intended uses.

Which now that I think about it, of course it would be like that. But still, what a headache for someone who just wants The Best One.


Even a simple addition of two integers can take a different amount of energy to perform depending on the values involved. This in turn affects the temperature of the chip, which can cause thermal throttling. Computer architecture is more complex than most software engineers realize.


This is a common misconception. In order for a Proof-of-Work algorithm to be useful, there must be an opportunity cost (penalty) to mining on the wrong chain. If the mining algorithm pays off anyway it cannot be used.


Unless the miners themselves benefit from the work, there would still be an opportunity cost to them, no? If it happens to be useful to someone else that shouldn't matter, right?


That matter because it gives those who it is useful an advantage in attacking the blockchain


If it is useful enough that someone is willing to pay for it as a service, then it fundamentally changes the incentive model and voids the security it provides.


Whether or not there's an opportunity cost does matter, but why should this mean that the mining algorithm "paying off anyway" mean it can't be used? If the mining algorithm has an independent payoff whether or not you mine on the main chain, then there's still the same opportunity cost of the mining rewards.


No, it is not the same opportunity cost.

With a PoW that has "external rewards", the cost of attacking the chain falls in proportion to the external reward. You are correct that it does not fall to zero.


What if it’s a public good that we generally believe everyone benefits from, like mathematics research?

No individual would pay for it, but it’s still more valuable than random noise.


Patents allow mathematical research to be excludable and thus not a public good.

Now one can argue that mathematical patents provide more costs than benefits, which is a line of debate I am certainly open to. End that, and math research would be a public good.

But in the system we have now, a huge amount of mathematical research has generated a significant amount of money for very many people, from the RSA algorithm to Penrose patenting his tilings (and getting money from toilet paper makers that used his aperiodic tilings to make their TP more fluffy [1])

What I think you mean to say is that the market consistently undervalues mathematical research. Unfortunately it's not so easy to actually demonstrate, because given the huge amount of math research produced, only a very small amount of that ends up being useful in the future and often the original discoverer is long dead. This is similar to the situation with other arts and sciences. A small number of people drive the field forward and the vast majority of scientific publications are basically filler. Certainly the world would be better with more effective funding mechanisms that we have on offer, which is basically a game of capture-the-grant.

[1]https://apnews.com/article/59354892d1875c277c91afd3fb5ca516


The penalty is still there you pay the electric bill and it consumes time, but you would donate some cycles for useful scientific computational tasks without any benefit for yourself. If such an algorithm exist, then I don't see why this couldn't be used as Proof-of-Work algorithm.


PoW works because showing a correctly mined block, ie one with a nonce that satisfies the many-initial-zeroes hash, proves that you on average (you can be short term lucky) have a used a certain amount of computing power.

It proves it because with the selected algorithm, there's no known shortcut to just doing a load of hashes, so if you found one it means you did a lot of hashing.

What problem would you insert instead that had the same properties?

We should also not forget that it gets harder and harder for the same benefit. Any amount of energy can be poured into a PoW system. Invent fusion, use it all in crypto.


"Rent computational resource" could work with a verification of resource(s) step at the end of a set duration (block) and all of the computations performed using fully homomorphic encryption. If after the beginning of a block a random start time up to some max (~10 min) was selected for which the proving nodes would perform an operation to verify the resources were available and calculate the block hash instead of continuously burning, then at that starting time and for a set proving duration the verification algo would run and at the end the block would be distributed. Given the FHE was either running a paying program utilizing rented resources or the verification algo continuously, then it should not be possible to tell when the verification algo starts and stops. The non-FHE "gas" alternative that incentivizes performing program results to include in the hash has to have enough of an expected value that it would be prioritized over using the time to further calculate a minimal hash and the associated expected value for finding it without those gas incentivized transactions. The question is the FHE option more efficient than gas?


Is there a source of work that doesn't mind having its usage varied? And also will not be exhausted?


PoW algo could be Hashcash, which has not been "exhausted"? Not sure what "usage varied" means? To further elaborate on the proposal, from the block start time to verification start time x the miner would run say Mersenne solver, then from x to block end the miner would run verification algo, i.e. Hashcash. The Mersenne solver would have to run with less than or equal to the resource usage of the PoW algo, and if unable to equal then the PoW could also for example run in background. The computation is encrypted and the network traffic is encrypted. So, no way to determine that the verification algo time allocation is being "varied". Gas could still be used to prioritize work, but the idea is that most of the time the PoW algo is not running, and some other more economic algo is running. The PoW is being used for Proof of Capacity, unlike the claimed Chia coin PoC that continuously uses the capacity in a PoW manner rather than proving it and then offering or allowing it to be used for some other purpose in an interim. If the issue is the desire for the economic algo to be able to run continuously, then the nodes could be split into 2 or more groups. For two groups, one would run from time 0 to x and the other from 0 to y with x < y with y including the block from the x group in the block y produces. The x group would continue from x+verify duration to x_2+verify duration and including the y block in the x_2 block output, and so forth.


Sorry, I thought you meant the machines would be doing "real" work on behalf of some person renting it, rather than making Mersenne primes. If you have a fixed problem like that then of course it won't run out.

The problem then is more economics, who has an incentive to discover more Mersenne primes?


PoW is a closed feedback loop system. Doing PoW yields you a reward, that reward pays for energy, that energy runs your PoW. If PoW yields you anything other in addition to normal reward - for you as a miner the only rational thing is to run more PoW with it to get more rewards. That in turn will simply bump the difficulty such that any additional benefit yielded will match the additional required energy expenditure to get the reward.


One of the first I heard of was Primecoin [0], which still seems to be going along steadily. They've actually uncovered a number of world records [1] looking for Cunningham Chains.

[0] https://primecoin.io/

[1] https://primes.zone/#records


Started in 2013 as a fork from bitcoin. Current market capitalization is $4.4 million USD.


These are not unused cycles, these are cycles used to benchmark devices. If you benchmark with mersenne prime verification, you'll know how fast mersenne prime verification is and that's it. Most people don't use their devices for mersenne prime verification.


How is Mersenne prime verification useful? It’s in the same league as calculating pi to ever more enormous numbers of decimals…


Both of which are useful for verifying mathematical predictions.


Like that the digits of pi look a lot like the output of a random number generator? I don't think that prediction is seriously in dispute.



But generating yet more empirical data that it still seems pretty random out to digit n does nothing to advance us to a proof that pi is normal.


I'm not sure about that. Maybe there is a very unlikely pattern somewhere around the n-th digit?


You could find a sequence of 1000 zeroes in the decimal expansion of pi and it would do nothing to prove or refute the idea that pi is normal.


In case it’s of interest - Gapcoin’s [1] Proof of Work function arguably does useful work by searching for large prime gaps of record merit ... “As of December 2017, the largest known merit value and first with merit over 40, as discovered by the Gapcoin network, is 41.93878373 with the 87-digit prime 293703234068022590158723766104419463425709075574811762098588798217895728858676728143227. The prime gap between it and the next prime is 8350” [2] [1] https://gapcoin-project.github.io/ [2] https://en.wikipedia.org/wiki/Prime_gap


Benchmarking really does need repeated inputs and outputs. Otherwise you can't make a meaningful comparison between the systems that ran the test.

You can use these distributed computing projects for burn-in testing though. When you just want to run your computer hard to make sure it can manage N hours at 100%, and don't necessarily need to know how it compares to others, distributed computing can work (although, there's some risk of wrong results and therefore more work for the organizers if you're testing your system in extreme conditions, sometimes those lead to miscalculations)


There has been a lot of work on "proof of useful work" coins. https://gridcoin.us/ is the popular one. The benchmark idea doesn't work for the reasons other commenters raise.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: