Just a suggestion ,it would be nice to add a flops statement to the app_info.xml.Because BOINC still doesn't have a separate CPU / GPU scheduler, the flops statement is essential is you have a faster GPU installed. Without the flops, I see GPU tasks planned for almost 3 hours, as they take only 15 minutes or less, this causes the scheduler to request no GPU tasks.
Quote from: Fred M on 06 Dec 2009, 05:13:59 amJust a suggestion ,it would be nice to add a flops statement to the app_info.xml.Because BOINC still doesn't have a separate CPU / GPU scheduler, the flops statement is essential is you have a faster GPU installed. Without the flops, I see GPU tasks planned for almost 3 hours, as they take only 15 minutes or less, this causes the scheduler to request no GPU tasks.Have been thinking about *something* along those lines, so it must be a good idea . It's on a pretty long list of stuff that needs looking at ... Have not managed to work out how to best determine a default entry ... I'm hoping to avoid having to parse boinc state files (as they can be problematic for a few reasons) and installer parsing capabilities aren't easy to program.It might be best to leave that to a separate small GUI app (perhaps optionally installed in installer & run after setup. ) which could be run even sometime after installation (for 'recalibration' to new hardware etc, could evolve into kindof a control panel applet or similar). If that looks like the way to go (when I get to it), then I'll lliase with Richard Haselgrove on the latest best defaults. Since I've been preoccupied with my own 'fiddling', rather than concerned with how flops is dealt with now that new Boinc versions seem to have multipled the performance of my card by five for no apparent technical/practical purpose other than marketing .Jason
The easiest way is by a GPU card list, because as you already stated, the reported values are not very accurate, but have to be as high as possible, marketing wise.If you are interested I could help you with some things, I have some experience. Detecting the nVidia and AMD cards is fairly easy to do.
Have been thinking about *something* along those lines, so it must be a good idea . It's on a pretty long list of stuff that needs looking at ... Have not managed to work out how to best determine a default entry ... I'm hoping to avoid having to parse boinc state files (as they can be problematic for a few reasons) and installer parsing capabilities aren't easy to program.
It might be best to leave that to a separate small GUI app (perhaps optionally installed in installer & run after setup. ) which could be run even sometime after installation (for 'recalibration' to new hardware etc, could evolve into kindof a control panel applet or similar). If that looks like the way to go (when I get to it), then I'll lliase with Richard Haselgrove on the latest best defaults. Since I've been preoccupied with my own 'fiddling', rather than concerned with how flops is dealt with now that new Boinc versions seem to have multipled the performance of my card by five for no apparent technical/practical purpose other than marketing .Jason
Quote from: Jason G on 06 Dec 2009, 05:36:10 amHave been thinking about *something* along those lines, so it must be a good idea . It's on a pretty long list of stuff that needs looking at ... Have not managed to work out how to best determine a default entry ... I'm hoping to avoid having to parse boinc state files (as they can be problematic for a few reasons) and installer parsing capabilities aren't easy to program.Agreed, parsing state files is a pain. The 'correct' way to do it within BOINC would be a GUI_RPC: but - I've just done one with <get_host_info> (against v6.10.21), and it only mentions the CPU. No reference to the CUDA card at all!!Fred - please check and confirm: they've forgotten to add any GPU information to the standard GUI_RPC calls (<get_state> says nothing either). I'll check with DA, too.Pending that, there is no way of getting GPU information even by file parsing - it would have to be direct detection. I would suggest it would be better to query the card(s) directly for shaders/speeds/compute capability, and impute a figure from that - like the old BOINC 'est flops' figure, peak is useless - rather than working from a look-up list which would be difficult to maintain and go rapidly out of date.Quote from: Jason G on 06 Dec 2009, 05:36:10 amIt might be best to leave that to a separate small GUI app (perhaps optionally installed in installer & run after setup. ) which could be run even sometime after installation (for 'recalibration' to new hardware etc, could evolve into kindof a control panel applet or similar). If that looks like the way to go (when I get to it), then I'll lliase with Richard Haselgrove on the latest best defaults. Since I've been preoccupied with my own 'fiddling', rather than concerned with how flops is dealt with now that new Boinc versions seem to have multipled the performance of my card by five for no apparent technical/practical purpose other than marketing .JasonHappy to work with you on it when the time comes. Remember also that effective flops are strongly dependent on the version of the CUDA .DLLs in use, and judging by recent reports, driver version as well (195.xx on Win7 is horribly slow, I read - but that may just be FUD).
I checked the source for the GET_HOST_INFO and it only has information about the CPU stored.There is some info in the message log, that can be read by RPC calls, but you can only do that after stopping and restarting the BOINC client.But I don't know how accurate this info is. Do you know of any plans of making the GPU processing self learning. e.g. add a separate correction factor in the BOINC Client. That would be the best way to go.Otherwise there are several options, one is read the capabilities of the card directly and make a calculated guess of the actual flops to fill in the xml file.And I have noticed a performance difference in XP and WIN 7 that is considerable, maybe 10 - 20%. But that will improve after they have solved the problem of making it work at all.
Jorden has reminded us that you can get a sneak preview of the fields that should be in the RPC by looking at a project sched_request.xml file.
There is a flops value in the file, per application. But it can be the manually placed value or the system value.And the original system value is about a factor 10 off from the one it should be on my system. Another problem is that you have to be lucky enough, that there is a cuda task in the scheduler file.
Quote from: Fred M on 06 Dec 2009, 12:04:50 pmThere is a flops value in the file, per application. But it can be the manually placed value or the system value.And the original system value is about a factor 10 off from the one it should be on my system. Another problem is that you have to be lucky enough, that there is a cuda task in the scheduler file.Just thinking, another option is to obtain/calculate the values we need programmatically through CudaAPI. Not sure what Boinc uses now, but IIRC the first releases derived a value from the clocks & number of multiprocessors. I think it may be most reliable if we calcuate it ourselves and scale as required. Being independant of Boinc, it should be simpler than processing Boinc files that may be subject to change in content or backend value/meaning per Boinc version. The other appeal of, to me, is that it should (at least partially) work for unknown/unlisted/unreleased cards, which might be an advantage over using lookup tables too ( less maintenance, i.e. not having to make a new release everytime nVidia releases/renames a card) ... it should also account for OC.Thoughts ?
<coprocs> <coproc_cuda> <count>1</count> <name>GeForce 9800 GTX/9800 GTX+</name> <req_secs>25769.711159</req_secs> <req_instances>0.000000</req_instances> <estimated_delay>0.000000</estimated_delay> <drvVersion>19038</drvVersion> <cudaVersion>2030</cudaVersion> <totalGlobalMem>536543232</totalGlobalMem> <sharedMemPerBlock>16384</sharedMemPerBlock> <regsPerBlock>8192</regsPerBlock> <warpSize>32</warpSize> <memPitch>262144</memPitch> <maxThreadsPerBlock>512</maxThreadsPerBlock> <maxThreadsDim>512 512 64</maxThreadsDim> <maxGridSize>65535 65535 1</maxGridSize> <totalConstMem>65536</totalConstMem> <major>1</major> <minor>1</minor> <clockRate>1890000</clockRate> <textureAlignment>256</textureAlignment> <deviceOverlap>1</deviceOverlap> <multiProcessorCount>16</multiProcessorCount> </coproc_cuda></coprocs>
...It looks these values don't have much to do with the actual calculation speed. More like theoretical values out of the sales brochure....