Commit Graph

77 Commits

Author SHA1 Message Date
David Anderson 76d6e67459 - client: pass --gpu_type X (X=nvidia or ati) as well as --device.
This lets device-neutral OpenCL apps figure out which GPU to use.


svn path=/trunk/boinc/; revision=24040
2011-08-25 06:33:35 +00:00
David Anderson 15c3ff7d31 - client: if an app version has nonempty file_prefix,
copy all its input and output files

svn path=/trunk/boinc/; revision=23925
2011-08-03 19:47:26 +00:00
David Anderson 5a8fd0afc7 - client: add optional <file_prefix> to APP_VERSION>.
If present, "file_prefix/" is prepended to the logical names
    of input and output files of jobs using that app version.
    I.e. for Vbox wrapper based app versions, file_prefix is "share",
    so that I/O files are put in a "share" subdirectory of the slot dir.
- update_versions: add support for
    <dont_throttle>
    <file_prefix>x</file_prefix>
    in version.xml


svn path=/trunk/boinc/; revision=23924
2011-08-03 18:14:45 +00:00
David Anderson f3b9286d78 - client: fix bug in get_descendants(),
which prevented the client from cleaning up
    subprocesses of misbehaving multiprocess apps.
- remote job submission system:
    assign physical names to input files (based on their MD5)
    rather than having the user provide physical names
- VM apps: eliminate vbox64 plan class.  Only vbox.


svn path=/trunk/boinc/; revision=23923
2011-08-03 16:45:00 +00:00
David Anderson 69cbabe798 - fix compile warnings
svn path=/trunk/boinc/; revision=23780
2011-06-26 00:10:19 +00:00
David Anderson 94e8c48220 - client: change --detach_phase_two (??) to --detach_console
- eliminate compiler warnings (e.g. shadowed vars)
    in various places, mostly in client


svn path=/trunk/boinc/; revision=23710
2011-06-12 20:58:43 +00:00
David Anderson 36ba561326 - client: add log messages showing steps in exiting all tasks,
enabled by <task_debug/>
- client: remove redundant task-start messages


svn path=/trunk/boinc/; revision=23566
2011-05-20 05:38:22 +00:00
David Anderson ac34ece602 - client: fix a couple of the messages that are appended to
a job's stderr when the job is aborted


svn path=/trunk/boinc/; revision=23374
2011-04-18 23:05:14 +00:00
David Anderson fa377295bc - client: use larger buffer for app command line,
enough to accommodate 64KB from wu.cmdline


svn path=/trunk/boinc/; revision=23324
2011-04-04 18:03:50 +00:00
David Anderson 6c058551e0 - client: Unix compile fixes
svn path=/trunk/boinc/; revision=23256
2011-03-25 09:51:39 +00:00
Charlie Fenton 75894e461b client: Temporarily work around compile breaks
svn path=/trunk/boinc/; revision=23254
2011-03-25 08:19:43 +00:00
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 faf7fe54c8 - client: if a logical filename contains /'s,
create the needed dirs under the slot dir
- user web: pages with translatable text should not be cached.
    Fix this for home page; there are some others

svn path=/trunk/boinc/; revision=23019
2011-02-11 00:37:01 +00:00
David Anderson c152968f53 - scheduler/client/API: pass user ID and team ID from scheduler to client,
and from client to app (host ID is already passed).
    E@h asked for this, not sure why.

svn path=/trunk/boinc/; revision=22902
2011-01-13 22:40:48 +00:00
David Anderson 785279a327 - client: linux compile fix
- client: small fix for GPU scheduling
    (use anticipated debt instead of STD)

svn path=/trunk/boinc/; revision=22596
2010-10-26 19:47:12 +00:00
David Anderson f31e311dd2 - client: support notice feeds from account managers.
Implementation: create a base class PROJ_AM,
    from which both PROJECT and ACCT_MGR_INFO are derived,
    with basic stuff like name, URL, and RSS feed list

svn path=/trunk/boinc/; revision=22324
2010-09-08 18:06:56 +00:00
David Anderson e0cea31781 - API: add result name to APP_INFO_DATA structure (for Volpex)
- scheduler: add max_download_urls_per_file config option
    (to limit the length of workunit.xml_doc,
    which is currently capped at 64KB).
    From Bernd.

svn path=/trunk/boinc/; revision=22082
2010-07-30 21:43:23 +00:00
Rom Walton 2cf2cbdae8 - client: fix elasped time tracking bug
client/
        app_start.cpp

svn path=/trunk/boinc/; revision=21647
2010-05-27 19:46:09 +00:00
David Anderson 6580d950ed - client: fix build failure on FreeBSD (SCHED_BATCH doesn't exist there)
(from Rene Mayorga)

svn path=/trunk/boinc/; revision=21637
2010-05-26 15:59:34 +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
David Anderson 5a8142a23c - client: don't promote multithread jobs ahead of EDF jobs
svn path=/trunk/boinc/; revision=21563
2010-05-18 16:45:55 +00:00
David Anderson 7db608660f - client: standardize debug messages.
Messages enabled by <foo_debug> are prefixed by "[foo]"


svn path=/trunk/boinc/; revision=21335
2010-04-29 20:32:51 +00:00
David Anderson cc8ea9de3c - client: Win: kill runaway apps using TerminateProcess()
rather than TerminateProcessById().
    The latter doesn't work in protected mode.
- client: pid_handle => process_handle.  misnomer

svn path=/trunk/boinc/; revision=21272
2010-04-23 22:31:08 +00:00
Rom Walton e14e1cad34 - Remove BOINC_RCSID tags from source files, we are doing branching and tagging
properly.
        
    <Various Files>

svn path=/trunk/boinc/; revision=20873
2010-03-12 16:51:57 +00:00
David Anderson b7a07f87a7 - client: when launching app, delete init_data.xml using switcher
prior to trying to write it,
    in case it's owned by another user (e.g., boinc_project)

svn path=/trunk/boinc/; revision=20267
2010-01-26 00:21:57 +00:00
David Anderson 6b3ea3d339 - user web: don't show "database error" if result refers
to deleted app version

svn path=/trunk/boinc/; revision=20251
2010-01-23 00:36:12 +00:00
David Anderson d6b6f8d5db - client (Mac): append /usr/local/cuda/lib to LD_LIBRARY_PATH
and DYLD_LIBRARY_PATH
- client simulator: compile fixes

svn path=/trunk/boinc/; revision=20117
2010-01-09 16:41:17 +00:00
David Anderson 12955d898c - client (Mac): it's DYLD_LIBRARY_PATH, not DYLIB_LIBRARY_PATH
svn path=/trunk/boinc/; revision=19972
2009-12-18 17:49:38 +00:00
David Anderson 92294d06e7 - client: fix bug in insufficient video RAM feature
- client: improve CPU sched debug msgs
	- client: fix "temporary exit" feature

svn path=/trunk/boinc/; revision=19900
2009-12-14 19:24:06 +00:00
David Anderson a3f80676b7 - API and client: add an API function boinc_temporary_exit(dt).
This exits the app with status zero and no finish file,
    so the client will restart it.
    It creates a file "temporary_exit" containing dt.
    The (new) client reads this file and will postpone
    scheduling the job again for dt seconds.
    Old clients will treat it as a premature exit,
    and potentially try to reschedule the job immediately.

    This function is intended for GPU applications that
    fail to allocate GPU RAM,
    presumably because a non-GPU application has it allocated.
    We don't want the job to fail,
    and we want to wait for a while before trying the allocation again.

svn path=/trunk/boinc/; revision=19879
2009-12-13 05:16:40 +00:00
David Anderson 4bd0e4a2de - client: sort out proxy_info mess.
Source of proxy info (descending priority)
    - GUI RPC (Manager or boinccmd)
        This and only this is saved in state file.
        If neither HTTP nor SOCKS server name present,
        this is viewed as not present
    - environment vars
    - cc_config.xml

    Show sources of proxy info in message log.
    If one is present but overridden, show a message to that effect.

    This fixes a bug where someone had a proxy info env var and
    forgot about it.
    They got an erroneous message saying no proxy was being used.

svn path=/trunk/boinc/; revision=19785
2009-12-05 00:51:05 +00:00
David Anderson 59328aaccb - client: change how short term debt is updated.
Old: it's based entirely on CPU time.
        So a GPU project, whose app uses only a fraction
        of a CPU, accrues positive debt.
        This is OK if the project has only GPU apps,
        since STD is not (currently) used for GPU scheduling.
        But some projects have both CPU and GPU apps.
    New: STD is based on total processing.
        It has terms for each resource type.
        The notion of "runnable resource share" is specific to a type.
    Note: the notion of "resource share fraction" appears in
        a couple of other places:
        - it's passed to apps in app_init_data.xml
        - it's passed in scheduler requests.
        It should be broken down by resource type in these cases too.
        Note to self: do this later.

svn path=/trunk/boinc/; revision=19762
2009-12-02 03:41:52 +00:00
David Anderson b0d44d7564 - client: don't multiply checkpoint interval (i.e., "disk interval" pref)
by # processors.
- web: change description of pref to
    "Applications checkpoint to disk at most every ..."

svn path=/trunk/boinc/; revision=19293
2009-10-12 23:54:02 +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 dccb097eff - client: improve coproc_debug messages
svn path=/trunk/boinc/; revision=19239
2009-10-04 00:20:28 +00:00
David Anderson dcc3c49938 - client: on Linux, run CPU-intensive jobs with the SCHED_BATCH scheduler.
Improves interactive response of system when jobs running.
    From Clive Messer.

svn path=/trunk/boinc/; revision=19143
2009-09-23 16:51:40 +00:00
David Anderson 86ee2f5753 - client: fix bug that caused unstarted coproc jobs to preempt
ones already running.
    The problem: we considered a job as started if it has an ACTIVE_TASK.
    However, we were creating ACTIVE_TASKS for jobs before deciding
    to run them, because we needed a place to store the coproc reservations.
    This caused the above bug, and also had the undesirable effect
    of creating slot directories before they're needed.

    Solution: store coprocessor reservations in RESULT
    rather than ACTIVE_TASK.

svn path=/trunk/boinc/; revision=19129
2009-09-22 21:02:06 +00:00
Charlie Fenton 3ecc6c6d37 client: fix compiler warning
svn path=/trunk/boinc/; revision=19084
2009-09-17 22:54:09 +00:00
David Anderson 76583d54d9 - client: don't print error message if output file with <copy_file>
attribute is missing.  That's the app's problem, not BOINC's
- sample assimilator: if a canonical instance has no output files,
    rather than quitting create a file named WU_NAME_no_output_files

svn path=/trunk/boinc/; revision=19082
2009-09-17 21:06:11 +00:00
David Anderson 563a55f37e - client/libs/samples: remove "#define read _read" etc. from boinc_win.h
These cause problems when "read" is a member name, etc.
		Do these #defines, conditioned on _MSC_VER,
		in the files that actually need them.
	- don't include boinc_win.h from parse.h.
		principle of minimal inclusion

svn path=/trunk/boinc/; revision=18902
2009-08-22 17:00:19 +00:00
David Anderson f1360e5971 - client: finish the implementation of fractional coproc jobs.
- different data structure for keeping track of coproc usage;
        instead of COPROC having per-instance pointers to ACTIVE_TASK,
        ACTIVE_TASK now has an array of device number indices
        for each instance that it's using.
    - in enforce_schedule(), we call a new function assign_coprocs()
        that decides what coproc instances each job will use,
        and prunes jobs for which we can't get an assignment.
        This function embodies lots of subtlety.
    - coproc_cmdline() no longer deals with reserving instances;
        it just has to generate the --device X cmdline

svn path=/trunk/boinc/; revision=18880
2009-08-19 23:21:55 +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 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 c29acd04e8 - client (Unix): fix bug that caused GPU reservation to not work.
The problem: we were doing the reservation after the fork(),
    so that the data structure it changed was the app's, not the client's.

svn path=/trunk/boinc/; revision=18836
2009-08-13 16:24:21 +00:00
Charlie Fenton f088df311f client fix crash bug introduced by changing PROXY_INFO strings from char[] to std::string
svn path=/trunk/boinc/; revision=18821
2009-08-08 03:10:41 +00:00
Charlie Fenton ebcc5eb04f client: fix compiler warning (too few args for print format)
svn path=/trunk/boinc/; revision=18812
2009-08-04 05:51:40 +00:00
David Anderson 4222d744e8 - client (Linux): when launching apps, put a relative path
to the executable (../../projects/x/y) into argv[0],
    not just the executable filename.
    Apparently the new NVIDIA drivers have a bug that cause
    CUDA apps to crash unless this is done.
- Scheduler: in no-host-ID case, don't mark results as "detached"
    if request contains any in-progress results

svn path=/trunk/boinc/; revision=18754
2009-07-28 19:19:14 +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 1dba786d7b - API: add boinc_elapsed_time() to get elapsed time since start of episode;
add APP_INIT_DATA::starting_elapsed_time to get
    elapsed time from previous episodes

svn path=/trunk/boinc/; revision=18535
2009-07-01 17:35:56 +00:00
Charlie Fenton ebe8f91f04 MGR: Fix several Mac build breaks
svn path=/trunk/boinc/; revision=18441
2009-06-17 21:35:27 +00:00