OK. I was misreading what was happening in the block to run.
Shouldn't it be if (ncpus >= 0.5 ... instead of if (ncpus ... ?
What if the first task assigned has a plan class of 0.1 CPU and 1 GPU?
jm7
David Anderson
<[email protected]
ey.edu> To
[email protected]
01/15/2010 01:23 cc
PM [email protected]
Subject
Re: Logic
It's correct as is.
The idea is that if a job has avg_ncpus > ncpus
(e.g. because the user reduced ncpus in cc_config.xml)
it should get to run, but only when it's at the head of the queue.
If it were "||", then the scheduler would never run
two 4-CPU jobs at once on an 8-CPU system, for example.
[email protected] wrote:
//
> if (rp->avp->avg_ncpus > 1) {
> - if (ncpus_used + rp->avp->avg_ncpus >= ncpus+1) {
> + if (ncpus_used && (ncpus_used + rp->avp->avg_ncpus >=
> ncpus+1)) {
> + // the "ncpus_used &&" is to allow running a job
that
> uses
> + // more than ncpus (this can happen in pathological
> cases)
> +
> if (log_flags.cpu_sched_debug) {
> msg_printf(rp->project, MSG_INFO,
> "[cpu_sched_debug] not enough CPUs for
> multithread job, skipping %s",
>
>
> Are you certain that it should not be:
>
> + if (!ncpus_used || (ncpus_used + rp->avp->avg_ncpus >=
> ncpus+1)) {
>
>
> jm7
>
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.