<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle23
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1637025780;
        mso-list-template-ids:-1416608006;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1
        {mso-list-id:1777796724;
        mso-list-template-ids:2075324552;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">HI Martin,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Open MPI internally behaves as if there are only either MPI_THREAD_SERIALIZED or MPI_THREAD_MULTIPLE.<o:p></o:p></p>
<p class="MsoNormal">Except for odds and ends like supporting the MPI_Is_thread_main, it doesn’t behave differently whether the application<o:p></o:p></p>
<p class="MsoNormal">requests for MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED, or MPI_THREAD_SERIALIZED.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Now as for the prototype, there is a block of common resources used by all MPI “instances” – what the developer of the prototype was calling “sessions”, and it is initialized either for thread safety or not.  So its whoever makes the first
 call to MPI_Session_init of MPI_Init/MPI_Init_thread which determines the thread support provided for subsequent calls to either MPI_Session_init or MPI_Init_thread, etc.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I suspect other MPI implementations would have a similar set of common resources that would have to be shared by all MPI sessions.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In some ways from the implementor’s point of view this is not that important as the only sane thing from a software engineering point of view is if you know your code may be operating in a multi-threaded environment, you should code it
 that way from the start.  In the Open MPI code there are many places where, for example, counters are incremented/decremented using atomic ops irrespective of what the application asked for in terms of thread support.  Indeed, we several major releases ago
 removed the option to build Open MPI for thread serial only, as much of the plumbing code now assumes it can be invoked concurrently from multiple threads.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here's my thoughts on the suggestions:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoListParagraph" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-size:10.0pt;font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]>We actually deprecate funneled and serialized  <span style="color:#00B0F0">- this would be my preferred option but I thought Jim Dinan already fought that battle and lost for MPI 4 – but maybe I’m not remembering right</span><o:p></o:p></p>
<p class="MsoListParagraph" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-size:10.0pt;font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]>We don’t deprecate, but state that they should no longer be returned in the session model –
<span style="color:#00B0F0">that would be easy enough for 4.1</span><o:p></o:p></p>
<p class="MsoListParagraph" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-size:10.0pt;font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]>We isolate sessions against each other <span style="color:#00B0F0">
– not sure I understand this one</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Howard<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">mpiwg-sessions <mpiwg-sessions-bounces@lists.mpi-forum.org> on behalf of MPI Sessions working group <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Reply-To: </b>MPI Sessions working group <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Date: </b>Thursday, February 18, 2021 at 3:43 PM<br>
<b>To: </b>Daniel Holmes <danholmes@chi.scot><br>
<b>Cc: </b>Martin Schulz <schulzm@in.tum.de>, MPI Sessions working group <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Subject: </b>Re: [mpiwg-sessions] [EXTERNAL] Question on MPI_THREAD_FUNNELED<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in">Agreed – not sure this comes across in the text, though. We may want to think about clarifying this in 4.1.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Howard, is this how the Open MPI works already or what impact do you expect?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Thanks,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Martin<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in">-- <span style="font-size:10.5pt;font-family:Helvetica;color:black"><br>
Prof. Dr. Martin Schulz, Chair of Computer Architecture and Parallel Systems<br>
Department of Informatics, TU-Munich, Boltzmannstraße 3, D-85748 Garching<br>
Member of the Board of Directors at the Leibniz Supercomputing Centre (LRZ)<br>
Email: schulzm@in.tum.de</span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Daniel Holmes <danholmes@chi.scot><br>
<b>Date: </b>Thursday, 18. February 2021 at 23:13<br>
<b>To: </b>Martin Schulz <schulzm@in.tum.de><br>
<b>Cc: </b>MPI Sessions working group <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Subject: </b>Re: [mpiwg-sessions] [EXTERNAL] Question on MPI_THREAD_FUNNELED</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-family:"Arial",sans-serif">Hi Martin,</span>
<br>
<br>
<span style="font-family:"Arial",sans-serif">Your third option, isolation, is (and has been for years) the intent of sessions.</span>
<br>
<br>
<span style="font-family:"Arial",sans-serif">Cheers,</span> <br>
<span style="font-family:"Arial",sans-serif">Dan.</span> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in"> <o:p></o:p></p>
<p style="margin-left:.5in">18 Feb 2021 22:04:51 Martin Schulz <schulzm@in.tum.de>:<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-left:.5in">Hi Dan,<o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">I agree – single has a good reason and I think would be fine – in this case the clause that the first init anywhere may dictate thread mode anymore else would indicate to other session inits later on that only single
 is now supported.<o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">I am wondering about serialized and funneled, though: for funneled, it kind of leads to a requirement that session_init can only be called on the same thread again. If not, it should actually fail, as nothing else
 makes sense (if two session inits on different threads return funneled). For serialized, it requires threads know of each other so they can synchronize, which is against what we wanted to achieve.<o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">I actually only see three options (perhaps there are more):<o:p></o:p></p>
<p class="MsoListParagraph" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-size:10.0pt;font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]>We actually deprecate funneled and serialized <o:p>
</o:p></p>
<p class="MsoListParagraph" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-size:10.0pt;font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]>We don’t deprecate, but state that they should no longer be returned in the session model
<o:p></o:p></p>
<p class="MsoListParagraph" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;margin-bottom:.0001pt;text-indent:-.25in;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-size:10.0pt;font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">        
</span></span></span><![endif]>We isolate sessions against each other <o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">In the latter case, returning thread funneled means that MPI calls associated with objects derived from that session have to be called from that thread. For serialized it would disallow two MPI calls at the same
 time from two threads, if they both use an object derived from the same session. Across sessions there would be no restrictions.<o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">I kind of like the latter one, as it goes with the spirit of session, but I wonder what implementers say to that.<o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Martin<o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in">-- <span style="font-size:10.5pt;font-family:Helvetica;color:black"><br>
Prof. Dr. Martin Schulz, Chair of Computer Architecture and Parallel Systems<br>
Department of Informatics, TU-Munich, Boltzmannstraße 3, D-85748 Garching<br>
Member of the Board of Directors at the Leibniz Supercomputing Centre (LRZ)<br>
Email: schulzm@in.tum.de</span><o:p></o:p></p>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
</div>
<p style="margin-left:.5in"> <o:p></o:p></p>
<p style="margin-left:.5in"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">mpiwg-sessions <mpiwg-sessions-bounces@lists.mpi-forum.org> on behalf of Dan Holmes via mpiwg-sessions <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Reply-To: </b>MPI Sessions working group <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Date: </b>Thursday, 18. February 2021 at 21:07<br>
<b>To: </b>mpiwg-sessions <mpiwg-sessions@lists.mpi-forum.org><br>
<b>Cc: </b>Dan Holmes <danholmes@chi.scot><br>
<b>Subject: </b>[mpiwg-sessions] [EXTERNAL] Question on MPI_THREAD_FUNNELED</span><o:p></o:p></p>
</div>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in">Hi Martin, <o:p></o:p></p>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This is an interesting argument for disallowing use of MPI_THREAD_SINGLE and MPI_THREAD_FUNNELED with the sessions model (and with the world model in combination with the sessions model).<o:p></o:p></p>
</div>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modern MPI libraries effectively only have MPI_THREAD_SERIALIZED and MPI_THREAD_MULTIPLE anyway.<o:p></o:p></p>
</div>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">However, a single thread could create a bunch of sessions and initialise the world model and comply with MPI_THREAD_SINGLE and/or MPI_THREAD_FUNNELED.<o:p></o:p></p>
</div>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Two libraries might be called by a single thread and thereby be thread compliant.<o:p></o:p></p>
</div>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:black">So, prohibiting these thread support levels seems too severe.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:black">Library writers need to document the restrictions they place on the main application and all the other libraries that it uses. If a library tells MPI it will only use a particular thread
 then the caller into that library must comply, etc.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:black">An MPI library is free to upgrade later (if it is capable of that) without telling already-initialised sessions (because superset) - except for MPI_THREAD_SINGLE (there can be only one).
 It is also free to return a lower provided than the requested.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:black">The only problem occurs if two distinct threads ask for MPI_THREAD_FUNNELED concurrently and MPI provides MPI_THREAD_FUNNELED to one of them but is not able to upgrade internally - it is
 then stuck for when the second thread makes its request.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
 <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:black">One of the main points of the isolation between threads was that no cross-session protection was needed. Thus, session S1 funnelled onto thread T1 and S2 funnelled onto T2 should be easy
 to implement, even though that scenario is not currently possible with MPI-3.1 and no-one has actually coded it yet.</span><o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:9.0pt;font-family:Helvetica;color:black"><br>
Cheers,</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:9.0pt;font-family:Helvetica;color:black">Dan.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:9.0pt;font-family:Helvetica;color:black">—</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:9.0pt;font-family:Helvetica;color:black">Dr Daniel Holmes PhD</span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:black">Executive Director<br>
Chief Technology Officer</span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:9.0pt;font-family:Helvetica;color:black">CHI Ltd</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-size:9.0pt;font-family:Helvetica;color:black"><a href="mailto:danholmes@chi.scot">danholmes@chi.scot</a></span><o:p></o:p></p>
</div>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
</div>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre style="margin-left:.5in;white-space:pre-wrap;orphans: 2;font-variant-ligatures: normal;widows: 2;text-decoration-thickness: initial"><span style="color:black">Hi Howard,</span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">>><i>    I recall we decided to leave the behavior of thread support level when using multiple sessions/world model up to the implementation.   However, in the case of MPI_THREAD_FUNNELED we should probably add a blurb about not doing this in the advice to users in the Session Creation and Destruction Methods.</i></span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">I think the problem also appears if the original MPI_Init_thread uses FUNNELED. We probably need to add something there as well.</span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">>><i>    My first guess based on the openmpi prototype is that if one session is initialized with funneled, then all subsequent created sessions or mpi init thread will be supported at funnel level.  </i></span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">That kind of makes sense - but what happens if the second Session_Init is then on another thread? The funneled refers to a different thread.</span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">>><i>    For your thread serialized question I would say the answer is no, unless under the covers the implementation is always working in effectively thread multiple mode.</i></span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">Hmm, I understand the motivation and implementation implications, but this would kill the isolation then, which is also not good. Also, if two libraries have separate sessions, it is often not even possible to avoid this.</span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">Almost seems like we should deprecate funneled and serialized.</span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">Another item to cover next Monday __.</span><o:p></o:p></pre>
<p style="margin-left:.5in"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> </span><o:p></o:p></p>
<pre style="margin-left:.5in"><span style="color:black">Martin</span><o:p></o:p></pre>
</blockquote>
<div>
<p style="margin-left:.5in"> <o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>