Objet : Developers list for StarPU
Archives de la liste
- From: Samuel Thibault <samuel.thibault@ens-lyon.org>
- To: Benoît Lizé <benoit.lize@gmail.com>
- Cc: starpu-devel@lists.gforge.inria.fr
- Subject: Re: [Starpu-devel] Is StarPU busy-waiting for tasks ?
- Date: Thu, 7 Nov 2013 17:56:17 +0100
- List-archive: <http://lists.gforge.inria.fr/pipermail/starpu-devel>
- List-id: "Developers list. For discussion of new features, code changes, etc." <starpu-devel.lists.gforge.inria.fr>
Benoît Lizé, le Thu 07 Nov 2013 10:39:40 +0100, a écrit :
> +/* Condition variable and mutex used to pause/resume. */
> +static starpu_pthread_cond_t pause_cond = STARPU_PTHREAD_COND_INITIALIZER;
> +static starpu_pthread_mutex_t pause_mutex =
> STARPU_PTHREAD_MUTEX_INITIALIZER;
> unsigned _starpu_machine_is_running(void)
> {
> unsigned ret;
> - /* running is just protected by a memory barrier */
> + unsigned should_pause;
> + /* running and paused are just protected by a memory barrier */
> STARPU_RMB();
> + should_pause = config.paused;
> +
> + if (STARPU_UNLIKELY(should_pause)) {
> + STARPU_PTHREAD_MUTEX_LOCK(&pause_mutex);
You need to check again should_pause here, otherwise someone may have
run resume in-between.
> + STARPU_PTHREAD_COND_WAIT(&pause_cond, &pause_mutex);
> + STARPU_PTHREAD_MUTEX_UNLOCK(&pause_mutex);
> + }
> +
> ANNOTATE_HAPPENS_AFTER(&config.running);
> ret = config.running;
> ANNOTATE_HAPPENS_BEFORE(&config.running);
> return ret;
> }
>
> +void starpu_pause()
> +{
> + config.paused = 1;
Mmm, I'd rather see pause/resume work as a push/pop mechanism, i.e.
paused is the number of calls to pause() minus the number of calls to
resume.
> @@ -967,6 +993,9 @@ void starpu_shutdown(void)
> initialized = CHANGING;
> STARPU_PTHREAD_MUTEX_UNLOCK(&init_mutex);
>
> + /* If the workers are frozen, no progress can be made. */
> + starpu_resume();
And I'd rather avoid this, and use an ASSERT(!paused) instead.
Samuel
- Re: [Starpu-devel] Is StarPU busy-waiting for tasks ?, Samuel Thibault, 05/11/2013
- Re: [Starpu-devel] Is StarPU busy-waiting for tasks ?, Benoît Lizé, 07/11/2013
- Re: [Starpu-devel] Is StarPU busy-waiting for tasks ?, Samuel Thibault, 07/11/2013
- Re: [Starpu-devel] Is StarPU busy-waiting for tasks ?, Benoît Lizé, 07/11/2013
Archives gérées par MHonArc 2.6.19+.