Commit Graph

63 Commits

Author SHA1 Message Date
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
David Anderson 0af302a308 - compile fixes
svn path=/trunk/boinc/; revision=18943
2009-08-28 23:02:15 +00:00
David Anderson 2039e67638 - client: NVIDIA offers an API which tells you whether a GPU
is running a graphics application.
    Change the semantics of the "don't use GPU while computer in use" pref
    to "don't use a GPU that's running a graphics app while
    computer is in use".
    This will increase GPU utilization on multi-GPU systems.

svn path=/trunk/boinc/; revision=18942
2009-08-28 22:55:04 +00:00
David Anderson 9a8f91fb1e - client: in parsing <coproc> elements in <app_version>,
use a new type COPROC_REQ for which the count field is a double.
    Otherwise fractional GPU jobs don't work.

svn path=/trunk/boinc/; revision=18906
2009-08-24 23:16:17 +00:00
David Anderson b3d0249ade - client: use the right library name for ATI on Linux
- client: check return values from ATI device detection functions

svn path=/trunk/boinc/; revision=18905
2009-08-24 21:41:48 +00:00
David Anderson d14527f79d - update_versions: if app version files already exist in download dir,
make sure they're the same (i.e., enforce file immutability).
    TODO: do this for input files too
- client: check return values from CUDA device detection functions

svn path=/trunk/boinc/; revision=18903
2009-08-24 19:08:05 +00:00
David Anderson 073e6ded2c - client and scheduler: lay the groundwork for "fractional coproc jobs",
e.g. the Milkyway@home ATI app, of which we can typically run
    2 or 3 instances at once on a GPU.
    Changes include:
    - In APP_VERSION, don't use a COPROCS to represent the GPU
        requirements; just use doubles ncudas and natis.
    - sufficient_coprocs() etc. are no longer members of COPROCS
    - in HOST_USAGE, ncudas and natis are doubles
    - in scheduler request, req_instances is now a double

    This checkin doesn't include the job scheduling logic,
    i.e. assigning jobs to GPUs.  That will follow.

svn path=/trunk/boinc/; revision=18868
2009-08-19 18:41:47 +00:00
David Anderson 12d4b978be - scheduler: if client request uses a weak authenticator,
don't modify user preferences or CPID.
- client: fix bug that shows ATI version incorrectly
- database: host.posts has been repurposed as a salt (or seqno)
    for a new type of weak authenticator that won't depend on password
- web code:
    modify forum_preferences.posts instead of host.posts.
    (actually, the former isn't used either, we just do a select count(*);
    should fix this at some point).

svn path=/trunk/boinc/; revision=18865
2009-08-18 20:44:12 +00:00
David Anderson 152ee20b17 - client: fix calculation of ATI flops
svn path=/trunk/boinc/; revision=18852
2009-08-17 17:27:06 +00:00
David Anderson c3fe504e1d - client: add ATI support to job scheduling and work fetch
svn path=/trunk/boinc/; revision=18850
2009-08-17 16:50:40 +00:00
David Anderson 8df1e1ebb3 - client: ATI tweaks
svn path=/trunk/boinc/; revision=18849
2009-08-16 04:02:11 +00:00
David Anderson 4eb7097653 compile fixes
svn path=/trunk/boinc/; revision=18848
2009-08-15 00:12:51 +00:00
David Anderson 3b03707efa - client: clean up ATI code and make it work (or at least compile)
under Linux

svn path=/trunk/boinc/; revision=18847
2009-08-15 00:00:57 +00:00
David Anderson 602ad0b5b7 - client: ATI GPU detection code (from Crunch3r)
svn path=/trunk/boinc/; revision=18846
2009-08-14 22:54:34 +00:00
David Anderson 230760136c svn path=/trunk/boinc/; revision=18835 2009-08-13 16:17:26 +00:00
Charlie Fenton 338a36ab93 Mac client: prevent crash and show warning message if CUDA driver version < 2.3.
svn path=/trunk/boinc/; revision=18815
2009-08-04 22:38:55 +00:00
David Anderson 0f6ae8e58b svn path=/trunk/boinc/; revision=18771 2009-07-29 21:35:09 +00:00
David Anderson 94e75fd4b1 svn path=/trunk/boinc/; revision=18770 2009-07-29 21:21:52 +00:00
David Anderson ff5d082e86 - client: to enumerate CUDA devices, use the functions in libcuda.so
(which ships with driver) rather than libcudart.so
    (this eliminates the need to bundle libcudart.so with the client)
    The functions are documented here:
    http://developer.download.nvidia.com/compute/cuda/2_3/toolkit/docs/online/index.html


svn path=/trunk/boinc/; revision=18769
2009-07-29 19:24:28 +00:00
David Anderson a4e82069d6 - client: add a bunch of debugging messages (<task_debug>)
for showing how GPU instances are being reserved
- scheduler: add "sse3" plan class example
- web: add option (NO_TEAMS constant) for suppressing teams

svn path=/trunk/boinc/; revision=18658
2009-07-22 18:41:02 +00:00
David Anderson ad254db549 - fix to the above
svn path=/trunk/boinc/; revision=18290
2009-06-04 05:18:43 +00:00
Charlie Fenton 5c81b4a1ff - client: Fix missing argument in printf statements
svn path=/trunk/boinc/; revision=18288
2009-06-04 00:44:58 +00:00
David Anderson 310c72c01f - client: include device number in message describing NVIDIA GPU,
and call it "NVIDIA GPU" rather than "CUDA device"
    fixes #879


svn path=/trunk/boinc/; revision=18277
2009-06-03 20:29:49 +00:00
David Anderson e84b1f189e - client: view 2 GPUs as equivalent if their memory differs by <30%.
(maybe their memory differed slightly from the most capable one)

svn path=/trunk/boinc/; revision=17987
2009-05-04 02:22:25 +00:00
David Anderson e3a730c334 - client: add <use_all_gpus> config option. If set, use GPUs
even if they're not equivalent to the most capable one.
- Validator: fix one_pass_N_WU option.

svn path=/trunk/boinc/; revision=17896
2009-04-27 23:51:46 +00:00
David Anderson c883214eb9 - fix typo in compare_cuda()
svn path=/trunk/boinc/; revision=17876
2009-04-24 14:20:02 +00:00
David Anderson 3cb983f1c5 - client: tweak to 4/21 checkin.
After finding the "most capable" GPU,
    ignore FLOPS in deciding what GPUs are equivalent to it.
    This opens up the possibility that the client will get jobs
    that it won't be able to finish in time.
    But it still avoids getting jobs that will crash.

svn path=/trunk/boinc/; revision=17875
2009-04-24 10:56:35 +00:00
David Anderson f9e1c98921 - client: fix crash bug in CUDA init
svn path=/trunk/boinc/; revision=17856
2009-04-22 03:59:39 +00:00
David Anderson 5adb25381d - client: new approach to handling multiple GPUs.
old: find fastest GPU, and pretend that others are the same.
            Problem: other GPUs might be less capable,
            and not able to handle jobs sent by server.
        new: find the most "capable" GPU, use others that are equivalent,
            don't use those that are not.
            "Capable" is defined by
            - compute capability (i.e., hardware version)
            - driver version
            - memory size
            - FLOPs
            in that priority order.
        See comments in lib/coproc.h

svn path=/trunk/boinc/; revision=17855
2009-04-22 02:09:53 +00:00
David Anderson 90f863f08c - partial checkin so I can edit locally (bad network connection)
svn path=/trunk/boinc/; revision=17852
2009-04-21 08:11:28 +00:00
David Anderson 5a88fb4028 svn path=/trunk/boinc/; revision=17848 2009-04-20 00:09:29 +00:00
David Anderson c58136e5bf - client: improve CPU sched debug messages
(say what kind of job and why we're scheduling it)
- client: log messages describing GPUs: one line per GPU; fixes #879

svn path=/trunk/boinc/; revision=17847
2009-04-20 00:00:11 +00:00
David Anderson 5e8237aa56 - client (linux): if don't find libcudart.so in the current dir,
look for it in the library search path.  Fixes #863

svn path=/trunk/boinc/; revision=17648
2009-03-23 19:25:38 +00:00
David Anderson c22b62f25b - scheduler: fix bugs in support for anonymous platform + coprocs
(app versions don't have a <coprocs> around coproc elements,
    may an oversight but let's stick with it).
    Anyway, I think it's working now.
- lib: remove "owner" array from COPROC.
    This was used in client to keep track of assignment of
    coprocessors to tasks, but we got rid of the reserve/free scheme.
    NOTE: this breaks the mechanism for passing --device N to apps;
    I'll have to do this another way.  Stay tuned.

svn path=/trunk/boinc/; revision=17543
2009-03-06 22:21:47 +00:00
Eric J. Korpela 8f3abcc835 - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out
which of those files to include
    - Modified MAC address check to work on some non-Linux unixes.
      (mac_address.cpp)
    - Added suggested change to "already attached to project" checking.
      (ProjectInfoPage.cpp)
    - changed includes of standard c header files to their c++ equivalents
      (i.e. replaced <stdio.h> with <cstdio>) for namespace protection.
    - replaced "using namespace std;" with more explicit "using std::function" in
      several files.
    - Fixed bug in checking whether the os is OS/2 and added conditional OS_OS2
      to the build environment. (boinc_platform.m4,configure.ac)
    - Changed build environment to not use -nostandardlibs unless we are using
      G++ and static linkage is specified. (configure.ac)
    - Added makefiles and package building files for solaris CSW package manager.
    - Fixed bug with attempting to find login name using logname. (configure.ac)
    - Added ifdef HAVE_* protection around some include files commonly found in
      sys.
    - Added support for unified binary for x86_64/i686-pc-solaris.
      (cs_platforms.cpp)
    - generate_host_cpid() now uses MAC address on non-linux unix.
      (hostinfo_network.cpp)
    - Macro BOINC_SET_COMPILE_FLAGS now doesn't check gcc only flags on non-gcc
      compilers. (boinc_set_compile_flags.m4)
    - Library compiles no longer depend upon the library extension or require
      the library to be prefixed with lib.
    - More fixes for fcgi builds.
    - Added declaration of "struct ether_addr" and ether_ntoa().  Have not yet
      implemented ether_ntoa() for machines that don't have it, or where it is
      buggy.  (unix_util.h)
    - Added FCGI::perror() which calls FCGI_perror(). (boinc_fcgi.{h,cpp})
    - Fixed library Makefiles so that all required headers get installed.


svn path=/trunk/boinc/; revision=17388
2009-02-26 00:23:23 +00:00
David Anderson 3709c1e9f4 - scheduler: include driver version in the CUDA description string
storing in the database;
- web: display the above

svn path=/trunk/boinc/; revision=17341
2009-02-24 00:06:45 +00:00
David Anderson 442a54b30c compile fixes
svn path=/trunk/boinc/; revision=17301
2009-02-18 21:21:12 +00:00
Charlie Fenton c8ad5b1def client: fix compile break on Mac
svn path=/trunk/boinc/; revision=17276
2009-02-17 01:51:56 +00:00
David Anderson 4d1544e579 - client: detect NVIDIA driver version number, show it on startup,
and include it with CUDA coprocessor descriptor in request msgs

svn path=/trunk/boinc/; revision=17275
2009-02-16 23:03:03 +00:00
David Anderson 8de66223fd - client: tweak work fetch messages
- client: buffer 2000 messages instead of 1000

svn path=/trunk/boinc/; revision=17089
2009-01-30 22:33:45 +00:00
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