Commit Graph

106 Commits

Author SHA1 Message Date
David Anderson 3b906a191c - client: generalize the GPU framework so that
- new GPU types can be added easily
		- users can specify GPUs in cc_config.xml,
			referred to by app_info.xml,
			and they will be scheduled by BOINC
			and passed --device N options
			Note: the parsing of cc_config.xml is not done yet.
		- RPC protocols (account manager and scheduler)
			can now specify GPU types in separate elements
			rather than embedding them in tag names
			e.g. <no_rsc>NVIDIA</no_rsc> rather than <no_cuda/>
	- client: in account manager replies, parse elements of the form
		<no_rsc>NAME</no_rsc>
		indicating the GPUs of type NAME should not be used.
		This allows account managers to control GPU types
		not hardwired into the client.
		Note: <no_cuda/> and <no_ati/> will continue to be supported.
	- scheduler RPC reply: add
		<no_rsc_apps>NAME</no_rsc_apps>
		(NAME = GPU name)
		to indicate that the project has no jobs for the indicated GPU type.
		<no_cuda_apps> etc. are still supported 
	- client/lib: remove set_debts() GUI RPC
	- client/scheduler RPC
		remove <cuda_backoff> etc. (superceded by no_app)
		Exception: <ip_result> elements in sched request
		still have <ncudas> and <natis>.
		Fix this later.

	Implementation notes:
	- client/lib: change "CUDA" to "NVIDIA" in type/variable names, and in XML
		Continue to recognize "CUDA" for compatibility
	- host_info.coprocs no longer used within the client;
		use a global var (COPROCS coprocs) instead.
		COPROCS now has an array of COPROCs;
		GPUs types are identified by the array index.
		Index zero means CPU.
	- a bunch of other resource-specific structs (like RSC_WORK_FETCH)
		are now stored in arrays, with same indices as COPROCS
		(i.e. index 0 is CPU)
	- COPROCS still has COPROC_NVIDIA and COPROC_ATI structs to hold vendor-specific info
	- APP_VERSION now has a struct GPU_USAGE to describe its GPU usage

svn path=/trunk/boinc/; revision=23253
2011-03-25 03:44:09 +00:00
David Anderson 046dc09202 - client: fix bug in setting GPU peak flops
svn path=/trunk/boinc/; revision=22950
2011-01-27 20:00:42 +00:00
David Anderson 396dc5a8b4 svn path=/trunk/boinc/; revision=22895 2011-01-12 01:17:07 +00:00
David Anderson 40c50852f5 - scheduler: fix logic that deals with jobs that need > 2GB RAM.
My change of 1 Oct ([22440]) required that such jobs
    be processed with 64-bit apps,
    on the assumption that 32-bit apps have a 2 GB user address space limit.
    However, it turns out this limit applies only to Windows
    (kernel and user mode share the 4GB address space; each gets half).
    On Linux, the split is 3GB user / 1 GB kernel.
    On Mac OS X, user mode and kernel mode have separate address spaces,
    each of them 4 GB.


svn path=/trunk/boinc/; revision=22599
2010-10-27 22:58:16 +00:00
David Anderson 3de15a592d - client simulator: various fixes
svn path=/trunk/boinc/; revision=22555
2010-10-19 15:48:33 +00:00
David Anderson f300ba4a74 - client: fix bug causing garbage values in ATI descriptions
svn path=/trunk/boinc/; revision=22446
2010-10-05 20:28:38 +00:00
David Anderson 9e0eee004e svn path=/trunk/boinc/; revision=22436 2010-09-30 22:28:19 +00:00
David Anderson c7e13eafb3 - client: write GPU info to client_state.xml,
so that it can be input file to the client simulator.

svn path=/trunk/boinc/; revision=22405
2010-09-23 20:54:49 +00:00
David Anderson 673d44ad0d - client: fix bug with --abort_jobs_on_exit that caused the client
to request new work on exit
- client: change "unparsed tag" to "unrecognized tag" in msgs
- client: get rid of unused var work_fetch_no_new_work

svn path=/trunk/boinc/; revision=22000
2010-07-19 16:44:43 +00:00
David Anderson 81973a9fff - scheduler: fix structural problems with sending user messages.
Old: various redundant and/or misleading messages were sent.
    New:
        - if host w/ no GPU contacts a GPU-only project,
            send high-pri message saying they need a GPU
        - if host w/ GPU has driver too old for all versions,
            send high-pri message saying to update driver
        - if host w/ GPU has driver too old for some versions,
            send low-pri message saying to update driver
        - if host has GPU but too little RAM for any app,
            send low-pri message saying so
- scheduler: revamp GPU plan class functions

svn path=/trunk/boinc/; revision=21760
2010-06-16 22:07:19 +00:00
David Anderson 40eebe00af - client/scheduler: in COPROCS, instead of having a vector of
pointers to dynamically allocated COPROC-derived objects,
    just have the objects themselves.
    Dynamic allocation should be avoided at all costs.

svn path=/trunk/boinc/; revision=21564
2010-05-18 19:22:34 +00:00
Rom Walton 9cb3e6ffc7 - client & lib: bring header inclusion up-to-date for the CC to begin
hunting down a memory leak.
        
    client/
        <Various Files>
    lib/
        <Various Files>

svn path=/trunk/boinc/; revision=21457
2010-05-11 19:10:29 +00:00
David Anderson e27659858d - result of code shuffle: the HOST_INFO structure returned
by the get_host_info() GUI RPC now contains GPU info

svn path=/trunk/boinc/; revision=19798
2009-12-07 06:13:17 +00:00
David Anderson b70229c093 - code shuffle: move client-specific GPU code to a separate file
svn path=/trunk/boinc/; revision=19794
2009-12-07 00:42:03 +00:00
David Anderson 4bf2ef5198 - client: add new config options:
<ignore_cuda_dev>n</ignore_cuda_dev>
    <ignore_ati_dev>n</ignore_ati_dev>
    to ignore (not use) specific NVIDIA or ATI GPUs.
    You can ignore more than one.

svn path=/trunk/boinc/; revision=19566
2009-11-12 23:44:49 +00:00
David Anderson 41f8561fb0 - Mac compile fix
svn path=/trunk/boinc/; revision=19557
2009-11-12 21:04:56 +00:00
David Anderson 8f89dc58d8 - client: fix yesterday's checkin to remove restrictions
on GUI RPC request elements.
    You can now use either <foo></foo> or <foo/>
    for empty request messages.
- GUI RPC client library: fix double-free bug.
    it's not clear how this ever worked.

svn path=/trunk/boinc/; revision=19543
2009-11-11 22:01:27 +00:00
Rom Walton 9f3283cf7c - Backout previous change. The problem doesn't yet manifest
itself on Windows and the change has too many implications.
        
    lib/
        boinc_in.h
        coproc.cpp
    win_build/
        *.vcproj

svn path=/trunk/boinc/; revision=19542
2009-11-11 20:51:03 +00:00
Rom Walton c73ea50c1b - On Windows treat all SEH exceptions as C++ style exceptions.
NOTE: I'll need to do a little more research and adjust the
          diagnostics stuff later.  I believe that the diagnostics
          framework will now always report an unhandled C++ exception
          for things like an Access Violation.
    - client: On Windows, recover from an Access Violation if/when 
        the GPU functions access violate.
        
    lib/
        boinc_in.h
        coproc.cpp
    win_build/
        *.vcproj

svn path=/trunk/boinc/; revision=19541
2009-11-11 20:33:12 +00:00
David Anderson a0e3c5ae8d - client (Mac/Linux): if the NVIDIA or ATI detection functions
cause a SIGSEGV, recover from it.

svn path=/trunk/boinc/; revision=19533
2009-11-10 23:26:10 +00:00
Rom Walton 03e1dfa0a2 - client: Use is_remote_desktop() instead of the various GPU functions
to determine when the client software has been switched into Remote
        Desktop mode and shutsdown GPU apps.  This will prevent App crashes.
        
    lib/
        coproc.cpp

svn path=/trunk/boinc/; revision=19339
2009-10-19 14:48:45 +00:00
David Anderson fe2a18f282 - client/scheduler: standardize the FLOPS estimate between NVIDIA and ATI.
Make them both peak FLOPS,
    according to the formula supplied by the manufacturer.

    The impact on the client is minor:
    - the startup message describing the GPU
    - the weight of the resource type in computing long-term debt

    On the server, I changed the example app_plan() function
    to assume that app FLOPS is 20% of peak FLOPS
    (that's about what it is for SETI@home)

svn path=/trunk/boinc/; revision=19310
2009-10-16 00:13:01 +00:00
Rom Walton 40c159c6b0 Quick Updates
svn path=/trunk/boinc/; revision=19308
2009-10-15 03:11:12 +00:00
David Anderson 700ecbab86 svn path=/trunk/boinc/; revision=19307 2009-10-14 21:14:34 +00:00
David Anderson 8edc613d91 svn path=/trunk/boinc/; revision=19306 2009-10-14 21:01:06 +00:00
David Anderson 4595b95c43 svn path=/trunk/boinc/; revision=19305 2009-10-14 20:27:52 +00:00
David Anderson 4537dedcd3 - update cal.h to current ATI code
svn path=/trunk/boinc/; revision=19304
2009-10-14 20:09:41 +00:00
David Anderson 9cd9a028b3 svn path=/trunk/boinc/; revision=19303 2009-10-14 19:29:37 +00:00
David Anderson d6efa7dabb - client: address the situation where GPUs become unusable
for certain periods (e.g. when Remote Desktop is used on Win).
    - add is_usable() member function to COPROC.
        Currently this just calls the respective (CUDA or CAL)
        initialization function.
        We need to check whether this works and/or causes problems.
    - in enforce_schedule(), check whether usability has changed
        for each GPU type.
        If we've gone from usable to unusable,
        flag all jobs for that GPU as coproc_missing
        (so they won't get run, and will quit if they're running).
        If we've gone from unusable to usable, clear the flag.
    This should deal with all cases except where
    the client is started up with GPUs unusable.
- scheduler: more query optimizations for locality scheduling
    (from Oliver Bock)

svn path=/trunk/boinc/; revision=19301
2009-10-14 18:07:49 +00:00
David Anderson 54b078d0af - client: add --unsigned_apps_ok cmdline option
and <unsigned_apps_ok> config option.
    This tells the client to allow unsigned apps.
    For testing.
    No file xfers or other network traffic will be allowed if set.
- client: add <exit_after_finish> option (same as cmdline flag)
- client: add <skip_cpu_benchmarks> option (same as cmdline flag)
- client: print message if abort past-deadline unstarted job
- client: improve message when have NVIDIA drivers but no GPU
    

svn path=/trunk/boinc/; revision=19276
2009-10-07 18:42:51 +00:00
David Anderson fb14ff8a7a - client: fix bug where if you change project "no CPU/NVIDIA/ATI"
prefs and update, the change wouldn't take effect until client restart.
	- client: fix bug in enforcement of "no CPU/NVIDIA/ATI" prefs

svn path=/trunk/boinc/; revision=19236
2009-10-03 00:19:11 +00:00
David Anderson fca2cb8016 - client: restore calDeviceGetInfo(), add its info to COPROC_ATI struct
(some plan class might need to know this).
    Code cleanup.

svn path=/trunk/boinc/; revision=19234
2009-10-02 22:58:03 +00:00
Rom Walton f810629e92 - lib: Add additional ATI descriptions.
- lib: Fix some inaccurate ATI capabilities in certain cards.
        (From: Andreas a.k.a Gipsel)
        
    lib/
        coproc.cpp


svn path=/trunk/boinc/; revision=19228
2009-10-01 20:04:46 +00:00
Rom Walton 2b6f430094 - client: fix a handle leak I just introduced.
(From: Andreas a.k.a Gipsel)
        
    lib/
        coproc.cpp

svn path=/trunk/boinc/; revision=19226
2009-10-01 19:15:42 +00:00
Rom Walton 2c9f5ed224 - client: only support one of the ati13* plan classes at a time.
A couple users had not updated their amdcal* runtime libraries
        after upgrading catalyst drivers.  This was leading to crashes
        of the project applications when work was supplied looking
        for the old DLL names.
        
    lib/
        coproc.cpp

svn path=/trunk/boinc/; revision=19225
2009-10-01 15:22:01 +00:00
Rom Walton 5a54302bf6 - client: fix bug in coproc summary string.
lib/
        coproc.cpp

svn path=/trunk/boinc/; revision=19209
2009-09-29 15:28:56 +00:00
David Anderson 71c7e7a74b - client/scheduler/web: add per-project preferences for whether
to accept CPU, NVIDIA and ATI jobs.
    These prefs are shown only where relevant:
    e.g., only for processor types for which the project has app versions,
    and if it has versions for only one type, no pref is shown.

    These prefs affect both client and scheduler.
    The client won't ask for work for a device blocked by prefs,
    and the scheduler won't send it.

    This replaces earlier optional project-specific prefs for
    "no CPU jobs" and "no GPU jobs".
    (However, these prefs continue to be honored on the server side).

- client: if NVIDIA driver is unknown, say that rather than 0


svn path=/trunk/boinc/; revision=19194
2009-09-28 04:24:18 +00:00
David Anderson 8874e4bcf3 svn path=/trunk/boinc/; revision=19168 2009-09-25 17:41:16 +00:00
David Anderson 64559c7da8 - client: improve ATI description strings (from Andreas)
svn path=/trunk/boinc/; revision=19166
2009-09-25 17:13:48 +00:00
Rom Walton e79079dfbf Commit missing piece of code, I had written them before the first commit.
svn path=/trunk/boinc/; revision=19165
2009-09-25 16:57:24 +00:00
David Anderson 348f6e6db8 - scheduler: fix app_plan() bug, improve ATI-related msgs
svn path=/trunk/boinc/; revision=19164
2009-09-25 16:35:43 +00:00
Rom Walton 8c283226c3 - lib: fix build break.
lib/
        coproc.cpp

svn path=/trunk/boinc/; revision=19163
2009-09-25 16:10:18 +00:00
Rom Walton ad455ab09d - client: Add support for checking for both amd* prefixed CAL libraries
and ati* prefixed CAL libraries.
    - scheduler: redefine ati class plans again.
        ati: CAL 1.0+, amd* prefixed libraries
        ati13amd: CAL 1.3+, amd* prefixed libraries
        ati13ati: CAL 1.3+, ati* prefixed libraries
        ati14: CAL 1.4+, ati* prefixed libraries

    sched/
        sched_customize.cpp
    lib/
        coproc.cpp, .h

svn path=/trunk/boinc/; revision=19162
2009-09-25 15:40:16 +00:00
David Anderson cfcfeffd21 - client: for ATI enumeration, use only aticalrt.dll
(amdcalrt.dll is old version w/ funky DLL names)
- client: make GPU enumeration warnings more consistent
    (e.g., "NVIDIA" instead of "CUDA").
- scheduler: get rid of ati13 plan class.
    Require 1.4+ driver for plan class ati.

svn path=/trunk/boinc/; revision=19158
2009-09-24 18:33:40 +00:00
David Anderson 39815033a3 - client: in GPU enumeration, separate warning msgs from GPU descriptions.
Show warning msgs only if log_flags.coproc_debug

svn path=/trunk/boinc/; revision=19153
2009-09-24 17:23:33 +00:00
David Anderson 41e3b06b23 - client and scheduler RPC: add optional <cpu_backoff>, <cuda_backoff>,
and <ati_backoff> elements to scheduler reply.
    These specify backoffs for the resource types,
    overriding the existing backoff mechanism.
    Projects can supply these if they don't have apps of a particular type
    and don't want to get periodic requests for them.

svn path=/trunk/boinc/; revision=19059
2009-09-16 17:34:19 +00:00
Charlie Fenton d6fa3f4f22 client: don't display processor cache if we don't know it; skip ATI stuff on Macs.
svn path=/trunk/boinc/; revision=19040
2009-09-10 22:06:20 +00:00
David Anderson f5a6f862bf - client: fix bug in RR simulation:
start only enough jobs to fill CPUs per project,
    not all the CPU jobs at once.
    I'm not sure how much difference this makes,
    but this is how it's supposed to work.
- client: if app_info.xml doesn't specify flops,
    use an estimate that takes GPUs into account.
- client: if it's been more than 2 weeks since time stats update,
    don't decay on_frac at all.

svn path=/trunk/boinc/; revision=19035
2009-09-09 22:18:02 +00:00
David Anderson 9d38ecb835 svn path=/trunk/boinc/; revision=19029 2009-09-08 19:30:06 +00:00
David Anderson b129e71f20 - client: add code for faking ATI GPUs
svn path=/trunk/boinc/; revision=19024
2009-09-08 18:42:24 +00:00