Commit Graph

16 Commits

Author SHA1 Message Date
David Anderson 678d880c64 - client: clean up logic related to GPU available memory.
If a driver call to get available mem fail, mark the GPU as unusable.


svn path=/trunk/boinc/; revision=21210
2010-04-19 18:35:10 +00:00
David Anderson d4bb95d5a6 - client: when a GPU job finishes, clear the "schedule backoff"
of other jobs of that type.
		They're waiting for GPU RAM, which may now be available.
	- client: bug fix in GPU RAM availability
	- client: fix testing setup for GPU RAM availability

svn path=/trunk/boinc/; revision=21206
2010-04-18 05:29:29 +00:00
David Anderson 01402bb45a - client: improve GPU scheduling
old: assign GPUs, then check available RAM
        Problem: may cause starvation on multi-GPU systems.
    new: use available RAM info in the assignment process.
        Prevents starvation, also reduces the number of driver calls.

svn path=/trunk/boinc/; revision=21205
2010-04-18 03:00:33 +00:00
David Anderson be0d0c7d71 - client: fix bug in mechanism that inhibits work fetch
for a GPU if it lacks available memory

svn path=/trunk/boinc/; revision=21197
2010-04-16 21:56:58 +00:00
Charlie Fenton 6802a2fc0b client: fix build break
svn path=/trunk/boinc/; revision=21190
2010-04-15 23:07:29 +00:00
David Anderson 02717af2f3 - bug fixes
svn path=/trunk/boinc/; revision=21187
2010-04-15 21:58:44 +00:00
David Anderson dc0b76494c - client: if suspend a file xfer, set upload_offset to -1;
that way it will query server for file length when it resumes,
		rather than uploading from the beginning
	- client: back out SEH handling for GPU detection

svn path=/trunk/boinc/; revision=20750
2010-02-27 01:04:14 +00:00
Rom Walton 04b6570f96 - client: Add SEH handlers around the Nvidia and ATI detection
routines.  Take care of situations where something within
        the vendors functions cause a crash.
        
    client/
        coproc_detect.cpp

svn path=/trunk/boinc/; revision=20744
2010-02-26 18:03:39 +00:00
Rom Walton 3f89b88fff - client: newer ATI drivers crash if struct_size isn't filled out
before the structure is used.
        
    client/
        coproc_detect.cpp

svn path=/trunk/boinc/; revision=20388
2010-02-02 21:16:02 +00:00
David Anderson 20d6b06f5f - client: initial checkin for "don't compute if CPU usage above X"
svn path=/trunk/boinc/; revision=20192
2010-01-19 00:03:38 +00:00
David Anderson 10ed3004c6 - client: ATI available RAM wasn't being detected correctly
svn path=/trunk/boinc/; revision=20061
2010-01-03 17:46:11 +00:00
Charlie Fenton 033804ccda client: add missing dlsym of cuMemGetInfo() on non_Windows platforms
svn path=/trunk/boinc/; revision=19953
2009-12-17 09:58:56 +00:00
David Anderson ff39c80efb - client: ATI: call calShutdown() when done.
Otherwise Lenovo can't switch to low-power GPU

svn path=/trunk/boinc/; revision=19896
2009-12-14 17:15:55 +00:00
David Anderson 8520644cf0 svn path=/trunk/boinc/; revision=19865 2009-12-11 22:56:46 +00:00
David Anderson a151ad6cb3 - client/scheduler: deal with situation where GPU has enough
RAM to run job, but when we actually run the job
    not enough GPU RAM is free, so the application fails.
    This can cause a large number of jobs to fail.
    Solution:
    - app_plan() can specify the GPU RAM requirements of an app version.
        This is passed to the client in a new field
        <gpu_ram> of the <app_version> element.
    - prior to starting or restarting a GPU app, the client
        checks the amount of free RAM on the particular GPU.
        If it's not enough for the app version,
        the client doesn't start it,
        and arranges for the scheduler to ignore it for 5 minutes
        (by which point there might be more free GPU RAM)
    Notes:
    1) this change will have effect only when
        both client and scheduler are updated.
    2) the check is done in enforce_schedule(),
        rather than schedule_cpus(),
        because only at that point
        have we assigned a specific GPU to the job.
    3) there's another case to deal with:
        a GPU app's malloc of GPU RAM fails in the middle of the job.
        Currently the job fails.
        I plan to add an API call boinc_temporary_exit(x) so
        that the job can exit and potentially restart in x seconds.
        (In principle this mechanism is sufficient for all cases,
        but it could lead to a lot of starting/exiting,
        so the current change is worthwhile).

svn path=/trunk/boinc/; revision=19864
2009-12-11 22:45:59 +00:00
David Anderson 95579e7ebe svn path=/trunk/boinc/; revision=19795 2009-12-07 00:49:36 +00:00