From owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org  Tue Sep 15 22:43:32 2015
Return-Path: <owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org>
X-Original-To: sc22wg5-dom8
Delivered-To: sc22wg5-dom8@www.open-std.org
Received: by www.open-std.org (Postfix, from userid 521)
	id C8A7935688C; Tue, 15 Sep 2015 22:43:32 +0200 (CEST)
Delivered-To: sc22wg5@open-std.org
Received: from mail.jpl.nasa.gov (mailhost.jpl.nasa.gov [128.149.139.105])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by www.open-std.org (Postfix) with ESMTP id 61FAE356E3E
	for <sc22wg5@open-std.org>; Tue, 15 Sep 2015 22:43:27 +0200 (CEST)
Received: from [137.79.7.57] (math.jpl.nasa.gov [137.79.7.57])
	by smtp.jpl.nasa.gov (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id t8FKhN0I008180
	(using TLSv1.2 with cipher DHE-RSA-AES128-GCM-SHA256 (128 bits) verified NO)
	for <sc22wg5@open-std.org>; Tue, 15 Sep 2015 13:43:25 -0700
Subject: Re: (j3.2006) (SC22WG5.5561) LCPC conference in Raleigh
From: Van Snyder <Van.Snyder@jpl.nasa.gov>
Reply-To: Van.Snyder@jpl.nasa.gov
To: sc22wg5 <sc22wg5@open-std.org>
In-Reply-To: <0B2E6F4E-134C-4142-B0BC-3EFE6BCA0458@cray.com>
References: <20150915023108.BA4D6357225@www.open-std.org>
	 <0B2E6F4E-134C-4142-B0BC-3EFE6BCA0458@cray.com>
Content-Type: multipart/alternative; boundary="=-f1omlQ12HZg6d/l1dkfC"
Organization: Yes
Date: Tue, 15 Sep 2015 13:43:23 -0700
Message-ID: <1442349803.13944.195.camel@math.jpl.nasa.gov>
Mime-Version: 1.0
X-Mailer: Evolution 2.32.3 (2.32.3-34.el6) 
X-Source-Sender: Van.Snyder@jpl.nasa.gov
X-AUTH: Authorized
Sender: owner-sc22wg5@open-std.org
Precedence: bulk


--=-f1omlQ12HZg6d/l1dkfC
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

On Tue, 2015-09-15 at 13:37 +0000, Bill Long wrote:

> > Many speakers remarked that
> > multigrain parallelism gives greater speed-up.  Some speakers
> mentioned
> > fork-join constructs.  Others mentioned tasks and threads (I don't
> know
> > what distinctions they drew between these).  Somebody mentioned
> futures.
> 
> My experience is biased by SLURM, but I usually assume task -> image,
> and thread -> SMP thread within an image to support local parallelism
> (OpenMP, DO CONCURRENT, Async I/O, …). 


Ada tasks don't fit the image model well.  Maybe they're closer to
threads.  "Concurrent and Real-Time Programming in Ada" by Burns and
Wellings describe yet another construct, which I think arrived in Ada
95, that seems more like a persistent task that can be reactivated where
it suspended, instead of being destroyed and recreated.  More like a
coroutine than a subroutine.

Univac 1100 Exec had (at least) five API's for parallelism: Fork, Exit,
Activate, Deactivate, and Wait.  Fork created what we would today call a
thread.  Exit destroyed it.  Deactivate put a thread to sleep without
destroying it.  Activate restarted a sleeping thread.  Wait waited for a
thread to deactivate or exit.  There was also a Name API that would get
a thread's name so that another thread could wait for it or activate it.
Between, Fortran can do DACT with an event wait, and ACT with an event
post.  To address unstructured problems (graph, mesh, sparse matrix),
where parallelism opportunities depend more upon the data presented than
upon the properties of the algorithm, we need two more parallelism
constructs between DO CONCURRENT and coarray images: a fork-join
construct, which one can fake with a SELECT CASE inside DO CONCURRENT,
and either a "spawn" construct or a task unit a la ada.

One of the presenters (it might have been Hadia Ahmed) described
persistent MPI transactions.  Does anybody's coarray implementation use
this (or its equivalent in a different transport mechanism)?


--=-f1omlQ12HZg6d/l1dkfC
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.32.2">
</HEAD>
<BODY>
On Tue, 2015-09-15 at 13:37 +0000, Bill Long wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    <TT>&gt; </TT><TT><FONT COLOR="#737373">Many speakers remarked that</FONT></TT><BR>
    <TT><FONT COLOR="#737373">&gt; multigrain parallelism gives greater speed-up.&nbsp; Some speakers mentioned</FONT></TT><BR>
    <TT><FONT COLOR="#737373">&gt; fork-join constructs.&nbsp; Others mentioned tasks and threads (I don't know</FONT></TT><BR>
    <TT><FONT COLOR="#737373">&gt; what distinctions they drew between these).&nbsp; Somebody mentioned futures.</FONT></TT><BR>
    <BR>
    <TT><FONT COLOR="#1a1a1a">My experience is biased by SLURM, but I usually assume task -&gt; image, and thread -&gt; SMP thread within an image to support local parallelism (OpenMP, DO CONCURRENT, Async I/O, &#8230;). </FONT></TT><BR>
</BLOCKQUOTE>
<BR>
Ada tasks don't fit the image model well.&nbsp; Maybe they're closer to threads.&nbsp; &quot;Concurrent and Real-Time Programming in Ada&quot; by Burns and Wellings describe yet another construct, which I think arrived in Ada 95, that seems more like a persistent task that can be reactivated where it suspended, instead of being destroyed and recreated.&nbsp; More like a coroutine than a subroutine.<BR>
<BR>
Univac 1100 Exec had (at least) five API's for parallelism: Fork, Exit, Activate, Deactivate, and Wait.&nbsp; Fork created what we would today call a thread.&nbsp; Exit destroyed it.&nbsp; Deactivate put a thread to sleep without destroying it.&nbsp; Activate restarted a sleeping thread.&nbsp; Wait waited for a thread to deactivate or exit.&nbsp; There was also a Name API that would get a thread's name so that another thread could wait for it or activate it.&nbsp; Between, Fortran can do DACT with an event wait, and ACT with an event post.&nbsp; To address unstructured problems (graph, mesh, sparse matrix), where parallelism opportunities depend more upon the data presented than upon the properties of the algorithm, we need two more parallelism constructs between DO CONCURRENT and coarray images: a fork-join construct, which one can fake with a SELECT CASE inside DO CONCURRENT, and either a &quot;spawn&quot; construct or a task unit a la ada.<BR>
<BR>
One of the presenters (it might have been Hadia Ahmed) described persistent MPI transactions.&nbsp; Does anybody's coarray implementation use this (or its equivalent in a different transport mechanism)?<BR>
<BR>
</BODY>
</HTML>

--=-f1omlQ12HZg6d/l1dkfC--

