Changes between Version 22 and Version 23 of CreditNew
- Timestamp:
- Mar 8, 2010, 4:37:13 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CreditNew
v22 v23 7 7 For GPUs, it's given by a manufacturer-supplied formula. 8 8 9 However, other factors affect application performance. 10 For example, applications access memory, 11 and the speed of a host's memory system is not reflected 12 in its Whetstone score. 9 Other factors, 10 such as the speed of a host's memory system, 11 affect application performance. 13 12 So a given job might take the same amount of CPU time 14 13 and a 1 GFLOPS host as on a 10 GFLOPS host. … … 22 21 Notes: 23 22 24 * The peaks FLOPS of a device is single or double precision,25 whichever is higher.23 * For our purposes, the peak FLOPS of a device 24 is single or double precision, whichever is higher. 26 25 Differentiating between single and double would unnecessarily 27 26 complicate things, and the distinction will disappear soon anyway. … … 97 96 98 97 * Limited project neutrality: different projects should grant 99 about the same amount of credit per CPUhour, averaged over hosts.98 about the same amount of credit per host-hour, averaged over hosts. 100 99 Projects with GPU apps should grant credit in proportion 101 100 to the efficiency of the apps. 102 101 (This means that projects with efficient GPU apps will 103 grant more credit on average. That's OK).102 grant more credit than projects with inefficient apps. That's OK). 104 103 105 104 == Peak FLOP Count (PFC) == … … 140 139 the granted credit per job is adjusted 141 140 so that the average is the same for each version. 142 The adjustment is always downwards: 143 we maintain the average PFC^mean^(V) of PFC() for each app version V, 144 find the minimum X. 141 142 We maintain the average PFC^mean^(V) of PFC() for each app version V. 143 We periodically compute PFC^mean^(CPU) and PFC^mean^(GPU), 144 and let X be the min of these. 145 145 An app version V's jobs are then scaled by the factor 146 146 147 147 S(V) = (X/PFC^mean^(V)) 148 149 148 150 149 The result for a given job J 151 150 is called "Version-Normalized Peak FLOP Count", or VNPFC(J): 152 151 153 VNPFC(J) = PFC(J) * (X/PFC^mean^(V))152 VNPFC(J) = S(V) * PFC(J) 154 153 155 154 Notes: … … 174 173 so it's probably better not to. 175 174 176 177 175 == Cross-project normalization == 178 176 … … 190 188 then for each version V we let 191 189 S(V) be the average scaling factor 192 for that GPU typeamong projects that do have both CPU and GPU versions.190 for that plan class among projects that do have both CPU and GPU versions. 193 191 This factor is obtained from a central BOINC server. 194 192 V's jobs are then scaled by S(V) as above. … … 196 194 Notes: 197 195 198 * Projects will run a periodic script to update the scaling factors. 199 * Rather than GPU type, we'll probably use plan class, 196 * wu use plan class, 200 197 since e.g. the average efficiency of CUDA 2.3 apps may be different 201 198 than that of CUDA 2.1 apps. 202 199 * Initially we'll obtain scaling factors from large projects 203 200 that have both GPU and CPU apps (e.g., SETI@home). 204 Eventually we'll use an average (weighted by work done) over multiple projects205 (see below).201 Eventually we'll use an average (weighted by work done) 202 over multiple projects (see below). 206 203 207 204 == Host normalization == 208 205 209 Assuming that hosts are sent jobs for a given app uniformly, 210 then, for that app, 211 hosts should get the same average granted credit per job.212 To ensure this, for each app lication A we maintain the average VNPFC^mean^(A),213 and for each host H we maintain VNPFC^mean^(H, A).206 The second normalization is across hosts. 207 Assume jobs for a given app are distributed uniformly among hosts. 208 Then the average credit per job should be the same for all hosts. 209 To ensure this, for each app version V and host H 210 we maintain PFC^mean^(H, A). 214 211 The '''claimed FLOPS''' for a given job J is then 215 212 216 F = VNPFC(J) * ( VNPFC^mean^(A)/VNPFC^mean^(H, A))213 F = VNPFC(J) * (PFC^mean^(V)/PFC^mean^(H, A)) 217 214 218 215 and the claimed credit (in Cobblestones) is … … 221 218 222 219 There are some cases where hosts are not sent jobs uniformly: 220 223 221 * job-size matching (smaller jobs sent to slower hosts) 224 222 * GPUGrid.net's scheme for sending some (presumably larger) … … 228 226 229 227 This can be done by dividing 230 each sample in the computation of VNPFC^mean^ by WU.rsc_fpops_est228 each sample in the computation of PFC^mean^ by WU.rsc_fpops_est 231 229 (in fact, there's no reason not to always do this). 232 230 … … 236 234 and increases the claimed credit of hosts that are more efficient 237 235 than average. 238 * VNPFC^mean^ is averaged over jobs, not hosts.236 * PFC^mean^ is averaged over jobs, not hosts. 239 237 240 238 == Computing averages == … … 248 246 * A given sample may be wildly off, 249 247 and we can't let this mess up the average. 250 * Averages should be weighted by job size.251 248 252 249 In addition, we may as well maintain the variance of the quantities, … … 452 449 453 450 == Compatibility == 451