-
Notifications
You must be signed in to change notification settings - Fork 449
CreditNotes
Some random notes about credit.
Consider these goals:
- Project neutrality: a given host should get the same credit/day from any project.
- Device neutrality: a given job should get the same credit on different hosts.
Consider the following scenario:
- Two projects and two hosts
- Host A runs both projects' jobs in 1 hour.
- Host B runs project 1's jobs in 1 hour, and project 2's job in 10 hours.
Project neutrality says that both projects must grant host A the same credit per job. Then device neutrality says that both projects must grant host B the same credit per job. But that violates project neutrality for host B.
So the two goals are inconsistent; we can't satisfy them both.
We've had two "credit philosophies":
Credit for FLOPs performed:: this provides device neutrality (more or less).
Credit for peak FLOPS * time:: this provides project neutrality.
Neither approach is adequate by itself. We need to find something in the middle.
Extending the above example: suppose
- the 2 hosts both have the same peak FP speed (say 1 GFLOPS).
- project 1's app runs with 100% efficiency on both hosts
- project 2's app runs with 100% efficiency on host A and 10% efficiency on host B (say, because of its memory access pattern)
How much credit should the various jobs get? It depends.
If almost all hosts are like host B, then project 2's jobs should get almost 10 times as much; after all, they cost most volunteers 10 times as much electricity.
If almost all hosts are like host A, then project 2's jobs should get about as much as project 1's.
Let's try to quantify this.