Commit Graph

36 Commits

Author SHA1 Message Date
David Anderson b7a2c227ca - Work fetch / scheduler:
There are two mechanisms to prevent the scheduler from
    sending jobs that won't finish by their deadline.
    Simple mechanism:
        The client sends the interval x for which CPUs are projected
        to be saturated.
        Given a job with estimated duration y,
        the scheduler doesn't send it if x + y exceeds the delay bound.
        If it does send it, x is incremented by y.
    Complex mechanism:
        Client sends workload description.
        Scheduler does EDF simulation, sees if deadlines are missed.
        The only project using this AFAIK is BOINC alpha test.
    Neither of these mechanisms takes coprocessors into account,
    and as a result jobs could be sent that are doomed to
    miss their deadline.
    This checkin adds coprocessor awareness to the Simple mechanism.

    Changes:
    Client:
        compute estimated delay (i.e. time until non-saturation)
        for coprocessors as well as CPU.
        Send them in scheduler request as part of coproc descriptor.
    Scheduler:
        Keep track of estimated delays separately for different resources
- client: fixed bug that computed CPU estimated delay incorrectly
- client: the work request (req_secs) for a resource is the min
    of the project's share and the shortfall.

svn path=/trunk/boinc/; revision=17086
2009-01-30 21:25:24 +00:00
David Anderson 574d1fe087 - client: don't request work for a resource if it has no shortfall.
- client and server: get rid of coproc_cuda global.

svn path=/trunk/boinc/; revision=17019
2009-01-26 05:00:49 +00:00
David Anderson f90dddc9a6 - client: clamp long term debts tp +- 1 week
- client: fix CUDA debt calculation
- client: don't accumulate debt if project->dont_request_more_work
- client: improves messages

svn path=/trunk/boinc/; revision=16909
2009-01-14 23:56:07 +00:00
David Anderson 377545a056 - scheduler: if we're not sending work because of the user's "no GPUs" pref,
tell them so.
- scheduler: fix bug that caused no CUDA jobs to be sent

svn path=/trunk/boinc/; revision=16893
2009-01-12 23:47:52 +00:00
David Anderson 2cc81a97d5 - scheduler: initialize COPROC fields
svn path=/trunk/boinc/; revision=16891
2009-01-12 23:08:16 +00:00
David Anderson 8740ffdc94 - client: more work-fetch stuff.
No more per-project shortfall.
    It's getting pretty close.

svn path=/trunk/boinc/; revision=16765
2009-01-03 06:01:17 +00:00
David Anderson 8c591e31df - client: first whack at new work-fetch logic. Very preliminary.
svn path=/trunk/boinc/; revision=16754
2008-12-31 23:07:59 +00:00
David Anderson fae0903c0f - scheduler: store CUDA total memory as a double,
since it can be 4GB or larger


svn path=/trunk/boinc/; revision=16737
2008-12-22 22:12:57 +00:00
David Anderson 4a65681176 - scheduler: if client has coprocs,
put a textual summary of them in host.serialnum (currently unused)
- web: show coprocs on host detail page
- db_dump: include coproc info in host XML

svn path=/trunk/boinc/; revision=16697
2008-12-16 18:46:28 +00:00
David Anderson b3bc71047e - client, CUDA detection:
1) report all devices found
    2) use the specs of the fastest one

svn path=/trunk/boinc/; revision=16669
2008-12-11 21:44:22 +00:00
David Anderson 63a81014fe - line endings
svn path=/trunk/boinc/; revision=16176
2008-10-09 19:06:01 +00:00
David Anderson 6070af4fea - client: fix bugs in coprocessor scheduling;
add new <coproc_debug> log flag

svn path=/trunk/boinc/; revision=16122
2008-10-03 21:55:34 +00:00
David Anderson a4d5d49b28 - client: attempt to fix CPU sched bug in the presence of GPUs
(if there was an idle GPU, it would run unboundedly many CPU jobs)

svn path=/trunk/boinc/; revision=16043
2008-09-25 01:04:53 +00:00
Eric J. Korpela 40e243412d - Fixed fcgi builds to use an installed version of fcgi_stdio.h rather than
a modified boinc version.
    - Added new header "boinc_fcgi.h" to be used instead of "fcgi_stdio.h".
      This header defines I/O functions in the namespace FCGI rather than using
      redefined functions the way "fcgi_stdio.h" does.  This was causing a lot
      of headaches when both <cstdio> and "fcgi_stdio.h" was called.  Using
      overloaded functions fixes this problem, except when the only difference
      between functions is the return type (for example ::fopen() returns FILE*
      and FCGI::fopen() returns FCGI_FILE*).
    - Fixed some missing "#ifdef _WIN32" blocks in filesys.C



svn path=/trunk/boinc/; revision=15984
2008-09-09 19:10:42 +00:00
Rom Walton 481e45a50a - client: Both Windows x86 and Windows x64 CUDA Runtime libraries
should be 2.0.  This avoids crashes related to data structure
        changes in the Runtime.
        
    coprocs/CUDA/mswin/Win32/Debug/bin/
        cudart.dll
    coprocs/CUDA/mswin/Win32/Release/bin/
        cudart.dll
    coprocs/CUDA/mswin/Win32/ReleaseSigned/bin/
        cudart.dll
    coprocs/CUDA/mswin/x64/Debug/bin/
        cudart.dll
    coprocs/CUDA/mswin/x64/Release/bin/
        cudart.dll
    coprocs/CUDA/mswin/x64/ReleaseSigned/bin/
        cudart.dll
    lib/
        coproc.C, .h

svn path=/trunk/boinc/; revision=15925
2008-08-22 22:15:08 +00:00
David Anderson 87cf35f89b - client: fix CPU scheduling logic related to coprocessors
Old: when checking whether an app can be run,
        check for sufficient coprocessors relative to
        the current coprocessor usage.
        Bug: it there are 2 CUDA jobs,
        the scheduler will decide to run both.
        enforce_scheduler() will only be able to run one,
        and the other CPU will be idle.
    New: include coprocessor usage (along with RAM and CPUs)
        in the check, and do a simulated reservation.
        In the above scenario, the scheduler will select
        one CUDA app and one non-CUDA app.

svn path=/trunk/boinc/; revision=15904
2008-08-20 17:34:18 +00:00
David Anderson 4f66bb4c95 - added copyright and license info to .C, .cpp, .h files
- scheduler: fix bug in adaptive replication:
    if send an unreplicated job to untrusted host,
    set both wu.target_nresults and wu.min_quorum to app.target_nresults.

svn path=/trunk/boinc/; revision=15762
2008-08-06 18:36:30 +00:00
David Anderson 6c0731e82e - client: bug fixes to the above
- client: better messages reporting coprocessors
    - manager: bounds checks to avoid wxwidgets asserts
        when job CPU estimates are absurdly large

svn path=/trunk/boinc/; revision=15644
2008-07-21 19:56:01 +00:00
David Anderson 0496591da2 - client: if an app is using CUDA coprocessors,
pass it additional command line arg(s) "--device X" (X=0,1,...)
    to tell it which GPU(s) to use.

svn path=/trunk/boinc/; revision=15642
2008-07-21 16:25:03 +00:00
David Anderson d0ca745a0b - client, Linux: change CUDA probing.
libcudart{32,64}.so is bundled with client.
    client loads it and if successful calls the device-query functions.
- client, Linux: append the current directory
    (i.e., the BOINC data directory) to the LD_LIBRARY_PATH for apps.
    This goes after the project dir and the slot dir.
    This lets apps link to libcudartX.so.
    NOTE: this is not recommended; better to include it with your app.
- client: allow for multiple messages from coproc probing
- fixed indentation in cs_platforms.C


svn path=/trunk/boinc/; revision=15591
2008-07-10 21:57:18 +00:00
David Anderson fced9b663d - fix gcc warnings
svn path=/trunk/boinc/; revision=15493
2008-06-26 19:27:23 +00:00
David Anderson 48675cea31 - client: print msgs if can't find CUDA libs
svn path=/trunk/boinc/; revision=15446
2008-06-23 02:41:34 +00:00
David Anderson 18d6f5e708 - client: handle coprocs in RR simulation. Not tested.
TODO: handle multithread apps in RR simulation; should be easy now.

svn path=/trunk/boinc/; revision=15288
2008-05-23 22:03:27 +00:00
David Anderson c01e75ec4c - client: shuffle code to abstract coprocessor reservation
svn path=/trunk/boinc/; revision=15287
2008-05-23 21:24:36 +00:00
David Anderson 6ab203081d - client part of the above
svn path=/trunk/boinc/; revision=15169
2008-05-09 21:07:15 +00:00
David Anderson d2a02a5184 - client and server: in coprocessor records, change "name" to "type"
to avoid confusion with "name" field of CUDA.
    This is a bug fix - please port.
- start script: don't error out if run_state.xml file is empty
    (which happens if project runs out of disk space)

svn path=/trunk/boinc/; revision=15168
2008-05-09 20:54:52 +00:00
David Anderson fa6d38a51e - scheduler: fix FCGI compile problem.
FCGI can't use libboinc.a; is needs its own specially-compiled
    versions of everything in lib/


svn path=/trunk/boinc/; revision=15066
2008-04-17 15:43:51 +00:00
David Anderson b33276bee3 - compile fixes for gcc 4.x; fixes #592
svn path=/trunk/boinc/; revision=15007
2008-04-02 19:33:12 +00:00
David Anderson 5b92f66bf9 - client: finish and debug coprocessor support
- manager and GUI RPC: show plan class in app version string

svn path=/trunk/boinc/; revision=14994
2008-04-01 20:46:41 +00:00
David Anderson 9fa202d8f0 - client: add coprocessor support: i.e., parse the list of coprocs
in <app_version>s from the server,
    keep track of the number free of each type of coproc,
    and don't run an app that needs more than are available.
    (not quite working yet)

svn path=/trunk/boinc/; revision=14992
2008-04-01 15:08:47 +00:00
David Anderson 6af9f66b4e - DB/feeder/scheduler: change app_version.xml_doc from blob to mediumblob,
and change the correspending structure field from 64KB to 256KB
    (could increase this if needed).
    This is needed to handle app versions with lots (> 100) of files
- change LARGE_BLOB_SIZE to BLOB_SIZE a bunch of places
- Change COPROCS from vector<COPROC> to vector<COPROC*>.
    Otherwise the right virtual functions of COPROCs don't get called

svn path=/trunk/boinc/; revision=14986
2008-03-31 16:19:45 +00:00
David Anderson b91809d3c4 - try to get API to compile on Cygwin
svn path=/trunk/boinc/; revision=14982
2008-03-29 21:53:45 +00:00
David Anderson 61663b48f9 - client: debug coprocessor code
svn path=/trunk/boinc/; revision=14981
2008-03-28 21:22:48 +00:00
David Anderson ca516450e4 - some debugging code
svn path=/trunk/boinc/; revision=14980
2008-03-28 20:20:10 +00:00
David Anderson cc2f1a20a0 - lib: moved "run program as user" stuff to a separate file,
so it doesn't screw up the linkage of apps that don't use it
- start of server-side support for coprocessors

svn path=/trunk/boinc/; revision=14878
2008-03-10 21:59:27 +00:00
David Anderson c685f66384 - client: preliminary support for detecting and reporting coprocessors
(for now, CUDA devices)

svn path=/trunk/boinc/; revision=14876
2008-03-10 20:40:35 +00:00