diff --git a/4.0.0/html/_static/basic.css b/4.0.0/html/_static/basic.css new file mode 100644 index 0000000..f316efc --- /dev/null +++ b/4.0.0/html/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/4.0.0/html/_static/check-solid.svg b/4.0.0/html/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/4.0.0/html/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/4.0.0/html/_static/classic.css b/4.0.0/html/_static/classic.css new file mode 100644 index 0000000..5530147 --- /dev/null +++ b/4.0.0/html/_static/classic.css @@ -0,0 +1,269 @@ +/* + * classic.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- classic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +html { + /* CSS hack for macOS's scrollbar (see #1125) */ + background-color: #FFFFFF; +} + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #11303d; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + display: flex; + background-color: #1c4e63; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #ffffff; +} + +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div.sphinxsidebar a { + color: #98dbcc; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #355f7c; + text-decoration: none; +} + +a:visited { + color: #551a8b; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +nav.contents, +aside.topic, +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: unset; + color: unset; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +code { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th, dl.field-list > dt { + background-color: #ede; +} + +.warning code { + background: #efc2c2; +} + +.note code { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +div.code-block-caption { + color: #efefef; + background-color: #1c4e63; +} \ No newline at end of file diff --git a/4.0.0/html/_static/clipboard.min.js b/4.0.0/html/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/4.0.0/html/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/4.0.0/html/_static/copybutton.css b/4.0.0/html/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/4.0.0/html/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/4.0.0/html/_static/copybutton.js b/4.0.0/html/_static/copybutton.js new file mode 100644 index 0000000..58790fa --- /dev/null +++ b/4.0.0/html/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos, .gp, .go'; + + let text = filterText(target, exclude); + return formatCopyText(text, '\\$ |>>> |\\.\\.\\. ', true, true, true, true, '\\', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/4.0.0/html/_static/copybutton_funcs.js b/4.0.0/html/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/4.0.0/html/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/4.0.0/html/_static/default.css b/4.0.0/html/_static/default.css new file mode 100644 index 0000000..81b9363 --- /dev/null +++ b/4.0.0/html/_static/default.css @@ -0,0 +1 @@ +@import url("classic.css"); diff --git a/4.0.0/html/_static/doctools.js b/4.0.0/html/_static/doctools.js new file mode 100644 index 0000000..4d67807 --- /dev/null +++ b/4.0.0/html/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/4.0.0/html/_static/documentation_options.js b/4.0.0/html/_static/documentation_options.js new file mode 100644 index 0000000..3badae8 --- /dev/null +++ b/4.0.0/html/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '4.0.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: false, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/4.0.0/html/_static/file.png b/4.0.0/html/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/4.0.0/html/_static/file.png differ diff --git a/4.0.0/html/_static/language_data.js b/4.0.0/html/_static/language_data.js new file mode 100644 index 0000000..367b8ed --- /dev/null +++ b/4.0.0/html/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/4.0.0/html/_static/minus.png b/4.0.0/html/_static/minus.png new file mode 100644 index 0000000..d96755f Binary files /dev/null and b/4.0.0/html/_static/minus.png differ diff --git a/4.0.0/html/_static/mpi4py.svg b/4.0.0/html/_static/mpi4py.svg new file mode 100644 index 0000000..93e2af7 --- /dev/null +++ b/4.0.0/html/_static/mpi4py.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/4.0.0/html/_static/plus.png b/4.0.0/html/_static/plus.png new file mode 100644 index 0000000..7107cec Binary files /dev/null and b/4.0.0/html/_static/plus.png differ diff --git a/4.0.0/html/_static/pygments.css b/4.0.0/html/_static/pygments.css new file mode 100644 index 0000000..0d49244 --- /dev/null +++ b/4.0.0/html/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #208050 } /* Literal.Number.Bin */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/4.0.0/html/_static/searchtools.js b/4.0.0/html/_static/searchtools.js new file mode 100644 index 0000000..b08d58c --- /dev/null +++ b/4.0.0/html/_static/searchtools.js @@ -0,0 +1,620 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/4.0.0/html/_static/sidebar.js b/4.0.0/html/_static/sidebar.js new file mode 100644 index 0000000..f28c206 --- /dev/null +++ b/4.0.0/html/_static/sidebar.js @@ -0,0 +1,70 @@ +/* + * sidebar.js + * ~~~~~~~~~~ + * + * This script makes the Sphinx sidebar collapsible. + * + * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds + * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton + * used to collapse and expand the sidebar. + * + * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden + * and the width of the sidebar and the margin-left of the document + * are decreased. When the sidebar is expanded the opposite happens. + * This script saves a per-browser/per-session cookie used to + * remember the position of the sidebar among the pages. + * Once the browser is closed the cookie is deleted and the position + * reset to the default (expanded). + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +const initialiseSidebar = () => { + + + + + // global elements used by the functions. + const bodyWrapper = document.getElementsByClassName("bodywrapper")[0] + const sidebar = document.getElementsByClassName("sphinxsidebar")[0] + const sidebarWrapper = document.getElementsByClassName('sphinxsidebarwrapper')[0] + const sidebarButton = document.getElementById("sidebarbutton") + const sidebarArrow = sidebarButton.querySelector('span') + + // for some reason, the document has no sidebar; do not run into errors + if (typeof sidebar === "undefined") return; + + const flipArrow = element => element.innerText = (element.innerText === "»") ? "«" : "»" + + const collapse_sidebar = () => { + bodyWrapper.style.marginLeft = ".8em"; + sidebar.style.width = ".8em" + sidebarWrapper.style.display = "none" + flipArrow(sidebarArrow) + sidebarButton.title = _('Expand sidebar') + window.localStorage.setItem("sidebar", "collapsed") + } + + const expand_sidebar = () => { + bodyWrapper.style.marginLeft = "" + sidebar.style.removeProperty("width") + sidebarWrapper.style.display = "" + flipArrow(sidebarArrow) + sidebarButton.title = _('Collapse sidebar') + window.localStorage.setItem("sidebar", "expanded") + } + + sidebarButton.addEventListener("click", () => { + (sidebarWrapper.style.display === "none") ? expand_sidebar() : collapse_sidebar() + }) + + if (!window.localStorage.getItem("sidebar")) return + const value = window.localStorage.getItem("sidebar") + if (value === "collapsed") collapse_sidebar(); + else if (value === "expanded") expand_sidebar(); +} + +if (document.readyState !== "loading") initialiseSidebar() +else document.addEventListener("DOMContentLoaded", initialiseSidebar) \ No newline at end of file diff --git a/4.0.0/html/_static/sphinx_highlight.js b/4.0.0/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/4.0.0/html/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/4.0.0/html/changes.html b/4.0.0/html/changes.html new file mode 100644 index 0000000..ae637b9 --- /dev/null +++ b/4.0.0/html/changes.html @@ -0,0 +1,654 @@ + + + + + + + + CHANGES — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

CHANGES

+
+

Release 4.0.0 [2024-07-28]

+
    +
  • New features:

    +
      +
    • Add support for the MPI-4.0 standard.

      +
        +
      • Use large count MPI-4 routines.

      • +
      • Add persistent collective communication.

      • +
      • Add partitioned point-to-point communication.

      • +
      • Add new communicator constructors.

      • +
      • Add the Session class and its methods.

      • +
      +
    • +
    • Add support for the MPI-4.1 standard.

      +
        +
      • Add non-destructive completion test for multiple requests.

      • +
      • Add value-index datatype constructor.

      • +
      • Add communicator/session buffer attach/detach/flush.

      • +
      • Support for removal of error classes/codes/strings.

      • +
      • Support for querying hardware resource information.

      • +
      +
    • +
    • Add preliminary support for the upcoming MPI-5.0 standard.

      +
        +
      • User-level failure mitigation (ULFM).

      • +
      +
    • +
    • mpi4py.util.pool: New drop-in replacement for multiprocessing.pool.

    • +
    • mpi4py.util.sync: New synchronization utilities.

    • +
    • Add runtime check for mismatch between mpiexec and MPI library.

    • +
    • Support scikit-build-core as an alternative build backend.

    • +
    + +
  • +
  • Enhancements:

    +
      +
    • mpi4py.futures: Support for parallel tasks.

    • +
    • mpi4py.futures: Report exception tracebacks in workers.

    • +
    • mpi4py.util.pkl5: Add support for collective communication.

    • +
    • Add methods Datatype.fromcode(), Datatype.tocode() and +attributes Datatype.typestr, Datatype.typechar to simplify +NumPy interoperability for simple cases.

    • +
    • Add methods Comm.Create_errhandler(), Win.Create_errhandler(), +and File.Create_errhandler() to create custom error handlers.

    • +
    • Add support for pickle serialization of instances of MPI types. +All instances of Datatype, Info, and Status can be +serialized. Instances of Op can be serialized only if created +through mpi4py by calling Op.Create(). Instances of other MPI +types can be serialized only if they reference predefined handles.

    • +
    • Add handle attribute and fromhandle() class method to MPI +classes to ease interoperability with external code. The handle +value is a unsigned integer guaranteed to fit on the platform’s +uintptr_t C type.

    • +
    • Add lowercase free() method to MPI classes to ease MPI object +deallocation and cleanup. This method eventually attempts to call +Free(), but only if the object’s MPI handle is not a null or +predefined handle, and such call is allowed within the World Model +init/finalize.

    • +
    +
  • +
  • Backward-incompatible changes:

    +
      +
    • Python 2 is no longer supported, Python 3.6+ is required, but +typing stubs are supported for Python 3.8+.

    • +
    • The Intracomm.Create_group() method is no longer defined in the +base Comm class.

    • +
    • Group.Compare() and Comm.Compare() are no longer class methods +but instance methods. Existing codes using the former class +methods are expected to continue working.

    • +
    • Group.Translate_ranks() is no longer a class method but an +instance method. Existing codes using the former class method are +expected to continue working.

    • +
    • The LB and UB datatypes are no longer available, use +Datatype.Create_resized() instead.

    • +
    • The HOST predefined attribute key is no longer available.

    • +
    • The MPI.memory class has been renamed to MPI.buffer. The old +name is still available as an alias to the new name.

    • +
    • The mpi4py.dl module is no longer available.

    • +
    • The mpi4py.get_config function returns an empty dictionary.

    • +
    +
  • +
  • Miscellaneous:

    +
      +
    • The project is now licenced under the BSD-3-Clause license. This +change is fairly inconsequential for users and distributors. It +simply adds an additional clause against using contributor names +for promotional purposes without their consent.

    • +
    • Add a new guidelines section to documentation laying out new fair +play rules. These rules ask companies and outside developers to +refrain from reusing the mpi4py name in unaffiliated projects, +publishing binary mpi4py wheels on the main Python Package Index +(PyPI), and distributing modified versions with incompatible or +extended API changes. The primary motivation of these rules is to +avoid fragmentation and end-user confusion.

    • +
    +
  • +
+
+
+

Release 3.1.6 [2024-04-14]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • Fix various build issues.

  • +
+
+
+

Release 3.1.5 [2023-10-04]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • Rebuild C sources with Cython 0.29.36 to support Python 3.12.

  • +
+
+
+

Release 3.1.4 [2022-11-02]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • Rebuild C sources with Cython 0.29.32 to support Python 3.11.

  • +
  • Fix contiguity check for DLPack and CAI buffers.

  • +
  • Workaround build failures with setuptools v60.

  • +
+
+
+

Release 3.1.3 [2021-11-25]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • Add missing support for MPI.BOTTOM to generalized all-to-all collectives.

  • +
+
+
+

Release 3.1.2 [2021-11-04]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • mpi4py.futures: Add _max_workers property to MPIPoolExecutor.

  • +
  • mpi4py.util.dtlib: Fix computation of alignment for predefined datatypes.

  • +
  • mpi4py.util.pkl5: Fix deadlock when using ssend() + mprobe().

  • +
  • mpi4py.util.pkl5: Add environment variable MPI4PY_PICKLE_THRESHOLD.

  • +
  • mpi4py.rc: Interpret "y" and "n" strings as boolean values.

  • +
  • Fix/add typemap/typestr for MPI.WCHAR/MPI.COUNT datatypes.

  • +
  • Minor fixes and additions to documentation.

  • +
  • Minor fixes to typing support.

  • +
  • Support for local version identifier (PEP-440).

  • +
+
+
+

Release 3.1.1 [2021-08-14]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • Fix typo in Requires-Python package metadata.

  • +
  • Regenerate C sources with Cython 0.29.24.

  • +
+
+
+

Release 3.1.0 [2021-08-12]

+
+

Warning

+

This is the last release supporting Python 2.

+
+
    +
  • New features:

    +
      +
    • mpi4py.util: New package collecting miscellaneous utilities.

    • +
    +
  • +
  • Enhancements:

    +
      +
    • Add pickle-based Request.waitsome() and Request.testsome().

    • +
    • Add lowercase methods Request.get_status() and Request.cancel().

    • +
    • Support for passing Python GPU arrays compliant with the DLPack data +interchange mechanism (link) and the __cuda_array_interface__ +(CAI) standard (link) to uppercase methods. This support requires +that mpi4py is built against CUDA-aware MPI implementations. This +feature is currently experimental and subject to future changes.

    • +
    • mpi4py.futures: Add support for initializers and canceling futures at shutdown. +Environment variables names now follow the pattern MPI4PY_FUTURES_*, the +previous MPI4PY_* names are deprecated.

    • +
    • Add type annotations to Cython code. The first line of the docstring of functions +and methods displays a signature including type annotations.

    • +
    • Add companion stub files to support type checkers.

    • +
    • Support for weak references.

    • +
    +
  • +
  • Miscellaneous:

    +
      +
    • Add a new mpi4py publication (link) to the citation listing.

    • +
    +
  • +
+
+
+

Release 3.0.3 [2019-11-04]

+
    +
  • Regenerate Cython wrappers to support Python 3.8.

  • +
+
+
+

Release 3.0.2 [2019-06-11]

+
    +
  • Bug fixes:

    +
      +
    • Fix handling of readonly buffers in support for Python 2 legacy +buffer interface. The issue triggers only when using a buffer-like +object that is readonly and does not export the new Python 3 +buffer interface.

    • +
    • Fix build issues with Open MPI 4.0.x series related to removal of +many MPI-1 symbols deprecated in MPI-2 and removed in MPI-3.

    • +
    • Minor documentation fixes.

    • +
    +
  • +
+
+
+

Release 3.0.1 [2019-02-15]

+
    +
  • Bug fixes:

    +
      +
    • Fix Comm.scatter() and other collectives corrupting input send +list. Add safety measures to prevent related issues in global +reduction operations.

    • +
    • Fix error-checking code for counts in Op.Reduce_local().

    • +
    +
  • +
  • Enhancements:

    +
      +
    • Map size-specific Python/NumPy typecodes to MPI datatypes.

    • +
    • Allow partial specification of target list/tuple arguments in the +various Win RMA methods.

    • +
    • Workaround for removal of MPI_{LB|UB} in Open MPI 4.0.

    • +
    • Support for Microsoft MPI v10.0.

    • +
    +
  • +
+
+
+

Release 3.0.0 [2017-11-08]

+
    +
  • New features:

    +
      +
    • mpi4py.futures: Execute computations asynchronously using a pool +of MPI processes. This package is based on concurrent.futures +from the Python standard library.

    • +
    • mpi4py.run: Run Python code and abort execution in case of +unhandled exceptions to prevent deadlocks.

    • +
    • mpi4py.bench: Run basic MPI benchmarks and tests.

    • +
    +
  • +
  • Enhancements:

    +
      +
    • Lowercase, pickle-based collective communication calls are now +thread-safe through the use of fine-grained locking.

    • +
    • The MPI module now exposes a memory type which is a +lightweight variant of the builtin memoryview type, but +exposes both the legacy Python 2 and the modern Python 3 buffer +interface under a Python 2 runtime.

    • +
    • The MPI.Comm.Alltoallw() method now uses count=1 and +displ=0 as defaults, assuming that messages are specified +through user-defined datatypes.

    • +
    • The Request.Wait[all]() methods now return True to match +the interface of Request.Test[all]().

    • +
    • The Win class now implements the Python buffer interface.

    • +
    +
  • +
  • Backward-incompatible changes:

    +
      +
    • The buf argument of the MPI.Comm.recv() method is +deprecated, passing anything but None emits a warning.

    • +
    • The MPI.Win.memory property was removed, use the +MPI.Win.tomemory() method instead.

    • +
    • Executing python -m mpi4py in the command line is now +equivalent to python -m mpi4py.run. For the former behavior, +use python -m mpi4py.bench.

    • +
    • Python 2.6 and 3.2 are no longer supported. The mpi4py.MPI +module may still build and partially work, but other pure-Python +modules under the mpi4py namespace will not.

    • +
    • Windows: Remove support for legacy MPICH2, Open MPI, and DeinoMPI.

    • +
    +
  • +
+
+
+

Release 2.0.0 [2015-10-18]

+
    +
  • Support for MPI-3 features.

    +
      +
    • Matched probes and receives.

    • +
    • Nonblocking collectives.

    • +
    • Neighborhood collectives.

    • +
    • New communicator constructors.

    • +
    • Request-based RMA operations.

    • +
    • New RMA communication and synchronisation calls.

    • +
    • New window constructors.

    • +
    • New datatype constructor.

    • +
    • New C++ boolean and floating complex datatypes.

    • +
    +
  • +
  • Support for MPI-2 features not included in previous releases.

    +
      +
    • Generalized All-to-All collective (Comm.Alltoallw())

    • +
    • User-defined data representations (Register_datarep())

    • +
    +
  • +
  • New scalable implementation of reduction operations for Python +objects. This code is based on binomial tree algorithms using +point-to-point communication and duplicated communicator +contexts. To disable this feature, use +mpi4py.rc.fast_reduce = False.

  • +
  • Backward-incompatible changes:

    +
      +
    • Python 2.4, 2.5, 3.0 and 3.1 are no longer supported.

    • +
    • Default MPI error handling policies are overridden. After import, +mpi4py sets the ERRORS_RETURN error handler in COMM_SELF +and COMM_WORLD, as well as any new Comm, Win, or +File instance created through mpi4py, thus effectively +ignoring the MPI rules about error handler inheritance. This way, +MPI errors translate to Python exceptions. To disable this +behavior and use the standard MPI error handling rules, use +mpi4py.rc.errors = 'default'.

    • +
    • Change signature of all send methods, +dest is a required argument.

    • +
    • Change signature of all receive and probe methods, +source defaults to ANY_SOURCE, +tag defaults to ANY_TAG.

    • +
    • Change signature of send lowercase-spelling methods, +obj arguments are not mandatory.

    • +
    • Change signature of recv lowercase-spelling methods, +renamed ‘obj’ arguments to ‘buf’.

    • +
    • Change Request.Waitsome() and Request.Testsome() +to return None or list.

    • +
    • Change signature of all lowercase-spelling collectives, +sendobj arguments are now mandatory, +recvobj arguments were removed.

    • +
    • Reduction operations MAXLOC and MINLOC are no longer +special-cased in lowercase-spelling methods Comm.[all]reduce() +and Comm.[ex]scan(), the input object must be specified as a +tuple (obj, location).

    • +
    • Change signature of name publishing functions. +The new signatures are +Publish_name(service_name, port_name, info=INFO_NULL) and +Unpublish_name(service_name, port_name, info=INFO_NULL)`.

    • +
    • Win instances now cache Python objects exposing memory by +keeping references instead of using MPI attribute caching.

    • +
    • Change signature of Win.Lock(). +The new signature is +Win.Lock(rank, lock_type=LOCK_EXCLUSIVE, assertion=0).

    • +
    • Move Cartcomm.Map() to Intracomm.Cart_map().

    • +
    • Move Graphcomm.Map() to Intracomm.Graph_map().

    • +
    • Remove the mpi4py.MPE module.

    • +
    • Rename the Cython definition file for use with cimport +statement from mpi_c.pxd to libmpi.pxd.

    • +
    +
  • +
+
+
+

Release 1.3.1 [2013-08-07]

+
    +
  • Regenerate C wrappers with Cython 0.19.1 to support Python 3.3.

  • +
  • Install *.pxd files in <site-packages>/mpi4py to ease the +support for Cython’s cimport statement in code requiring to +access mpi4py internals.

  • +
  • As a side-effect of using Cython 0.19.1, ancient Python 2.3 is no +longer supported. If you really need it, you can install an older +Cython and run python setup.py build_src --force.

  • +
+
+
+

Release 1.3 [2012-01-20]

+
    +
  • Now Comm.recv() accept a buffer to receive the message.

  • +
  • Add Comm.irecv() and Request.{wait|test}[any|all]().

  • +
  • Add Intracomm.Spawn_multiple().

  • +
  • Better buffer handling for PEP 3118 and legacy buffer interfaces.

  • +
  • Add support for attribute attribute caching on communicators, +datatypes and windows.

  • +
  • Install MPI-enabled Python interpreter as +<path>/mpi4py/bin/python-mpi.

  • +
  • Windows: Support for building with Open MPI.

  • +
+
+
+

Release 1.2.2 [2010-09-13]

+
    +
  • Add mpi4py.get_config() to retrieve information (compiler +wrappers, includes, libraries, etc) about the MPI implementation +employed to build mpi4py.

  • +
  • Workaround Python libraries with missing GILState-related API calls +in case of non-threaded Python builds.

  • +
  • Windows: look for MPICH2, DeinoMPI, Microsoft HPC Pack at their +default install locations under %ProgramFiles.

  • +
  • MPE: fix hacks related to old API’s, these hacks are broken when MPE +is built with a MPI implementations other than MPICH2.

  • +
  • HP-MPI: fix for missing Fortran datatypes, use dlopen() to load the +MPI shared library before MPI_Init()

  • +
  • Many distutils-related fixes, cleanup, and enhancements, better +logics to find MPI compiler wrappers.

  • +
  • Support for pip install mpi4py.

  • +
+
+
+

Release 1.2.1 [2010-02-26]

+
    +
  • Fix declaration in Cython include file. This declaration, while +valid for Cython, broke the simple-minded parsing used in +conf/mpidistutils.py to implement configure-tests for availability +of MPI symbols.

  • +
  • Update SWIG support and make it compatible with Python 3. Also +generate an warning for SWIG < 1.3.28.

  • +
  • Fix distutils-related issues in Mac OS X. Now ARCHFLAGS environment +variable is honored of all Python’s config/Makefile variables.

  • +
  • Fix issues with Open MPI < 1.4.2 related to error checking and +MPI_XXX_NULL handles.

  • +
+
+
+

Release 1.2 [2009-12-29]

+
    +
  • Automatic MPI datatype discovery for NumPy arrays and PEP-3118 +buffers. Now buffer-like objects can be messaged directly, it is no +longer required to explicitly pass a 2/3-list/tuple like [data, +MPI.DOUBLE], or [data, count, MPI.DOUBLE]. Only basic types +are supported, i.e., all C/C99-native signed/unsigned integral types +and single/double precision real/complex floating types. Many thanks +to Eilif Muller for the initial feedback.

  • +
  • Nonblocking send of pickled Python objects. Many thanks to Andreas +Kloeckner for the initial patch and enlightening discussion about +this enhancement.

  • +
  • Request instances now hold a reference to the Python object +exposing the buffer involved in point-to-point communication or +parallel I/O. Many thanks to Andreas Kloeckner for the initial +feedback.

  • +
  • Support for logging of user-defined states and events using MPE. Runtime +(i.e., without requiring a recompile!) activation of logging of all +MPI calls is supported in POSIX platforms implementing dlopen().

  • +
  • Support for all the new features in MPI-2.2 (new C99 and F90 +datatypes, distributed graph topology, local reduction operation, +and other minor enhancements).

  • +
  • Fix the annoying issues related to Open MPI and Python dynamic +loading of extension modules in platforms supporting dlopen().

  • +
  • Fix SLURM dynamic loading issues on SiCortex. Many thanks to Ian +Langmore for providing me shell access.

  • +
+
+
+

Release 1.1.0 [2009-06-06]

+
    +
  • Fix bug in Comm.Iprobe() that caused segfaults as Python C-API +calls were issued with the GIL released (issue #2).

  • +
  • Add Comm.bsend() and Comm.ssend() for buffered and +synchronous send semantics when communicating general Python +objects.

  • +
  • Now the call Info.Get(key) return a single value (i.e, instead +of a 2-tuple); this value is None if key is not in the +Info object, or a string otherwise. Previously, the call +redundantly returned (None, False) for missing key-value pairs; +None is enough to signal a missing entry.

  • +
  • Add support for parametrized Fortran datatypes.

  • +
  • Add support for decoding user-defined datatypes.

  • +
  • Add support for user-defined reduction operations on memory +buffers. However, at most 16 user-defined reduction operations +can be created. Ask the author for more room if you need it.

  • +
+
+
+

Release 1.0.0 [2009-03-20]

+

This is the fist release of the all-new, Cython-based, implementation +of MPI for Python. Unfortunately, this implementation is not +backward-compatible with the previous one. The list below summarizes +the more important changes that can impact user codes.

+
    +
  • Some communication calls had overloaded functionality. Now there +is a clear distinction between communication of general Python +object with pickle, and (fast, near C-speed) communication of +buffer-like objects (e.g., NumPy arrays).

    +
      +
    • for communicating general Python objects, you have to use +all-lowercase methods, like send(), recv(), bcast(), +etc.

    • +
    • for communicating array data, you have to use Send(), +Recv(), Bcast(), etc. methods. Buffer arguments to these +calls must be explicitly specified by using a 2/3-list/tuple like +[data, MPI.DOUBLE], or [data, count, MPI.DOUBLE] (the +former one uses the byte-size of data and the extent of the +MPI datatype to define the count).

    • +
    +
  • +
  • Indexing a communicator with an integer returned a special object +associating the communication with a target rank, alleviating you +from specifying source/destination/root arguments in point-to-point +and collective communications. This functionality is no longer +available, expressions like:

    +
    MPI.COMM_WORLD[0].Send(...)
    +MPI.COMM_WORLD[0].Recv(...)
    +MPI.COMM_WORLD[0].Bcast(...)
    +
    +
    +

    have to be replaced by:

    +
    MPI.COMM_WORLD.Send(..., dest=0)
    +MPI.COMM_WORLD.Recv(..., source=0)
    +MPI.COMM_WORLD.Bcast(..., root=0)
    +
    +
    +
  • +
  • Automatic MPI initialization (i.e., at import time) requests the +maximum level of MPI thread support (i.e., it is done by calling +MPI_Init_thread() and passing MPI_THREAD_MULTIPLE). In case +you need to change this behavior, you can tweak the contents of the +mpi4py.rc module.

  • +
  • In order to obtain the values of predefined attributes attached to +the world communicator, now you have to use the Get_attr() +method on the MPI.COMM_WORLD instance:

    +
    tag_ub = MPI.COMM_WORLD.Get_attr(MPI.TAG_UB)
    +
    +
    +
  • +
  • In the previous implementation, MPI.COMM_WORLD and +MPI.COMM_SELF were associated to duplicates of the (C-level) +MPI_COMM_WORLD and MPI_COMM_SELF predefined communicator +handles. Now this is no longer the case, MPI.COMM_WORLD and +MPI.COMM_SELF proxies the actual MPI_COMM_WORLD and +MPI_COMM_SELF handles.

  • +
  • Convenience aliases MPI.WORLD and MPI.SELF were removed. Use +instead MPI.COMM_WORLD and MPI.COMM_SELF.

  • +
  • Convenience constants MPI.WORLD_SIZE and MPI.WORLD_RANK were +removed. Use instead MPI.COMM_WORLD.Get_size() and +MPI.COMM_WORLD.Get_rank().

  • +
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/citation.html b/4.0.0/html/citation.html new file mode 100644 index 0000000..01f13b5 --- /dev/null +++ b/4.0.0/html/citation.html @@ -0,0 +1,137 @@ + + + + + + + + Citation — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Citation

+

If MPI for Python been significant to a project that leads to an +academic publication, please acknowledge that fact by citing the +project.

+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/develop.html b/4.0.0/html/develop.html new file mode 100644 index 0000000..5d8759c --- /dev/null +++ b/4.0.0/html/develop.html @@ -0,0 +1,274 @@ + + + + + + + + Development — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Development

+
+

Prerequisites

+

You need to have the following software properly installed to develop +MPI for Python:

+
    +
  • Python 3.6 or above.

  • +
  • The Cython compiler.

  • +
  • A working MPI implementation like MPICH or Open MPI, +preferably supporting MPI-4 and built with shared/dynamic libraries.

  • +
+

Optionally, consider installing the following packages:

+
    +
  • NumPy for enabling comprehensive testing of MPI communication.

  • +
  • CuPy for enabling comprehensive testing with a GPU-aware MPI.

  • +
  • Sphinx to build the documentation.

  • +
+
+

Tip

+

Most routine development tasks like building, installing in +editable mode, testing, and generating documentation can be +performed with the spin developer tool. Run spin at +the top level source directory for a list of available subcommands.

+
+
+
+

Building

+

MPI for Python uses setuptools-based build system that relies on +the setup.py file. Some setuptools commands (e.g., build) +accept additional options:

+
+
+--mpi=
+

Lets you pass a section with MPI configuration within a special +configuration file. Alternatively, you can use the MPICFG +environment variable.

+
+ +
+
+--mpicc=
+

Specify the path or name of the mpicc C compiler wrapper. +Alternatively, use the MPICC environment variable.

+
+ +
+
+--mpild=
+

Specify the full path or name for the MPI-aware C linker. +Alternatively, use the MPILD environment variable. If +not set, the mpicc C compiler wrapper is used for +linking.

+
+ +
+
+--configure
+

Runs exhaustive tests for checking about missing MPI types, +constants, and functions. This option should be passed in order to +build MPI for Python against old MPI-1, MPI-2, or MPI-3 +implementations, possibly providing a subset of MPI-4.

+
+ +

If you use a MPI implementation providing a mpicc C +compiler wrapper (e.g., MPICH or Open MPI), it will be used for +compilation and linking. This is the preferred and easiest way to +build MPI for Python.

+

If mpicc is found in the executable search path +(PATH environment variable), simply run the build +command:

+
$ python setup.py build
+
+
+

If mpicc is not in your search path or the compiler wrapper +has a different name, you can run the build command specifying its +location, either via the --mpicc command option or using the +MPICC environment variable:

+
$ python setup.py build --mpicc=/path/to/mpicc
+$ env MPICC=/path/to/mpicc python setup.py build
+
+
+

Alternatively, you can provide all the relevant information about your +MPI implementation by editing the mpi.cfg file located in the +top level source directory. You can use the default section [mpi] +or add a new custom section, for example [vendor_mpi] (see the +examples provided in the mpi.cfg file as a starting point to +write your own section):

+
[mpi]
+include_dirs         = /usr/local/mpi/include
+libraries            = mpi
+library_dirs         = /usr/local/mpi/lib
+runtime_library_dirs = /usr/local/mpi/lib
+
+[vendor_mpi]
+include_dirs         = /opt/mpi/include ...
+libraries            = mpi ...
+library_dirs         = /opt/mpi/lib ...
+runtime_library_dirs = /opt/mpi/lib ...
+
+...
+
+
+

and then run the build command specifying you custom +configuration section:

+
$ python setup.py build --mpi=vendor_mpi
+$ env MPICFG=vendor_mpi python setup.py build
+
+
+
+
+

Installing

+

MPI for Python can be installed in editable mode:

+
$ python -m pip install --editable .
+
+
+

After modifying Cython sources, an in-place rebuild is needed:

+
$ python setup.py build --inplace
+
+
+
+
+

Testing

+

To quickly test the installation:

+
$ mpiexec -n 5 python -m mpi4py.bench helloworld
+Hello, World! I am process 0 of 5 on localhost.
+Hello, World! I am process 1 of 5 on localhost.
+Hello, World! I am process 2 of 5 on localhost.
+Hello, World! I am process 3 of 5 on localhost.
+Hello, World! I am process 4 of 5 on localhost.
+
+$ mpiexec -n 5 python -m mpi4py.bench ringtest -l 10 -n 1048576
+time for 10 loops = 0.00361614 seconds (5 processes, 1048576 bytes)
+
+
+

If you installed from a git clone or the source distribution, issuing +at the command line:

+
$ mpiexec -n 5 python demo/helloworld.py
+
+
+

will launch a five-process run of the Python interpreter and run the +demo script demo/helloworld.py from the source distribution.

+

You can also run all the unittest scripts:

+
$ mpiexec -n 5 python test/main.py
+
+
+

or, if you have the pytest unit testing framework installed:

+
$ mpiexec -n 5 pytest
+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/genindex.html b/4.0.0/html/genindex.html new file mode 100644 index 0000000..f468ea9 --- /dev/null +++ b/4.0.0/html/genindex.html @@ -0,0 +1,3008 @@ + + + + + + + Index — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + +
+
+
+
+ + +

Index

+ +
+ Symbols + | _ + | A + | B + | C + | D + | E + | F + | G + | H + | I + | J + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + +
+

Symbols

+ + + +
+ +

_

+ + + +
+ +

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + +
+ +

I

+ + + +
+ +

J

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

Q

+ + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + + +
+ + + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/guidelines.html b/4.0.0/html/guidelines.html new file mode 100644 index 0000000..b4017f3 --- /dev/null +++ b/4.0.0/html/guidelines.html @@ -0,0 +1,238 @@ + + + + + + + + Guidelines — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Guidelines

+
+

Fair play

+
+

Summary

+

This section defines Rules of Play for companies and outside developers that +engage with the mpi4py project. It covers:

+
    +
  • Restrictions on use of the mpi4py name.

  • +
  • How and whether to publish a modified distribution.

  • +
  • How to make us aware of patched versions.

  • +
+

After reading this section, companies and developers will know what kinds of +behavior the mpi4py developers and contributors would like to see, and which we +consider troublesome, bothersome, and unacceptable.

+

This document is a close adaptation of NumPy NEP 36.

+
+
+

Motivation

+

Occasionally, we learn of modified mpi4py versions and binary distributions +circulated by outsiders. These patched versions can cause problems to mpi4py +users (see, e.g., mpi4py/mpi4py#508). When issues like these arise, our +developers waste time identifying the problematic release, locating +alterations, and determining an appropriate course of action.

+

In addition, packages on the Python Packaging Index are sometimes named such +that users assume they are sanctioned or maintained by the mpi4py +developers. We wish to reduce the number of such incidents.

+
+
+

Scope

+

This document aims to define a minimal set of rules that, when followed, will +be considered good-faith efforts in line with the expectations of the mpi4py +developers and contributors.

+

Our hope is that companies and outside developers who feel they need to modify +mpi4py will first consider contributing to the project, or use alternative +mechanisms for patching and extending mpi4py.

+

When in doubt, please talk to us first. We may suggest an alternative; at +minimum, we’ll be informed and we may even grant an exception if deemed +appropriate.

+
+
+

Fair play rules

+
    +
  1. Do not reuse the mpi4py name for projects not affiliated with the mpi4py +project.

    +

    At time of writing, there are only a handful of mpi4py-named packages +developed by the mpi4py project, including mpi4py and mpi4py-fft. We +ask that outside packages not include the phrase mpi4py, i.e., avoid +names such as mycompany-mpi4py or mpi4py-mycompany.

    +

    To be clear, this rule only applies to modules (package names); it is +perfectly acceptable to have a submodule of your own package named +mycompany.mpi4py.

    +
  2. +
  3. Do not publish binary mpi4py wheels on PyPI (https://pypi.org/).

    +

    We ask companies and outside developers to not publish binary mpi4py wheels +in the main Python Package Index (https://pypi.org/) under names such +mpi4py-mpich, mpi4py-openmpi, or mpi4py-vendor_mpi.

    +

    The usual approaches to build binary Python wheels involve the embedding of +dependent shared libraries. While such an approach may seem convenient and +often is, in the particular case of MPI and mpi4py it is ultimately harmful +to end users. Embedding the MPI shared libraries would prevent the use of +external, system-provided MPI installations with hardware-specific +optimizations and site-specific tweaks.

    +

    The MPI Forum is currently discussing the standardization of a proposal for +an Application Binary Interface (ABI) for MPI, see [mpi-abi-paper] and +[mpi-abi-issue]. Such standardization will allow for any binary dependent +on the MPI library to be used with multiple MPI backends. Once this proposal +becomes part of the MPI standard, the mpi4py project will consider +publishing on PyPI binary wheels capable of using any backend MPI +implementation supporting the new MPI ABI specification. In the mean time, +mpi4py is currently distributing experimental MPI and mpi4py binary wheels +on https://anaconda.org/mpi4py.

    +
    +
    +[mpi-abi-paper] +

    J. Hammond, L. Dalcin, E. Schnetter, M. Pérache, J. B. Besnard, +J. Brown, G. Brito Gadeschi, S. Byrne, J. Schuchart, and H. Zhou. +MPI Application Binary Interface Standardization. +EuroMPI 2023, Bristol, UK, September 2023. +https://doi.org/10.1145/3615318.3615319

    +
    +
    +[mpi-abi-issue] +

    MPI Forum GitHub Issue: MPI needs a standard ABI. +https://github.com/mpi-forum/mpi-issues/issues/751

    +
    +
    +
  4. +
  5. Do not republish modified versions of mpi4py.

    +

    Modified versions of mpi4py make it very difficult for the developers to +address bug reports, since we typically do not know which parts of mpi4py +have been modified.

    +

    If you have to break this rule (and we implore you not to!), then make it +clear in the __version__ tag that you have modified mpi4py, e.g.:

    +
    >>> print(mpi4py.__version__)
    +'4.0.0+mycompany.13`
    +
    +
    +

    We understand that minor patches are often required to make a library work +inside of a package ecosystem. This is totally acceptable, but we ask that +no substantive changes are made.

    +
  6. +
  7. Do not extend or modify mpi4py’s API.

    +

    If you absolutely have to break the previous rule, please do not add +additional functions to the namespace, or modify the API of existing +functions. Having additional functions exposed in distributed versions is +confusing for users and developers alike.

    +
  8. +
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/index.html b/4.0.0/html/index.html new file mode 100644 index 0000000..deacfa9 --- /dev/null +++ b/4.0.0/html/index.html @@ -0,0 +1,226 @@ + + + + + + + + MPI for Python — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

MPI for Python

+
+
Author:
+

Lisandro Dalcin

+
+
Contact:
+

dalcinl@gmail.com

+
+
Date:
+

Jul 28, 2024

+
+
+ + + +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/install.html b/4.0.0/html/install.html new file mode 100644 index 0000000..83b5fa6 --- /dev/null +++ b/4.0.0/html/install.html @@ -0,0 +1,432 @@ + + + + + + + + Installation — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Installation

+
+

Build backends

+

mpi4py supports two different build backends: setuptools (default), +scikit-build-core (CMake-based), and meson-python +(Meson-based). The build backend can be selected by setting the +MPI4PY_BUILD_BACKEND environment variable.

+
+
+MPI4PY_BUILD_BACKEND
+
+
Choices:
+

"setuptools", "scikit-build-core", "meson-python"

+
+
Default:
+

"setuptools"

+
+
+

Request a build backend for building mpi4py from sources.

+
+ +
+

Using setuptools

+
+

Tip

+

Set the MPI4PY_BUILD_BACKEND environment variable to +"setuptools" to use the setuptools build backend.

+
+

When using the default setuptools build backend, mpi4py relies on +the legacy Python distutils framework to build C extension modules. +The following environment variables affect the build configuration.

+
+
+MPI4PY_BUILD_MPICC
+

The mpicc compiler wrapper command is searched for in +the executable search path (PATH environment variable) +and used to compile the mpi4py.MPI C extension module. +Alternatively, use the MPI4PY_BUILD_MPICC environment +variable to the full path or command corresponding to the MPI-aware +C compiler.

+
+ +
+
+MPI4PY_BUILD_MPILD
+

The mpicc compiler wrapper command is also used for +linking the mpi4py.MPI C extension module. +Alternatively, use the MPI4PY_BUILD_MPILD environment +variable to specify the full path or command corresponding to the +MPI-aware C linker.

+
+ +
+
+MPI4PY_BUILD_MPICFG
+

If the MPI implementation does not provide a compiler wrapper, or +it is not installed in a default system location, all relevant +build information like include/library locations and library lists +can be provided in an ini-style configuration file under a +[mpi] section. mpi4py can then be asked to use the custom build +information by setting the MPI4PY_BUILD_MPICFG +environment variable to the full path of the configuration file. As +an example, see the mpi.cfg file located in the top level +mpi4py source directory.

+
+ +
+
+MPI4PY_BUILD_CONFIGURE
+

Some vendor MPI implementations may not provide complete coverage +of the MPI standard, or may provide partial features of newer MPI +standard versions while advertising support for an older version. +Setting the MPI4PY_BUILD_CONFIGURE environment variable +to a non-empty string will trigger the run of exhaustive checks for +the availability of all MPI constants, predefined handles, and +routines.

+
+ +

The following environment variables are aliases for the ones described +above. Having shorter names, they are convenient for occasional use in +the command line. Its usage is not recommended in automation scenarios +like packaging recipes, deployment scripts, and container image +creation.

+
+
+MPICC
+

Convenience alias for MPI4PY_BUILD_MPICC.

+
+ +
+
+MPILD
+

Convenience alias for MPI4PY_BUILD_MPILD.

+
+ +
+
+MPICFG
+

Convenience alias for MPI4PY_BUILD_MPICFG.

+
+ +
+
+

Using scikit-build-core

+
+

Tip

+

Set the MPI4PY_BUILD_BACKEND environment variable to +"scikit-build-core" to use the scikit-build-core build backend.

+
+

When using the scikit-build-core build backend, mpi4py delegates all +of MPI build configuration to CMake’s FindMPI module. Besides the +obvious advantage of cross-platform support, this delegation to CMake +may be convenient in build environments exposing vendor software +stacks via intricate module systems. Note however that mpi4py will not +be able to look for MPI routines available beyond the MPI standard +version the MPI implementation advertises to support (via the +MPI_VERSION and MPI_SUBVERSION macro constants +in the mpi.h header file), any missing MPI constant or symbol +will prevent a successful build.

+
+
+

Using meson-python

+
+

Tip

+

Set the MPI4PY_BUILD_BACKEND environment variable to +"meson-python" to use the meson-python build backend.

+
+

When using the meson-python build backend, mpi4py delegates build +tasks to the Meson build system.

+
+

Warning

+

mpi4py support for the meson-python build backend is +experimental. For the time being, users must set the CC +environment variable to the command or path corresponding to the +mpicc C compiler wrapper.

+
+
+
+
+

Using pip

+

You can install the latest mpi4py release from its source distribution +at PyPI using pip:

+
$ python -m pip install mpi4py
+
+
+

You can also install the in-development version with:

+
$ python -m pip install git+https://github.com/mpi4py/mpi4py
+
+
+

or:

+
$ python -m pip install https://github.com/mpi4py/mpi4py/tarball/master
+
+
+
+

Note

+

Installing mpi4py from its source distribution (available at PyPI) +or Git source code repository (available at GitHub) requires a C +compiler and a working MPI implementation with development headers +and libraries.

+
+
+

Warning

+

pip keeps previously built wheel files on its cache for future +reuse. If you want to reinstall the mpi4py package using a +different or updated MPI implementation, you have to either first +remove the cached wheel file with:

+
$ python -m pip cache remove mpi4py
+
+
+

or ask pip to disable the cache:

+
$ python -m pip install --no-cache-dir mpi4py
+
+
+
+
+
+

Using conda

+

The conda-forge community provides ready-to-use binary packages +from an ever growing collection of software libraries built around the +multi-platform conda package manager. Four MPI implementations are +available on conda-forge: Open MPI (Linux and macOS), MPICH (Linux and +macOS), Intel MPI (Linux and Windows) and Microsoft MPI (Windows). +You can install mpi4py and your preferred MPI implementation using the +conda package manager:

+
    +
  • to use MPICH do:

    +
    $ conda install -c conda-forge mpi4py mpich
    +
    +
    +
  • +
  • to use Open MPI do:

    +
    $ conda install -c conda-forge mpi4py openmpi
    +
    +
    +
  • +
  • to use Intel MPI do:

    +
    $ conda install -c conda-forge mpi4py impi_rt
    +
    +
    +
  • +
  • to use Microsoft MPI do:

    +
    $ conda install -c conda-forge mpi4py msmpi
    +
    +
    +
  • +
+

MPICH and many of its derivatives are ABI-compatible. You can provide +the package specification mpich=X.Y.*=external_* (where X and +Y are the major and minor version numbers) to request the conda +package manager to use system-provided MPICH (or derivative) +libraries. Similarly, you can provide the package specification +openmpi=X.Y.*=external_* to use system-provided Open MPI +libraries.

+

The openmpi package on conda-forge has built-in CUDA support, but +it is disabled by default. To enable it, follow the instruction +outlined during conda install. Additionally, UCX support is also +available once the ucx package is installed.

+
+

Warning

+

Binary conda-forge packages are built with a focus on +compatibility. The MPICH and Open MPI packages are build in a +constrained environment with relatively dated OS images. Therefore, +they may lack support for high-performance features like +cross-memory attach (XPMEM/CMA). In production scenarios, it is +recommended to use external (either custom-built or system-provided) +MPI installations. See the relevant conda-forge documentation about +using external MPI libraries .

+
+
+
+

Linux

+

On Fedora Linux systems (as well as RHEL and their derivatives +using the EPEL software repository), you can install binary packages +with the system package manager:

+
    +
  • using dnf and the mpich package:

    +
    $ sudo dnf install python3-mpi4py-mpich
    +
    +
    +
  • +
  • using dnf and the openmpi package:

    +
    $ sudo dnf install python3-mpi4py-openmpi
    +
    +
    +
  • +
+

Please remember to load the correct MPI module for your chosen MPI +implementation:

+
    +
  • for the mpich package do:

    +
    $ module load mpi/mpich-$(arch)
    +$ python -c "from mpi4py import MPI"
    +
    +
    +
  • +
  • for the openmpi package do:

    +
    $ module load mpi/openmpi-$(arch)
    +$ python -c "from mpi4py import MPI"
    +
    +
    +
  • +
+

On Ubuntu Linux and Debian Linux systems, binary packages are +available for installation using the system package manager:

+
$ sudo apt install python3-mpi4py
+
+
+

Note that on Ubuntu/Debian systems, the mpi4py package uses Open +MPI. To use MPICH, install the libmpich-dev and python3-dev +packages (and any other required development tools). Afterwards, +install mpi4py from sources using pip.

+
+
+

macOS

+

macOS users can install mpi4py using the Homebrew package +manager:

+
$ brew install mpi4py
+
+
+

Note that the Homebrew mpi4py package uses Open MPI. Alternatively, +install the mpich package and next install mpi4py from sources +using pip.

+
+
+

Windows

+

Windows users can install mpi4py from binary wheels hosted on the +Python Package Index (PyPI) using pip:

+
$ python -m pip install mpi4py
+
+
+

The Windows wheels available on PyPI are specially crafted to work +with either the Intel MPI or the Microsoft MPI +runtime, therefore requiring a separate installation of any one of +these packages.

+

Intel MPI is under active development and supports recent version of +the MPI standard. Intel MPI can be installed with pip (see the +impi-rt package on PyPI), being therefore straightforward to get it +up and running within a Python environment. Intel MPI can also be +installed system-wide as part of the Intel HPC Toolkit for Windows or +via standalone online/offline installers.

+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/intro.html b/4.0.0/html/intro.html new file mode 100644 index 0000000..afb5b78 --- /dev/null +++ b/4.0.0/html/intro.html @@ -0,0 +1,330 @@ + + + + + + + + Introduction — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Introduction

+

Over the last years, high performance computing has become an +affordable resource to many more researchers in the scientific +community than ever before. The conjunction of quality open source +software and commodity hardware strongly influenced the now widespread +popularity of Beowulf class clusters and cluster of workstations.

+

Among many parallel computational models, message-passing has proven +to be an effective one. This paradigm is specially suited for (but +not limited to) distributed memory architectures and is used in +today’s most demanding scientific and engineering application related +to modeling, simulation, design, and signal processing. However, +portable message-passing parallel programming used to be a nightmare +in the past because of the many incompatible options developers were +faced to. Fortunately, this situation definitely changed after the +MPI Forum released its standard specification.

+

High performance computing is traditionally associated with software +development using compiled languages. However, in typical applications +programs, only a small part of the code is time-critical enough to +require the efficiency of compiled languages. The rest of the code is +generally related to memory management, error handling, input/output, +and user interaction, and those are usually the most error prone and +time-consuming lines of code to write and debug in the whole +development process. Interpreted high-level languages can be really +advantageous for this kind of tasks.

+

For implementing general-purpose numerical computations, MATLAB [1] +is the dominant interpreted programming language. In the open source +side, Octave and Scilab are well known, freely distributed software +packages providing compatibility with the MATLAB language. In this +work, we present MPI for Python, a new package enabling applications +to exploit multiple processors using standard MPI “look and feel” in +Python scripts.

+ +
+

What is MPI?

+

MPI, [mpi-using] [mpi-ref] the Message Passing Interface, is a +standardized and portable message-passing system designed to function +on a wide variety of parallel computers. The standard defines the +syntax and semantics of library routines and allows users to write +portable programs in the main scientific programming languages +(Fortran, C, or C++).

+

Since its release, the MPI specification [mpi-std1] [mpi-std2] has +become the leading standard for message-passing libraries for parallel +computers. Implementations are available from vendors of +high-performance computers and from well known open source projects +like MPICH [mpi-mpich] and Open MPI [mpi-openmpi].

+
+
+

What is Python?

+

Python is a modern, easy to learn, powerful programming language. It +has efficient high-level data structures and a simple but effective +approach to object-oriented programming with dynamic typing and +dynamic binding. It supports modules and packages, which encourages +program modularity and code reuse. Python’s elegant syntax, together +with its interpreted nature, make it an ideal language for scripting +and rapid application development in many areas on most platforms.

+

The Python interpreter and the extensive standard library are +available in source or binary form without charge for all major +platforms, and can be freely distributed. It is easily extended with +new functions and data types implemented in C or C++. Python is also +suitable as an extension language for customizable applications.

+

Python is an ideal candidate for writing the higher-level parts of +large-scale scientific applications [Hinsen97] and driving +simulations in parallel architectures [Beazley97] like clusters of +PC’s or SMP’s. Python codes are quickly developed, easily maintained, +and can achieve a high degree of integration with other libraries +written in compiled languages.

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/license.html b/4.0.0/html/license.html new file mode 100644 index 0000000..175b04b --- /dev/null +++ b/4.0.0/html/license.html @@ -0,0 +1,135 @@ + + + + + + + + LICENSE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

LICENSE

+

Copyright (c) 2024, Lisandro Dalcin

+

Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met:

+
    +
  1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer.

  2. +
  3. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution.

  4. +
  5. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission.

  6. +
+

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.MPI.html b/4.0.0/html/mpi4py.MPI.html new file mode 100644 index 0000000..627d293 --- /dev/null +++ b/4.0.0/html/mpi4py.MPI.html @@ -0,0 +1,1226 @@ + + + + + + + + mpi4py.MPI — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI

+
+

Classes

+

Ancillary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Datatype

Datatype object.

Status

Status object.

Request

Request handler.

Prequest

Persistent request handler.

Grequest

Generalized request handler.

Op

Reduction operation.

Group

Group of processes.

Info

Info object.

Session

Session context.

+

Communication

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Comm

Communication context.

Intracomm

Intracommunicator.

Topocomm

Topology intracommunicator.

Cartcomm

Cartesian topology intracommunicator.

Graphcomm

General graph topology intracommunicator.

Distgraphcomm

Distributed graph topology intracommunicator.

Intercomm

Intercommunicator.

Message

Matched message.

+

One-sided operations

+ + + + + + +

Win

Remote memory access context.

+

Input/Output

+ + + + + + +

File

File I/O context.

+

Error handling

+ + + + + + + + + +

Errhandler

Error handler.

Exception

Exception class.

+

Auxiliary

+ + + + + + + + + +

Pickle

Pickle/unpickle Python objects.

buffer

Buffer.

+
+
+

Functions

+

Version inquiry

+ + + + + + + + + +

Get_version()

Obtain the version number of the MPI standard.

Get_library_version()

Obtain the version string of the MPI library.

+

Initialization and finalization

+ + + + + + + + + + + + + + + + + + + + + + + + +

Init()

Initialize the MPI execution environment.

Init_thread([required])

Initialize the MPI execution environment.

Finalize()

Terminate the MPI execution environment.

Is_initialized()

Indicate whether Init has been called.

Is_finalized()

Indicate whether Finalize has completed.

Query_thread()

Return the level of thread support provided by the MPI library.

Is_thread_main()

Indicate whether this thread called Init or Init_thread.

+

Memory allocation

+ + + + + + + + + +

Alloc_mem(size[, info])

Allocate memory for message passing and remote memory access.

Free_mem(mem)

Free memory allocated with Alloc_mem.

+

Address manipulation

+ + + + + + + + + + + + +

Get_address(location)

Get the address of a location in memory.

Aint_add(base, disp)

Return the sum of base address and displacement.

Aint_diff(addr1, addr2)

Return the difference between absolute addresses.

+

Timer

+ + + + + + + + + +

Wtick()

Return the resolution of Wtime.

Wtime()

Return an elapsed time on the calling processor.

+

Error handling

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Get_error_class(errorcode)

Convert an error code into an error class.

Get_error_string(errorcode)

Return the error string for a given error class or error code.

Add_error_class()

Add an error class to the known error classes.

Add_error_code(errorclass)

Add an error code to an error class.

Add_error_string(errorcode, string)

Associate an error string with an error class or error code.

Remove_error_class(errorclass)

Remove an error class from the known error classes.

Remove_error_code(errorcode)

Remove an error code from the known error codes.

Remove_error_string(errorcode)

Remove error string association from error class or error code.

+

Dynamic process management

+ + + + + + + + + + + + + + + + + + +

Open_port([info])

Return an address used to connect group of processes.

Close_port(port_name)

Close a port.

Publish_name(service_name, port_name[, info])

Publish a service name.

Unpublish_name(service_name, port_name[, info])

Unpublish a service name.

Lookup_name(service_name[, info])

Lookup a port name given a service name.

+

Miscellanea

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Attach_buffer(buf)

Attach a user-provided buffer for sending in buffered mode.

Detach_buffer()

Remove an existing attached buffer.

Flush_buffer()

Block until all buffered messages have been transmitted.

Iflush_buffer()

Nonblocking flush for buffered messages.

Compute_dims(nnodes, dims)

Return a balanced distribution of processes per coordinate direction.

Get_processor_name()

Obtain the name of the calling processor.

Register_datarep(datarep, read_fn, write_fn, ...)

Register user-defined data representations.

Pcontrol(level)

Control profiling.

+

Utilities

+ + + + + + +

get_vendor()

Information about the underlying MPI implementation.

+
+
+

Attributes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

UNDEFINED

Constant UNDEFINED of type int

ANY_SOURCE

Constant ANY_SOURCE of type int

ANY_TAG

Constant ANY_TAG of type int

PROC_NULL

Constant PROC_NULL of type int

ROOT

Constant ROOT of type int

BOTTOM

Constant BOTTOM of type BottomType

IN_PLACE

Constant IN_PLACE of type InPlaceType

BUFFER_AUTOMATIC

Constant BUFFER_AUTOMATIC of type BufferAutomaticType

KEYVAL_INVALID

Constant KEYVAL_INVALID of type int

TAG_UB

Constant TAG_UB of type int

IO

Constant IO of type int

WTIME_IS_GLOBAL

Constant WTIME_IS_GLOBAL of type int

UNIVERSE_SIZE

Constant UNIVERSE_SIZE of type int

APPNUM

Constant APPNUM of type int

LASTUSEDCODE

Constant LASTUSEDCODE of type int

WIN_BASE

Constant WIN_BASE of type int

WIN_SIZE

Constant WIN_SIZE of type int

WIN_DISP_UNIT

Constant WIN_DISP_UNIT of type int

WIN_CREATE_FLAVOR

Constant WIN_CREATE_FLAVOR of type int

WIN_FLAVOR

Constant WIN_FLAVOR of type int

WIN_MODEL

Constant WIN_MODEL of type int

SUCCESS

Constant SUCCESS of type int

ERR_LASTCODE

Constant ERR_LASTCODE of type int

ERR_COMM

Constant ERR_COMM of type int

ERR_GROUP

Constant ERR_GROUP of type int

ERR_TYPE

Constant ERR_TYPE of type int

ERR_REQUEST

Constant ERR_REQUEST of type int

ERR_OP

Constant ERR_OP of type int

ERR_ERRHANDLER

Constant ERR_ERRHANDLER of type int

ERR_BUFFER

Constant ERR_BUFFER of type int

ERR_COUNT

Constant ERR_COUNT of type int

ERR_TAG

Constant ERR_TAG of type int

ERR_RANK

Constant ERR_RANK of type int

ERR_ROOT

Constant ERR_ROOT of type int

ERR_TRUNCATE

Constant ERR_TRUNCATE of type int

ERR_IN_STATUS

Constant ERR_IN_STATUS of type int

ERR_PENDING

Constant ERR_PENDING of type int

ERR_TOPOLOGY

Constant ERR_TOPOLOGY of type int

ERR_DIMS

Constant ERR_DIMS of type int

ERR_ARG

Constant ERR_ARG of type int

ERR_OTHER

Constant ERR_OTHER of type int

ERR_UNKNOWN

Constant ERR_UNKNOWN of type int

ERR_INTERN

Constant ERR_INTERN of type int

ERR_INFO

Constant ERR_INFO of type int

ERR_FILE

Constant ERR_FILE of type int

ERR_WIN

Constant ERR_WIN of type int

ERR_KEYVAL

Constant ERR_KEYVAL of type int

ERR_INFO_KEY

Constant ERR_INFO_KEY of type int

ERR_INFO_VALUE

Constant ERR_INFO_VALUE of type int

ERR_INFO_NOKEY

Constant ERR_INFO_NOKEY of type int

ERR_ACCESS

Constant ERR_ACCESS of type int

ERR_AMODE

Constant ERR_AMODE of type int

ERR_BAD_FILE

Constant ERR_BAD_FILE of type int

ERR_FILE_EXISTS

Constant ERR_FILE_EXISTS of type int

ERR_FILE_IN_USE

Constant ERR_FILE_IN_USE of type int

ERR_NO_SPACE

Constant ERR_NO_SPACE of type int

ERR_NO_SUCH_FILE

Constant ERR_NO_SUCH_FILE of type int

ERR_IO

Constant ERR_IO of type int

ERR_READ_ONLY

Constant ERR_READ_ONLY of type int

ERR_CONVERSION

Constant ERR_CONVERSION of type int

ERR_DUP_DATAREP

Constant ERR_DUP_DATAREP of type int

ERR_UNSUPPORTED_DATAREP

Constant ERR_UNSUPPORTED_DATAREP of type int

ERR_UNSUPPORTED_OPERATION

Constant ERR_UNSUPPORTED_OPERATION of type int

ERR_NAME

Constant ERR_NAME of type int

ERR_NO_MEM

Constant ERR_NO_MEM of type int

ERR_NOT_SAME

Constant ERR_NOT_SAME of type int

ERR_PORT

Constant ERR_PORT of type int

ERR_QUOTA

Constant ERR_QUOTA of type int

ERR_SERVICE

Constant ERR_SERVICE of type int

ERR_SPAWN

Constant ERR_SPAWN of type int

ERR_BASE

Constant ERR_BASE of type int

ERR_SIZE

Constant ERR_SIZE of type int

ERR_DISP

Constant ERR_DISP of type int

ERR_ASSERT

Constant ERR_ASSERT of type int

ERR_LOCKTYPE

Constant ERR_LOCKTYPE of type int

ERR_RMA_CONFLICT

Constant ERR_RMA_CONFLICT of type int

ERR_RMA_SYNC

Constant ERR_RMA_SYNC of type int

ERR_RMA_RANGE

Constant ERR_RMA_RANGE of type int

ERR_RMA_ATTACH

Constant ERR_RMA_ATTACH of type int

ERR_RMA_SHARED

Constant ERR_RMA_SHARED of type int

ERR_RMA_FLAVOR

Constant ERR_RMA_FLAVOR of type int

ORDER_C

Constant ORDER_C of type int

ORDER_F

Constant ORDER_F of type int

ORDER_FORTRAN

Constant ORDER_FORTRAN of type int

TYPECLASS_INTEGER

Constant TYPECLASS_INTEGER of type int

TYPECLASS_REAL

Constant TYPECLASS_REAL of type int

TYPECLASS_COMPLEX

Constant TYPECLASS_COMPLEX of type int

DISTRIBUTE_NONE

Constant DISTRIBUTE_NONE of type int

DISTRIBUTE_BLOCK

Constant DISTRIBUTE_BLOCK of type int

DISTRIBUTE_CYCLIC

Constant DISTRIBUTE_CYCLIC of type int

DISTRIBUTE_DFLT_DARG

Constant DISTRIBUTE_DFLT_DARG of type int

COMBINER_NAMED

Constant COMBINER_NAMED of type int

COMBINER_DUP

Constant COMBINER_DUP of type int

COMBINER_CONTIGUOUS

Constant COMBINER_CONTIGUOUS of type int

COMBINER_VECTOR

Constant COMBINER_VECTOR of type int

COMBINER_HVECTOR

Constant COMBINER_HVECTOR of type int

COMBINER_INDEXED

Constant COMBINER_INDEXED of type int

COMBINER_HINDEXED

Constant COMBINER_HINDEXED of type int

COMBINER_INDEXED_BLOCK

Constant COMBINER_INDEXED_BLOCK of type int

COMBINER_HINDEXED_BLOCK

Constant COMBINER_HINDEXED_BLOCK of type int

COMBINER_STRUCT

Constant COMBINER_STRUCT of type int

COMBINER_SUBARRAY

Constant COMBINER_SUBARRAY of type int

COMBINER_DARRAY

Constant COMBINER_DARRAY of type int

COMBINER_RESIZED

Constant COMBINER_RESIZED of type int

COMBINER_VALUE_INDEX

Constant COMBINER_VALUE_INDEX of type int

COMBINER_F90_REAL

Constant COMBINER_F90_REAL of type int

COMBINER_F90_COMPLEX

Constant COMBINER_F90_COMPLEX of type int

COMBINER_F90_INTEGER

Constant COMBINER_F90_INTEGER of type int

IDENT

Constant IDENT of type int

CONGRUENT

Constant CONGRUENT of type int

SIMILAR

Constant SIMILAR of type int

UNEQUAL

Constant UNEQUAL of type int

CART

Constant CART of type int

GRAPH

Constant GRAPH of type int

DIST_GRAPH

Constant DIST_GRAPH of type int

UNWEIGHTED

Constant UNWEIGHTED of type int

WEIGHTS_EMPTY

Constant WEIGHTS_EMPTY of type int

COMM_TYPE_SHARED

Constant COMM_TYPE_SHARED of type int

BSEND_OVERHEAD

Constant BSEND_OVERHEAD of type int

WIN_FLAVOR_CREATE

Constant WIN_FLAVOR_CREATE of type int

WIN_FLAVOR_ALLOCATE

Constant WIN_FLAVOR_ALLOCATE of type int

WIN_FLAVOR_DYNAMIC

Constant WIN_FLAVOR_DYNAMIC of type int

WIN_FLAVOR_SHARED

Constant WIN_FLAVOR_SHARED of type int

WIN_SEPARATE

Constant WIN_SEPARATE of type int

WIN_UNIFIED

Constant WIN_UNIFIED of type int

MODE_NOCHECK

Constant MODE_NOCHECK of type int

MODE_NOSTORE

Constant MODE_NOSTORE of type int

MODE_NOPUT

Constant MODE_NOPUT of type int

MODE_NOPRECEDE

Constant MODE_NOPRECEDE of type int

MODE_NOSUCCEED

Constant MODE_NOSUCCEED of type int

LOCK_EXCLUSIVE

Constant LOCK_EXCLUSIVE of type int

LOCK_SHARED

Constant LOCK_SHARED of type int

MODE_RDONLY

Constant MODE_RDONLY of type int

MODE_WRONLY

Constant MODE_WRONLY of type int

MODE_RDWR

Constant MODE_RDWR of type int

MODE_CREATE

Constant MODE_CREATE of type int

MODE_EXCL

Constant MODE_EXCL of type int

MODE_DELETE_ON_CLOSE

Constant MODE_DELETE_ON_CLOSE of type int

MODE_UNIQUE_OPEN

Constant MODE_UNIQUE_OPEN of type int

MODE_SEQUENTIAL

Constant MODE_SEQUENTIAL of type int

MODE_APPEND

Constant MODE_APPEND of type int

SEEK_SET

Constant SEEK_SET of type int

SEEK_CUR

Constant SEEK_CUR of type int

SEEK_END

Constant SEEK_END of type int

DISPLACEMENT_CURRENT

Constant DISPLACEMENT_CURRENT of type int

DISP_CUR

Constant DISP_CUR of type int

THREAD_SINGLE

Constant THREAD_SINGLE of type int

THREAD_FUNNELED

Constant THREAD_FUNNELED of type int

THREAD_SERIALIZED

Constant THREAD_SERIALIZED of type int

THREAD_MULTIPLE

Constant THREAD_MULTIPLE of type int

VERSION

Constant VERSION of type int

SUBVERSION

Constant SUBVERSION of type int

MAX_PROCESSOR_NAME

Constant MAX_PROCESSOR_NAME of type int

MAX_ERROR_STRING

Constant MAX_ERROR_STRING of type int

MAX_PORT_NAME

Constant MAX_PORT_NAME of type int

MAX_INFO_KEY

Constant MAX_INFO_KEY of type int

MAX_INFO_VAL

Constant MAX_INFO_VAL of type int

MAX_OBJECT_NAME

Constant MAX_OBJECT_NAME of type int

MAX_DATAREP_STRING

Constant MAX_DATAREP_STRING of type int

MAX_LIBRARY_VERSION_STRING

Constant MAX_LIBRARY_VERSION_STRING of type int

DATATYPE_NULL

Object DATATYPE_NULL of type Datatype

PACKED

Object PACKED of type Datatype

BYTE

Object BYTE of type Datatype

AINT

Object AINT of type Datatype

OFFSET

Object OFFSET of type Datatype

COUNT

Object COUNT of type Datatype

CHAR

Object CHAR of type Datatype

WCHAR

Object WCHAR of type Datatype

SIGNED_CHAR

Object SIGNED_CHAR of type Datatype

SHORT

Object SHORT of type Datatype

INT

Object INT of type Datatype

LONG

Object LONG of type Datatype

LONG_LONG

Object LONG_LONG of type Datatype

UNSIGNED_CHAR

Object UNSIGNED_CHAR of type Datatype

UNSIGNED_SHORT

Object UNSIGNED_SHORT of type Datatype

UNSIGNED

Object UNSIGNED of type Datatype

UNSIGNED_LONG

Object UNSIGNED_LONG of type Datatype

UNSIGNED_LONG_LONG

Object UNSIGNED_LONG_LONG of type Datatype

FLOAT

Object FLOAT of type Datatype

DOUBLE

Object DOUBLE of type Datatype

LONG_DOUBLE

Object LONG_DOUBLE of type Datatype

C_BOOL

Object C_BOOL of type Datatype

INT8_T

Object INT8_T of type Datatype

INT16_T

Object INT16_T of type Datatype

INT32_T

Object INT32_T of type Datatype

INT64_T

Object INT64_T of type Datatype

UINT8_T

Object UINT8_T of type Datatype

UINT16_T

Object UINT16_T of type Datatype

UINT32_T

Object UINT32_T of type Datatype

UINT64_T

Object UINT64_T of type Datatype

C_COMPLEX

Object C_COMPLEX of type Datatype

C_FLOAT_COMPLEX

Object C_FLOAT_COMPLEX of type Datatype

C_DOUBLE_COMPLEX

Object C_DOUBLE_COMPLEX of type Datatype

C_LONG_DOUBLE_COMPLEX

Object C_LONG_DOUBLE_COMPLEX of type Datatype

CXX_BOOL

Object CXX_BOOL of type Datatype

CXX_FLOAT_COMPLEX

Object CXX_FLOAT_COMPLEX of type Datatype

CXX_DOUBLE_COMPLEX

Object CXX_DOUBLE_COMPLEX of type Datatype

CXX_LONG_DOUBLE_COMPLEX

Object CXX_LONG_DOUBLE_COMPLEX of type Datatype

SHORT_INT

Object SHORT_INT of type Datatype

INT_INT

Object INT_INT of type Datatype

TWOINT

Object TWOINT of type Datatype

LONG_INT

Object LONG_INT of type Datatype

FLOAT_INT

Object FLOAT_INT of type Datatype

DOUBLE_INT

Object DOUBLE_INT of type Datatype

LONG_DOUBLE_INT

Object LONG_DOUBLE_INT of type Datatype

CHARACTER

Object CHARACTER of type Datatype

LOGICAL

Object LOGICAL of type Datatype

INTEGER

Object INTEGER of type Datatype

REAL

Object REAL of type Datatype

DOUBLE_PRECISION

Object DOUBLE_PRECISION of type Datatype

COMPLEX

Object COMPLEX of type Datatype

DOUBLE_COMPLEX

Object DOUBLE_COMPLEX of type Datatype

LOGICAL1

Object LOGICAL1 of type Datatype

LOGICAL2

Object LOGICAL2 of type Datatype

LOGICAL4

Object LOGICAL4 of type Datatype

LOGICAL8

Object LOGICAL8 of type Datatype

INTEGER1

Object INTEGER1 of type Datatype

INTEGER2

Object INTEGER2 of type Datatype

INTEGER4

Object INTEGER4 of type Datatype

INTEGER8

Object INTEGER8 of type Datatype

INTEGER16

Object INTEGER16 of type Datatype

REAL2

Object REAL2 of type Datatype

REAL4

Object REAL4 of type Datatype

REAL8

Object REAL8 of type Datatype

REAL16

Object REAL16 of type Datatype

COMPLEX4

Object COMPLEX4 of type Datatype

COMPLEX8

Object COMPLEX8 of type Datatype

COMPLEX16

Object COMPLEX16 of type Datatype

COMPLEX32

Object COMPLEX32 of type Datatype

UNSIGNED_INT

Object UNSIGNED_INT of type Datatype

SIGNED_SHORT

Object SIGNED_SHORT of type Datatype

SIGNED_INT

Object SIGNED_INT of type Datatype

SIGNED_LONG

Object SIGNED_LONG of type Datatype

SIGNED_LONG_LONG

Object SIGNED_LONG_LONG of type Datatype

BOOL

Object BOOL of type Datatype

SINT8_T

Object SINT8_T of type Datatype

SINT16_T

Object SINT16_T of type Datatype

SINT32_T

Object SINT32_T of type Datatype

SINT64_T

Object SINT64_T of type Datatype

F_BOOL

Object F_BOOL of type Datatype

F_INT

Object F_INT of type Datatype

F_FLOAT

Object F_FLOAT of type Datatype

F_DOUBLE

Object F_DOUBLE of type Datatype

F_COMPLEX

Object F_COMPLEX of type Datatype

F_FLOAT_COMPLEX

Object F_FLOAT_COMPLEX of type Datatype

F_DOUBLE_COMPLEX

Object F_DOUBLE_COMPLEX of type Datatype

REQUEST_NULL

Object REQUEST_NULL of type Request

MESSAGE_NULL

Object MESSAGE_NULL of type Message

MESSAGE_NO_PROC

Object MESSAGE_NO_PROC of type Message

OP_NULL

Object OP_NULL of type Op

MAX

Object MAX of type Op

MIN

Object MIN of type Op

SUM

Object SUM of type Op

PROD

Object PROD of type Op

LAND

Object LAND of type Op

BAND

Object BAND of type Op

LOR

Object LOR of type Op

BOR

Object BOR of type Op

LXOR

Object LXOR of type Op

BXOR

Object BXOR of type Op

MAXLOC

Object MAXLOC of type Op

MINLOC

Object MINLOC of type Op

REPLACE

Object REPLACE of type Op

NO_OP

Object NO_OP of type Op

GROUP_NULL

Object GROUP_NULL of type Group

GROUP_EMPTY

Object GROUP_EMPTY of type Group

INFO_NULL

Object INFO_NULL of type Info

INFO_ENV

Object INFO_ENV of type Info

ERRHANDLER_NULL

Object ERRHANDLER_NULL of type Errhandler

ERRORS_RETURN

Object ERRORS_RETURN of type Errhandler

ERRORS_ARE_FATAL

Object ERRORS_ARE_FATAL of type Errhandler

COMM_NULL

Object COMM_NULL of type Comm

COMM_SELF

Object COMM_SELF of type Intracomm

COMM_WORLD

Object COMM_WORLD of type Intracomm

WIN_NULL

Object WIN_NULL of type Win

FILE_NULL

Object FILE_NULL of type File

pickle

Object pickle of type Pickle

+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.bench.html b/4.0.0/html/mpi4py.bench.html new file mode 100644 index 0000000..42a462b --- /dev/null +++ b/4.0.0/html/mpi4py.bench.html @@ -0,0 +1,115 @@ + + + + + + + + mpi4py.bench — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.bench

+
+

Added in version 3.0.0.

+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.futures.html b/4.0.0/html/mpi4py.futures.html new file mode 100644 index 0000000..6612cab --- /dev/null +++ b/4.0.0/html/mpi4py.futures.html @@ -0,0 +1,825 @@ + + + + + + + + mpi4py.futures — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.futures

+
+

Added in version 3.0.0.

+
+

This package provides a high-level interface for asynchronously executing +callables on a pool of worker processes using MPI for inter-process +communication.

+

The mpi4py.futures package is based on concurrent.futures from +the Python standard library. More precisely, mpi4py.futures provides the +MPIPoolExecutor class as a concrete implementation of the abstract +class Executor. The +submit() interface schedules a callable to +be executed asynchronously and returns a Future +object representing the execution of the callable. +Future instances can be queried for the call +result or exception. Sets of Future instances can +be passed to the wait() and +as_completed() functions.

+
+

See also

+
+
Module concurrent.futures

Documentation of the concurrent.futures standard module.

+
+
+
+
+

MPIPoolExecutor

+

The MPIPoolExecutor class uses a pool of MPI processes to execute +calls asynchronously. By performing computations in separate processes, it +allows to side-step the global interpreter lock but also means that +only picklable objects can be executed and returned. The __main__ module +must be importable by worker processes, thus MPIPoolExecutor instances +may not work in the interactive interpreter.

+

MPIPoolExecutor takes advantage of the dynamic process management +features introduced in the MPI-2 standard. In particular, the +MPI.Intracomm.Spawn method of MPI.COMM_SELF is used in the master (or +parent) process to spawn new worker (or child) processes running a Python +interpreter. The master process uses a separate thread (one for each +MPIPoolExecutor instance) to communicate back and forth with the +workers. The worker processes serve the execution of tasks in the main (and +only) thread until they are signaled for completion.

+
+

Note

+

The worker processes must import the main script in order to unpickle any +callable defined in the __main__ module and submitted from the master +process. Furthermore, the callables may need access to other global +variables. At the worker processes, mpi4py.futures executes the main +script code (using the runpy module) under the __worker__ +namespace to define the __main__ module. The __main__ and +__worker__ modules are added to sys.modules (both at the +master and worker processes) to ensure proper pickling and unpickling.

+
+
+

Warning

+

During the initial import phase at the workers, the main script cannot +create and use new MPIPoolExecutor instances. Otherwise, each +worker would attempt to spawn a new pool of workers, leading to infinite +recursion. mpi4py.futures detects such recursive attempts to spawn +new workers and aborts the MPI execution environment. As the main script +code is run under the __worker__ namespace, the easiest way to avoid +spawn recursion is using the idiom if __name__ == '__main__': ... in +the main script.

+
+
+
+class mpi4py.futures.MPIPoolExecutor(max_workers=None, initializer=None, initargs=(), **kwargs)
+

An Executor subclass that executes calls +asynchronously using a pool of at most max_workers processes. If +max_workers is None or not given, its value is determined from the +MPI4PY_FUTURES_MAX_WORKERS environment variable if set, or the MPI +universe size if set, otherwise a single worker process is spawned. If +max_workers is lower than or equal to 0, then a ValueError will +be raised.

+

initializer is an optional callable that is called at the start of each +worker process before executing any tasks; initargs is a tuple of +arguments passed to the initializer. If initializer raises an exception, +all pending tasks and any attempt to submit new tasks to the pool will raise +a BrokenExecutor exception.

+

Other parameters:

+
    +
  • python_exe: Path to the Python interpreter executable used to spawn +worker processes, otherwise sys.executable is used.

  • +
  • python_args: list or iterable with additional command line +flags to pass to the Python executable. Command line flags determined from +inspection of sys.flags, sys.warnoptions and +sys._xoptions in are passed unconditionally.

  • +
  • mpi_info: dict or iterable yielding (key, value) pairs. +These (key, value) pairs are passed (through an MPI.Info object) to +the MPI.Intracomm.Spawn call used to spawn worker processes. This +mechanism allows telling the MPI runtime system where and how to start the +processes. Check the documentation of the backend MPI implementation about +the set of keys it interprets and the corresponding format for values.

  • +
  • globals: dict or iterable yielding (name, value) pairs to +initialize the main module namespace in worker processes.

  • +
  • main: If set to False, do not import the __main__ module in +worker processes. Setting main to False prevents worker processes +from accessing definitions in the parent __main__ namespace.

  • +
  • path: list or iterable with paths to append to sys.path +in worker processes to extend the module search path.

  • +
  • wdir: Path to set the current working directory in worker processes +using os.chdir(). The initial working directory is set by the MPI +implementation. Quality MPI implementations should honor a wdir info +key passed through mpi_info, although such feature is not mandatory.

  • +
  • env: dict or iterable yielding (name, value) pairs with +environment variables to update os.environ in worker processes. +The initial environment is set by the MPI implementation. MPI +implementations may allow setting the initial environment through +mpi_info, however such feature is not required nor recommended by the +MPI standard.

  • +
  • use_pkl5: If set to True, use pickle5 with out-of-band buffers +for interprocess communication. If use_pkl5 is set to None or not +given, its value is determined from the MPI4PY_FUTURES_USE_PKL5 +environment variable. Using pickle5 with out-of-band buffers may +benefit applications dealing with large buffer-like objects like NumPy +arrays. See mpi4py.util.pkl5 for additional information.

  • +
  • backoff: float value specifying the maximum number of seconds a +worker thread or process suspends execution with time.sleep() +while idle-waiting. If not set, its value is determined from the +MPI4PY_FUTURES_BACKOFF environment variable if set, otherwise +the default value of 0.001 seconds is used. Lower values will reduce +latency and increase execution throughput for very short-lived tasks, +albeit at the expense of spinning CPU cores and increased energy +consumption.

  • +
+
+
+submit(func, *args, **kwargs)
+

Schedule the callable, func, to be executed as func(*args, +**kwargs) and returns a Future object +representing the execution of the callable.

+
executor = MPIPoolExecutor(max_workers=1)
+future = executor.submit(pow, 321, 1234)
+print(future.result())
+
+
+
+ +
+
+map(func, *iterables, timeout=None, chunksize=1, **kwargs)
+

Equivalent to map(func, *iterables) except func is +executed asynchronously and several calls to func may be made +concurrently, out-of-order, in separate processes. The returned iterator +raises a TimeoutError if +__next__() is called and the result isn’t available after +timeout seconds from the original call to map(). +timeout can be an int or a float. If timeout is not specified or +None, there is no limit to the wait time. If a call raises an +exception, then that exception will be raised when its value is retrieved +from the iterator. This method chops iterables into a number of chunks +which it submits to the pool as separate tasks. The (approximate) size of +these chunks can be specified by setting chunksize to a positive +integer. For very long iterables, using a large value for chunksize can +significantly improve performance compared to the default size of one. By +default, the returned iterator yields results in-order, waiting for +successive tasks to complete . This behavior can be changed by passing +the keyword argument unordered as True, then the result iterator +will yield a result as soon as any of the tasks complete.

+
executor = MPIPoolExecutor(max_workers=3)
+for result in executor.map(pow, [2]*32, range(32)):
+    print(result)
+
+
+
+ +
+
+starmap(func, iterable, timeout=None, chunksize=1, **kwargs)
+

Equivalent to itertools.starmap(func, iterable). Used instead of map() when +argument parameters are already grouped in tuples from a single iterable +(the data has been “pre-zipped”). map(func, *iterable) is +equivalent to starmap(func, zip(*iterable)).

+
executor = MPIPoolExecutor(max_workers=3)
+iterable = ((2, n) for n in range(32))
+for result in executor.starmap(pow, iterable):
+    print(result)
+
+
+
+ +
+
+shutdown(wait=True, cancel_futures=False)
+

Signal the executor that it should free any resources that it is using +when the currently pending futures are done executing. Calls to +submit() and map() made +after shutdown() will raise RuntimeError.

+

If wait is True then this method will not return until all the +pending futures are done executing and the resources associated with the +executor have been freed. If wait is False then this method will +return immediately and the resources associated with the executor will be +freed when all pending futures are done executing. Regardless of the +value of wait, the entire Python program will not exit until all +pending futures are done executing.

+

If cancel_futures is True, this method will cancel all pending +futures that the executor has not started running. Any futures that +are completed or running won’t be cancelled, regardless of the value +of cancel_futures.

+

You can avoid having to call this method explicitly if you use the +with statement, which will shutdown the executor instance +(waiting as if shutdown() were called with wait +set to True).

+
import time
+with MPIPoolExecutor(max_workers=1) as executor:
+    future = executor.submit(time.sleep, 2)
+assert future.done()
+
+
+
+ +
+
+bootup(wait=True)
+

Signal the executor that it should allocate eagerly any required +resources (in particular, MPI worker processes). If wait is True, +then bootup() will not return until the executor +resources are ready to process submissions. Resources are automatically +allocated in the first call to submit(), thus +calling bootup() explicitly is seldom needed.

+
+ +
+
+num_workers
+

Number or worker processes in the pool.

+
+ +
+ +
+
+MPI4PY_FUTURES_MAX_WORKERS
+

If the max_workers parameter to MPIPoolExecutor is None or not +given, the MPI4PY_FUTURES_MAX_WORKERS environment variable +provides a fallback value for the maximum number of MPI worker processes to +spawn.

+
+

Added in version 3.1.0.

+
+
+ +
+
+MPI4PY_FUTURES_USE_PKL5
+

If the use_pkl5 keyword argument to MPIPoolExecutor is None or +not given, the MPI4PY_FUTURES_USE_PKL5 environment variable +provides a fallback value for whether the executor should use pickle5 +with out-of-band buffers for interprocess communication. Accepted values are +0 and 1 (interpreted as False and True, respectively), and +strings specifying a YAML boolean value (case-insensitive). Using +pickle5 with out-of-band buffers may benefit applications dealing +with large buffer-like objects like NumPy arrays. See +mpi4py.util.pkl5 for additional information.

+
+

Added in version 4.0.0.

+
+
+ +
+
+MPI4PY_FUTURES_BACKOFF
+

If the backoff keyword argument to MPIPoolExecutor is not given, +the MPI4PY_FUTURES_BACKOFF environment variable can be set to a +float value specifying the maximum number of seconds a worker +thread or process suspends execution with time.sleep() while +idle-waiting. If not set, the default backoff value is 0.001 seconds. Lower +values will reduce latency and increase execution throughput for very +short-lived tasks, albeit at the expense of spinning CPU cores and increased +energy consumption.

+
+

Added in version 4.0.0.

+
+
+ +
+

Note

+

As the master process uses a separate thread to perform MPI communication +with the workers, the backend MPI implementation should provide support for +MPI.THREAD_MULTIPLE. However, some popular MPI implementations do not +support yet concurrent MPI calls from multiple threads. Additionally, users +may decide to initialize MPI with a lower level of thread support. If the +level of thread support in the backend MPI is less than +MPI.THREAD_MULTIPLE, mpi4py.futures will use a global lock to +serialize MPI calls. If the level of thread support is less than +MPI.THREAD_SERIALIZED, mpi4py.futures will emit a +RuntimeWarning.

+
+
+

Warning

+

If the level of thread support in the backend MPI is less than +MPI.THREAD_SERIALIZED (i.e, it is either MPI.THREAD_SINGLE or +MPI.THREAD_FUNNELED), in theory mpi4py.futures cannot be +used. Rather than raising an exception, mpi4py.futures emits a +warning and takes a “cross-fingers” attitude to continue execution in the +hope that serializing MPI calls with a global lock will actually work.

+
+
+
+

MPICommExecutor

+

Legacy MPI-1 implementations (as well as some vendor MPI-2 implementations) do +not support the dynamic process management features introduced in the MPI-2 +standard. Additionally, job schedulers and batch systems in supercomputing +facilities may pose additional complications to applications using the +MPI_Comm_spawn() routine.

+

With these issues in mind, mpi4py.futures supports an additional, more +traditional, SPMD-like usage pattern requiring MPI-1 calls only. Python +applications are started the usual way, e.g., using the mpiexec +command. Python code should make a collective call to the +MPICommExecutor context manager to partition the set of MPI processes +within a MPI communicator in one master processes and many workers +processes. The master process gets access to an MPIPoolExecutor +instance to submit tasks. Meanwhile, the worker process follow a different +execution path and team-up to execute the tasks submitted from the master.

+

Besides alleviating the lack of dynamic process management features in legacy +MPI-1 or partial MPI-2 implementations, the MPICommExecutor context +manager may be useful in classic MPI-based Python applications willing to take +advantage of the simple, task-based, master/worker approach available in the +mpi4py.futures package.

+
+
+class mpi4py.futures.MPICommExecutor(comm=None, root=0)
+

Context manager for MPIPoolExecutor. This context manager splits a +MPI (intra)communicator comm (defaults to MPI.COMM_WORLD if not provided +or None) in two disjoint sets: a single master process (with rank root +in comm) and the remaining worker processes. These sets are then connected +through an intercommunicator. The target of the with statement +is assigned either an MPIPoolExecutor instance (at the master) or +None (at the workers).

+
from mpi4py import MPI
+from mpi4py.futures import MPICommExecutor
+
+with MPICommExecutor(MPI.COMM_WORLD, root=0) as executor:
+    if executor is not None:
+       future = executor.submit(abs, -42)
+       assert future.result() == 42
+       answer = set(executor.map(abs, [-42, 42]))
+       assert answer == {42}
+
+
+
+ +
+

Warning

+

If MPICommExecutor is passed a communicator of size one (e.g., +MPI.COMM_SELF), then the executor instance assigned to the target of the +with statement will execute all submitted tasks in a single +worker thread, thus ensuring that task execution still progress +asynchronously. However, the GIL will prevent the main and worker +threads from running concurrently in multicore processors. Moreover, the +thread context switching may harm noticeably the performance of CPU-bound +tasks. In case of I/O-bound tasks, the GIL is not usually an issue, +however, as a single worker thread is used, it progress one task at a +time. We advice against using MPICommExecutor with communicators of +size one and suggest refactoring your code to use instead a +ThreadPoolExecutor.

+
+
+
+

Command line

+

Recalling the issues related to the lack of support for dynamic process +management features in MPI implementations, mpi4py.futures supports an +alternative usage pattern where Python code (either from scripts, modules, or +zip files) is run under command line control of the mpi4py.futures +package by passing -m mpi4py.futures to the python +executable. The mpi4py.futures invocation should be passed a pyfile path +to a script (or a zipfile/directory containing a __main__.py file). +Additionally, mpi4py.futures accepts -m mod to execute a module +named mod, -c cmd to execute a command string cmd, or even +- to read commands from standard input (sys.stdin). +Summarizing, mpi4py.futures can be invoked in the following ways:

+
    +
  • $ mpiexec -n numprocs python -m mpi4py.futures pyfile [arg] ...

  • +
  • $ mpiexec -n numprocs python -m mpi4py.futures -m mod [arg] ...

  • +
  • $ mpiexec -n numprocs python -m mpi4py.futures -c cmd [arg] ...

  • +
  • $ mpiexec -n numprocs python -m mpi4py.futures - [arg] ...

  • +
+

Before starting the main script execution, mpi4py.futures splits +MPI.COMM_WORLD in one master (the process with rank 0 in MPI.COMM_WORLD) and +numprocs - 1 workers and connects them through an MPI intercommunicator. +Afterwards, the master process proceeds with the execution of the user script +code, which eventually creates MPIPoolExecutor instances to submit +tasks. Meanwhile, the worker processes follow a different execution path to +serve the master. Upon successful termination of the main script at the master, +the entire MPI execution environment exists gracefully. In case of any unhandled +exception in the main script, the master process calls +MPI.COMM_WORLD.Abort(1) to prevent deadlocks and force termination of entire +MPI execution environment.

+
+

Warning

+

Running scripts under command line control of mpi4py.futures is quite +similar to executing a single-process application that spawn additional +workers as required. However, there is a very important difference users +should be aware of. All MPIPoolExecutor instances created at the +master will share the pool of workers. Tasks submitted at the master from +many different executors will be scheduled for execution in random order as +soon as a worker is idle. Any executor can easily starve all the workers +(e.g., by calling MPIPoolExecutor.map() with long iterables). If that +ever happens, submissions from other executors will not be serviced until +free workers are available.

+
+
+

See also

+
+
Command line

Documentation on Python command line interface.

+
+
+
+
+
+

Parallel tasks

+

The mpi4py.futures package favors an embarrassingly parallel execution +model involving a series of sequential tasks independent of each other and +executed asynchronously. Albeit unnatural, MPIPoolExecutor can still be +used for handling workloads involving parallel tasks, where worker processes +communicate and coordinate each other via MPI.

+
+
+mpi4py.futures.get_comm_workers()
+

Access an intracommunicator grouping MPI worker processes.

+
+ +

Executing parallel tasks with mpi4py.futures requires following some +rules, cf. highlighted lines in example cpi.py :

+
    +
  • Use MPIPoolExecutor.num_workers to determine the number of worker +processes in the executor and submit exactly one callable per worker +process using the MPIPoolExecutor.submit() method.

  • +
  • The submitted callable must use get_comm_workers() to access an +intracommunicator grouping MPI worker processes. Afterwards, it is highly +recommended calling the Barrier() method on the +communicator. The barrier synchronization ensures that every worker process +is executing the submitted callable exactly once. Afterwards, the parallel +task can safely perform any kind of point-to-point or collective operation +using the returned communicator.

  • +
  • The Future instances returned by +MPIPoolExecutor.submit() should be collected in a sequence. +Use wait() with the sequence of +Future instances to ensure logical completion of +the parallel task.

  • +
+
+
+

Utilities

+

The mpi4py.futures package provides additional utilities for handling +Future instances.

+
+
+mpi4py.futures.collect(fs)
+

Gather a collection of futures in a new future.

+
+
Parameters:
+

fs – Collection of futures.

+
+
Returns:
+

New future producing as result a list with results from fs.

+
+
+
+ +
+
+mpi4py.futures.compose(future, resulthook=None, excepthook=None)
+

Compose the completion of a future with result and exception handlers.

+
+
Parameters:
+
    +
  • future – Input future instance.

  • +
  • resulthook – Function to be called once the input future completes with +success. Once the input future finish running with success, its +result value is the input argument for resulthook. The result of +resulthook is set as the result of the output future. +If resulthook is None, the output future is completed +directly with the result of the input future.

  • +
  • excepthook – Function to be called once the input future completes with +failure. Once the input future finish running with failure, its +exception value is the input argument for excepthook. If +excepthook returns an Exception instance, it is set as +the exception of the output future. Otherwise, the result of +excepthook is set as the result of the output future. If +excepthook is None, the output future is set as failed with +the exception from the input future.

  • +
+
+
Returns:
+

Output future instance to be completed once the input future is +completed and either resulthook or excepthook finish executing.

+
+
+
+ +
+
+

Examples

+
+

Computing the Julia set

+

The following julia.py script computes the Julia set and dumps an +image to disk in binary PGM format. The code starts by importing +MPIPoolExecutor from the mpi4py.futures package. Next, some +global constants and functions implement the computation of the Julia set. The +computations are protected with the standard if __name__ == '__main__': +... idiom. The image is computed by whole scanlines submitting all these +tasks at once using the map method. The result +iterator yields scanlines in-order as the tasks complete. Finally, each +scanline is dumped to disk.

+
+
julia.py
+
 1from mpi4py.futures import MPIPoolExecutor
+ 2
+ 3x0, x1, w = -2.0, +2.0, 640*2
+ 4y0, y1, h = -1.5, +1.5, 480*2
+ 5dx = (x1 - x0) / w
+ 6dy = (y1 - y0) / h
+ 7
+ 8c = complex(0, 0.65)
+ 9
+10def julia(x, y):
+11    z = complex(x, y)
+12    n = 255
+13    while abs(z) < 3 and n > 1:
+14        z = z**2 + c
+15        n -= 1
+16    return n
+17
+18def julia_line(k):
+19    line = bytearray(w)
+20    y = y1 - k * dy
+21    for j in range(w):
+22        x = x0 + j * dx
+23        line[j] = julia(x, y)
+24    return line
+25
+26if __name__ == '__main__':
+27
+28    with MPIPoolExecutor() as executor:
+29        image = executor.map(julia_line, range(h))
+30        with open('julia.pgm', 'wb') as f:
+31            f.write(b'P5 %d %d %d\n' % (w, h, 255))
+32            for line in image:
+33                f.write(line)
+
+
+
+

The recommended way to execute the script is by using the mpiexec +command specifying one MPI process (master) and (optional but recommended) the +desired MPI universe size, which determines the number of additional +dynamically spawned processes (workers). The MPI universe size is provided +either by a batch system or set by the user via command-line arguments to +mpiexec or environment variables. Below we provide examples for +MPICH and Open MPI implementations [1]. In all of these examples, the +mpiexec command launches a single master process running the Python +interpreter and executing the main script. When required, mpi4py.futures +spawns the pool of 16 worker processes. The master submits tasks to the workers +and waits for the results. The workers receive incoming tasks, execute them, +and send back the results to the master.

+

When using MPICH implementation or its derivatives based on the Hydra process +manager, users can set the MPI universe size via the -usize argument to +mpiexec:

+
$ mpiexec -n 1 -usize 17 python julia.py
+
+
+

or, alternatively, by setting the MPIEXEC_UNIVERSE_SIZE environment +variable:

+
$ env MPIEXEC_UNIVERSE_SIZE=17 mpiexec -n 1 python julia.py
+
+
+

In the Open MPI implementation, the MPI universe size can be set via the +-host argument to mpiexec:

+
$ mpiexec -n 1 -host localhost:17 python julia.py
+
+
+

Another way to specify the number of workers is to use the +mpi4py.futures-specific environment variable +MPI4PY_FUTURES_MAX_WORKERS:

+
$ env MPI4PY_FUTURES_MAX_WORKERS=16 mpiexec -n 1 python julia.py
+
+
+

Note that in this case, the MPI universe size is ignored.

+

Alternatively, users may decide to execute the script in a more traditional +way, that is, all the MPI processes are started at once. The user script is run +under command-line control of mpi4py.futures passing the -m flag to the python executable:

+
$ mpiexec -n 17 python -m mpi4py.futures julia.py
+
+
+

As explained previously, the 17 processes are partitioned in one master and 16 +workers. The master process executes the main script while the workers execute +the tasks submitted by the master.

+ +
+
+

Computing Pi (parallel task)

+

The number \(\pi\) can be approximated via numerical integration with the +simple midpoint rule, that is:

+
+\[\pi = \int_{0}^{1} \frac{4}{1+x^2} \,dx \approx +\frac{1}{n} \sum_{i=1}^{n} +\frac{4}{1 + \left[\frac{1}{n} \left(i-\frac{1}{2}\right) \right]^2} .\]
+

The following cpi.py script computes such approximations using +mpi4py.futures with a parallel task involving a collective reduction +operation. Highlighted lines correspond to the rules discussed in Parallel +tasks.

+
+
cpi.py
+
 1import math
+ 2import sys
+ 3from mpi4py.futures import MPIPoolExecutor, wait
+ 4from mpi4py.futures import get_comm_workers
+ 5
+ 6
+ 7def compute_pi(n):
+ 8    # Access intracommunicator and synchronize
+ 9    comm = get_comm_workers()
+10    comm.Barrier()
+11
+12    rank = comm.Get_rank()
+13    size = comm.Get_size()
+14
+15    # Local computation
+16    h = 1.0 / n
+17    s = 0.0
+18    for i in range(rank + 1, n + 1, size):
+19        x = h * (i - 0.5)
+20        s += 4.0 / (1.0 + x**2)
+21    pi_partial = s * h
+22
+23    # Parallel reduce-to-all
+24    pi = comm.allreduce(pi_partial)
+25
+26    # All workers return the same value
+27    return pi
+28
+29
+30if __name__ == '__main__':
+31    n = int(sys.argv[1]) if len(sys.argv) > 1 else 256
+32
+33    with MPIPoolExecutor() as executor:
+34        # Submit exactly one callable per worker
+35        P = executor.num_workers
+36        fs = [executor.submit(compute_pi, n) for _ in range(P)]
+37
+38        # Wait for all workers to finish
+39        wait(fs)
+40
+41        # Get result from the first future object.
+42        # In this particular example, due to using reduce-to-all,
+43        # all the other future objects hold the same result value.
+44        pi = fs[0].result()
+45        print(
+46            f"pi: {pi:.16f}, error: {abs(pi - math.pi):.3e}",
+47            f"({n:d} intervals, {P:d} workers)",
+48        )
+
+
+
+

To run in modern MPI-2 mode:

+
$ env MPI4PY_FUTURES_MAX_WORKERS=4 mpiexec -n 1 python cpi.py 128
+pi: 3.1415977398528137, error: 5.086e-06 (128 intervals, 4 workers)
+
+$ env MPI4PY_FUTURES_MAX_WORKERS=8 mpiexec -n 1 python cpi.py 512
+pi: 3.1415929714812316, error: 3.179e-07 (512 intervals, 8 workers)
+
+
+

To run in legacy MPI-1 mode:

+
$ mpiexec -n 5 python -m mpi4py.futures cpi.py 128
+pi: 3.1415977398528137, error: 5.086e-06 (128 intervals, 4 workers)
+
+$ mpiexec -n 9 python -m mpi4py.futures cpi.py 512
+pi: 3.1415929714812316, error: 3.179e-07 (512 intervals, 8 workers)
+
+
+
+
+
+

Citation

+

If mpi4py.futures been significant to a project that leads to an +academic publication, please acknowledge our work by citing the following +article [mpi4py-futures]:

+
+
+[mpi4py-futures] +

M. Rogowski, S. Aseeri, D. Keyes, and L. Dalcin, +mpi4py.futures: MPI-Based Asynchronous Task Execution for Python, +IEEE Transactions on Parallel and Distributed Systems, 34(2):611-622, 2023. +https://doi.org/10.1109/TPDS.2022.3225481

+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.html b/4.0.0/html/mpi4py.html new file mode 100644 index 0000000..e5e1170 --- /dev/null +++ b/4.0.0/html/mpi4py.html @@ -0,0 +1,635 @@ + + + + + + + + mpi4py — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py

+

The MPI for Python package.

+

The Message Passing Interface (MPI) is a standardized and portable +message-passing system designed to function on a wide variety of +parallel computers. The MPI standard defines the syntax and semantics +of library routines and allows users to write portable programs in the +main scientific programming languages (Fortran, C, or C++). Since its +release, the MPI specification has become the leading standard for +message-passing libraries for parallel computers.

+

MPI for Python provides MPI bindings for the Python programming +language, allowing any Python program to exploit multiple processors. +This package build on the MPI specification and provides an object +oriented interface which closely follows MPI-2 C++ bindings.

+
+

Runtime configuration options

+
+
+mpi4py.rc
+

This object has attributes exposing runtime configuration options that +become effective at import time of the MPI module.

+
+ +

Attributes Summary

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

initialize

Automatic MPI initialization at import

threads

Request initialization with thread support

thread_level

Level of thread support to request

finalize

Automatic MPI finalization at exit

fast_reduce

Use tree-based reductions for objects

recv_mprobe

Use matched probes to receive objects

irecv_bufsz

Default buffer size in bytes for irecv()

errors

Error handling policy

+

Attributes Documentation

+
+
+mpi4py.rc.initialize
+

Automatic MPI initialization at import.

+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+
+

See also

+

MPI4PY_RC_INITIALIZE

+
+
+ +
+
+mpi4py.rc.threads
+

Request initialization with thread support.

+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+
+

See also

+

MPI4PY_RC_THREADS

+
+
+ +
+
+mpi4py.rc.thread_level
+

Level of thread support to request.

+
+
Type:
+

str

+
+
Default:
+

"multiple"

+
+
Choices:
+

"multiple", "serialized", "funneled", "single"

+
+
+ +
+ +
+
+mpi4py.rc.finalize
+

Automatic MPI finalization at exit.

+
+
Type:
+

None or bool

+
+
Default:
+

None

+
+
+
+

See also

+

MPI4PY_RC_FINALIZE

+
+
+ +
+
+mpi4py.rc.fast_reduce
+

Use tree-based reductions for objects.

+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+
+

See also

+

MPI4PY_RC_FAST_REDUCE

+
+
+ +
+
+mpi4py.rc.recv_mprobe
+

Use matched probes to receive objects.

+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+
+

See also

+

MPI4PY_RC_RECV_MPROBE

+
+
+ +
+
+mpi4py.rc.irecv_bufsz
+

Default buffer size in bytes for irecv().

+
+
Type:
+

int

+
+
Default:
+

32768

+
+
+
+

See also

+

MPI4PY_RC_IRECV_BUFSZ

+
+
+

Added in version 4.0.0.

+
+
+ +
+
+mpi4py.rc.errors
+

Error handling policy.

+
+
Type:
+

str

+
+
Default:
+

"exception"

+
+
Choices:
+

"exception", "default", "abort", "fatal"

+
+
+
+

See also

+

MPI4PY_RC_ERRORS

+
+
+ +

Example

+

MPI for Python features automatic initialization and finalization of the MPI +execution environment. By using the mpi4py.rc object, MPI initialization and +finalization can be handled programmatically:

+
import mpi4py
+mpi4py.rc.initialize = False  # do not initialize MPI automatically
+mpi4py.rc.finalize = False    # do not finalize MPI automatically
+
+from mpi4py import MPI # import the 'MPI' module
+
+MPI.Init()      # manual initialization of the MPI environment
+...             # your finest code here ...
+MPI.Finalize()  # manual finalization of the MPI environment
+
+
+
+
+

Environment variables

+

The following environment variables override the corresponding attributes of +the mpi4py.rc and MPI.pickle objects at import time of the +MPI module.

+
+

Note

+

For variables of boolean type, accepted values are 0 and 1 +(interpreted as False and True, respectively), and strings +specifying a YAML boolean value (case-insensitive).

+
+
+
+MPI4PY_RC_INITIALIZE
+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+

Whether to automatically initialize MPI at import time of the +mpi4py.MPI module.

+
+

See also

+

mpi4py.rc.initialize

+
+
+

Added in version 4.0.0.

+
+
+ +
+
+MPI4PY_RC_FINALIZE
+
+
Type:
+

None | bool

+
+
Default:
+

None

+
+
Choices:
+

None, True, False

+
+
+

Whether to automatically finalize MPI at exit time of the Python process.

+
+

See also

+

mpi4py.rc.finalize

+
+
+

Added in version 4.0.0.

+
+
+ +
+
+MPI4PY_RC_THREADS
+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+

Whether to initialize MPI with thread support.

+
+

See also

+

mpi4py.rc.threads

+
+
+

Added in version 3.1.0.

+
+
+ +
+
+MPI4PY_RC_THREAD_LEVEL
+
+
Default:
+

"multiple"

+
+
Choices:
+

"single", "funneled", +"serialized", "multiple"

+
+
+

The level of required thread support.

+ +
+

Added in version 3.1.0.

+
+
+ +
+
+MPI4PY_RC_FAST_REDUCE
+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+

Whether to use tree-based reductions for objects.

+
+

See also

+

mpi4py.rc.fast_reduce

+
+
+

Added in version 3.1.0.

+
+
+ +
+
+MPI4PY_RC_RECV_MPROBE
+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+

Whether to use matched probes to receive objects.

+
+

See also

+

mpi4py.rc.recv_mprobe

+
+
+ +
+
+MPI4PY_RC_IRECV_BUFSZ
+
+
Type:
+

bool

+
+
Default:
+

True

+
+
+

Default buffer size in bytes for irecv().

+
+

See also

+

mpi4py.rc.irecv_bufsz

+
+
+

Added in version 4.0.0.

+
+
+ +
+
+MPI4PY_RC_ERRORS
+
+
Default:
+

"exception"

+
+
Choices:
+

"exception", "default", "abort", "fatal"

+
+
+

Controls default MPI error handling policy.

+
+

See also

+

mpi4py.rc.errors

+
+
+

Added in version 3.1.0.

+
+
+ +
+
+MPI4PY_PICKLE_PROTOCOL
+
+
Type:
+

int

+
+
Default:
+

pickle.HIGHEST_PROTOCOL

+
+
+

Controls the default pickle protocol to use when communicating Python +objects.

+
+

See also

+

PROTOCOL attribute of the +MPI.pickle object within the MPI module.

+
+
+

Added in version 3.1.0.

+
+
+ +
+
+MPI4PY_PICKLE_THRESHOLD
+
+
Type:
+

int

+
+
Default:
+

262144

+
+
+

Controls the default buffer size threshold for switching from in-band to +out-of-band buffer handling when using pickle protocol version 5 or higher.

+
+

See also

+

THRESHOLD attribute of the +MPI.pickle object within the MPI module.

+
+
+

Added in version 3.1.2.

+
+
+ +
+
+

Miscellaneous functions

+
+
+mpi4py.profile(name, *, path=None)
+

Support for the MPI profiling interface.

+
+
Parameters:
+
    +
  • name (str) – Name of the profiler library to load.

  • +
  • path (sequence of str, optional) – Additional paths to search for the profiler.

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+mpi4py.get_include()
+

Return the directory in the package that contains header files.

+

Extension modules that need to compile against mpi4py should use +this function to locate the appropriate include directory. Using +Python distutils (or perhaps NumPy distutils):

+
import mpi4py
+Extension('extension_name', ...
+          include_dirs=[..., mpi4py.get_include()])
+
+
+
+
Return type:
+

str

+
+
+
+ +
+
+mpi4py.get_config()
+

Return a dictionary with information about MPI.

+
+

Changed in version 4.0.0: By default, this function returns an empty dictionary. However, +downstream packagers and distributors may alter such behavior. +To that end, MPI information must be provided under an mpi +section within a UTF-8 encoded INI-style configuration file +mpi.cfg located at the top-level package directory. +The configuration file is read and parsed using the +configparser module.

+
+
+
Return type:
+

dict[str, str]

+
+
+
+ +
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.run.html b/4.0.0/html/mpi4py.run.html new file mode 100644 index 0000000..45c389e --- /dev/null +++ b/4.0.0/html/mpi4py.run.html @@ -0,0 +1,232 @@ + + + + + + + + mpi4py.run — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.run

+
+

Added in version 3.0.0.

+
+

At import time, mpi4py initializes the MPI execution environment calling +MPI_Init_thread() and installs an exit hook to automatically call +MPI_Finalize() just before the Python process terminates. Additionally, +mpi4py overrides the default ERRORS_ARE_FATAL error handler in favor +of ERRORS_RETURN, which allows translating MPI errors in Python +exceptions. These departures from standard MPI behavior may be controversial, +but are quite convenient within the highly dynamic Python programming +environment. Third-party code using mpi4py can just from mpi4py import +MPI and perform MPI calls without the tedious initialization/finalization +handling. MPI errors, once translated automatically to Python exceptions, can +be dealt with the common tryexceptfinally clauses; unhandled MPI exceptions will print a traceback +which helps in locating problems in source code.

+

Unfortunately, the interplay of automatic MPI finalization and unhandled +exceptions may lead to deadlocks. In unattended runs, these deadlocks will +drain the battery of your laptop, or burn precious allocation hours in your +supercomputing facility.

+
+

Exceptions and deadlocks

+

Consider the following snippet of Python code. Assume this code is stored in a +standard Python script file and run with mpiexec in two or more +processes.

+
+
deadlock.py
+
1from mpi4py import MPI
+2assert MPI.COMM_WORLD.Get_size() > 1
+3rank = MPI.COMM_WORLD.Get_rank()
+4if rank == 0:
+5    1/0
+6    MPI.COMM_WORLD.send(None, dest=1, tag=42)
+7elif rank == 1:
+8    MPI.COMM_WORLD.recv(source=0, tag=42)
+
+
+
+

Process 0 raises ZeroDivisionError exception before performing a send call to +process 1. As the exception is not handled, the Python interpreter running in +process 0 will proceed to exit with non-zero status. However, as mpi4py +installed a finalizer hook to call MPI_Finalize() before exit, process +0 will block waiting for other processes to also enter the +MPI_Finalize() call. Meanwhile, process 1 will block waiting for a +message to arrive from process 0, thus never reaching to +MPI_Finalize(). The whole MPI execution environment is irremediably in +a deadlock state.

+

To alleviate this issue, mpi4py offers a simple, alternative command +line execution mechanism based on using the -m +flag and implemented with the runpy module. To use this features, Python +code should be run passing -m mpi4py in the command line invoking the +Python interpreter. In case of unhandled exceptions, the finalizer hook will +call MPI_Abort() on the MPI_COMM_WORLD communicator, thus +effectively aborting the MPI execution environment.

+
+

Warning

+

When a process is forced to abort, resources (e.g. open files) are not +cleaned-up and any registered finalizers (either with the atexit +module, the Python C/API function Py_AtExit(), or even the C +standard library function atexit()) will not be executed. Thus, +aborting execution is an extremely impolite way of ensuring process +termination. However, MPI provides no other mechanism to recover from a +deadlock state.

+
+
+
+

Command line

+

The use of -m mpi4py to execute Python code on the command line resembles +that of the Python interpreter.

+
    +
  • mpiexec -n numprocs python -m mpi4py pyfile [arg] ...

  • +
  • mpiexec -n numprocs python -m mpi4py -m mod [arg] ...

  • +
  • mpiexec -n numprocs python -m mpi4py -c cmd [arg] ...

  • +
  • mpiexec -n numprocs python -m mpi4py - [arg] ...

  • +
+
+
+<pyfile>
+

Execute the Python code contained in pyfile, which must be a filesystem +path referring to either a Python file, a directory containing a +__main__.py file, or a zipfile containing a __main__.py +file.

+
+ +
+
+-m <mod>
+

Search sys.path for the named module mod and execute its contents.

+
+ +
+
+-c <cmd>
+

Execute the Python code in the cmd string command.

+
+ +
+
+-
+

Read commands from standard input (sys.stdin).

+
+ +
+

See also

+
+
Command line

Documentation on Python command line interface.

+
+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.typing.html b/4.0.0/html/mpi4py.typing.html new file mode 100644 index 0000000..3141e53 --- /dev/null +++ b/4.0.0/html/mpi4py.typing.html @@ -0,0 +1,362 @@ + + + + + + + + mpi4py.typing — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.typing

+
+

Added in version 4.0.0.

+
+

This module provides type aliases used to add +type hints to the various functions and methods +within the MPI module.

+
+

See also

+
+
Module typing

Documentation of the typing standard module.

+
+
+
+

Types Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

SupportsBuffer

Python buffer protocol.

SupportsDLPack

DLPack data interchange protocol.

SupportsCAI

CUDA Array Interface (CAI) protocol.

Buffer

Buffer-like object.

Bottom

Start of the address range.

InPlace

In-place buffer argument.

Aint

Address-sized integral type.

Count

Integral type for counts.

Displ

Integral type for displacements.

Offset

Integral type for offsets.

TypeSpec

Datatype specification.

BufSpec

Buffer specification.

BufSpecB

Buffer specification (block).

BufSpecV

Buffer specification (vector).

BufSpecW

Buffer specification (generalized).

TargetSpec

Target specification.

+

Types Documentation

+
+
+mpi4py.typing.SupportsBuffer = <class 'mpi4py.typing.SupportsBuffer'>
+

Python buffer protocol.

+
+

See also

+

Buffer Protocol

+
+
+ +
+
+mpi4py.typing.SupportsDLPack = <class 'mpi4py.typing.SupportsDLPack'>
+

DLPack data interchange protocol.

+ +
+ +
+
+mpi4py.typing.SupportsCAI = <class 'mpi4py.typing.SupportsCAI'>
+

CUDA Array Interface (CAI) protocol.

+ +
+ +
+
+mpi4py.typing.Buffer
+

Buffer-like object.

+

alias of SupportsBuffer | SupportsDLPack | SupportsCAI

+
+ +
+
+mpi4py.typing.Bottom
+

Start of the address range.

+

alias of BottomType | None

+
+ +
+
+mpi4py.typing.InPlace
+

In-place buffer argument.

+

alias of InPlaceType | None

+
+ +
+
+mpi4py.typing.Aint = <class 'numbers.Integral'>
+

Address-sized integral type.

+

alias of numbers.Integral

+
+ +
+
+mpi4py.typing.Count = <class 'numbers.Integral'>
+

Integral type for counts.

+

alias of numbers.Integral

+
+ +
+
+mpi4py.typing.Displ = <class 'numbers.Integral'>
+

Integral type for displacements.

+

alias of numbers.Integral

+
+ +
+
+mpi4py.typing.Offset = <class 'numbers.Integral'>
+

Integral type for offsets.

+

alias of numbers.Integral

+
+ +
+
+mpi4py.typing.TypeSpec
+

Datatype specification.

+

alias of Datatype | str

+
+ +
+
+mpi4py.typing.BufSpec
+

Buffer specification.

+ +

alias of SupportsBuffer | SupportsDLPack | SupportsCAI | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Integral] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Datatype | str] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Integral, Datatype | str] | Tuple[BottomType | None, Integral, Datatype] | List[Any]

+
+ +
+
+mpi4py.typing.BufSpecB
+

Buffer specification (block).

+ +

alias of SupportsBuffer | SupportsDLPack | SupportsCAI | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Integral] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Datatype | str] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Integral, Datatype | str] | List[Any]

+
+ +
+
+mpi4py.typing.BufSpecV
+

Buffer specification (vector).

+ +

alias of SupportsBuffer | SupportsDLPack | SupportsCAI | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Sequence[Integral]] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Tuple[Sequence[Integral], Sequence[Integral]]] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Datatype | str] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Sequence[Integral], Datatype | str] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Tuple[Sequence[Integral], Sequence[Integral]], Datatype | str] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Sequence[Integral], Sequence[Integral], Datatype | str] | Tuple[BottomType | None, Tuple[Sequence[Integral], Sequence[Integral]], Datatype] | Tuple[BottomType | None, Sequence[Integral], Sequence[Integral], Datatype] | List[Any]

+
+ +
+
+mpi4py.typing.BufSpecW
+

Buffer specification (generalized).

+ +

alias of Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Sequence[Datatype]] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Tuple[Sequence[Integral], Sequence[Integral]], Sequence[Datatype]] | Tuple[SupportsBuffer | SupportsDLPack | SupportsCAI, Sequence[Integral], Sequence[Integral], Sequence[Datatype]] | Tuple[BottomType | None, Tuple[Sequence[Integral], Sequence[Integral]], Sequence[Datatype]] | Tuple[BottomType | None, Sequence[Integral], Sequence[Integral], Sequence[Datatype]] | List[Any]

+
+ +
+
+mpi4py.typing.TargetSpec
+

Target specification.

+ +

alias of Integral | Tuple | Tuple[Integral] | Tuple[Integral, Integral] | Tuple[Integral, Integral, Datatype | str] | List[Any]

+
+ +
+
+mpi4py.typing.S = TypeVar("S")
+

Invariant TypeVar.

+
+ +
+
+mpi4py.typing.T = TypeVar("T")
+

Invariant TypeVar.

+
+ +
+
+mpi4py.typing.U = TypeVar("U")
+

Invariant TypeVar.

+
+ +
+
+mpi4py.typing.V = TypeVar("V")
+

Invariant TypeVar.

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.util.dtlib.html b/4.0.0/html/mpi4py.util.dtlib.html new file mode 100644 index 0000000..dd07928 --- /dev/null +++ b/4.0.0/html/mpi4py.util.dtlib.html @@ -0,0 +1,147 @@ + + + + + + + + mpi4py.util.dtlib — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.util.dtlib

+
+

Added in version 3.1.0.

+
+

The mpi4py.util.dtlib module provides converter routines between NumPy +and MPI datatypes.

+
+
+mpi4py.util.dtlib.from_numpy_dtype(dtype)
+

Convert NumPy datatype to MPI datatype.

+
+
Parameters:
+

dtype (DTypeLike) – NumPy dtype-like object.

+
+
Return type:
+

Datatype

+
+
+
+ +
+
+mpi4py.util.dtlib.to_numpy_dtype(datatype)
+

Convert MPI datatype to NumPy datatype.

+
+
Parameters:
+

datatype (Datatype) – MPI datatype.

+
+
Return type:
+

dtype[Any]

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.util.html b/4.0.0/html/mpi4py.util.html new file mode 100644 index 0000000..a6a16d1 --- /dev/null +++ b/4.0.0/html/mpi4py.util.html @@ -0,0 +1,125 @@ + + + + + + + + mpi4py.util — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.util

+
+

Added in version 3.1.0.

+
+

The mpi4py.util package collects miscellaneous utilities +within the intersection of Python and MPI.

+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.util.pkl5.html b/4.0.0/html/mpi4py.util.pkl5.html new file mode 100644 index 0000000..2cc2c5b --- /dev/null +++ b/4.0.0/html/mpi4py.util.pkl5.html @@ -0,0 +1,712 @@ + + + + + + + + mpi4py.util.pkl5 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.util.pkl5

+
+

Added in version 3.1.0.

+
+

pickle protocol 5 (see PEP 574) introduced support for out-of-band +buffers, allowing for more efficient handling of certain object types with +large memory footprints.

+

MPI for Python uses the traditional in-band handling of buffers. This approach +is appropriate for communicating non-buffer Python objects, or buffer-like +objects with small memory footprints. For point-to-point communication, in-band +buffer handling allows for the communication of a pickled stream with a single +MPI message, at the expense of additional CPU and memory overhead in the +pickling and unpickling steps.

+

The mpi4py.util.pkl5 module provides communicator wrapper classes +reimplementing pickle-based point-to-point and collective communication methods +using pickle protocol 5. Handling out-of-band buffers necessarily involves +multiple MPI messages, thus increasing latency and hurting performance in case +of small size data. However, in case of large size data, the zero-copy savings +of out-of-band buffer handling more than offset the extra latency costs. +Additionally, these wrapper methods overcome the infamous 2 GiB message count +limit (MPI-1 to MPI-3).

+
+

Note

+

Support for pickle protocol 5 is available in the pickle module +within the Python standard library since Python 3.8. Previous Python 3 +releases can use the pickle5 backport, which is available on PyPI and can be installed with:

+
python -m pip install pickle5
+
+
+
+
+
+class mpi4py.util.pkl5.Request
+

Request.

+

Custom request class for nonblocking communications.

+
+

Note

+

Request is not a subclass of mpi4py.MPI.Request

+
+
+
+Free()
+

Free a communication request.

+
+
Return type:
+

None

+
+
+
+ +
+
+free()
+

Free a communication request.

+
+
Return type:
+

None

+
+
+
+ +
+
+cancel()
+

Cancel a communication request.

+
+
Return type:
+

None

+
+
+
+ +
+
+get_status(status=None)
+

Non-destructive test for the completion of a request.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

bool

+
+
+
+ +
+
+test(status=None)
+

Test for the completion of a request.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

tuple[bool, Any | None]

+
+
+
+ +
+
+wait(status=None)
+

Wait for a request to complete.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

Any

+
+
+
+ +
+
+classmethod get_status_all(requests, statuses=None)
+

Non-destructive test for the completion of all requests.

+
+
Classmethod:
+

+
+
+ +
+
+classmethod testall(requests, statuses=None)
+

Test for the completion of all requests.

+
+
Classmethod:
+

+
+
+ +
+
+classmethod waitall(requests, statuses=None)
+

Wait for all requests to complete.

+
+
Classmethod:
+

+
+
+ +
+ +
+
+class mpi4py.util.pkl5.Message
+

Message.

+

Custom message class for matching probes.

+
+

Note

+

Message is not a subclass of mpi4py.MPI.Message

+
+
+
+free()
+

Do nothing.

+
+
Return type:
+

None

+
+
+
+ +
+
+recv(status=None)
+

Blocking receive of matched message.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

Any

+
+
+
+ +
+
+irecv()
+

Nonblocking receive of matched message.

+
+
Return type:
+

Request

+
+
+
+ +
+
+classmethod probe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a matched message.

+
+
Classmethod:
+

+
+
+ +
+
+classmethod iprobe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a matched message.

+
+
Classmethod:
+

+
+
+ +
+ +
+
+class mpi4py.util.pkl5.Comm
+

Communicator.

+

Base communicator wrapper class.

+
+
+send(obj, dest, tag=0)
+

Blocking send in standard mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+bsend(obj, dest, tag=0)
+

Blocking send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+ssend(obj, dest, tag=0)
+

Blocking send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+isend(obj, dest, tag=0)
+

Nonblocking send in standard mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+ibsend(obj, dest, tag=0)
+

Nonblocking send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+issend(obj, dest, tag=0)
+

Nonblocking send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+recv(buf=None, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking receive.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+irecv(buf=None, source=ANY_SOURCE, tag=ANY_TAG)
+

Nonblocking receive.

+
+

Warning

+

This method cannot be supported reliably +and raises RuntimeError.

+
+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+sendrecv(sendobj, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG, status=None)
+

Send and receive.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+mprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Message

+
+
+
+ +
+
+improbe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Message | None

+
+
+
+ +
+
+bcast(obj, root=0)
+

Broadcast.

+
+

Added in version 3.1.0.

+
+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+gather(sendobj, root=0)
+

Gather.

+
+

Added in version 4.0.0.

+
+
+
Parameters:
+
+
+
Return type:
+

list[Any] | None

+
+
+
+ +
+
+scatter(sendobj, root=0)
+

Scatter.

+
+

Added in version 4.0.0.

+
+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+allgather(sendobj)
+

Gather to All.

+
+

Added in version 4.0.0.

+
+
+
Parameters:
+

sendobj (Any)

+
+
Return type:
+

list[Any]

+
+
+
+ +
+
+alltoall(sendobj)
+

All to All Scatter/Gather.

+
+

Added in version 4.0.0.

+
+
+
Parameters:
+

sendobj (Sequence[Any])

+
+
Return type:
+

list[Any]

+
+
+
+ +
+ +
+
+class mpi4py.util.pkl5.Intracomm
+

Intracommunicator.

+

Intracommunicator wrapper class.

+
+ +
+
+class mpi4py.util.pkl5.Intercomm
+

Intercommunicator.

+

Intercommunicator wrapper class.

+
+ +
+

Examples

+
+
test-pkl5-1.py
+
 1import numpy as np
+ 2from mpi4py import MPI
+ 3from mpi4py.util import pkl5
+ 4
+ 5comm = pkl5.Intracomm(MPI.COMM_WORLD)  # comm wrapper
+ 6size = comm.Get_size()
+ 7rank = comm.Get_rank()
+ 8dst = (rank + 1) % size
+ 9src = (rank - 1) % size
+10
+11sobj = np.full(1024**3, rank, dtype='i4')  # > 4 GiB
+12sreq = comm.isend(sobj, dst, tag=42)
+13robj = comm.recv (None, src, tag=42)
+14sreq.Free()
+15
+16assert np.min(robj) == src
+17assert np.max(robj) == src
+
+
+
+
+
test-pkl5-2.py
+
 1import numpy as np
+ 2from mpi4py import MPI
+ 3from mpi4py.util import pkl5
+ 4
+ 5comm = pkl5.Intracomm(MPI.COMM_WORLD)  # comm wrapper
+ 6size = comm.Get_size()
+ 7rank = comm.Get_rank()
+ 8dst = (rank + 1) % size
+ 9src = (rank - 1) % size
+10
+11sobj = np.full(1024**3, rank, dtype='i4')  # > 4 GiB
+12sreq = comm.isend(sobj, dst, tag=42)
+13
+14status = MPI.Status()
+15rmsg = comm.mprobe(status=status)
+16assert status.Get_source() == src
+17assert status.Get_tag() == 42
+18rreq = rmsg.irecv()
+19robj = rreq.wait()
+20
+21sreq.Free()
+22assert np.max(robj) == src
+23assert np.min(robj) == src
+
+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.util.pool.html b/4.0.0/html/mpi4py.util.pool.html new file mode 100644 index 0000000..1993e38 --- /dev/null +++ b/4.0.0/html/mpi4py.util.pool.html @@ -0,0 +1,486 @@ + + + + + + + + mpi4py.util.pool — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.util.pool

+
+

Added in version 4.0.0.

+
+
+

See also

+

This module intends to be a drop-in replacement for the +multiprocessing.pool interface from the Python standard library. +The Pool class exposed here is implemented as a +thin wrapper around MPIPoolExecutor.

+
+
+

Note

+

The mpi4py.futures package offers a higher level interface +for asynchronously pushing tasks to MPI worker process, allowing +for a clear separation between submitting tasks and waiting for the +results.

+
+
+
+class mpi4py.util.pool.Pool
+

Pool using MPI processes as workers.

+
+
+__init__(processes=None, initializer=None, initargs=(), **kwargs)
+

Initialize a new Pool instance.

+
+
Parameters:
+
    +
  • processes (int | None) – Number of worker processes.

  • +
  • initializer (Callable[[...], None] | None) – An callable used to initialize workers processes.

  • +
  • initargs (Iterable[Any]) – A tuple of arguments to pass to the initializer.

  • +
  • kwargs (Any)

  • +
+
+
Return type:
+

None

+
+
+
+

Note

+

Additional keyword arguments are passed down to the +MPIPoolExecutor constructor.

+
+
+

Warning

+

The maxtasksperchild and context arguments of +multiprocessing.pool.Pool are not supported. Specifying +maxtasksperchild or context with a value other than None will +issue a warning of category UserWarning.

+
+
+ +
+
+apply(func, args=(), kwds={})
+

Call func with arguments args and keyword arguments kwds.

+

Equivalent to func(*args, **kwds).

+
+
Parameters:
+
+
+
Return type:
+

T

+
+
+
+ +
+
+apply_async(func, args=(), kwds={}, callback=None, error_callback=None)
+

Asynchronous version of apply() returning ApplyResult.

+
+
Parameters:
+
+
+
Return type:
+

AsyncResult[T]

+
+
+
+ +
+
+map(func, iterable, chunksize=None)
+

Apply func to each element in iterable.

+

Equivalent to list(map(func, iterable)).

+

Block until all results are ready and return them in a list.

+

The iterable is choped into a number of chunks which are submitted as +separate tasks. The (approximate) size of these chunks can be specified +by setting chunksize to a positive integer.

+

Consider using imap() or imap_unordered() with explicit chunksize +for better efficiency.

+
+
Parameters:
+
+
+
Return type:
+

list[T]

+
+
+
+ +
+
+map_async(func, iterable, chunksize=None, callback=None, error_callback=None)
+

Asynchronous version of map() returning MapResult.

+
+
Parameters:
+
+
+
Return type:
+

MapResult[T]

+
+
+
+ +
+
+imap(func, iterable, chunksize=1)
+

Like map() but return an iterator.

+

Equivalent to map(func, iterable).

+
+
Parameters:
+
+
+
Return type:
+

Iterator[T]

+
+
+
+ +
+
+imap_unordered(func, iterable, chunksize=1)
+

Like imap() but ordering of results is arbitrary.

+
+
Parameters:
+
+
+
Return type:
+

Iterator[T]

+
+
+
+ +
+
+starmap(func, iterable, chunksize=None)
+

Apply func to each argument tuple in iterable.

+

Equivalent to list(itertools.starmap(func, iterable)).

+

Block until all results are ready and return them in a list.

+

The iterable is choped into a number of chunks which are submitted as +separate tasks. The (approximate) size of these chunks can be specified +by setting chunksize to a positive integer.

+

Consider using istarmap() or istarmap_unordered() with explicit +chunksize for better efficiency.

+
+
Parameters:
+
+
+
Return type:
+

list[T]

+
+
+
+ +
+
+starmap_async(func, iterable, chunksize=None, callback=None, error_callback=None)
+

Asynchronous version of starmap() returning MapResult.

+
+
Parameters:
+
+
+
Return type:
+

MapResult[T]

+
+
+
+ +
+
+istarmap(func, iterable, chunksize=1)
+

Like starmap() but return an iterator.

+

Equivalent to itertools.starmap(func, iterable).

+
+
Parameters:
+
+
+
Return type:
+

Iterator[T]

+
+
+
+ +
+
+istarmap_unordered(func, iterable, chunksize=1)
+

Like istarmap() but ordering of results is arbitrary.

+
+
Parameters:
+
+
+
Return type:
+

Iterator[T]

+
+
+
+ +
+
+close()
+

Prevent any more tasks from being submitted to the pool.

+
+
Return type:
+

None

+
+
+
+ +
+
+terminate()
+

Stop the worker processes without completing pending tasks.

+
+
Return type:
+

None

+
+
+
+ +
+
+join()
+

Wait for the worker processes to exit.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+class mpi4py.util.pool.ThreadPool
+

Bases: Pool

+

Pool using threads as workers.

+
+ +
+
+class mpi4py.util.pool.AsyncResult
+

Asynchronous result.

+
+
+get(timeout=None)
+

Return the result when it arrives.

+

If timeout is not None and the result does not arrive within +timeout seconds then raise TimeoutError.

+

If the remote call raised an exception then that exception will be +reraised.

+
+
Parameters:
+

timeout (float | None)

+
+
Return type:
+

T

+
+
+
+ +
+
+wait(timeout=None)
+

Wait until the result is available or timeout seconds pass.

+
+
Parameters:
+

timeout (float | None)

+
+
Return type:
+

None

+
+
+
+ +
+
+ready()
+

Return whether the call has completed.

+
+
Return type:
+

bool

+
+
+
+ +
+
+successful()
+

Return whether the call completed without raising an exception.

+

If the result is not ready then raise ValueError.

+
+
Return type:
+

bool

+
+
+
+ +
+ +
+
+class mpi4py.util.pool.ApplyResult
+

Bases: AsyncResult

+

Result type of apply_async().

+
+ +
+
+class mpi4py.util.pool.MapResult
+

Bases: AsyncResult

+

Result type of map_async() and starmap_async().

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/mpi4py.util.sync.html b/4.0.0/html/mpi4py.util.sync.html new file mode 100644 index 0000000..a713027 --- /dev/null +++ b/4.0.0/html/mpi4py.util.sync.html @@ -0,0 +1,755 @@ + + + + + + + + mpi4py.util.sync — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.util.sync

+
+

Added in version 4.0.0.

+
+

The mpi4py.util.sync module provides parallel synchronization +utilities.

+
+

Sequential execution

+
+
+class mpi4py.util.sync.Sequential
+

Sequential execution.

+

Context manager for sequential execution within a group of MPI processes.

+

The implementation is based in MPI-1 point-to-point communication. A process +with rank i waits in a blocking receive until the previous process rank +i-1 finish executing and signals the next rank i with a send.

+
+
+__init__(comm, tag=0)
+

Initialize sequential execution.

+
+
Parameters:
+
    +
  • comm (Intracomm) – Intracommunicator context.

  • +
  • tag (int) – Tag for point-to-point communication.

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+__enter__()
+

Enter sequential execution.

+
+
Return type:
+

Self

+
+
+
+ +
+
+__exit__(*exc)
+

Exit sequential execution.

+
+
Parameters:
+

exc (object)

+
+
Return type:
+

None

+
+
+
+ +
+
+begin()
+

Begin sequential execution.

+
+
Return type:
+

None

+
+
+
+ +
+
+end()
+

End sequential execution.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+

Global counter

+
+
+class mpi4py.util.sync.Counter
+

Global counter.

+

Produce consecutive values within a group of MPI processes. The counter +interface is close to that of itertools.count.

+

The implementation is based in MPI-3 one-sided operations. A root process +(typically rank 0) holds the counter, and its value is queried and +incremented with an atomic RMA fetch-and-add operation.

+
+
+__init__(start=0, step=1, *, typecode='i', comm=COMM_SELF, info=INFO_NULL, root=0)
+

Initialize global counter.

+
+
Parameters:
+
    +
  • start (int) – Start value.

  • +
  • step (int) – Increment value.

  • +
  • typecode (str) – Type code as defined in the array module.

  • +
  • comm (Intracomm) – Intracommunicator context.

  • +
  • info (Info) – Info object for RMA context creation.

  • +
  • root (int) – Process rank holding the counter memory.

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+__iter__()
+

Implement iter(self).

+
+
Return type:
+

Self

+
+
+
+ +
+
+__next__()
+

Implement next(self).

+
+
Return type:
+

int

+
+
+
+ +
+
+next(incr=None)
+

Return current value and increment.

+
+
Parameters:
+

incr (int | None) – Increment value.

+
+
Returns:
+

The counter value before incrementing.

+
+
Return type:
+

int

+
+
+
+ +
+
+free()
+

Free counter resources.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+

Mutual exclusion

+
+
+class mpi4py.util.sync.Mutex
+

Mutual exclusion.

+

Establish a critical section or mutual exclusion among MPI processes.

+

The mutex interface is close to that of threading.Lock and +threading.RLock, allowing the use of either recursive or non-recursive +mutual exclusion. However, a mutex should be used within a group of MPI +processes, not threads.

+

In non-recursive mode, the semantics of Mutex are somewhat different than +these of threading.Lock:

+
    +
  • Once acquired, a mutex is held and owned by a process until released.

  • +
  • Trying to acquire a mutex already held raises RuntimeError.

  • +
  • Trying to release a mutex not yet held raises RuntimeError.

  • +
+

This mutex implementation uses the scalable and fair spinlock algorithm from +[mcs-paper] and took inspiration from the MPI-3 RMA implementation of +[uam-book].

+
+
+__init__(*, recursive=False, comm=COMM_SELF, info=INFO_NULL)
+

Initialize mutex object.

+
+
Parameters:
+
    +
  • comm (Intracomm) – Intracommunicator context.

  • +
  • recursive (bool) – Whether to allow recursive acquisition.

  • +
  • info (Info) – Info object for RMA context creation.

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+__enter__()
+

Acquire mutex.

+
+
Return type:
+

Self

+
+
+
+ +
+
+__exit__(*exc)
+

Release mutex.

+
+
Parameters:
+

exc (object)

+
+
Return type:
+

None

+
+
+
+ +
+
+acquire(blocking=True)
+

Acquire mutex, blocking or non-blocking.

+
+
Parameters:
+

blocking (bool) – If True, block until the mutex is held.

+
+
Returns:
+

True if the mutex is held, False otherwise.

+
+
Return type:
+

bool

+
+
+
+ +
+
+release()
+

Release mutex.

+
+
Return type:
+

None

+
+
+
+ +
+
+locked()
+

Return whether the mutex is held.

+
+
Return type:
+

bool

+
+
+
+ +
+
+count()
+

Return the recursion count.

+
+
Return type:
+

int

+
+
+
+ +
+
+free()
+

Free mutex resources.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+[mcs-paper] +

John M. Mellor-Crummey and Michael L. Scott. +Algorithms for scalable synchronization on shared-memory multiprocessors. +ACM Transactions on Computer Systems, 9(1):21-65, February 1991. +https://doi.org/10.1145/103727.103729

+
+
+[uam-book] +

William Gropp, Torsten Hoefler, Rajeev Thakur, Ewing Lusk. +Using Advanced MPI - Modern Features of the Message-Passing Interface. +Chapter 4, Section 4.7, Pages 130-131. The MIT Press, November 2014. +https://mitpress.mit.edu/9780262527637/using-advanced-mpi/

+
+
+
+
+

Condition variable

+
+
+class mpi4py.util.sync.Condition
+

Condition variable.

+

A condition variable allows one or more MPI processes to wait until they are +notified by another processes.

+

The condition variable interface is close to that of threading.Condition, +allowing the use of either recursive or non-recursive mutual exclusion. +However, the condition variable should be used within a group of MPI +processes, not threads.

+

This condition variable implementation uses a MPI-3 RMA-based scalable and +fair circular queue algorithm to track the set of waiting processes.

+
+
+__init__(mutex=None, *, recursive=True, comm=COMM_SELF, info=INFO_NULL)
+

Initialize condition variable.

+
+
Parameters:
+
    +
  • mutex (Mutex | None) – Mutual exclusion object.

  • +
  • recursive (bool) – Whether to allow recursive acquisition.

  • +
  • comm (Intracomm) – Intracommunicator context.

  • +
  • info (Info) – Info object for RMA context creation.

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+__enter__()
+

Acquire the underlying mutex.

+
+
Return type:
+

Self

+
+
+
+ +
+
+__exit__(*exc)
+

Release the underlying mutex.

+
+
Parameters:
+

exc (object)

+
+
Return type:
+

None

+
+
+
+ +
+
+acquire(blocking=True)
+

Acquire the underlying mutex.

+
+
Parameters:
+

blocking (bool)

+
+
Return type:
+

bool

+
+
+
+ +
+
+release()
+

Release the underlying mutex.

+
+
Return type:
+

None

+
+
+
+ +
+
+locked()
+

Return whether the underlying mutex is held.

+
+
Return type:
+

bool

+
+
+
+ +
+
+wait()
+

Wait until notified by another process.

+
+
Returns:
+

Always True.

+
+
Return type:
+

Literal[True]

+
+
+
+ +
+
+wait_for(predicate)
+

Wait until a predicate evaluates to True.

+
+
Parameters:
+

predicate (Callable[[], T]) – callable returning a boolean.

+
+
Returns:
+

The result of predicate once it evaluates to True.

+
+
Return type:
+

T

+
+
+
+ +
+
+notify(n=1)
+

Wake up one or more processes waiting on this condition.

+
+
Parameters:
+

n (int) – Maximum number of processes to wake up.

+
+
Returns:
+

The actual number of processes woken up.

+
+
Return type:
+

int

+
+
+
+ +
+
+notify_all()
+

Wake up all processes waiting on this condition.

+
+
Returns:
+

The actual number of processes woken up.

+
+
Return type:
+

int

+
+
+
+ +
+
+free()
+

Free condition resources.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+

Semaphore object

+
+
+class mpi4py.util.sync.Semaphore
+

Semaphore object.

+

A semaphore object manages an internal counter which is decremented by each +acquire() call and incremented by each release() call. The internal +counter never reaches a value below zero; when acquire() finds that it is +zero, it blocks and waits until some other process calls release().

+

The semaphore interface is close to that of threading.Semaphore and +threading.BoundedSemaphore, allowing the use of either bounded (default) +or unbounded semaphores. With a bounded semaphore, the internal counter +never exceeds its initial value; otherwise release() raises ValueError.

+

This semaphore implementation uses a global Counter and a Condition +variable to handle waiting and and notification.

+
+
+__init__(value=1, *, bounded=True, comm=COMM_SELF, info=INFO_NULL)
+

Initialize semaphore object.

+
+
Parameters:
+
    +
  • value (int) – Initial value for internal counter.

  • +
  • bounded (bool) – Bound internal counter to initial value.

  • +
  • comm (Intracomm) – Intracommunicator context.

  • +
  • info (Info) – Info object for RMA context creation.

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+__enter__()
+

Acquire semaphore.

+
+
Return type:
+

Self

+
+
+
+ +
+
+__exit__(*exc)
+

Release semaphore.

+
+
Parameters:
+

exc (object)

+
+
Return type:
+

None

+
+
+
+ +
+
+acquire(blocking=True)
+

Acquire semaphore, decrementing the internal counter by one.

+
+
Parameters:
+

blocking (bool) – If True, block until the semaphore is acquired.

+
+
Returns:
+

True if the semaphore is acquired, False otherwise.

+
+
Return type:
+

bool

+
+
+
+ +
+
+release(n=1)
+

Release semaphore, incrementing the internal counter by one or more.

+
+
Parameters:
+

n (int) – Increment for the internal counter.

+
+
Return type:
+

None

+
+
+
+ +
+
+free()
+

Free semaphore resources.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+
+

Examples

+
+
test-sync-1.py
+
 1from mpi4py import MPI
+ 2from mpi4py.util.sync import Counter, Sequential
+ 3
+ 4comm = MPI.COMM_WORLD
+ 5
+ 6counter = Counter(comm)
+ 7with Sequential(comm):
+ 8   value = next(counter)
+ 9counter.free()
+10
+11assert comm.rank == value
+
+
+
+
+
test-sync-2.py
+
 1from mpi4py import MPI
+ 2from mpi4py.util.sync import Counter, Mutex
+ 3
+ 4comm = MPI.COMM_WORLD
+ 5
+ 6mutex = Mutex(comm)
+ 7counter = Counter(comm)
+ 8with mutex:
+ 9   value = next(counter)
+10counter.free()
+11mutex.free()
+12
+13assert (
+14   list(range(comm.size)) ==
+15   sorted(comm.allgather(value))
+16)
+
+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/objects.inv b/4.0.0/html/objects.inv new file mode 100644 index 0000000..331f4a4 Binary files /dev/null and b/4.0.0/html/objects.inv differ diff --git a/4.0.0/html/overview.html b/4.0.0/html/overview.html new file mode 100644 index 0000000..3325433 --- /dev/null +++ b/4.0.0/html/overview.html @@ -0,0 +1,542 @@ + + + + + + + + Overview — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Overview

+

MPI for Python provides an object oriented approach to message passing +which grounds on the standard MPI-2 C++ bindings. The interface was +designed with focus in translating MPI syntax and semantics of +standard MPI-2 bindings for C++ to Python. Any user of the standard +C/C++ MPI bindings should be able to use this module without need of +learning a new interface.

+
+

Communicating Python Objects and Array Data

+

The Python standard library supports different mechanisms for data +persistence. Many of them rely on disk storage, but pickling and +marshaling can also work with memory buffers.

+

The pickle modules provide user-extensible facilities to +serialize general Python objects using ASCII or binary formats. The +marshal module provides facilities to serialize built-in Python +objects using a binary format specific to Python, but independent of +machine architecture issues.

+

MPI for Python can communicate any built-in or user-defined Python +object taking advantage of the features provided by the pickle +module. These facilities will be routinely used to build binary +representations of objects to communicate (at sending processes), and +restoring them back (at receiving processes).

+

Although simple and general, the serialization approach (i.e., +pickling and unpickling) previously discussed imposes important +overheads in memory as well as processor usage, especially in the +scenario of objects with large memory footprints being +communicated. Pickling general Python objects, ranging from primitive +or container built-in types to user-defined classes, necessarily +requires computer resources. Processing is also needed for +dispatching the appropriate serialization method (that depends on the +type of the object) and doing the actual packing. Additional memory is +always needed, and if its total amount is not known a priori, many +reallocations can occur. Indeed, in the case of large numeric arrays, +this is certainly unacceptable and precludes communication of objects +occupying half or more of the available memory resources.

+

MPI for Python supports direct communication of any object exporting +the single-segment buffer interface. This interface is a standard +Python mechanism provided by some types (e.g., strings and numeric +arrays), allowing access in the C side to a contiguous memory buffer +(i.e., address and length) containing the relevant data. This feature, +in conjunction with the capability of constructing user-defined MPI +datatypes describing complicated memory layouts, enables the +implementation of many algorithms involving multidimensional numeric +arrays (e.g., image processing, fast Fourier transforms, finite +difference schemes on structured Cartesian grids) directly in Python, +with negligible overhead, and almost as fast as compiled Fortran, C, +or C++ codes.

+
+
+

Communicators

+

In MPI for Python, Comm is the base class of communicators. The +Intracomm and Intercomm classes are subclasses of the Comm +class. The Comm.Is_inter method (and Comm.Is_intra, provided for +convenience but not part of the MPI specification) is defined for +communicator objects and can be used to determine the particular +communicator class.

+

The two predefined intracommunicator instances are available: +COMM_SELF and COMM_WORLD. From them, new communicators can be +created as needed.

+

The number of processes in a communicator and the calling process rank +can be respectively obtained with methods Comm.Get_size and +Comm.Get_rank. The associated process group can be retrieved from a +communicator by calling the Comm.Get_group method, which returns an +instance of the Group class. Set operations with Group objects +like like Group.Union, Group.Intersection and Group.Difference +are fully supported, as well as the creation of new communicators from +these groups using Comm.Create and Intracomm.Create_group.

+

New communicator instances can be obtained with the Comm.Clone, +Comm.Dup and Comm.Split methods, as well methods +Intracomm.Create_intercomm and Intercomm.Merge.

+

Virtual topologies (Cartcomm, Graphcomm and Distgraphcomm +classes, which are specializations of the Intracomm class) are fully +supported. New instances can be obtained from intracommunicator +instances with factory methods Intracomm.Create_cart and +Intracomm.Create_graph.

+
+
+

Point-to-Point Communications

+

Point to point communication is a fundamental capability of message +passing systems. This mechanism enables the transmission of data +between a pair of processes, one side sending, the other receiving.

+

MPI provides a set of send and receive functions allowing the +communication of typed data with an associated tag. The type +information enables the conversion of data representation from one +architecture to another in the case of heterogeneous computing +environments; additionally, it allows the representation of +non-contiguous data layouts and user-defined datatypes, thus avoiding +the overhead of (otherwise unavoidable) packing/unpacking +operations. The tag information allows selectivity of messages at the +receiving end.

+
+

Blocking Communications

+

MPI provides basic send and receive functions that are blocking. +These functions block the caller until the data buffers involved in +the communication can be safely reused by the application program.

+

In MPI for Python, the Comm.Send, Comm.Recv and Comm.Sendrecv +methods of communicator objects provide support for blocking +point-to-point communications within Intracomm and Intercomm +instances. These methods can communicate memory buffers. The variants +Comm.send, Comm.recv and Comm.sendrecv can communicate general +Python objects.

+
+
+

Nonblocking Communications

+

On many systems, performance can be significantly increased by +overlapping communication and computation. This is particularly true +on systems where communication can be executed autonomously by an +intelligent, dedicated communication controller.

+

MPI provides nonblocking send and receive functions. They allow the +possible overlap of communication and computation. Non-blocking +communication always come in two parts: posting functions, which begin +the requested operation; and test-for-completion functions, which +allow to discover whether the requested operation has completed.

+

In MPI for Python, the Comm.Isend and Comm.Irecv methods +initiate send and receive operations, respectively. These methods +return a Request instance, uniquely identifying the started +operation. Its completion can be managed using the Request.Test, +Request.Wait and Request.Cancel methods. The management of +Request objects and associated memory buffers involved in +communication requires a careful, rather low-level coordination. Users +must ensure that objects exposing their memory buffers are not +accessed at the Python level while they are involved in nonblocking +message-passing operations.

+
+
+

Persistent Communications

+

Often a communication with the same argument list is repeatedly +executed within an inner loop. In such cases, communication can be +further optimized by using persistent communication, a particular case +of nonblocking communication allowing the reduction of the overhead +between processes and communication controllers. Furthermore , this +kind of optimization can also alleviate the extra call overheads +associated to interpreted, dynamic languages like Python.

+

In MPI for Python, the Comm.Send_init and Comm.Recv_init methods +create persistent requests for a send and receive operation, +respectively. These methods return an instance of the Prequest +class, a subclass of the Request class. The actual communication can +be effectively started using the Prequest.Start method, and its +completion can be managed as previously described.

+
+
+
+

Collective Communications

+

Collective communications allow the transmittal of data between +multiple processes of a group simultaneously. The syntax and semantics +of collective functions is consistent with point-to-point +communication. Collective functions communicate typed data, but +messages are not paired with an associated tag; selectivity of +messages is implied in the calling order. Additionally, collective +functions come in blocking versions only.

+

The more commonly used collective communication operations are the +following.

+
    +
  • Barrier synchronization across all group members.

  • +
  • Global communication functions

    +
      +
    • Broadcast data from one member to all members of a group.

    • +
    • Gather data from all members to one member of a group.

    • +
    • Scatter data from one member to all members of a group.

    • +
    +
  • +
  • Global reduction operations such as sum, maximum, minimum, etc.

  • +
+

In MPI for Python, the Comm.Bcast, Comm.Scatter, Comm.Gather, +Comm.Allgather, Comm.Alltoall methods provide support for +collective communications of memory buffers. The lower-case variants +Comm.bcast, Comm.scatter, Comm.gather, Comm.allgather and +Comm.alltoall can communicate general Python objects. The vector +variants (which can communicate different amounts of data to each +process) Comm.Scatterv, Comm.Gatherv, Comm.Allgatherv, +Comm.Alltoallv and Comm.Alltoallw are also supported, they can +only communicate objects exposing memory buffers.

+

Global reduction operations on memory buffers are accessible through +the Comm.Reduce, Comm.Reduce_scatter, Comm.Allreduce, +Intracomm.Scan and Intracomm.Exscan methods. The lower-case +variants Comm.reduce, Comm.allreduce, Intracomm.scan and +Intracomm.exscan can communicate general Python objects; however, +the actual required reduction computations are performed sequentially +at some process. All the predefined (i.e., SUM, PROD, MAX, etc.) +reduction operations can be applied.

+
+
+

Support for GPU-aware MPI

+

Several MPI implementations, including Open MPI and MVAPICH, support +passing GPU pointers to MPI calls to avoid explicit data movement +between host and device. On the Python side, support for handling GPU +arrays have been implemented in many libraries related GPU computation +such as CuPy, Numba, PyTorch, and PyArrow. To maximize +interoperability across library boundaries, two kinds of zero-copy +data exchange protocols have been defined and agreed upon: DLPack and CUDA Array Interface (CAI).

+

MPI for Python provides an experimental support for GPU-aware MPI. +This feature requires:

+
    +
  1. mpi4py is built against a GPU-aware MPI library.

  2. +
  3. The Python GPU arrays are compliant with either of the protocols.

  4. +
+

See the Tutorial section for further information. We note that

+
    +
  • Whether or not a MPI call can work for GPU arrays depends on the +underlying MPI implementation, not on mpi4py.

  • +
  • This support is currently experimental and subject to change in the +future.

  • +
+
+
+

Dynamic Process Management

+

In the context of the MPI-1 specification, a parallel application is +static; that is, no processes can be added to or deleted from a +running application after it has been started. Fortunately, this +limitation was addressed in MPI-2. The new specification added a +process management model providing a basic interface between an +application and external resources and process managers.

+

This MPI-2 extension can be really useful, especially for sequential +applications built on top of parallel modules, or parallel +applications with a client/server model. The MPI-2 process model +provides a mechanism to create new processes and establish +communication between them and the existing MPI application. It also +provides mechanisms to establish communication between two existing +MPI applications, even when one did not start the other.

+

In MPI for Python, new independent process groups can be created by +calling the Intracomm.Spawn method within an intracommunicator. +This call returns a new intercommunicator (i.e., an Intercomm +instance) at the parent process group. The child process group can +retrieve the matching intercommunicator by calling the +Comm.Get_parent class method. At each side, the new +intercommunicator can be used to perform point to point and collective +communications between the parent and child groups of processes.

+

Alternatively, disjoint groups of processes can establish +communication using a client/server approach. Any server application +must first call the Open_port function to open a port and the +Publish_name function to publish a provided service, and next call +the Intracomm.Accept method. Any client applications can first find +a published service by calling the Lookup_name function, which +returns the port where a server can be contacted; and next call the +Intracomm.Connect method. Both Intracomm.Accept and +Intracomm.Connect methods return an Intercomm instance. When +connection between client/server processes is no longer needed, all of +them must cooperatively call the Comm.Disconnect +method. Additionally, server applications should release resources by +calling the Unpublish_name and Close_port functions.

+
+
+

One-Sided Communications

+

One-sided communications (also called Remote Memory Access, RMA) +supplements the traditional two-sided, send/receive based MPI +communication model with a one-sided, put/get based +interface. One-sided communication that can take advantage of the +capabilities of highly specialized network hardware. Additionally, +this extension lowers latency and software overhead in applications +written using a shared-memory-like paradigm.

+

The MPI specification revolves around the use of objects called +windows; they intuitively specify regions of a process’s memory that +have been made available for remote read and write operations. The +published memory blocks can be accessed through three functions for +put (remote send), get (remote write), and accumulate (remote update +or reduction) data items. A much larger number of functions support +different synchronization styles; the semantics of these +synchronization operations are fairly complex.

+

In MPI for Python, one-sided operations are available by using +instances of the Win class. New window objects are created by +calling the Win.Create method at all processes within a communicator +and specifying a memory buffer . When a window instance is no longer +needed, the Win.Free method should be called.

+

The three one-sided MPI operations for remote write, read and +reduction are available through calling the methods Win.Put, +Win.Get, and Win.Accumulate respectively within a Win instance. +These methods need an integer rank identifying the target process and +an integer offset relative the base address of the remote memory block +being accessed.

+

The one-sided operations read, write, and reduction are implicitly +nonblocking, and must be synchronized by using two primary modes. +Active target synchronization requires the origin process to call the +Win.Start and Win.Complete methods at the origin process, and +target process cooperates by calling the Win.Post and Win.Wait +methods. There is also a collective variant provided by the +Win.Fence method. Passive target synchronization is more lenient, +only the origin process calls the Win.Lock and Win.Unlock +methods. Locks are used to protect remote accesses to the locked +remote window and to protect local load/store accesses to a locked +local window.

+
+
+

Parallel Input/Output

+

The POSIX standard provides a model of a widely portable file +system. However, the optimization needed for parallel input/output +cannot be achieved with this generic interface. In order to ensure +efficiency and scalability, the underlying parallel input/output +system must provide a high-level interface supporting partitioning of +file data among processes and a collective interface supporting +complete transfers of global data structures between process memories +and files. Additionally, further efficiencies can be gained via +support for asynchronous input/output, strided accesses to data, and +control over physical file layout on storage devices. This scenario +motivated the inclusion in the MPI-2 standard of a custom interface in +order to support more elaborated parallel input/output operations.

+

The MPI specification for parallel input/output revolves around the +use objects called files. As defined by MPI, files are not just +contiguous byte streams. Instead, they are regarded as ordered +collections of typed data items. MPI supports sequential or random +access to any integral set of these items. Furthermore, files are +opened collectively by a group of processes.

+

The common patterns for accessing a shared file (broadcast, scatter, +gather, reduction) is expressed by using user-defined datatypes. +Compared to the communication patterns of point-to-point and +collective communications, this approach has the advantage of added +flexibility and expressiveness. Data access operations (read and +write) are defined for different kinds of positioning (using explicit +offsets, individual file pointers, and shared file pointers), +coordination (non-collective and collective), and synchronism +(blocking, nonblocking, and split collective with begin/end phases).

+

In MPI for Python, all MPI input/output operations are performed +through instances of the File class. File handles are obtained by +calling the File.Open method at all processes within a communicator +and providing a file name and the intended access mode. After use, +they must be closed by calling the File.Close method. Files even +can be deleted by calling method File.Delete.

+

After creation, files are typically associated with a per-process +view. The view defines the current set of data visible and +accessible from an open file as an ordered set of elementary +datatypes. This data layout can be set and queried with the +File.Set_view and File.Get_view methods respectively.

+

Actual input/output operations are achieved by many methods combining +read and write calls with different behavior regarding positioning, +coordination, and synchronism. Summing up, MPI for Python provides +the thirty (30) methods defined in MPI-2 for reading from or writing +to files using explicit offsets or file pointers (individual or +shared), in blocking or nonblocking and collective or noncollective +versions.

+
+
+

Environmental Management

+
+

Initialization and Exit

+

Module functions Init or Init_thread and Finalize provide MPI +initialization and finalization respectively. Module functions +Is_initialized and Is_finalized provide the respective tests for +initialization and finalization.

+
+

Note

+

MPI_Init() or MPI_Init_thread() is actually called +when you import the MPI module from the +mpi4py package, but only if MPI is not already +initialized. In such case, calling Init or Init_thread from +Python is expected to generate an MPI error, and in turn an +exception will be raised.

+
+
+

Note

+

MPI_Finalize() is registered (by using Python C/API +function Py_AtExit()) for being automatically called when +Python processes exit, but only if mpi4py actually +initialized MPI. Therefore, there is no need to call Finalize +from Python to ensure MPI finalization.

+
+
+
+

Implementation Information

+
    +
  • The MPI version number can be retrieved from module function +Get_version. It returns a two-integer tuple (version, +subversion).

  • +
  • The Get_processor_name function can be used to access the +processor name.

  • +
  • The values of predefined attributes attached to the world +communicator can be obtained by calling the Comm.Get_attr method +within the COMM_WORLD instance.

  • +
+
+
+

Timers

+

MPI timer functionalities are available through the Wtime and +Wtick functions.

+
+
+

Error Handling

+

In order to facilitate handle sharing with other Python modules +interfacing MPI-based parallel libraries, the predefined MPI error +handlers ERRORS_RETURN and ERRORS_ARE_FATAL can be assigned to and +retrieved from communicators using methods Comm.Set_errhandler and +Comm.Get_errhandler, and similarly for windows and files. New custom +error handlers can be created with Comm.Create_errhandler.

+

When the predefined error handler ERRORS_RETURN is set, errors +returned from MPI calls within Python code will raise an instance of +the exception class Exception, which is a subclass of the standard +Python exception RuntimeError.

+
+

Note

+

After import, mpi4py overrides the default MPI rules governing +inheritance of error handlers. The ERRORS_RETURN error handler is +set in the predefined COMM_SELF and COMM_WORLD communicators, +as well as any new Comm, Win, or File instance created +through mpi4py. If you ever pass such handles to C/C++/Fortran +library code, it is recommended to set the ERRORS_ARE_FATAL error +handler on them to ensure MPI errors do not pass silently.

+
+
+

Warning

+

Importing with from mpi4py.MPI import * will cause a name +clashing with the standard Python Exception base class.

+
+
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/py-modindex.html b/4.0.0/html/py-modindex.html new file mode 100644 index 0000000..dd8d87f --- /dev/null +++ b/4.0.0/html/py-modindex.html @@ -0,0 +1,155 @@ + + + + + + + Python Module Index — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + +

Python Module Index

+ +
+ m +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ m
+ mpi4py + The MPI for Python package.
    + mpi4py.bench + Run MPI benchmarks and tests.
    + mpi4py.futures + Execute computations concurrently using MPI processes.
    + mpi4py.MPI + Message Passing Interface.
    + mpi4py.run + Run Python code using ``-m mpi4py``.
    + mpi4py.typing + Typing support.
    + mpi4py.util + Miscellaneous utilities.
    + mpi4py.util.dtlib + Convert NumPy and MPI datatypes.
    + mpi4py.util.pkl5 + Pickle-based communication using protocol 5.
    + mpi4py.util.pool + :mod:`multiprocessing.pool` interface via :mod:`mpi4py.futures`.
    + mpi4py.util.sync + Synchronization utilities.
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference.html b/4.0.0/html/reference.html new file mode 100644 index 0000000..62b4ebe --- /dev/null +++ b/4.0.0/html/reference.html @@ -0,0 +1,119 @@ + + + + + + + + Reference — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Reference

+ + + + + + +

mpi4py.MPI

Message Passing Interface.

+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.AINT.html b/4.0.0/html/reference/mpi4py.MPI.AINT.html new file mode 100644 index 0000000..3e08a00 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.AINT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.AINT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.AINT

+
+
+mpi4py.MPI.AINT: Datatype = AINT
+

Object AINT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ANY_SOURCE.html b/4.0.0/html/reference/mpi4py.MPI.ANY_SOURCE.html new file mode 100644 index 0000000..164eae6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ANY_SOURCE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ANY_SOURCE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ANY_SOURCE

+
+
+mpi4py.MPI.ANY_SOURCE: int = ANY_SOURCE
+

Constant ANY_SOURCE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ANY_TAG.html b/4.0.0/html/reference/mpi4py.MPI.ANY_TAG.html new file mode 100644 index 0000000..0aa5ece --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ANY_TAG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ANY_TAG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ANY_TAG

+
+
+mpi4py.MPI.ANY_TAG: int = ANY_TAG
+

Constant ANY_TAG of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.APPNUM.html b/4.0.0/html/reference/mpi4py.MPI.APPNUM.html new file mode 100644 index 0000000..5c66c0c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.APPNUM.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.APPNUM — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.APPNUM

+
+
+mpi4py.MPI.APPNUM: int = APPNUM
+

Constant APPNUM of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Add_error_class.html b/4.0.0/html/reference/mpi4py.MPI.Add_error_class.html new file mode 100644 index 0000000..2c29736 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Add_error_class.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Add_error_class — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Add_error_class

+
+
+mpi4py.MPI.Add_error_class()
+

Add an error class to the known error classes.

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Add_error_code.html b/4.0.0/html/reference/mpi4py.MPI.Add_error_code.html new file mode 100644 index 0000000..994abe8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Add_error_code.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Add_error_code — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Add_error_code

+
+
+mpi4py.MPI.Add_error_code(errorclass)
+

Add an error code to an error class.

+
+
Parameters:
+

errorclass (int)

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Add_error_string.html b/4.0.0/html/reference/mpi4py.MPI.Add_error_string.html new file mode 100644 index 0000000..5bca7db --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Add_error_string.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.Add_error_string — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Add_error_string

+
+
+mpi4py.MPI.Add_error_string(errorcode, string)
+

Associate an error string with an error class or error code.

+
+
Parameters:
+
    +
  • errorcode (int)

  • +
  • string (str)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Aint_add.html b/4.0.0/html/reference/mpi4py.MPI.Aint_add.html new file mode 100644 index 0000000..51f0e72 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Aint_add.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.Aint_add — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Aint_add

+
+
+mpi4py.MPI.Aint_add(base, disp)
+

Return the sum of base address and displacement.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Aint_diff.html b/4.0.0/html/reference/mpi4py.MPI.Aint_diff.html new file mode 100644 index 0000000..7394d4c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Aint_diff.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.Aint_diff — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Aint_diff

+
+
+mpi4py.MPI.Aint_diff(addr1, addr2)
+

Return the difference between absolute addresses.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Alloc_mem.html b/4.0.0/html/reference/mpi4py.MPI.Alloc_mem.html new file mode 100644 index 0000000..a2d0dcf --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Alloc_mem.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.Alloc_mem — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Alloc_mem

+
+
+mpi4py.MPI.Alloc_mem(size, info=INFO_NULL)
+

Allocate memory for message passing and remote memory access.

+
+
Parameters:
+
+
+
Return type:
+

buffer

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Attach_buffer.html b/4.0.0/html/reference/mpi4py.MPI.Attach_buffer.html new file mode 100644 index 0000000..56c7387 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Attach_buffer.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Attach_buffer — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Attach_buffer

+
+
+mpi4py.MPI.Attach_buffer(buf)
+

Attach a user-provided buffer for sending in buffered mode.

+
+
Parameters:
+

buf (Buffer | None)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BAND.html b/4.0.0/html/reference/mpi4py.MPI.BAND.html new file mode 100644 index 0000000..82aaa2f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BAND.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.BAND — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BAND

+
+
+mpi4py.MPI.BAND: Op = BAND
+

Object BAND of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BOOL.html b/4.0.0/html/reference/mpi4py.MPI.BOOL.html new file mode 100644 index 0000000..95f7c09 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BOOL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.BOOL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BOOL

+
+
+mpi4py.MPI.BOOL: Datatype = BOOL
+

Object BOOL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BOR.html b/4.0.0/html/reference/mpi4py.MPI.BOR.html new file mode 100644 index 0000000..ac8ea91 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BOR.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.BOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BOR

+
+
+mpi4py.MPI.BOR: Op = BOR
+

Object BOR of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BOTTOM.html b/4.0.0/html/reference/mpi4py.MPI.BOTTOM.html new file mode 100644 index 0000000..60e3fac --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BOTTOM.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.BOTTOM — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BOTTOM

+
+
+mpi4py.MPI.BOTTOM: BottomType = BOTTOM
+

Constant BOTTOM of type BottomType

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BSEND_OVERHEAD.html b/4.0.0/html/reference/mpi4py.MPI.BSEND_OVERHEAD.html new file mode 100644 index 0000000..24d76c9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BSEND_OVERHEAD.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.BSEND_OVERHEAD — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BSEND_OVERHEAD

+
+
+mpi4py.MPI.BSEND_OVERHEAD: int = BSEND_OVERHEAD
+

Constant BSEND_OVERHEAD of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BUFFER_AUTOMATIC.html b/4.0.0/html/reference/mpi4py.MPI.BUFFER_AUTOMATIC.html new file mode 100644 index 0000000..c5407ee --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BUFFER_AUTOMATIC.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.BUFFER_AUTOMATIC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BUFFER_AUTOMATIC

+
+
+mpi4py.MPI.BUFFER_AUTOMATIC: BufferAutomaticType = BUFFER_AUTOMATIC
+

Constant BUFFER_AUTOMATIC of type BufferAutomaticType

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BXOR.html b/4.0.0/html/reference/mpi4py.MPI.BXOR.html new file mode 100644 index 0000000..a3cd3c9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BXOR.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.BXOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BXOR

+
+
+mpi4py.MPI.BXOR: Op = BXOR
+

Object BXOR of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BYTE.html b/4.0.0/html/reference/mpi4py.MPI.BYTE.html new file mode 100644 index 0000000..a3c0a36 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BYTE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.BYTE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BYTE

+
+
+mpi4py.MPI.BYTE: Datatype = BYTE
+

Object BYTE of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BottomType.html b/4.0.0/html/reference/mpi4py.MPI.BottomType.html new file mode 100644 index 0000000..30bfe05 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BottomType.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.BottomType — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BottomType

+
+
+class mpi4py.MPI.BottomType
+

Bases: int

+

Type of BOTTOM.

+
+
+static __new__(cls)
+
+
Return type:
+

Self

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.BufferAutomaticType.html b/4.0.0/html/reference/mpi4py.MPI.BufferAutomaticType.html new file mode 100644 index 0000000..5c24086 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.BufferAutomaticType.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.BufferAutomaticType — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.BufferAutomaticType

+
+
+class mpi4py.MPI.BufferAutomaticType
+

Bases: int

+

Type of BUFFER_AUTOMATIC.

+
+
+static __new__(cls)
+
+
Return type:
+

Self

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CART.html b/4.0.0/html/reference/mpi4py.MPI.CART.html new file mode 100644 index 0000000..cdbb914 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CART.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CART — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CART

+
+
+mpi4py.MPI.CART: int = CART
+

Constant CART of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CHAR.html b/4.0.0/html/reference/mpi4py.MPI.CHAR.html new file mode 100644 index 0000000..153d8a9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CHAR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CHAR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CHAR

+
+
+mpi4py.MPI.CHAR: Datatype = CHAR
+

Object CHAR of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CHARACTER.html b/4.0.0/html/reference/mpi4py.MPI.CHARACTER.html new file mode 100644 index 0000000..8dc3721 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CHARACTER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CHARACTER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CHARACTER

+
+
+mpi4py.MPI.CHARACTER: Datatype = CHARACTER
+

Object CHARACTER of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_CONTIGUOUS.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_CONTIGUOUS.html new file mode 100644 index 0000000..ec1acae --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_CONTIGUOUS.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_CONTIGUOUS — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_CONTIGUOUS

+
+
+mpi4py.MPI.COMBINER_CONTIGUOUS: int = COMBINER_CONTIGUOUS
+

Constant COMBINER_CONTIGUOUS of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_DARRAY.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_DARRAY.html new file mode 100644 index 0000000..58e4a15 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_DARRAY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_DARRAY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_DARRAY

+
+
+mpi4py.MPI.COMBINER_DARRAY: int = COMBINER_DARRAY
+

Constant COMBINER_DARRAY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_DUP.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_DUP.html new file mode 100644 index 0000000..5bb11b1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_DUP.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_DUP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_DUP

+
+
+mpi4py.MPI.COMBINER_DUP: int = COMBINER_DUP
+

Constant COMBINER_DUP of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_COMPLEX.html new file mode 100644 index 0000000..07ab92c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_F90_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_F90_COMPLEX

+
+
+mpi4py.MPI.COMBINER_F90_COMPLEX: int = COMBINER_F90_COMPLEX
+

Constant COMBINER_F90_COMPLEX of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_INTEGER.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_INTEGER.html new file mode 100644 index 0000000..19301c7 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_INTEGER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_F90_INTEGER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_F90_INTEGER

+
+
+mpi4py.MPI.COMBINER_F90_INTEGER: int = COMBINER_F90_INTEGER
+

Constant COMBINER_F90_INTEGER of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_REAL.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_REAL.html new file mode 100644 index 0000000..3bf5627 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_F90_REAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_F90_REAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_F90_REAL

+
+
+mpi4py.MPI.COMBINER_F90_REAL: int = COMBINER_F90_REAL
+

Constant COMBINER_F90_REAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_HINDEXED.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_HINDEXED.html new file mode 100644 index 0000000..fdd5f3b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_HINDEXED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_HINDEXED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_HINDEXED

+
+
+mpi4py.MPI.COMBINER_HINDEXED: int = COMBINER_HINDEXED
+

Constant COMBINER_HINDEXED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_HINDEXED_BLOCK.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_HINDEXED_BLOCK.html new file mode 100644 index 0000000..e7818e8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_HINDEXED_BLOCK.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_HINDEXED_BLOCK — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_HINDEXED_BLOCK

+
+
+mpi4py.MPI.COMBINER_HINDEXED_BLOCK: int = COMBINER_HINDEXED_BLOCK
+

Constant COMBINER_HINDEXED_BLOCK of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_HVECTOR.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_HVECTOR.html new file mode 100644 index 0000000..c18f270 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_HVECTOR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_HVECTOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_HVECTOR

+
+
+mpi4py.MPI.COMBINER_HVECTOR: int = COMBINER_HVECTOR
+

Constant COMBINER_HVECTOR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_INDEXED.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_INDEXED.html new file mode 100644 index 0000000..a834d05 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_INDEXED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_INDEXED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_INDEXED

+
+
+mpi4py.MPI.COMBINER_INDEXED: int = COMBINER_INDEXED
+

Constant COMBINER_INDEXED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_INDEXED_BLOCK.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_INDEXED_BLOCK.html new file mode 100644 index 0000000..c2ac47d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_INDEXED_BLOCK.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_INDEXED_BLOCK — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_INDEXED_BLOCK

+
+
+mpi4py.MPI.COMBINER_INDEXED_BLOCK: int = COMBINER_INDEXED_BLOCK
+

Constant COMBINER_INDEXED_BLOCK of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_NAMED.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_NAMED.html new file mode 100644 index 0000000..2345b42 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_NAMED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_NAMED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_NAMED

+
+
+mpi4py.MPI.COMBINER_NAMED: int = COMBINER_NAMED
+

Constant COMBINER_NAMED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_RESIZED.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_RESIZED.html new file mode 100644 index 0000000..ff9be7d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_RESIZED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_RESIZED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_RESIZED

+
+
+mpi4py.MPI.COMBINER_RESIZED: int = COMBINER_RESIZED
+

Constant COMBINER_RESIZED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_STRUCT.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_STRUCT.html new file mode 100644 index 0000000..81ff3aa --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_STRUCT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_STRUCT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_STRUCT

+
+
+mpi4py.MPI.COMBINER_STRUCT: int = COMBINER_STRUCT
+

Constant COMBINER_STRUCT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_SUBARRAY.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_SUBARRAY.html new file mode 100644 index 0000000..01faaaf --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_SUBARRAY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_SUBARRAY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_SUBARRAY

+
+
+mpi4py.MPI.COMBINER_SUBARRAY: int = COMBINER_SUBARRAY
+

Constant COMBINER_SUBARRAY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_VALUE_INDEX.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_VALUE_INDEX.html new file mode 100644 index 0000000..c440ece --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_VALUE_INDEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_VALUE_INDEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_VALUE_INDEX

+
+
+mpi4py.MPI.COMBINER_VALUE_INDEX: int = COMBINER_VALUE_INDEX
+

Constant COMBINER_VALUE_INDEX of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMBINER_VECTOR.html b/4.0.0/html/reference/mpi4py.MPI.COMBINER_VECTOR.html new file mode 100644 index 0000000..96747c0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMBINER_VECTOR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMBINER_VECTOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMBINER_VECTOR

+
+
+mpi4py.MPI.COMBINER_VECTOR: int = COMBINER_VECTOR
+

Constant COMBINER_VECTOR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_NULL.html b/4.0.0/html/reference/mpi4py.MPI.COMM_NULL.html new file mode 100644 index 0000000..5b08ffd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_NULL

+
+
+mpi4py.MPI.COMM_NULL: Comm = COMM_NULL
+

Object COMM_NULL of type Comm

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_SELF.html b/4.0.0/html/reference/mpi4py.MPI.COMM_SELF.html new file mode 100644 index 0000000..3cd4d3a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_SELF.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_SELF — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_SELF

+
+
+mpi4py.MPI.COMM_SELF: Intracomm = COMM_SELF
+

Object COMM_SELF of type Intracomm

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_HW_GUIDED.html b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_HW_GUIDED.html new file mode 100644 index 0000000..f37d1d5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_HW_GUIDED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_TYPE_HW_GUIDED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_TYPE_HW_GUIDED

+
+
+mpi4py.MPI.COMM_TYPE_HW_GUIDED: int = COMM_TYPE_HW_GUIDED
+

Constant COMM_TYPE_HW_GUIDED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_HW_UNGUIDED.html b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_HW_UNGUIDED.html new file mode 100644 index 0000000..91f764f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_HW_UNGUIDED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_TYPE_HW_UNGUIDED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_TYPE_HW_UNGUIDED

+
+
+mpi4py.MPI.COMM_TYPE_HW_UNGUIDED: int = COMM_TYPE_HW_UNGUIDED
+

Constant COMM_TYPE_HW_UNGUIDED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED.html b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED.html new file mode 100644 index 0000000..2d7c8ef --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED

+
+
+mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED: int = COMM_TYPE_RESOURCE_GUIDED
+

Constant COMM_TYPE_RESOURCE_GUIDED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_SHARED.html b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_SHARED.html new file mode 100644 index 0000000..8b6b64a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_TYPE_SHARED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_TYPE_SHARED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_TYPE_SHARED

+
+
+mpi4py.MPI.COMM_TYPE_SHARED: int = COMM_TYPE_SHARED
+

Constant COMM_TYPE_SHARED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMM_WORLD.html b/4.0.0/html/reference/mpi4py.MPI.COMM_WORLD.html new file mode 100644 index 0000000..e971549 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMM_WORLD.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMM_WORLD — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMM_WORLD

+
+
+mpi4py.MPI.COMM_WORLD: Intracomm = COMM_WORLD
+

Object COMM_WORLD of type Intracomm

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.COMPLEX.html new file mode 100644 index 0000000..31270d0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMPLEX

+
+
+mpi4py.MPI.COMPLEX: Datatype = COMPLEX
+

Object COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMPLEX16.html b/4.0.0/html/reference/mpi4py.MPI.COMPLEX16.html new file mode 100644 index 0000000..72b46a9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMPLEX16.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMPLEX16 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMPLEX16

+
+
+mpi4py.MPI.COMPLEX16: Datatype = COMPLEX16
+

Object COMPLEX16 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMPLEX32.html b/4.0.0/html/reference/mpi4py.MPI.COMPLEX32.html new file mode 100644 index 0000000..fe39b09 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMPLEX32.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMPLEX32 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMPLEX32

+
+
+mpi4py.MPI.COMPLEX32: Datatype = COMPLEX32
+

Object COMPLEX32 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMPLEX4.html b/4.0.0/html/reference/mpi4py.MPI.COMPLEX4.html new file mode 100644 index 0000000..762c4a2 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMPLEX4.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMPLEX4 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMPLEX4

+
+
+mpi4py.MPI.COMPLEX4: Datatype = COMPLEX4
+

Object COMPLEX4 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COMPLEX8.html b/4.0.0/html/reference/mpi4py.MPI.COMPLEX8.html new file mode 100644 index 0000000..64e47e5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COMPLEX8.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COMPLEX8 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COMPLEX8

+
+
+mpi4py.MPI.COMPLEX8: Datatype = COMPLEX8
+

Object COMPLEX8 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CONGRUENT.html b/4.0.0/html/reference/mpi4py.MPI.CONGRUENT.html new file mode 100644 index 0000000..e515b59 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CONGRUENT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CONGRUENT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CONGRUENT

+
+
+mpi4py.MPI.CONGRUENT: int = CONGRUENT
+

Constant CONGRUENT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.COUNT.html b/4.0.0/html/reference/mpi4py.MPI.COUNT.html new file mode 100644 index 0000000..6e7b4fb --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.COUNT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.COUNT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.COUNT

+
+
+mpi4py.MPI.COUNT: Datatype = COUNT
+

Object COUNT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CXX_BOOL.html b/4.0.0/html/reference/mpi4py.MPI.CXX_BOOL.html new file mode 100644 index 0000000..6cdfab6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CXX_BOOL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CXX_BOOL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CXX_BOOL

+
+
+mpi4py.MPI.CXX_BOOL: Datatype = CXX_BOOL
+

Object CXX_BOOL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CXX_DOUBLE_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.CXX_DOUBLE_COMPLEX.html new file mode 100644 index 0000000..390796a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CXX_DOUBLE_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CXX_DOUBLE_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CXX_DOUBLE_COMPLEX

+
+
+mpi4py.MPI.CXX_DOUBLE_COMPLEX: Datatype = CXX_DOUBLE_COMPLEX
+

Object CXX_DOUBLE_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CXX_FLOAT_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.CXX_FLOAT_COMPLEX.html new file mode 100644 index 0000000..b95f881 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CXX_FLOAT_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CXX_FLOAT_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CXX_FLOAT_COMPLEX

+
+
+mpi4py.MPI.CXX_FLOAT_COMPLEX: Datatype = CXX_FLOAT_COMPLEX
+

Object CXX_FLOAT_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX.html new file mode 100644 index 0000000..3dd6e6c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX

+
+
+mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX: Datatype = CXX_LONG_DOUBLE_COMPLEX
+

Object CXX_LONG_DOUBLE_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.C_BOOL.html b/4.0.0/html/reference/mpi4py.MPI.C_BOOL.html new file mode 100644 index 0000000..2749c8f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.C_BOOL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.C_BOOL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.C_BOOL

+
+
+mpi4py.MPI.C_BOOL: Datatype = C_BOOL
+

Object C_BOOL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.C_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.C_COMPLEX.html new file mode 100644 index 0000000..6668615 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.C_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.C_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.C_COMPLEX

+
+
+mpi4py.MPI.C_COMPLEX: Datatype = C_COMPLEX
+

Object C_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.C_DOUBLE_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.C_DOUBLE_COMPLEX.html new file mode 100644 index 0000000..b24c8df --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.C_DOUBLE_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.C_DOUBLE_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.C_DOUBLE_COMPLEX

+
+
+mpi4py.MPI.C_DOUBLE_COMPLEX: Datatype = C_DOUBLE_COMPLEX
+

Object C_DOUBLE_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.C_FLOAT_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.C_FLOAT_COMPLEX.html new file mode 100644 index 0000000..60ec953 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.C_FLOAT_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.C_FLOAT_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.C_FLOAT_COMPLEX

+
+
+mpi4py.MPI.C_FLOAT_COMPLEX: Datatype = C_FLOAT_COMPLEX
+

Object C_FLOAT_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.C_LONG_DOUBLE_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.C_LONG_DOUBLE_COMPLEX.html new file mode 100644 index 0000000..fa80f41 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.C_LONG_DOUBLE_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.C_LONG_DOUBLE_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.C_LONG_DOUBLE_COMPLEX

+
+
+mpi4py.MPI.C_LONG_DOUBLE_COMPLEX: Datatype = C_LONG_DOUBLE_COMPLEX
+

Object C_LONG_DOUBLE_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Cartcomm.html b/4.0.0/html/reference/mpi4py.MPI.Cartcomm.html new file mode 100644 index 0000000..e33cc5b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Cartcomm.html @@ -0,0 +1,301 @@ + + + + + + + + mpi4py.MPI.Cartcomm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Cartcomm

+
+
+class mpi4py.MPI.Cartcomm
+

Bases: Topocomm

+

Cartesian topology intracommunicator.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Cartcomm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + +

Get_cart_rank(coords)

Translate logical coordinates to ranks.

Get_coords(rank)

Translate ranks to logical coordinates.

Get_dim()

Return number of dimensions.

Get_topo()

Return information on the cartesian topology.

Shift(direction, disp)

Return a process ranks for data shifting with Sendrecv.

Sub(remain_dims)

Return a lower-dimensional Cartesian topology.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + +

coords

Coordinates.

dim

Number of dimensions.

dims

Dimensions.

ndim

Number of dimensions.

periods

Periodicity.

topo

Topology information.

+

Methods Documentation

+
+
+Get_cart_rank(coords)
+

Translate logical coordinates to ranks.

+
+
Parameters:
+

coords (Sequence[int])

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_coords(rank)
+

Translate ranks to logical coordinates.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

list[int]

+
+
+
+ +
+
+Get_dim()
+

Return number of dimensions.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_topo()
+

Return information on the cartesian topology.

+
+
Return type:
+

tuple[list[int], list[int], list[int]]

+
+
+
+ +
+
+Shift(direction, disp)
+

Return a process ranks for data shifting with Sendrecv.

+
+
Parameters:
+
    +
  • direction (int)

  • +
  • disp (int)

  • +
+
+
Return type:
+

tuple[int, int]

+
+
+
+ +
+
+Sub(remain_dims)
+

Return a lower-dimensional Cartesian topology.

+
+
Parameters:
+

remain_dims (Sequence[bool])

+
+
Return type:
+

Cartcomm

+
+
+
+ +

Attributes Documentation

+
+
+coords
+

Coordinates.

+
+ +
+
+dim
+

Number of dimensions.

+
+ +
+
+dims
+

Dimensions.

+
+ +
+
+ndim
+

Number of dimensions.

+
+ +
+
+periods
+

Periodicity.

+
+ +
+
+topo
+

Topology information.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Close_port.html b/4.0.0/html/reference/mpi4py.MPI.Close_port.html new file mode 100644 index 0000000..7f08e46 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Close_port.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Close_port — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Close_port

+
+
+mpi4py.MPI.Close_port(port_name)
+

Close a port.

+
+
Parameters:
+

port_name (str)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Comm.html b/4.0.0/html/reference/mpi4py.MPI.Comm.html new file mode 100644 index 0000000..88571b6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Comm.html @@ -0,0 +1,2983 @@ + + + + + + + + mpi4py.MPI.Comm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Comm

+
+
+class mpi4py.MPI.Comm
+

Bases: object

+

Communication context.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Comm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Abort([errorcode])

Terminate the MPI execution environment.

Ack_failed([num_to_ack])

Acknowledge failures on a communicator.

Agree(flag)

Blocking agreement.

Allgather(sendbuf, recvbuf)

Gather to All.

Allgather_init(sendbuf, recvbuf[, info])

Persistent Gather to All.

Allgatherv(sendbuf, recvbuf)

Gather to All Vector.

Allgatherv_init(sendbuf, recvbuf[, info])

Persistent Gather to All Vector.

Allreduce(sendbuf, recvbuf[, op])

Reduce to All.

Allreduce_init(sendbuf, recvbuf[, op, info])

Persistent Reduce to All.

Alltoall(sendbuf, recvbuf)

All to All Scatter/Gather.

Alltoall_init(sendbuf, recvbuf[, info])

Persistent All to All Scatter/Gather.

Alltoallv(sendbuf, recvbuf)

All to All Scatter/Gather Vector.

Alltoallv_init(sendbuf, recvbuf[, info])

Persistent All to All Scatter/Gather Vector.

Alltoallw(sendbuf, recvbuf)

All to All Scatter/Gather General.

Alltoallw_init(sendbuf, recvbuf[, info])

Persistent All to All Scatter/Gather General.

Attach_buffer(buf)

Attach a user-provided buffer for sending in buffered mode.

Barrier()

Barrier synchronization.

Barrier_init([info])

Persistent Barrier.

Bcast(buf[, root])

Broadcast data from one process to all other processes.

Bcast_init(buf[, root, info])

Persistent Broadcast.

Bsend(buf, dest[, tag])

Blocking send in buffered mode.

Bsend_init(buf, dest[, tag])

Persistent request for a send in buffered mode.

Call_errhandler(errorcode)

Call the error handler installed on a communicator.

Clone()

Clone an existing communicator.

Compare(comm)

Compare two communicators.

Create(group)

Create communicator from group.

Create_errhandler(errhandler_fn)

Create a new error handler for communicators.

Create_keyval([copy_fn, delete_fn, nopython])

Create a new attribute key for communicators.

Delete_attr(keyval)

Delete attribute value associated with a key.

Detach_buffer()

Remove an existing attached buffer.

Disconnect()

Disconnect from a communicator.

Dup([info])

Duplicate a communicator.

Dup_with_info(info)

Duplicate a communicator with hints.

Flush_buffer()

Block until all buffered messages have been transmitted.

Free()

Free a communicator.

Free_keyval(keyval)

Free an attribute key for communicators.

Gather(sendbuf, recvbuf[, root])

Gather data to one process from all other processes.

Gather_init(sendbuf, recvbuf[, root, info])

Persistent Gather.

Gatherv(sendbuf, recvbuf[, root])

Gather Vector.

Gatherv_init(sendbuf, recvbuf[, root, info])

Persistent Gather Vector.

Get_attr(keyval)

Retrieve attribute value by key.

Get_errhandler()

Get the error handler for a communicator.

Get_failed()

Extract the group of failed processes.

Get_group()

Access the group associated with a communicator.

Get_info()

Return the current hints for a communicator.

Get_name()

Get the print name for this communicator.

Get_parent()

Return the parent intercommunicator for this process.

Get_rank()

Return the rank of this process in a communicator.

Get_size()

Return the number of processes in a communicator.

Get_topology()

Return the type of topology (if any) associated with a communicator.

Iagree(flag)

Nonblocking agreement.

Iallgather(sendbuf, recvbuf)

Nonblocking Gather to All.

Iallgatherv(sendbuf, recvbuf)

Nonblocking Gather to All Vector.

Iallreduce(sendbuf, recvbuf[, op])

Nonblocking Reduce to All.

Ialltoall(sendbuf, recvbuf)

Nonblocking All to All Scatter/Gather.

Ialltoallv(sendbuf, recvbuf)

Nonblocking All to All Scatter/Gather Vector.

Ialltoallw(sendbuf, recvbuf)

Nonblocking All to All Scatter/Gather General.

Ibarrier()

Nonblocking Barrier.

Ibcast(buf[, root])

Nonblocking Broadcast.

Ibsend(buf, dest[, tag])

Nonblocking send in buffered mode.

Idup([info])

Nonblocking duplicate a communicator.

Idup_with_info(info)

Nonblocking duplicate a communicator with hints.

Iflush_buffer()

Nonblocking flush for buffered messages.

Igather(sendbuf, recvbuf[, root])

Nonblocking Gather.

Igatherv(sendbuf, recvbuf[, root])

Nonblocking Gather Vector.

Improbe([source, tag, status])

Nonblocking test for a matched message.

Iprobe([source, tag, status])

Nonblocking test for a message.

Irecv(buf[, source, tag])

Nonblocking receive.

Ireduce(sendbuf, recvbuf[, op, root])

Nonblocking Reduce to Root.

Ireduce_scatter(sendbuf, recvbuf[, ...])

Nonblocking Reduce-Scatter (vector version).

Ireduce_scatter_block(sendbuf, recvbuf[, op])

Nonblocking Reduce-Scatter Block (regular, non-vector version).

Irsend(buf, dest[, tag])

Nonblocking send in ready mode.

Is_inter()

Return whether the communicator is an intercommunicator.

Is_intra()

Return whether the communicator is an intracommunicator.

Is_revoked()

Indicate whether the communicator has been revoked.

Iscatter(sendbuf, recvbuf[, root])

Nonblocking Scatter.

Iscatterv(sendbuf, recvbuf[, root])

Nonblocking Scatter Vector.

Isend(buf, dest[, tag])

Nonblocking send.

Isendrecv(sendbuf, dest[, sendtag, recvbuf, ...])

Nonblocking send and receive.

Isendrecv_replace(buf, dest[, sendtag, ...])

Send and receive a message.

Ishrink()

Nonblocking shrink a communicator to remove all failed processes.

Issend(buf, dest[, tag])

Nonblocking send in synchronous mode.

Join(fd)

Interconnect two processes connected by a socket.

Mprobe([source, tag, status])

Blocking test for a matched message.

Precv_init(buf, partitions[, source, tag, info])

Create request for a partitioned recv operation.

Probe([source, tag, status])

Blocking test for a message.

Psend_init(buf, partitions, dest[, tag, info])

Create request for a partitioned send operation.

Recv(buf[, source, tag, status])

Blocking receive.

Recv_init(buf[, source, tag])

Create a persistent request for a receive.

Reduce(sendbuf, recvbuf[, op, root])

Reduce to Root.

Reduce_init(sendbuf, recvbuf[, op, root, info])

Persistent Reduce to Root.

Reduce_scatter(sendbuf, recvbuf[, ...])

Reduce-Scatter (vector version).

Reduce_scatter_block(sendbuf, recvbuf[, op])

Reduce-Scatter Block (regular, non-vector version).

Reduce_scatter_block_init(sendbuf, recvbuf)

Persistent Reduce-Scatter Block (regular, non-vector version).

Reduce_scatter_init(sendbuf, recvbuf[, ...])

Persistent Reduce-Scatter (vector version).

Revoke()

Revoke a communicator.

Rsend(buf, dest[, tag])

Blocking send in ready mode.

Rsend_init(buf, dest[, tag])

Persistent request for a send in ready mode.

Scatter(sendbuf, recvbuf[, root])

Scatter data from one process to all other processes.

Scatter_init(sendbuf, recvbuf[, root, info])

Persistent Scatter.

Scatterv(sendbuf, recvbuf[, root])

Scatter Vector.

Scatterv_init(sendbuf, recvbuf[, root, info])

Persistent Scatter Vector.

Send(buf, dest[, tag])

Blocking send.

Send_init(buf, dest[, tag])

Create a persistent request for a standard send.

Sendrecv(sendbuf, dest[, sendtag, recvbuf, ...])

Send and receive a message.

Sendrecv_replace(buf, dest[, sendtag, ...])

Send and receive a message.

Set_attr(keyval, attrval)

Store attribute value associated with a key.

Set_errhandler(errhandler)

Set the error handler for a communicator.

Set_info(info)

Set new values for the hints associated with a communicator.

Set_name(name)

Set the print name for this communicator.

Shrink()

Shrink a communicator to remove all failed processes.

Split([color, key])

Split communicator by color and key.

Split_type(split_type[, key, info])

Split communicator by split type.

Ssend(buf, dest[, tag])

Blocking send in synchronous mode.

Ssend_init(buf, dest[, tag])

Persistent request for a send in synchronous mode.

allgather(sendobj)

Gather to All.

allreduce(sendobj[, op])

Reduce to All.

alltoall(sendobj)

All to All Scatter/Gather.

barrier()

Barrier synchronization.

bcast(obj[, root])

Broadcast.

bsend(obj, dest[, tag])

Send in buffered mode.

f2py(arg)

free()

Call Free if not null or predefined.

fromhandle(handle)

Create object from MPI handle.

gather(sendobj[, root])

Gather.

ibsend(obj, dest[, tag])

Nonblocking send in buffered mode.

improbe([source, tag, status])

Nonblocking test for a matched message.

iprobe([source, tag, status])

Nonblocking test for a message.

irecv([buf, source, tag])

Nonblocking receive.

isend(obj, dest[, tag])

Nonblocking send.

issend(obj, dest[, tag])

Nonblocking send in synchronous mode.

mprobe([source, tag, status])

Blocking test for a matched message.

probe([source, tag, status])

Blocking test for a message.

py2f()

recv([buf, source, tag, status])

Receive.

reduce(sendobj[, op, root])

Reduce to Root.

scatter(sendobj[, root])

Scatter.

send(obj, dest[, tag])

Send in standard mode.

sendrecv(sendobj, dest[, sendtag, recvbuf, ...])

Send and Receive.

ssend(obj, dest[, tag])

Send in synchronous mode.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

group

Group.

handle

MPI handle.

info

Info hints.

is_inter

Is intercommunicator.

is_intra

Is intracommunicator.

is_topo

Is a topology.

name

Print name.

rank

Rank of this process.

size

Number of processes.

topology

Topology type.

+

Methods Documentation

+
+
+Abort(errorcode=0)
+

Terminate the MPI execution environment.

+
+

Warning

+

The invocation of this method prevents the execution of +various Python exit and cleanup mechanisms. Use this method as a +last resort to prevent parallel deadlocks in case of unrecoverable +errors.

+
+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

NoReturn

+
+
+
+ +
+
+Ack_failed(num_to_ack=None)
+

Acknowledge failures on a communicator.

+
+
Parameters:
+

num_to_ack (int | None)

+
+
Return type:
+

int

+
+
+
+ +
+
+Agree(flag)
+

Blocking agreement.

+
+
Parameters:
+

flag (int)

+
+
Return type:
+

int

+
+
+
+ +
+
+Allgather(sendbuf, recvbuf)
+

Gather to All.

+

Gather data from all processes and broadcast the combined data to all +other processes.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Allgather_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Gather to All.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Allgatherv(sendbuf, recvbuf)
+

Gather to All Vector.

+

Gather data from all processes and send it to all other processes +providing different amounts of data and displacements.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Allgatherv_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Gather to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Allreduce(sendbuf, recvbuf, op=SUM)
+

Reduce to All.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Allreduce_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL)
+

Persistent Reduce to All.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Alltoall(sendbuf, recvbuf)
+

All to All Scatter/Gather.

+

Send data to all processes and recv data from all processes.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Alltoall_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent All to All Scatter/Gather.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Alltoallv(sendbuf, recvbuf)
+

All to All Scatter/Gather Vector.

+

Send data to all processes and recv data from all processes +providing different amounts of data and displacements.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Alltoallv_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent All to All Scatter/Gather Vector.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Alltoallw(sendbuf, recvbuf)
+

All to All Scatter/Gather General.

+

Send/recv data to/from all processes allowing the specification of +different counts, displacements, and datatypes for each dest/source.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Alltoallw_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent All to All Scatter/Gather General.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Attach_buffer(buf)
+

Attach a user-provided buffer for sending in buffered mode.

+
+
Parameters:
+

buf (Buffer | None)

+
+
Return type:
+

None

+
+
+
+ +
+
+Barrier()
+

Barrier synchronization.

+
+
Return type:
+

None

+
+
+
+ +
+
+Barrier_init(info=INFO_NULL)
+

Persistent Barrier.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Bcast(buf, root=0)
+

Broadcast data from one process to all other processes.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Bcast_init(buf, root=0, info=INFO_NULL)
+

Persistent Broadcast.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Bsend(buf, dest, tag=0)
+

Blocking send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Bsend_init(buf, dest, tag=0)
+

Persistent request for a send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Call_errhandler(errorcode)
+

Call the error handler installed on a communicator.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Clone()
+

Clone an existing communicator.

+
+
Return type:
+

Self

+
+
+
+ +
+
+Compare(comm)
+

Compare two communicators.

+
+
Parameters:
+

comm (Comm)

+
+
Return type:
+

int

+
+
+
+ +
+
+Create(group)
+

Create communicator from group.

+
+
Parameters:
+

group (Group)

+
+
Return type:
+

Comm

+
+
+
+ +
+
+classmethod Create_errhandler(errhandler_fn)
+

Create a new error handler for communicators.

+
+
Parameters:
+

errhandler_fn (Callable[[Comm, int], None])

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+classmethod Create_keyval(copy_fn=None, delete_fn=None, nopython=False)
+

Create a new attribute key for communicators.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Delete_attr(keyval)
+

Delete attribute value associated with a key.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Detach_buffer()
+

Remove an existing attached buffer.

+
+
Return type:
+

Buffer | None

+
+
+
+ +
+
+Disconnect()
+

Disconnect from a communicator.

+
+
Return type:
+

None

+
+
+
+ +
+
+Dup(info=None)
+

Duplicate a communicator.

+
+
Parameters:
+

info (Info | None)

+
+
Return type:
+

Self

+
+
+
+ +
+
+Dup_with_info(info)
+

Duplicate a communicator with hints.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

Self

+
+
+
+ +
+
+Flush_buffer()
+

Block until all buffered messages have been transmitted.

+
+
Return type:
+

None

+
+
+
+ +
+
+Free()
+

Free a communicator.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Free_keyval(keyval)
+

Free an attribute key for communicators.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

int

+
+
+
+ +
+
+Gather(sendbuf, recvbuf, root=0)
+

Gather data to one process from all other processes.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Gather_init(sendbuf, recvbuf, root=0, info=INFO_NULL)
+

Persistent Gather.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Gatherv(sendbuf, recvbuf, root=0)
+

Gather Vector.

+

Gather data to one process from all other processes +providing different amounts of data and displacements.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Gatherv_init(sendbuf, recvbuf, root=0, info=INFO_NULL)
+

Persistent Gather Vector.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Get_attr(keyval)
+

Retrieve attribute value by key.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

int | Any | None

+
+
+
+ +
+
+Get_errhandler()
+

Get the error handler for a communicator.

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+Get_failed()
+

Extract the group of failed processes.

+
+
Return type:
+

Group

+
+
+
+ +
+
+Get_group()
+

Access the group associated with a communicator.

+
+
Return type:
+

Group

+
+
+
+ +
+
+Get_info()
+

Return the current hints for a communicator.

+
+
Return type:
+

Info

+
+
+
+ +
+
+Get_name()
+

Get the print name for this communicator.

+
+
Return type:
+

str

+
+
+
+ +
+
+classmethod Get_parent()
+

Return the parent intercommunicator for this process.

+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+Get_rank()
+

Return the rank of this process in a communicator.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_size()
+

Return the number of processes in a communicator.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_topology()
+

Return the type of topology (if any) associated with a communicator.

+
+
Return type:
+

int

+
+
+
+ +
+
+Iagree(flag)
+

Nonblocking agreement.

+
+
Parameters:
+

flag (Buffer)

+
+
Return type:
+

Request

+
+
+
+ +
+
+Iallgather(sendbuf, recvbuf)
+

Nonblocking Gather to All.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iallgatherv(sendbuf, recvbuf)
+

Nonblocking Gather to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iallreduce(sendbuf, recvbuf, op=SUM)
+

Nonblocking Reduce to All.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ialltoall(sendbuf, recvbuf)
+

Nonblocking All to All Scatter/Gather.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ialltoallv(sendbuf, recvbuf)
+

Nonblocking All to All Scatter/Gather Vector.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ialltoallw(sendbuf, recvbuf)
+

Nonblocking All to All Scatter/Gather General.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ibarrier()
+

Nonblocking Barrier.

+
+
Return type:
+

Request

+
+
+
+ +
+
+Ibcast(buf, root=0)
+

Nonblocking Broadcast.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ibsend(buf, dest, tag=0)
+

Nonblocking send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Idup(info=None)
+

Nonblocking duplicate a communicator.

+
+
Parameters:
+

info (Info | None)

+
+
Return type:
+

tuple[Self, Request]

+
+
+
+ +
+
+Idup_with_info(info)
+

Nonblocking duplicate a communicator with hints.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

tuple[Self, Request]

+
+
+
+ +
+
+Iflush_buffer()
+

Nonblocking flush for buffered messages.

+
+
Return type:
+

Request

+
+
+
+ +
+
+Igather(sendbuf, recvbuf, root=0)
+

Nonblocking Gather.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Igatherv(sendbuf, recvbuf, root=0)
+

Nonblocking Gather Vector.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Improbe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Message | None

+
+
+
+ +
+
+Iprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a message.

+
+
Parameters:
+
+
+
Return type:
+

bool

+
+
+
+ +
+
+Irecv(buf, source=ANY_SOURCE, tag=ANY_TAG)
+

Nonblocking receive.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ireduce(sendbuf, recvbuf, op=SUM, root=0)
+

Nonblocking Reduce to Root.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ireduce_scatter(sendbuf, recvbuf, recvcounts=None, op=SUM)
+

Nonblocking Reduce-Scatter (vector version).

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ireduce_scatter_block(sendbuf, recvbuf, op=SUM)
+

Nonblocking Reduce-Scatter Block (regular, non-vector version).

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Irsend(buf, dest, tag=0)
+

Nonblocking send in ready mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Is_inter()
+

Return whether the communicator is an intercommunicator.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Is_intra()
+

Return whether the communicator is an intracommunicator.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Is_revoked()
+

Indicate whether the communicator has been revoked.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Iscatter(sendbuf, recvbuf, root=0)
+

Nonblocking Scatter.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iscatterv(sendbuf, recvbuf, root=0)
+

Nonblocking Scatter Vector.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Isend(buf, dest, tag=0)
+

Nonblocking send.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Isendrecv(sendbuf, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG)
+

Nonblocking send and receive.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Isendrecv_replace(buf, dest, sendtag=0, source=ANY_SOURCE, recvtag=ANY_TAG)
+

Send and receive a message.

+
+

Note

+

This function is guaranteed not to deadlock in situations +where pairs of blocking sends and receives may deadlock.

+
+
+

Caution

+

A common mistake when using this function is to mismatch +the tags with the source and destination ranks, which can result in +deadlock.

+
+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ishrink()
+

Nonblocking shrink a communicator to remove all failed processes.

+
+
Return type:
+

tuple[Comm, Request]

+
+
+
+ +
+
+Issend(buf, dest, tag=0)
+

Nonblocking send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+classmethod Join(fd)
+

Interconnect two processes connected by a socket.

+
+
Parameters:
+

fd (int)

+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+Mprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Message

+
+
+
+ +
+
+Precv_init(buf, partitions, source=ANY_SOURCE, tag=ANY_TAG, info=INFO_NULL)
+

Create request for a partitioned recv operation.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Probe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a message.

+
+

Note

+

This function blocks until the message arrives.

+
+
+
Parameters:
+
+
+
Return type:
+

Literal[True]

+
+
+
+ +
+
+Psend_init(buf, partitions, dest, tag=0, info=INFO_NULL)
+

Create request for a partitioned send operation.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Recv(buf, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking receive.

+
+

Note

+

This function blocks until the message is received.

+
+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Recv_init(buf, source=ANY_SOURCE, tag=ANY_TAG)
+

Create a persistent request for a receive.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Reduce(sendbuf, recvbuf, op=SUM, root=0)
+

Reduce to Root.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Reduce_init(sendbuf, recvbuf, op=SUM, root=0, info=INFO_NULL)
+

Persistent Reduce to Root.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Reduce_scatter(sendbuf, recvbuf, recvcounts=None, op=SUM)
+

Reduce-Scatter (vector version).

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Reduce_scatter_block(sendbuf, recvbuf, op=SUM)
+

Reduce-Scatter Block (regular, non-vector version).

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Reduce_scatter_block_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL)
+

Persistent Reduce-Scatter Block (regular, non-vector version).

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Reduce_scatter_init(sendbuf, recvbuf, recvcounts=None, op=SUM, info=INFO_NULL)
+

Persistent Reduce-Scatter (vector version).

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Revoke()
+

Revoke a communicator.

+
+
Return type:
+

None

+
+
+
+ +
+
+Rsend(buf, dest, tag=0)
+

Blocking send in ready mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Rsend_init(buf, dest, tag=0)
+

Persistent request for a send in ready mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Scatter(sendbuf, recvbuf, root=0)
+

Scatter data from one process to all other processes.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Scatter_init(sendbuf, recvbuf, root=0, info=INFO_NULL)
+

Persistent Scatter.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Scatterv(sendbuf, recvbuf, root=0)
+

Scatter Vector.

+

Scatter data from one process to all other processes +providing different amounts of data and displacements.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Scatterv_init(sendbuf, recvbuf, root=0, info=INFO_NULL)
+

Persistent Scatter Vector.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Send(buf, dest, tag=0)
+

Blocking send.

+
+

Note

+

This function may block until the message is received. +Whether Send blocks or not depends on several factors and is +implementation dependent.

+
+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Send_init(buf, dest, tag=0)
+

Create a persistent request for a standard send.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Sendrecv(sendbuf, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG, status=None)
+

Send and receive a message.

+
+

Note

+

This function is guaranteed not to deadlock in situations +where pairs of blocking sends and receives may deadlock.

+
+
+

Caution

+

A common mistake when using this function is to mismatch +the tags with the source and destination ranks, which can result in +deadlock.

+
+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Sendrecv_replace(buf, dest, sendtag=0, source=ANY_SOURCE, recvtag=ANY_TAG, status=None)
+

Send and receive a message.

+
+

Note

+

This function is guaranteed not to deadlock in situations +where pairs of blocking sends and receives may deadlock.

+
+
+

Caution

+

A common mistake when using this function is to mismatch +the tags with the source and destination ranks, which can result in +deadlock.

+
+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Set_attr(keyval, attrval)
+

Store attribute value associated with a key.

+
+
Parameters:
+
    +
  • keyval (int)

  • +
  • attrval (Any)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Set_errhandler(errhandler)
+

Set the error handler for a communicator.

+
+
Parameters:
+

errhandler (Errhandler)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_info(info)
+

Set new values for the hints associated with a communicator.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_name(name)
+

Set the print name for this communicator.

+
+
Parameters:
+

name (str)

+
+
Return type:
+

None

+
+
+
+ +
+
+Shrink()
+

Shrink a communicator to remove all failed processes.

+
+
Return type:
+

Comm

+
+
+
+ +
+
+Split(color=0, key=0)
+

Split communicator by color and key.

+
+
Parameters:
+
+
+
Return type:
+

Comm

+
+
+
+ +
+
+Split_type(split_type, key=0, info=INFO_NULL)
+

Split communicator by split type.

+
+
Parameters:
+
+
+
Return type:
+

Comm

+
+
+
+ +
+
+Ssend(buf, dest, tag=0)
+

Blocking send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Ssend_init(buf, dest, tag=0)
+

Persistent request for a send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+allgather(sendobj)
+

Gather to All.

+
+
Parameters:
+

sendobj (Any)

+
+
Return type:
+

list[Any]

+
+
+
+ +
+
+allreduce(sendobj, op=SUM)
+

Reduce to All.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+alltoall(sendobj)
+

All to All Scatter/Gather.

+
+
Parameters:
+

sendobj (Sequence[Any])

+
+
Return type:
+

list[Any]

+
+
+
+ +
+
+barrier()
+

Barrier synchronization.

+
+

Note

+

This method is equivalent to Barrier.

+
+
+
Return type:
+

None

+
+
+
+ +
+
+bcast(obj, root=0)
+

Broadcast.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+bsend(obj, dest, tag=0)
+

Send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Comm

+
+
+
+ +
+
+free()
+

Call Free if not null or predefined.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Comm

+
+
+
+ +
+
+gather(sendobj, root=0)
+

Gather.

+
+
Parameters:
+
+
+
Return type:
+

list[Any] | None

+
+
+
+ +
+
+ibsend(obj, dest, tag=0)
+

Nonblocking send in buffered mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+improbe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Message | None

+
+
+
+ +
+
+iprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a message.

+
+
Parameters:
+
+
+
Return type:
+

bool

+
+
+
+ +
+
+irecv(buf=None, source=ANY_SOURCE, tag=ANY_TAG)
+

Nonblocking receive.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+isend(obj, dest, tag=0)
+

Nonblocking send.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+issend(obj, dest, tag=0)
+

Nonblocking send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+mprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Message

+
+
+
+ +
+
+probe(source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a message.

+
+
Parameters:
+
+
+
Return type:
+

Literal[True]

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +
+
+recv(buf=None, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Receive.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+reduce(sendobj, op=SUM, root=0)
+

Reduce to Root.

+
+
Parameters:
+
+
+
Return type:
+

Any | None

+
+
+
+ +
+
+scatter(sendobj, root=0)
+

Scatter.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+send(obj, dest, tag=0)
+

Send in standard mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+sendrecv(sendobj, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG, status=None)
+

Send and Receive.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+ssend(obj, dest, tag=0)
+

Send in synchronous mode.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +

Attributes Documentation

+
+
+group
+

Group.

+
+ +
+
+handle
+

MPI handle.

+
+ +
+
+info
+

Info hints.

+
+ +
+
+is_inter
+

Is intercommunicator.

+
+ +
+
+is_intra
+

Is intracommunicator.

+
+ +
+
+is_topo
+

Is a topology.

+
+ +
+
+name
+

Print name.

+
+ +
+
+rank
+

Rank of this process.

+
+ +
+
+size
+

Number of processes.

+
+ +
+
+topology
+

Topology type.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Compute_dims.html b/4.0.0/html/reference/mpi4py.MPI.Compute_dims.html new file mode 100644 index 0000000..6abe495 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Compute_dims.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.Compute_dims — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Compute_dims

+
+
+mpi4py.MPI.Compute_dims(nnodes, dims)
+

Return a balanced distribution of processes per coordinate direction.

+
+
Parameters:
+
+
+
Return type:
+

list[int]

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DATATYPE_NULL.html b/4.0.0/html/reference/mpi4py.MPI.DATATYPE_NULL.html new file mode 100644 index 0000000..96e13e1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DATATYPE_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DATATYPE_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DATATYPE_NULL

+
+
+mpi4py.MPI.DATATYPE_NULL: Datatype = DATATYPE_NULL
+

Object DATATYPE_NULL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DISPLACEMENT_CURRENT.html b/4.0.0/html/reference/mpi4py.MPI.DISPLACEMENT_CURRENT.html new file mode 100644 index 0000000..fab7601 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DISPLACEMENT_CURRENT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DISPLACEMENT_CURRENT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DISPLACEMENT_CURRENT

+
+
+mpi4py.MPI.DISPLACEMENT_CURRENT: int = DISPLACEMENT_CURRENT
+

Constant DISPLACEMENT_CURRENT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DISP_CUR.html b/4.0.0/html/reference/mpi4py.MPI.DISP_CUR.html new file mode 100644 index 0000000..b95833e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DISP_CUR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DISP_CUR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DISP_CUR

+
+
+mpi4py.MPI.DISP_CUR: int = DISP_CUR
+

Constant DISP_CUR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_BLOCK.html b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_BLOCK.html new file mode 100644 index 0000000..8992653 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_BLOCK.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DISTRIBUTE_BLOCK — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DISTRIBUTE_BLOCK

+
+
+mpi4py.MPI.DISTRIBUTE_BLOCK: int = DISTRIBUTE_BLOCK
+

Constant DISTRIBUTE_BLOCK of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_CYCLIC.html b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_CYCLIC.html new file mode 100644 index 0000000..ecc06f7 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_CYCLIC.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DISTRIBUTE_CYCLIC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DISTRIBUTE_CYCLIC

+
+
+mpi4py.MPI.DISTRIBUTE_CYCLIC: int = DISTRIBUTE_CYCLIC
+

Constant DISTRIBUTE_CYCLIC of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_DFLT_DARG.html b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_DFLT_DARG.html new file mode 100644 index 0000000..11440e9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_DFLT_DARG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DISTRIBUTE_DFLT_DARG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DISTRIBUTE_DFLT_DARG

+
+
+mpi4py.MPI.DISTRIBUTE_DFLT_DARG: int = DISTRIBUTE_DFLT_DARG
+

Constant DISTRIBUTE_DFLT_DARG of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_NONE.html b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_NONE.html new file mode 100644 index 0000000..cf33b5e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DISTRIBUTE_NONE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DISTRIBUTE_NONE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DISTRIBUTE_NONE

+
+
+mpi4py.MPI.DISTRIBUTE_NONE: int = DISTRIBUTE_NONE
+

Constant DISTRIBUTE_NONE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DIST_GRAPH.html b/4.0.0/html/reference/mpi4py.MPI.DIST_GRAPH.html new file mode 100644 index 0000000..609a93a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DIST_GRAPH.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DIST_GRAPH — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DIST_GRAPH

+
+
+mpi4py.MPI.DIST_GRAPH: int = DIST_GRAPH
+

Constant DIST_GRAPH of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DOUBLE.html b/4.0.0/html/reference/mpi4py.MPI.DOUBLE.html new file mode 100644 index 0000000..edffe56 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DOUBLE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DOUBLE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DOUBLE

+
+
+mpi4py.MPI.DOUBLE: Datatype = DOUBLE
+

Object DOUBLE of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DOUBLE_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.DOUBLE_COMPLEX.html new file mode 100644 index 0000000..b2f9b38 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DOUBLE_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DOUBLE_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DOUBLE_COMPLEX

+
+
+mpi4py.MPI.DOUBLE_COMPLEX: Datatype = DOUBLE_COMPLEX
+

Object DOUBLE_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DOUBLE_INT.html b/4.0.0/html/reference/mpi4py.MPI.DOUBLE_INT.html new file mode 100644 index 0000000..ab868db --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DOUBLE_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DOUBLE_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DOUBLE_INT

+
+
+mpi4py.MPI.DOUBLE_INT: Datatype = DOUBLE_INT
+

Object DOUBLE_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.DOUBLE_PRECISION.html b/4.0.0/html/reference/mpi4py.MPI.DOUBLE_PRECISION.html new file mode 100644 index 0000000..3821cce --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.DOUBLE_PRECISION.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.DOUBLE_PRECISION — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.DOUBLE_PRECISION

+
+
+mpi4py.MPI.DOUBLE_PRECISION: Datatype = DOUBLE_PRECISION
+

Object DOUBLE_PRECISION of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Datatype.html b/4.0.0/html/reference/mpi4py.MPI.Datatype.html new file mode 100644 index 0000000..3a78fd5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Datatype.html @@ -0,0 +1,1107 @@ + + + + + + + + mpi4py.MPI.Datatype — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Datatype

+
+
+class mpi4py.MPI.Datatype
+

Bases: object

+

Datatype object.

+
+
+static __new__(cls, datatype=None)
+
+
Parameters:
+

datatype (Datatype | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Commit()

Commit the datatype.

Create_contiguous(count)

Create a contiguous datatype.

Create_darray(size, rank, gsizes, distribs, ...)

Create a datatype for a distributed array on Cartesian process grids.

Create_f90_complex(p, r)

Return a bounded complex datatype.

Create_f90_integer(r)

Return a bounded integer datatype.

Create_f90_real(p, r)

Return a bounded real datatype.

Create_hindexed(blocklengths, displacements)

Create an indexed datatype.

Create_hindexed_block(blocklength, displacements)

Create an indexed datatype with constant-sized blocks.

Create_hvector(count, blocklength, stride)

Create a vector (strided) datatype with stride in bytes.

Create_indexed(blocklengths, displacements)

Create an indexed datatype.

Create_indexed_block(blocklength, displacements)

Create an indexed datatype with constant-sized blocks.

Create_keyval([copy_fn, delete_fn, nopython])

Create a new attribute key for datatypes.

Create_resized(lb, extent)

Create a datatype with a new lower bound and extent.

Create_struct(blocklengths, displacements, ...)

Create a general composite (struct) datatype.

Create_subarray(sizes, subsizes, starts[, order])

Create a datatype for a subarray of a multidimensional array.

Create_vector(count, blocklength, stride)

Create a vector (strided) datatype.

Delete_attr(keyval)

Delete attribute value associated with a key.

Dup()

Duplicate a datatype.

Free()

Free the datatype.

Free_keyval(keyval)

Free an attribute key for datatypes.

Get_attr(keyval)

Retrieve attribute value by key.

Get_contents()

Return the input arguments used to create a datatype.

Get_envelope()

Return the number of input arguments used to create a datatype.

Get_extent()

Return lower bound and extent of datatype.

Get_name()

Get the print name for this datatype.

Get_size()

Return the number of bytes occupied by entries in the datatype.

Get_true_extent()

Return the true lower bound and extent of a datatype.

Get_value_index(value, index)

Return a predefined pair datatype.

Match_size(typeclass, size)

Find a datatype matching a specified size in bytes.

Pack(inbuf, outbuf, position, comm)

Pack into contiguous memory according to datatype.

Pack_external(datarep, inbuf, outbuf, position)

Pack into contiguous memory according to datatype.

Pack_external_size(datarep, count)

Determine the amount of space needed to pack a message.

Pack_size(count, comm)

Determine the amount of space needed to pack a message.

Set_attr(keyval, attrval)

Store attribute value associated with a key.

Set_name(name)

Set the print name for this datatype.

Unpack(inbuf, position, outbuf, comm)

Unpack from contiguous memory according to datatype.

Unpack_external(datarep, inbuf, position, outbuf)

Unpack from contiguous memory according to datatype.

decode()

Convenience method for decoding a datatype.

f2py(arg)

free()

Call Free if not null or predefined.

fromcode(code)

Get predefined MPI datatype from character code or type string.

fromhandle(handle)

Create object from MPI handle.

py2f()

tocode()

Get character code or type string from predefined MPI datatype.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

combiner

Combiner.

contents

Contents.

envelope

Envelope.

extent

Extent.

handle

MPI handle.

is_named

Is a named datatype.

is_predefined

Is a predefined datatype.

lb

Lower bound.

name

Print name.

size

Size (in bytes).

true_extent

True extent.

true_lb

True lower bound.

true_ub

True upper bound.

typechar

Character code.

typestr

Type string.

ub

Upper bound.

+

Methods Documentation

+
+
+Commit()
+

Commit the datatype.

+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_contiguous(count)
+

Create a contiguous datatype.

+
+
Parameters:
+

count (int)

+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_darray(size, rank, gsizes, distribs, dargs, psizes, order=ORDER_C)
+

Create a datatype for a distributed array on Cartesian process grids.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_f90_complex(p, r)
+

Return a bounded complex datatype.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_f90_integer(r)
+

Return a bounded integer datatype.

+
+
Parameters:
+

r (int)

+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_f90_real(p, r)
+

Return a bounded real datatype.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_hindexed(blocklengths, displacements)
+

Create an indexed datatype.

+
+

Note

+

Displacements are measured in bytes.

+
+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_hindexed_block(blocklength, displacements)
+

Create an indexed datatype with constant-sized blocks.

+
+

Note

+

Displacements are measured in bytes.

+
+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_hvector(count, blocklength, stride)
+

Create a vector (strided) datatype with stride in bytes.

+
+
Parameters:
+
    +
  • count (int)

  • +
  • blocklength (int)

  • +
  • stride (int)

  • +
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_indexed(blocklengths, displacements)
+

Create an indexed datatype.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_indexed_block(blocklength, displacements)
+

Create an indexed datatype with constant-sized blocks.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_keyval(copy_fn=None, delete_fn=None, nopython=False)
+

Create a new attribute key for datatypes.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Create_resized(lb, extent)
+

Create a datatype with a new lower bound and extent.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_struct(blocklengths, displacements, datatypes)
+

Create a general composite (struct) datatype.

+
+

Note

+

Displacements are measured in bytes.

+
+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_subarray(sizes, subsizes, starts, order=ORDER_C)
+

Create a datatype for a subarray of a multidimensional array.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Create_vector(count, blocklength, stride)
+

Create a vector (strided) datatype.

+
+
Parameters:
+
    +
  • count (int)

  • +
  • blocklength (int)

  • +
  • stride (int)

  • +
+
+
Return type:
+

Self

+
+
+
+ +
+
+Delete_attr(keyval)
+

Delete attribute value associated with a key.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Dup()
+

Duplicate a datatype.

+
+
Return type:
+

Self

+
+
+
+ +
+
+Free()
+

Free the datatype.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Free_keyval(keyval)
+

Free an attribute key for datatypes.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_attr(keyval)
+

Retrieve attribute value by key.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

int | Any | None

+
+
+
+ +
+
+Get_contents()
+

Return the input arguments used to create a datatype.

+
+
Return type:
+

tuple[list[int], list[int], list[int], list[Datatype]]

+
+
+
+ +
+
+Get_envelope()
+

Return the number of input arguments used to create a datatype.

+
+
Return type:
+

tuple[int, int, int, int, int]

+
+
+
+ +
+
+Get_extent()
+

Return lower bound and extent of datatype.

+
+
Return type:
+

tuple[int, int]

+
+
+
+ +
+
+Get_name()
+

Get the print name for this datatype.

+
+
Return type:
+

str

+
+
+
+ +
+
+Get_size()
+

Return the number of bytes occupied by entries in the datatype.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_true_extent()
+

Return the true lower bound and extent of a datatype.

+
+
Return type:
+

tuple[int, int]

+
+
+
+ +
+
+classmethod Get_value_index(value, index)
+

Return a predefined pair datatype.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Match_size(typeclass, size)
+

Find a datatype matching a specified size in bytes.

+
+
Parameters:
+
    +
  • typeclass (int)

  • +
  • size (int)

  • +
+
+
Return type:
+

Self

+
+
+
+ +
+
+Pack(inbuf, outbuf, position, comm)
+

Pack into contiguous memory according to datatype.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Pack_external(datarep, inbuf, outbuf, position)
+

Pack into contiguous memory according to datatype.

+

Uses the portable data representation external32.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Pack_external_size(datarep, count)
+

Determine the amount of space needed to pack a message.

+

Uses the portable data representation external32.

+
+

Note

+

Returns an upper bound measured in bytes.

+
+
+
Parameters:
+
    +
  • datarep (str)

  • +
  • count (int)

  • +
+
+
Return type:
+

int

+
+
+
+ +
+
+Pack_size(count, comm)
+

Determine the amount of space needed to pack a message.

+
+

Note

+

Returns an upper bound measured in bytes.

+
+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Set_attr(keyval, attrval)
+

Store attribute value associated with a key.

+
+
Parameters:
+
    +
  • keyval (int)

  • +
  • attrval (Any)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Set_name(name)
+

Set the print name for this datatype.

+
+
Parameters:
+

name (str)

+
+
Return type:
+

None

+
+
+
+ +
+
+Unpack(inbuf, position, outbuf, comm)
+

Unpack from contiguous memory according to datatype.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Unpack_external(datarep, inbuf, position, outbuf)
+

Unpack from contiguous memory according to datatype.

+

Uses the portable data representation external32.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+decode()
+

Convenience method for decoding a datatype.

+
+
Return type:
+

tuple[Datatype, str, dict[str, Any]]

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Datatype

+
+
+
+ +
+
+free()
+

Call Free if not null or predefined.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromcode(code)
+

Get predefined MPI datatype from character code or type string.

+
+
Parameters:
+

code (str)

+
+
Return type:
+

Datatype

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Datatype

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +
+
+tocode()
+

Get character code or type string from predefined MPI datatype.

+
+
Return type:
+

str

+
+
+
+ +

Attributes Documentation

+
+
+combiner
+

Combiner.

+
+ +
+
+contents
+

Contents.

+
+ +
+
+envelope
+

Envelope.

+
+ +
+
+extent
+

Extent.

+
+ +
+
+handle
+

MPI handle.

+
+ +
+
+is_named
+

Is a named datatype.

+
+ +
+
+is_predefined
+

Is a predefined datatype.

+
+ +
+
+lb
+

Lower bound.

+
+ +
+
+name
+

Print name.

+
+ +
+
+size
+

Size (in bytes).

+
+ +
+
+true_extent
+

True extent.

+
+ +
+
+true_lb
+

True lower bound.

+
+ +
+
+true_ub
+

True upper bound.

+
+ +
+
+typechar
+

Character code.

+
+ +
+
+typestr
+

Type string.

+
+ +
+
+ub
+

Upper bound.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Detach_buffer.html b/4.0.0/html/reference/mpi4py.MPI.Detach_buffer.html new file mode 100644 index 0000000..75531b4 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Detach_buffer.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Detach_buffer — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Detach_buffer

+
+
+mpi4py.MPI.Detach_buffer()
+

Remove an existing attached buffer.

+
+
Return type:
+

Buffer | None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Distgraphcomm.html b/4.0.0/html/reference/mpi4py.MPI.Distgraphcomm.html new file mode 100644 index 0000000..8298695 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Distgraphcomm.html @@ -0,0 +1,170 @@ + + + + + + + + mpi4py.MPI.Distgraphcomm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Distgraphcomm

+
+
+class mpi4py.MPI.Distgraphcomm
+

Bases: Topocomm

+

Distributed graph topology intracommunicator.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Distgraphcomm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + +

Get_dist_neighbors()

Return adjacency information for a distributed graph topology.

Get_dist_neighbors_count()

Return adjacency information for a distributed graph topology.

+

Methods Documentation

+
+
+Get_dist_neighbors()
+

Return adjacency information for a distributed graph topology.

+
+
Return type:
+

tuple[list[int], list[int], tuple[list[int], list[int]] | None]

+
+
+
+ +
+
+Get_dist_neighbors_count()
+

Return adjacency information for a distributed graph topology.

+
+
Return type:
+

int

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERRHANDLER_NULL.html b/4.0.0/html/reference/mpi4py.MPI.ERRHANDLER_NULL.html new file mode 100644 index 0000000..f3b096c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERRHANDLER_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERRHANDLER_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERRHANDLER_NULL

+
+
+mpi4py.MPI.ERRHANDLER_NULL: Errhandler = ERRHANDLER_NULL
+

Object ERRHANDLER_NULL of type Errhandler

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERRORS_ABORT.html b/4.0.0/html/reference/mpi4py.MPI.ERRORS_ABORT.html new file mode 100644 index 0000000..4e2c73c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERRORS_ABORT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERRORS_ABORT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERRORS_ABORT

+
+
+mpi4py.MPI.ERRORS_ABORT: Errhandler = ERRORS_ABORT
+

Object ERRORS_ABORT of type Errhandler

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERRORS_ARE_FATAL.html b/4.0.0/html/reference/mpi4py.MPI.ERRORS_ARE_FATAL.html new file mode 100644 index 0000000..c23a478 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERRORS_ARE_FATAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERRORS_ARE_FATAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERRORS_ARE_FATAL

+
+
+mpi4py.MPI.ERRORS_ARE_FATAL: Errhandler = ERRORS_ARE_FATAL
+

Object ERRORS_ARE_FATAL of type Errhandler

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERRORS_RETURN.html b/4.0.0/html/reference/mpi4py.MPI.ERRORS_RETURN.html new file mode 100644 index 0000000..7001e72 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERRORS_RETURN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERRORS_RETURN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERRORS_RETURN

+
+
+mpi4py.MPI.ERRORS_RETURN: Errhandler = ERRORS_RETURN
+

Object ERRORS_RETURN of type Errhandler

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_ACCESS.html b/4.0.0/html/reference/mpi4py.MPI.ERR_ACCESS.html new file mode 100644 index 0000000..e6d217a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_ACCESS.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_ACCESS — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_ACCESS

+
+
+mpi4py.MPI.ERR_ACCESS: int = ERR_ACCESS
+

Constant ERR_ACCESS of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_AMODE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_AMODE.html new file mode 100644 index 0000000..f788c83 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_AMODE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_AMODE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_AMODE

+
+
+mpi4py.MPI.ERR_AMODE: int = ERR_AMODE
+

Constant ERR_AMODE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_ARG.html b/4.0.0/html/reference/mpi4py.MPI.ERR_ARG.html new file mode 100644 index 0000000..3a330b0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_ARG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_ARG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_ARG

+
+
+mpi4py.MPI.ERR_ARG: int = ERR_ARG
+

Constant ERR_ARG of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_ASSERT.html b/4.0.0/html/reference/mpi4py.MPI.ERR_ASSERT.html new file mode 100644 index 0000000..692d655 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_ASSERT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_ASSERT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_ASSERT

+
+
+mpi4py.MPI.ERR_ASSERT: int = ERR_ASSERT
+

Constant ERR_ASSERT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_BAD_FILE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_BAD_FILE.html new file mode 100644 index 0000000..a2437f1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_BAD_FILE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_BAD_FILE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_BAD_FILE

+
+
+mpi4py.MPI.ERR_BAD_FILE: int = ERR_BAD_FILE
+

Constant ERR_BAD_FILE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_BASE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_BASE.html new file mode 100644 index 0000000..ea5554c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_BASE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_BASE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_BASE

+
+
+mpi4py.MPI.ERR_BASE: int = ERR_BASE
+

Constant ERR_BASE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_BUFFER.html b/4.0.0/html/reference/mpi4py.MPI.ERR_BUFFER.html new file mode 100644 index 0000000..2eaee39 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_BUFFER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_BUFFER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_BUFFER

+
+
+mpi4py.MPI.ERR_BUFFER: int = ERR_BUFFER
+

Constant ERR_BUFFER of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_COMM.html b/4.0.0/html/reference/mpi4py.MPI.ERR_COMM.html new file mode 100644 index 0000000..2619238 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_COMM.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_COMM — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_COMM

+
+
+mpi4py.MPI.ERR_COMM: int = ERR_COMM
+

Constant ERR_COMM of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_CONVERSION.html b/4.0.0/html/reference/mpi4py.MPI.ERR_CONVERSION.html new file mode 100644 index 0000000..d58ae89 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_CONVERSION.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_CONVERSION — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_CONVERSION

+
+
+mpi4py.MPI.ERR_CONVERSION: int = ERR_CONVERSION
+

Constant ERR_CONVERSION of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_COUNT.html b/4.0.0/html/reference/mpi4py.MPI.ERR_COUNT.html new file mode 100644 index 0000000..ff24416 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_COUNT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_COUNT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_COUNT

+
+
+mpi4py.MPI.ERR_COUNT: int = ERR_COUNT
+

Constant ERR_COUNT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_DIMS.html b/4.0.0/html/reference/mpi4py.MPI.ERR_DIMS.html new file mode 100644 index 0000000..3124712 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_DIMS.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_DIMS — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_DIMS

+
+
+mpi4py.MPI.ERR_DIMS: int = ERR_DIMS
+

Constant ERR_DIMS of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_DISP.html b/4.0.0/html/reference/mpi4py.MPI.ERR_DISP.html new file mode 100644 index 0000000..40ce884 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_DISP.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_DISP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_DISP

+
+
+mpi4py.MPI.ERR_DISP: int = ERR_DISP
+

Constant ERR_DISP of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_DUP_DATAREP.html b/4.0.0/html/reference/mpi4py.MPI.ERR_DUP_DATAREP.html new file mode 100644 index 0000000..33d114a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_DUP_DATAREP.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_DUP_DATAREP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_DUP_DATAREP

+
+
+mpi4py.MPI.ERR_DUP_DATAREP: int = ERR_DUP_DATAREP
+

Constant ERR_DUP_DATAREP of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_ERRHANDLER.html b/4.0.0/html/reference/mpi4py.MPI.ERR_ERRHANDLER.html new file mode 100644 index 0000000..bef4c33 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_ERRHANDLER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_ERRHANDLER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_ERRHANDLER

+
+
+mpi4py.MPI.ERR_ERRHANDLER: int = ERR_ERRHANDLER
+

Constant ERR_ERRHANDLER of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_FILE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_FILE.html new file mode 100644 index 0000000..74c2e74 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_FILE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_FILE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_FILE

+
+
+mpi4py.MPI.ERR_FILE: int = ERR_FILE
+

Constant ERR_FILE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_FILE_EXISTS.html b/4.0.0/html/reference/mpi4py.MPI.ERR_FILE_EXISTS.html new file mode 100644 index 0000000..cfdcf92 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_FILE_EXISTS.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_FILE_EXISTS — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_FILE_EXISTS

+
+
+mpi4py.MPI.ERR_FILE_EXISTS: int = ERR_FILE_EXISTS
+

Constant ERR_FILE_EXISTS of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_FILE_IN_USE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_FILE_IN_USE.html new file mode 100644 index 0000000..ed72c02 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_FILE_IN_USE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_FILE_IN_USE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_FILE_IN_USE

+
+
+mpi4py.MPI.ERR_FILE_IN_USE: int = ERR_FILE_IN_USE
+

Constant ERR_FILE_IN_USE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_GROUP.html b/4.0.0/html/reference/mpi4py.MPI.ERR_GROUP.html new file mode 100644 index 0000000..9b33a0c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_GROUP.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_GROUP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_GROUP

+
+
+mpi4py.MPI.ERR_GROUP: int = ERR_GROUP
+

Constant ERR_GROUP of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_INFO.html b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO.html new file mode 100644 index 0000000..59744b0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_INFO — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_INFO

+
+
+mpi4py.MPI.ERR_INFO: int = ERR_INFO
+

Constant ERR_INFO of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_KEY.html b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_KEY.html new file mode 100644 index 0000000..8240f93 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_KEY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_INFO_KEY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_INFO_KEY

+
+
+mpi4py.MPI.ERR_INFO_KEY: int = ERR_INFO_KEY
+

Constant ERR_INFO_KEY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_NOKEY.html b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_NOKEY.html new file mode 100644 index 0000000..b50cb01 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_NOKEY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_INFO_NOKEY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_INFO_NOKEY

+
+
+mpi4py.MPI.ERR_INFO_NOKEY: int = ERR_INFO_NOKEY
+

Constant ERR_INFO_NOKEY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_VALUE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_VALUE.html new file mode 100644 index 0000000..9f82e22 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_INFO_VALUE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_INFO_VALUE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_INFO_VALUE

+
+
+mpi4py.MPI.ERR_INFO_VALUE: int = ERR_INFO_VALUE
+

Constant ERR_INFO_VALUE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_INTERN.html b/4.0.0/html/reference/mpi4py.MPI.ERR_INTERN.html new file mode 100644 index 0000000..ad00364 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_INTERN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_INTERN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_INTERN

+
+
+mpi4py.MPI.ERR_INTERN: int = ERR_INTERN
+

Constant ERR_INTERN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_IN_STATUS.html b/4.0.0/html/reference/mpi4py.MPI.ERR_IN_STATUS.html new file mode 100644 index 0000000..ef26877 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_IN_STATUS.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_IN_STATUS — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_IN_STATUS

+
+
+mpi4py.MPI.ERR_IN_STATUS: int = ERR_IN_STATUS
+

Constant ERR_IN_STATUS of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_IO.html b/4.0.0/html/reference/mpi4py.MPI.ERR_IO.html new file mode 100644 index 0000000..a6bea02 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_IO.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_IO — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_IO

+
+
+mpi4py.MPI.ERR_IO: int = ERR_IO
+

Constant ERR_IO of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_KEYVAL.html b/4.0.0/html/reference/mpi4py.MPI.ERR_KEYVAL.html new file mode 100644 index 0000000..a79ce63 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_KEYVAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_KEYVAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_KEYVAL

+
+
+mpi4py.MPI.ERR_KEYVAL: int = ERR_KEYVAL
+

Constant ERR_KEYVAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_LASTCODE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_LASTCODE.html new file mode 100644 index 0000000..887c9ef --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_LASTCODE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_LASTCODE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_LASTCODE

+
+
+mpi4py.MPI.ERR_LASTCODE: int = ERR_LASTCODE
+

Constant ERR_LASTCODE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_LOCKTYPE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_LOCKTYPE.html new file mode 100644 index 0000000..503efe3 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_LOCKTYPE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_LOCKTYPE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_LOCKTYPE

+
+
+mpi4py.MPI.ERR_LOCKTYPE: int = ERR_LOCKTYPE
+

Constant ERR_LOCKTYPE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_NAME.html b/4.0.0/html/reference/mpi4py.MPI.ERR_NAME.html new file mode 100644 index 0000000..fe77777 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_NAME.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_NAME — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_NAME

+
+
+mpi4py.MPI.ERR_NAME: int = ERR_NAME
+

Constant ERR_NAME of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_NOT_SAME.html b/4.0.0/html/reference/mpi4py.MPI.ERR_NOT_SAME.html new file mode 100644 index 0000000..dfc9251 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_NOT_SAME.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_NOT_SAME — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_NOT_SAME

+
+
+mpi4py.MPI.ERR_NOT_SAME: int = ERR_NOT_SAME
+

Constant ERR_NOT_SAME of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_NO_MEM.html b/4.0.0/html/reference/mpi4py.MPI.ERR_NO_MEM.html new file mode 100644 index 0000000..daebaf3 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_NO_MEM.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_NO_MEM — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_NO_MEM

+
+
+mpi4py.MPI.ERR_NO_MEM: int = ERR_NO_MEM
+

Constant ERR_NO_MEM of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_NO_SPACE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_NO_SPACE.html new file mode 100644 index 0000000..36edc9a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_NO_SPACE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_NO_SPACE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_NO_SPACE

+
+
+mpi4py.MPI.ERR_NO_SPACE: int = ERR_NO_SPACE
+

Constant ERR_NO_SPACE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_NO_SUCH_FILE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_NO_SUCH_FILE.html new file mode 100644 index 0000000..71a351d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_NO_SUCH_FILE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_NO_SUCH_FILE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_NO_SUCH_FILE

+
+
+mpi4py.MPI.ERR_NO_SUCH_FILE: int = ERR_NO_SUCH_FILE
+

Constant ERR_NO_SUCH_FILE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_OP.html b/4.0.0/html/reference/mpi4py.MPI.ERR_OP.html new file mode 100644 index 0000000..46c2d6d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_OP.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_OP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_OP

+
+
+mpi4py.MPI.ERR_OP: int = ERR_OP
+

Constant ERR_OP of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_OTHER.html b/4.0.0/html/reference/mpi4py.MPI.ERR_OTHER.html new file mode 100644 index 0000000..81e07c5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_OTHER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_OTHER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_OTHER

+
+
+mpi4py.MPI.ERR_OTHER: int = ERR_OTHER
+

Constant ERR_OTHER of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_PENDING.html b/4.0.0/html/reference/mpi4py.MPI.ERR_PENDING.html new file mode 100644 index 0000000..570dee4 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_PENDING.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_PENDING — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_PENDING

+
+
+mpi4py.MPI.ERR_PENDING: int = ERR_PENDING
+

Constant ERR_PENDING of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_PORT.html b/4.0.0/html/reference/mpi4py.MPI.ERR_PORT.html new file mode 100644 index 0000000..0a59c5c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_PORT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_PORT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_PORT

+
+
+mpi4py.MPI.ERR_PORT: int = ERR_PORT
+

Constant ERR_PORT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_ABORTED.html b/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_ABORTED.html new file mode 100644 index 0000000..327535d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_ABORTED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_PROC_ABORTED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_PROC_ABORTED

+
+
+mpi4py.MPI.ERR_PROC_ABORTED: int = ERR_PROC_ABORTED
+

Constant ERR_PROC_ABORTED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_FAILED.html b/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_FAILED.html new file mode 100644 index 0000000..7a142b1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_FAILED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_PROC_FAILED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_PROC_FAILED

+
+
+mpi4py.MPI.ERR_PROC_FAILED: int = ERR_PROC_FAILED
+

Constant ERR_PROC_FAILED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_FAILED_PENDING.html b/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_FAILED_PENDING.html new file mode 100644 index 0000000..14b828d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_PROC_FAILED_PENDING.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_PROC_FAILED_PENDING — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_PROC_FAILED_PENDING

+
+
+mpi4py.MPI.ERR_PROC_FAILED_PENDING: int = ERR_PROC_FAILED_PENDING
+

Constant ERR_PROC_FAILED_PENDING of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_QUOTA.html b/4.0.0/html/reference/mpi4py.MPI.ERR_QUOTA.html new file mode 100644 index 0000000..b8dd83a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_QUOTA.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_QUOTA — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_QUOTA

+
+
+mpi4py.MPI.ERR_QUOTA: int = ERR_QUOTA
+

Constant ERR_QUOTA of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RANK.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RANK.html new file mode 100644 index 0000000..674d5dc --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RANK.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RANK — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RANK

+
+
+mpi4py.MPI.ERR_RANK: int = ERR_RANK
+

Constant ERR_RANK of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_READ_ONLY.html b/4.0.0/html/reference/mpi4py.MPI.ERR_READ_ONLY.html new file mode 100644 index 0000000..8dc16b6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_READ_ONLY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_READ_ONLY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_READ_ONLY

+
+
+mpi4py.MPI.ERR_READ_ONLY: int = ERR_READ_ONLY
+

Constant ERR_READ_ONLY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_REQUEST.html b/4.0.0/html/reference/mpi4py.MPI.ERR_REQUEST.html new file mode 100644 index 0000000..31c9d99 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_REQUEST.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_REQUEST — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_REQUEST

+
+
+mpi4py.MPI.ERR_REQUEST: int = ERR_REQUEST
+

Constant ERR_REQUEST of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_REVOKED.html b/4.0.0/html/reference/mpi4py.MPI.ERR_REVOKED.html new file mode 100644 index 0000000..08d80a5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_REVOKED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_REVOKED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_REVOKED

+
+
+mpi4py.MPI.ERR_REVOKED: int = ERR_REVOKED
+

Constant ERR_REVOKED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_ATTACH.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_ATTACH.html new file mode 100644 index 0000000..91dc92d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_ATTACH.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RMA_ATTACH — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RMA_ATTACH

+
+
+mpi4py.MPI.ERR_RMA_ATTACH: int = ERR_RMA_ATTACH
+

Constant ERR_RMA_ATTACH of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_CONFLICT.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_CONFLICT.html new file mode 100644 index 0000000..b2e575e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_CONFLICT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RMA_CONFLICT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RMA_CONFLICT

+
+
+mpi4py.MPI.ERR_RMA_CONFLICT: int = ERR_RMA_CONFLICT
+

Constant ERR_RMA_CONFLICT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_FLAVOR.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_FLAVOR.html new file mode 100644 index 0000000..75d1819 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_FLAVOR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RMA_FLAVOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RMA_FLAVOR

+
+
+mpi4py.MPI.ERR_RMA_FLAVOR: int = ERR_RMA_FLAVOR
+

Constant ERR_RMA_FLAVOR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_RANGE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_RANGE.html new file mode 100644 index 0000000..8325e1c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_RANGE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RMA_RANGE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RMA_RANGE

+
+
+mpi4py.MPI.ERR_RMA_RANGE: int = ERR_RMA_RANGE
+

Constant ERR_RMA_RANGE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_SHARED.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_SHARED.html new file mode 100644 index 0000000..b26c284 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_SHARED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RMA_SHARED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RMA_SHARED

+
+
+mpi4py.MPI.ERR_RMA_SHARED: int = ERR_RMA_SHARED
+

Constant ERR_RMA_SHARED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_SYNC.html b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_SYNC.html new file mode 100644 index 0000000..850474e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_RMA_SYNC.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_RMA_SYNC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_RMA_SYNC

+
+
+mpi4py.MPI.ERR_RMA_SYNC: int = ERR_RMA_SYNC
+

Constant ERR_RMA_SYNC of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_ROOT.html b/4.0.0/html/reference/mpi4py.MPI.ERR_ROOT.html new file mode 100644 index 0000000..6b758cb --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_ROOT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_ROOT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_ROOT

+
+
+mpi4py.MPI.ERR_ROOT: int = ERR_ROOT
+

Constant ERR_ROOT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_SERVICE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_SERVICE.html new file mode 100644 index 0000000..da99959 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_SERVICE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_SERVICE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_SERVICE

+
+
+mpi4py.MPI.ERR_SERVICE: int = ERR_SERVICE
+

Constant ERR_SERVICE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_SESSION.html b/4.0.0/html/reference/mpi4py.MPI.ERR_SESSION.html new file mode 100644 index 0000000..81c7d5e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_SESSION.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_SESSION — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_SESSION

+
+
+mpi4py.MPI.ERR_SESSION: int = ERR_SESSION
+

Constant ERR_SESSION of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_SIZE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_SIZE.html new file mode 100644 index 0000000..6441387 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_SIZE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_SIZE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_SIZE

+
+
+mpi4py.MPI.ERR_SIZE: int = ERR_SIZE
+

Constant ERR_SIZE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_SPAWN.html b/4.0.0/html/reference/mpi4py.MPI.ERR_SPAWN.html new file mode 100644 index 0000000..9c220c1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_SPAWN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_SPAWN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_SPAWN

+
+
+mpi4py.MPI.ERR_SPAWN: int = ERR_SPAWN
+

Constant ERR_SPAWN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_TAG.html b/4.0.0/html/reference/mpi4py.MPI.ERR_TAG.html new file mode 100644 index 0000000..b8d7ac6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_TAG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_TAG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_TAG

+
+
+mpi4py.MPI.ERR_TAG: int = ERR_TAG
+

Constant ERR_TAG of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_TOPOLOGY.html b/4.0.0/html/reference/mpi4py.MPI.ERR_TOPOLOGY.html new file mode 100644 index 0000000..e4fd24b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_TOPOLOGY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_TOPOLOGY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_TOPOLOGY

+
+
+mpi4py.MPI.ERR_TOPOLOGY: int = ERR_TOPOLOGY
+

Constant ERR_TOPOLOGY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_TRUNCATE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_TRUNCATE.html new file mode 100644 index 0000000..2a49539 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_TRUNCATE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_TRUNCATE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_TRUNCATE

+
+
+mpi4py.MPI.ERR_TRUNCATE: int = ERR_TRUNCATE
+

Constant ERR_TRUNCATE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_TYPE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_TYPE.html new file mode 100644 index 0000000..554770b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_TYPE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_TYPE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_TYPE

+
+
+mpi4py.MPI.ERR_TYPE: int = ERR_TYPE
+

Constant ERR_TYPE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_UNKNOWN.html b/4.0.0/html/reference/mpi4py.MPI.ERR_UNKNOWN.html new file mode 100644 index 0000000..28de263 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_UNKNOWN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_UNKNOWN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_UNKNOWN

+
+
+mpi4py.MPI.ERR_UNKNOWN: int = ERR_UNKNOWN
+

Constant ERR_UNKNOWN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_UNSUPPORTED_DATAREP.html b/4.0.0/html/reference/mpi4py.MPI.ERR_UNSUPPORTED_DATAREP.html new file mode 100644 index 0000000..b838d23 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_UNSUPPORTED_DATAREP.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_UNSUPPORTED_DATAREP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_UNSUPPORTED_DATAREP

+
+
+mpi4py.MPI.ERR_UNSUPPORTED_DATAREP: int = ERR_UNSUPPORTED_DATAREP
+

Constant ERR_UNSUPPORTED_DATAREP of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_UNSUPPORTED_OPERATION.html b/4.0.0/html/reference/mpi4py.MPI.ERR_UNSUPPORTED_OPERATION.html new file mode 100644 index 0000000..5eb2e47 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_UNSUPPORTED_OPERATION.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_UNSUPPORTED_OPERATION — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_UNSUPPORTED_OPERATION

+
+
+mpi4py.MPI.ERR_UNSUPPORTED_OPERATION: int = ERR_UNSUPPORTED_OPERATION
+

Constant ERR_UNSUPPORTED_OPERATION of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_VALUE_TOO_LARGE.html b/4.0.0/html/reference/mpi4py.MPI.ERR_VALUE_TOO_LARGE.html new file mode 100644 index 0000000..aab4a9f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_VALUE_TOO_LARGE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_VALUE_TOO_LARGE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_VALUE_TOO_LARGE

+
+
+mpi4py.MPI.ERR_VALUE_TOO_LARGE: int = ERR_VALUE_TOO_LARGE
+

Constant ERR_VALUE_TOO_LARGE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ERR_WIN.html b/4.0.0/html/reference/mpi4py.MPI.ERR_WIN.html new file mode 100644 index 0000000..1f4d7ae --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ERR_WIN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ERR_WIN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ERR_WIN

+
+
+mpi4py.MPI.ERR_WIN: int = ERR_WIN
+

Constant ERR_WIN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Errhandler.html b/4.0.0/html/reference/mpi4py.MPI.Errhandler.html new file mode 100644 index 0000000..b6a4c03 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Errhandler.html @@ -0,0 +1,231 @@ + + + + + + + + mpi4py.MPI.Errhandler — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Errhandler

+
+
+class mpi4py.MPI.Errhandler
+

Bases: object

+

Error handler.

+
+
+static __new__(cls, errhandler=None)
+
+
Parameters:
+

errhandler (Errhandler | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + +

Free()

Free an error handler.

f2py(arg)

free()

Call Free if not null.

fromhandle(handle)

Create object from MPI handle.

py2f()

+

Attributes Summary

+ + + + + + +

handle

MPI handle.

+

Methods Documentation

+
+
+Free()
+

Free an error handler.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+free()
+

Call Free if not null.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Exception.html b/4.0.0/html/reference/mpi4py.MPI.Exception.html new file mode 100644 index 0000000..b61e30e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Exception.html @@ -0,0 +1,217 @@ + + + + + + + + mpi4py.MPI.Exception — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Exception

+
+
+exception mpi4py.MPI.Exception
+

Bases: RuntimeError

+

Exception class.

+
+
+static __new__(cls, ierr=SUCCESS)
+
+
Parameters:
+

ierr (int)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + +

Get_error_class()

Error class.

Get_error_code()

Error code.

Get_error_string()

Error string.

+

Attributes Summary

+ + + + + + + + + + + + +

error_class

Error class.

error_code

Error code.

error_string

Error string.

+

Methods Documentation

+
+
+Get_error_class()
+

Error class.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_error_code()
+

Error code.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_error_string()
+

Error string.

+
+
Return type:
+

str

+
+
+
+ +

Attributes Documentation

+
+
+error_class
+

Error class.

+
+ +
+
+error_code
+

Error code.

+
+ +
+
+error_string
+

Error string.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.FILE_NULL.html b/4.0.0/html/reference/mpi4py.MPI.FILE_NULL.html new file mode 100644 index 0000000..9d7c305 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.FILE_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.FILE_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.FILE_NULL

+
+
+mpi4py.MPI.FILE_NULL: File = FILE_NULL
+

Object FILE_NULL of type File

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.FLOAT.html b/4.0.0/html/reference/mpi4py.MPI.FLOAT.html new file mode 100644 index 0000000..eb31f8c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.FLOAT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.FLOAT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.FLOAT

+
+
+mpi4py.MPI.FLOAT: Datatype = FLOAT
+

Object FLOAT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.FLOAT_INT.html b/4.0.0/html/reference/mpi4py.MPI.FLOAT_INT.html new file mode 100644 index 0000000..6eea652 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.FLOAT_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.FLOAT_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.FLOAT_INT

+
+
+mpi4py.MPI.FLOAT_INT: Datatype = FLOAT_INT
+

Object FLOAT_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_BOOL.html b/4.0.0/html/reference/mpi4py.MPI.F_BOOL.html new file mode 100644 index 0000000..ed7aa9e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_BOOL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_BOOL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_BOOL

+
+
+mpi4py.MPI.F_BOOL: Datatype = F_BOOL
+

Object F_BOOL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.F_COMPLEX.html new file mode 100644 index 0000000..be4471a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_COMPLEX

+
+
+mpi4py.MPI.F_COMPLEX: Datatype = F_COMPLEX
+

Object F_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_DOUBLE.html b/4.0.0/html/reference/mpi4py.MPI.F_DOUBLE.html new file mode 100644 index 0000000..c6f708c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_DOUBLE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_DOUBLE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_DOUBLE

+
+
+mpi4py.MPI.F_DOUBLE: Datatype = F_DOUBLE
+

Object F_DOUBLE of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_DOUBLE_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.F_DOUBLE_COMPLEX.html new file mode 100644 index 0000000..f5589c2 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_DOUBLE_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_DOUBLE_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_DOUBLE_COMPLEX

+
+
+mpi4py.MPI.F_DOUBLE_COMPLEX: Datatype = F_DOUBLE_COMPLEX
+

Object F_DOUBLE_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_ERROR.html b/4.0.0/html/reference/mpi4py.MPI.F_ERROR.html new file mode 100644 index 0000000..d748ebd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_ERROR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_ERROR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_ERROR

+
+
+mpi4py.MPI.F_ERROR: int = F_ERROR
+

Constant F_ERROR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_FLOAT.html b/4.0.0/html/reference/mpi4py.MPI.F_FLOAT.html new file mode 100644 index 0000000..3c76483 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_FLOAT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_FLOAT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_FLOAT

+
+
+mpi4py.MPI.F_FLOAT: Datatype = F_FLOAT
+

Object F_FLOAT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_FLOAT_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.F_FLOAT_COMPLEX.html new file mode 100644 index 0000000..bb9d61a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_FLOAT_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_FLOAT_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_FLOAT_COMPLEX

+
+
+mpi4py.MPI.F_FLOAT_COMPLEX: Datatype = F_FLOAT_COMPLEX
+

Object F_FLOAT_COMPLEX of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_INT.html b/4.0.0/html/reference/mpi4py.MPI.F_INT.html new file mode 100644 index 0000000..01acd3a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_INT

+
+
+mpi4py.MPI.F_INT: Datatype = F_INT
+

Object F_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_SOURCE.html b/4.0.0/html/reference/mpi4py.MPI.F_SOURCE.html new file mode 100644 index 0000000..d3a16ae --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_SOURCE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_SOURCE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_SOURCE

+
+
+mpi4py.MPI.F_SOURCE: int = F_SOURCE
+

Constant F_SOURCE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_STATUS_SIZE.html b/4.0.0/html/reference/mpi4py.MPI.F_STATUS_SIZE.html new file mode 100644 index 0000000..0bc187b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_STATUS_SIZE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_STATUS_SIZE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_STATUS_SIZE

+
+
+mpi4py.MPI.F_STATUS_SIZE: int = F_STATUS_SIZE
+

Constant F_STATUS_SIZE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.F_TAG.html b/4.0.0/html/reference/mpi4py.MPI.F_TAG.html new file mode 100644 index 0000000..dabaaab --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.F_TAG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.F_TAG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.F_TAG

+
+
+mpi4py.MPI.F_TAG: int = F_TAG
+

Constant F_TAG of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.File.html b/4.0.0/html/reference/mpi4py.MPI.File.html new file mode 100644 index 0000000..ed5b8eb --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.File.html @@ -0,0 +1,1361 @@ + + + + + + + + mpi4py.MPI.File — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.File

+
+
+class mpi4py.MPI.File
+

Bases: object

+

File I/O context.

+
+
+static __new__(cls, file=None)
+
+
Parameters:
+

file (File | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Call_errhandler(errorcode)

Call the error handler installed on a file.

Close()

Close a file.

Create_errhandler(errhandler_fn)

Create a new error handler for files.

Delete(filename[, info])

Delete a file.

Get_amode()

Return the file access mode.

Get_atomicity()

Return the atomicity mode.

Get_byte_offset(offset)

Return the absolute byte position in the file.

Get_errhandler()

Get the error handler for a file.

Get_group()

Access the group of processes that opened the file.

Get_info()

Return the current hints for a file.

Get_position()

Return the current position of the individual file pointer.

Get_position_shared()

Return the current position of the shared file pointer.

Get_size()

Return the file size.

Get_type_extent(datatype)

Return the extent of datatype in the file.

Get_view()

Return the file view.

Iread(buf)

Nonblocking read using individual file pointer.

Iread_all(buf)

Nonblocking collective read using individual file pointer.

Iread_at(offset, buf)

Nonblocking read using explicit offset.

Iread_at_all(offset, buf)

Nonblocking collective read using explicit offset.

Iread_shared(buf)

Nonblocking read using shared file pointer.

Iwrite(buf)

Nonblocking write using individual file pointer.

Iwrite_all(buf)

Nonblocking collective write using individual file pointer.

Iwrite_at(offset, buf)

Nonblocking write using explicit offset.

Iwrite_at_all(offset, buf)

Nonblocking collective write using explicit offset.

Iwrite_shared(buf)

Nonblocking write using shared file pointer.

Open(comm, filename[, amode, info])

Open a file.

Preallocate(size)

Preallocate storage space for a file.

Read(buf[, status])

Read using individual file pointer.

Read_all(buf[, status])

Collective read using individual file pointer.

Read_all_begin(buf)

Start a split collective read using individual file pointer.

Read_all_end(buf[, status])

Complete a split collective read using individual file pointer.

Read_at(offset, buf[, status])

Read using explicit offset.

Read_at_all(offset, buf[, status])

Collective read using explicit offset.

Read_at_all_begin(offset, buf)

Start a split collective read using explicit offset.

Read_at_all_end(buf[, status])

Complete a split collective read using explicit offset.

Read_ordered(buf[, status])

Collective read using shared file pointer.

Read_ordered_begin(buf)

Start a split collective read using shared file pointer.

Read_ordered_end(buf[, status])

Complete a split collective read using shared file pointer.

Read_shared(buf[, status])

Read using shared file pointer.

Seek(offset[, whence])

Update the individual file pointer.

Seek_shared(offset[, whence])

Update the shared file pointer.

Set_atomicity(flag)

Set the atomicity mode.

Set_errhandler(errhandler)

Set the error handler for a file.

Set_info(info)

Set new values for the hints associated with a file.

Set_size(size)

Set the file size.

Set_view([disp, etype, filetype, datarep, info])

Set the file view.

Sync()

Causes all previous writes to be transferred to the storage device.

Write(buf[, status])

Write using individual file pointer.

Write_all(buf[, status])

Collective write using individual file pointer.

Write_all_begin(buf)

Start a split collective write using individual file pointer.

Write_all_end(buf[, status])

Complete a split collective write using individual file pointer.

Write_at(offset, buf[, status])

Write using explicit offset.

Write_at_all(offset, buf[, status])

Collective write using explicit offset.

Write_at_all_begin(offset, buf)

Start a split collective write using explicit offset.

Write_at_all_end(buf[, status])

Complete a split collective write using explicit offset.

Write_ordered(buf[, status])

Collective write using shared file pointer.

Write_ordered_begin(buf)

Start a split collective write using shared file pointer.

Write_ordered_end(buf[, status])

Complete a split collective write using shared file pointer.

Write_shared(buf[, status])

Write using shared file pointer.

f2py(arg)

free()

Call Close if not null.

fromhandle(handle)

Create object from MPI handle.

py2f()

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

amode

Access mode.

atomicity

Atomicity mode.

group

Group.

group_rank

Group rank.

group_size

Group size.

handle

MPI handle.

info

Info hints.

size

Size (in bytes).

+

Methods Documentation

+
+
+Call_errhandler(errorcode)
+

Call the error handler installed on a file.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Close()
+

Close a file.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Create_errhandler(errhandler_fn)
+

Create a new error handler for files.

+
+
Parameters:
+

errhandler_fn (Callable[[File, int], None])

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+classmethod Delete(filename, info=INFO_NULL)
+

Delete a file.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Get_amode()
+

Return the file access mode.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_atomicity()
+

Return the atomicity mode.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Get_byte_offset(offset)
+

Return the absolute byte position in the file.

+
+

Note

+

Input offset is measured in etype units +relative to the current file view.

+
+
+
Parameters:
+

offset (int)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_errhandler()
+

Get the error handler for a file.

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+Get_group()
+

Access the group of processes that opened the file.

+
+
Return type:
+

Group

+
+
+
+ +
+
+Get_info()
+

Return the current hints for a file.

+
+
Return type:
+

Info

+
+
+
+ +
+
+Get_position()
+

Return the current position of the individual file pointer.

+
+

Note

+

Position is measured in etype units +relative to the current file view.

+
+
+
Return type:
+

int

+
+
+
+ +
+
+Get_position_shared()
+

Return the current position of the shared file pointer.

+
+

Note

+

Position is measured in etype units +relative to the current view.

+
+
+
Return type:
+

int

+
+
+
+ +
+
+Get_size()
+

Return the file size.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_type_extent(datatype)
+

Return the extent of datatype in the file.

+
+
Parameters:
+

datatype (Datatype)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_view()
+

Return the file view.

+
+
Return type:
+

tuple[int, Datatype, Datatype, str]

+
+
+
+ +
+
+Iread(buf)
+

Nonblocking read using individual file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+Iread_all(buf)
+

Nonblocking collective read using individual file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+Iread_at(offset, buf)
+

Nonblocking read using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iread_at_all(offset, buf)
+

Nonblocking collective read using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iread_shared(buf)
+

Nonblocking read using shared file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+Iwrite(buf)
+

Nonblocking write using individual file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+Iwrite_all(buf)
+

Nonblocking collective write using individual file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+Iwrite_at(offset, buf)
+

Nonblocking write using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iwrite_at_all(offset, buf)
+

Nonblocking collective write using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iwrite_shared(buf)
+

Nonblocking write using shared file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+classmethod Open(comm, filename, amode=MODE_RDONLY, info=INFO_NULL)
+

Open a file.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Preallocate(size)
+

Preallocate storage space for a file.

+
+
Parameters:
+

size (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Read(buf, status=None)
+

Read using individual file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_all(buf, status=None)
+

Collective read using individual file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_all_begin(buf)
+

Start a split collective read using individual file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

None

+
+
+
+ +
+
+Read_all_end(buf, status=None)
+

Complete a split collective read using individual file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_at(offset, buf, status=None)
+

Read using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_at_all(offset, buf, status=None)
+

Collective read using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_at_all_begin(offset, buf)
+

Start a split collective read using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_at_all_end(buf, status=None)
+

Complete a split collective read using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_ordered(buf, status=None)
+

Collective read using shared file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_ordered_begin(buf)
+

Start a split collective read using shared file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

None

+
+
+
+ +
+
+Read_ordered_end(buf, status=None)
+

Complete a split collective read using shared file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Read_shared(buf, status=None)
+

Read using shared file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Seek(offset, whence=SEEK_SET)
+

Update the individual file pointer.

+
+
Parameters:
+
    +
  • offset (int)

  • +
  • whence (int)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Seek_shared(offset, whence=SEEK_SET)
+

Update the shared file pointer.

+
+
Parameters:
+
    +
  • offset (int)

  • +
  • whence (int)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Set_atomicity(flag)
+

Set the atomicity mode.

+
+
Parameters:
+

flag (bool)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_errhandler(errhandler)
+

Set the error handler for a file.

+
+
Parameters:
+

errhandler (Errhandler)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_info(info)
+

Set new values for the hints associated with a file.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_size(size)
+

Set the file size.

+
+
Parameters:
+

size (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_view(disp=0, etype=BYTE, filetype=None, datarep='native', info=INFO_NULL)
+

Set the file view.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Sync()
+

Causes all previous writes to be transferred to the storage device.

+
+
Return type:
+

None

+
+
+
+ +
+
+Write(buf, status=None)
+

Write using individual file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_all(buf, status=None)
+

Collective write using individual file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_all_begin(buf)
+

Start a split collective write using individual file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

None

+
+
+
+ +
+
+Write_all_end(buf, status=None)
+

Complete a split collective write using individual file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_at(offset, buf, status=None)
+

Write using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_at_all(offset, buf, status=None)
+

Collective write using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_at_all_begin(offset, buf)
+

Start a split collective write using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_at_all_end(buf, status=None)
+

Complete a split collective write using explicit offset.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_ordered(buf, status=None)
+

Collective write using shared file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_ordered_begin(buf)
+

Start a split collective write using shared file pointer.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

None

+
+
+
+ +
+
+Write_ordered_end(buf, status=None)
+

Complete a split collective write using shared file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Write_shared(buf, status=None)
+

Write using shared file pointer.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

File

+
+
+
+ +
+
+free()
+

Call Close if not null.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

File

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +

Attributes Documentation

+
+
+amode
+

Access mode.

+
+ +
+
+atomicity
+

Atomicity mode.

+
+ +
+
+group
+

Group.

+
+ +
+
+group_rank
+

Group rank.

+
+ +
+
+group_size
+

Group size.

+
+ +
+
+handle
+

MPI handle.

+
+ +
+
+info
+

Info hints.

+
+ +
+
+size
+

Size (in bytes).

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Finalize.html b/4.0.0/html/reference/mpi4py.MPI.Finalize.html new file mode 100644 index 0000000..266970e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Finalize.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Finalize — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Finalize

+
+
+mpi4py.MPI.Finalize()
+

Terminate the MPI execution environment.

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Flush_buffer.html b/4.0.0/html/reference/mpi4py.MPI.Flush_buffer.html new file mode 100644 index 0000000..c390f50 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Flush_buffer.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Flush_buffer — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Flush_buffer

+
+
+mpi4py.MPI.Flush_buffer()
+

Block until all buffered messages have been transmitted.

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Free_mem.html b/4.0.0/html/reference/mpi4py.MPI.Free_mem.html new file mode 100644 index 0000000..9a699c1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Free_mem.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Free_mem — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Free_mem

+
+
+mpi4py.MPI.Free_mem(mem)
+

Free memory allocated with Alloc_mem.

+
+
Parameters:
+

mem (buffer)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.GRAPH.html b/4.0.0/html/reference/mpi4py.MPI.GRAPH.html new file mode 100644 index 0000000..c9b1a23 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.GRAPH.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.GRAPH — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.GRAPH

+
+
+mpi4py.MPI.GRAPH: int = GRAPH
+

Constant GRAPH of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.GROUP_EMPTY.html b/4.0.0/html/reference/mpi4py.MPI.GROUP_EMPTY.html new file mode 100644 index 0000000..17a38bc --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.GROUP_EMPTY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.GROUP_EMPTY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.GROUP_EMPTY

+
+
+mpi4py.MPI.GROUP_EMPTY: Group = GROUP_EMPTY
+

Object GROUP_EMPTY of type Group

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.GROUP_NULL.html b/4.0.0/html/reference/mpi4py.MPI.GROUP_NULL.html new file mode 100644 index 0000000..757e7ae --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.GROUP_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.GROUP_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.GROUP_NULL

+
+
+mpi4py.MPI.GROUP_NULL: Group = GROUP_NULL
+

Object GROUP_NULL of type Group

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_address.html b/4.0.0/html/reference/mpi4py.MPI.Get_address.html new file mode 100644 index 0000000..3e71bed --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_address.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Get_address — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_address

+
+
+mpi4py.MPI.Get_address(location)
+

Get the address of a location in memory.

+
+
Parameters:
+

location (Buffer | Bottom)

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_error_class.html b/4.0.0/html/reference/mpi4py.MPI.Get_error_class.html new file mode 100644 index 0000000..b6ec50d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_error_class.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Get_error_class — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_error_class

+
+
+mpi4py.MPI.Get_error_class(errorcode)
+

Convert an error code into an error class.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_error_string.html b/4.0.0/html/reference/mpi4py.MPI.Get_error_string.html new file mode 100644 index 0000000..c5e536b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_error_string.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Get_error_string — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_error_string

+
+
+mpi4py.MPI.Get_error_string(errorcode)
+

Return the error string for a given error class or error code.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_hw_resource_info.html b/4.0.0/html/reference/mpi4py.MPI.Get_hw_resource_info.html new file mode 100644 index 0000000..c7f5361 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_hw_resource_info.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Get_hw_resource_info — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_hw_resource_info

+
+
+mpi4py.MPI.Get_hw_resource_info()
+

Obtain information about the hardware platform of the calling processor.

+
+
Return type:
+

Info

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_library_version.html b/4.0.0/html/reference/mpi4py.MPI.Get_library_version.html new file mode 100644 index 0000000..c1b4379 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_library_version.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Get_library_version — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_library_version

+
+
+mpi4py.MPI.Get_library_version()
+

Obtain the version string of the MPI library.

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_processor_name.html b/4.0.0/html/reference/mpi4py.MPI.Get_processor_name.html new file mode 100644 index 0000000..f0e5c8f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_processor_name.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Get_processor_name — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_processor_name

+
+
+mpi4py.MPI.Get_processor_name()
+

Obtain the name of the calling processor.

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Get_version.html b/4.0.0/html/reference/mpi4py.MPI.Get_version.html new file mode 100644 index 0000000..71d3085 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Get_version.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Get_version — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Get_version

+
+
+mpi4py.MPI.Get_version()
+

Obtain the version number of the MPI standard.

+
+
Return type:
+

tuple[int, int]

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Graphcomm.html b/4.0.0/html/reference/mpi4py.MPI.Graphcomm.html new file mode 100644 index 0000000..cf79a4d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Graphcomm.html @@ -0,0 +1,282 @@ + + + + + + + + mpi4py.MPI.Graphcomm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Graphcomm

+
+
+class mpi4py.MPI.Graphcomm
+

Bases: Topocomm

+

General graph topology intracommunicator.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Graphcomm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + +

Get_dims()

Return the number of nodes and edges.

Get_neighbors(rank)

Return list of neighbors of a process.

Get_neighbors_count(rank)

Return number of neighbors of a process.

Get_topo()

Return index and edges.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

dims

Number of nodes and edges.

edges

Edges.

index

Index.

nedges

Number of edges.

neighbors

Neighbors.

nneighbors

Number of neighbors.

nnodes

Number of nodes.

topo

Topology information.

+

Methods Documentation

+
+
+Get_dims()
+

Return the number of nodes and edges.

+
+
Return type:
+

tuple[int, int]

+
+
+
+ +
+
+Get_neighbors(rank)
+

Return list of neighbors of a process.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

list[int]

+
+
+
+ +
+
+Get_neighbors_count(rank)
+

Return number of neighbors of a process.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_topo()
+

Return index and edges.

+
+
Return type:
+

tuple[list[int], list[int]]

+
+
+
+ +

Attributes Documentation

+
+
+dims
+

Number of nodes and edges.

+
+ +
+
+edges
+

Edges.

+
+ +
+
+index
+

Index.

+
+ +
+
+nedges
+

Number of edges.

+
+ +
+
+neighbors
+

Neighbors.

+
+ +
+
+nneighbors
+

Number of neighbors.

+
+ +
+
+nnodes
+

Number of nodes.

+
+ +
+
+topo
+

Topology information.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Grequest.html b/4.0.0/html/reference/mpi4py.MPI.Grequest.html new file mode 100644 index 0000000..324426a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Grequest.html @@ -0,0 +1,196 @@ + + + + + + + + mpi4py.MPI.Grequest — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Grequest

+
+
+class mpi4py.MPI.Grequest
+

Bases: Request

+

Generalized request handler.

+
+
+static __new__(cls, request=None)
+
+
Parameters:
+

request (Grequest | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + +

Complete()

Notify that a user-defined request is complete.

Start([query_fn, free_fn, cancel_fn, args, ...])

Create and return a user-defined request.

complete([obj])

Notify that a user-defined request is complete.

+

Methods Documentation

+
+
+Complete()
+

Notify that a user-defined request is complete.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Start(query_fn=None, free_fn=None, cancel_fn=None, args=None, kwargs=None)
+

Create and return a user-defined request.

+
+
Parameters:
+
+
+
Return type:
+

Grequest

+
+
+
+ +
+
+complete(obj=None)
+

Notify that a user-defined request is complete.

+
+
Parameters:
+

obj (Any)

+
+
Return type:
+

None

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Group.html b/4.0.0/html/reference/mpi4py.MPI.Group.html new file mode 100644 index 0000000..e67d143 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Group.html @@ -0,0 +1,476 @@ + + + + + + + + mpi4py.MPI.Group — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Group

+
+
+class mpi4py.MPI.Group
+

Bases: object

+

Group of processes.

+
+
+static __new__(cls, group=None)
+
+
Parameters:
+

group (Group | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Compare(group)

Compare two groups.

Create_from_session_pset(session, pset_name)

Create a new group from session and process set.

Difference(group1, group2)

Create a new group from the difference of two existing groups.

Dup()

Duplicate a group.

Excl(ranks)

Create a new group by excluding listed members.

Free()

Free a group.

Get_rank()

Return the rank of this process in a group.

Get_size()

Return the number of processes in a group.

Incl(ranks)

Create a new group by including listed members.

Intersection(group1, group2)

Create a new group from the intersection of two existing groups.

Range_excl(ranks)

Create a new group by excluding ranges of members.

Range_incl(ranks)

Create a new group by including ranges of members.

Translate_ranks([ranks, group])

Translate ranks in a group to those in another group.

Union(group1, group2)

Create a new group from the union of two existing groups.

f2py(arg)

free()

Call Free if not null or predefined.

fromhandle(handle)

Create object from MPI handle.

py2f()

+

Attributes Summary

+ + + + + + + + + + + + +

handle

MPI handle.

rank

Rank of this process.

size

Number of processes.

+

Methods Documentation

+
+
+Compare(group)
+

Compare two groups.

+
+
Parameters:
+

group (Group)

+
+
Return type:
+

int

+
+
+
+ +
+
+classmethod Create_from_session_pset(session, pset_name)
+

Create a new group from session and process set.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Difference(group1, group2)
+

Create a new group from the difference of two existing groups.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Dup()
+

Duplicate a group.

+
+
Return type:
+

Self

+
+
+
+ +
+
+Excl(ranks)
+

Create a new group by excluding listed members.

+
+
Parameters:
+

ranks (Sequence[int])

+
+
Return type:
+

Self

+
+
+
+ +
+
+Free()
+

Free a group.

+
+
Return type:
+

None

+
+
+
+ +
+
+Get_rank()
+

Return the rank of this process in a group.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_size()
+

Return the number of processes in a group.

+
+
Return type:
+

int

+
+
+
+ +
+
+Incl(ranks)
+

Create a new group by including listed members.

+
+
Parameters:
+

ranks (Sequence[int])

+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Intersection(group1, group2)
+

Create a new group from the intersection of two existing groups.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Range_excl(ranks)
+

Create a new group by excluding ranges of members.

+
+
Parameters:
+

ranks (Sequence[tuple[int, int, int]])

+
+
Return type:
+

Self

+
+
+
+ +
+
+Range_incl(ranks)
+

Create a new group by including ranges of members.

+
+
Parameters:
+

ranks (Sequence[tuple[int, int, int]])

+
+
Return type:
+

Self

+
+
+
+ +
+
+Translate_ranks(ranks=None, group=None)
+

Translate ranks in a group to those in another group.

+
+
Parameters:
+
+
+
Return type:
+

list[int]

+
+
+
+ +
+
+classmethod Union(group1, group2)
+

Create a new group from the union of two existing groups.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Group

+
+
+
+ +
+
+free()
+

Call Free if not null or predefined.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Group

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+
+rank
+

Rank of this process.

+
+ +
+
+size
+

Number of processes.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.IDENT.html b/4.0.0/html/reference/mpi4py.MPI.IDENT.html new file mode 100644 index 0000000..a0bf176 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.IDENT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.IDENT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.IDENT

+
+
+mpi4py.MPI.IDENT: int = IDENT
+

Constant IDENT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INFO_ENV.html b/4.0.0/html/reference/mpi4py.MPI.INFO_ENV.html new file mode 100644 index 0000000..a3d0910 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INFO_ENV.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INFO_ENV — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INFO_ENV

+
+
+mpi4py.MPI.INFO_ENV: Info = INFO_ENV
+

Object INFO_ENV of type Info

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INFO_NULL.html b/4.0.0/html/reference/mpi4py.MPI.INFO_NULL.html new file mode 100644 index 0000000..5531246 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INFO_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INFO_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INFO_NULL

+
+
+mpi4py.MPI.INFO_NULL: Info = INFO_NULL
+

Object INFO_NULL of type Info

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INT.html b/4.0.0/html/reference/mpi4py.MPI.INT.html new file mode 100644 index 0000000..c8eedd8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INT

+
+
+mpi4py.MPI.INT: Datatype = INT
+

Object INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INT16_T.html b/4.0.0/html/reference/mpi4py.MPI.INT16_T.html new file mode 100644 index 0000000..960003e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INT16_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INT16_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INT16_T

+
+
+mpi4py.MPI.INT16_T: Datatype = INT16_T
+

Object INT16_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INT32_T.html b/4.0.0/html/reference/mpi4py.MPI.INT32_T.html new file mode 100644 index 0000000..9fb2a8b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INT32_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INT32_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INT32_T

+
+
+mpi4py.MPI.INT32_T: Datatype = INT32_T
+

Object INT32_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INT64_T.html b/4.0.0/html/reference/mpi4py.MPI.INT64_T.html new file mode 100644 index 0000000..a503ff6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INT64_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INT64_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INT64_T

+
+
+mpi4py.MPI.INT64_T: Datatype = INT64_T
+

Object INT64_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INT8_T.html b/4.0.0/html/reference/mpi4py.MPI.INT8_T.html new file mode 100644 index 0000000..3862522 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INT8_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INT8_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INT8_T

+
+
+mpi4py.MPI.INT8_T: Datatype = INT8_T
+

Object INT8_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INTEGER.html b/4.0.0/html/reference/mpi4py.MPI.INTEGER.html new file mode 100644 index 0000000..83b2ab9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INTEGER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INTEGER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INTEGER

+
+
+mpi4py.MPI.INTEGER: Datatype = INTEGER
+

Object INTEGER of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INTEGER1.html b/4.0.0/html/reference/mpi4py.MPI.INTEGER1.html new file mode 100644 index 0000000..d3ebfa3 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INTEGER1.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INTEGER1 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INTEGER1

+
+
+mpi4py.MPI.INTEGER1: Datatype = INTEGER1
+

Object INTEGER1 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INTEGER16.html b/4.0.0/html/reference/mpi4py.MPI.INTEGER16.html new file mode 100644 index 0000000..32fa121 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INTEGER16.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INTEGER16 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INTEGER16

+
+
+mpi4py.MPI.INTEGER16: Datatype = INTEGER16
+

Object INTEGER16 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INTEGER2.html b/4.0.0/html/reference/mpi4py.MPI.INTEGER2.html new file mode 100644 index 0000000..65d4f87 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INTEGER2.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INTEGER2 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INTEGER2

+
+
+mpi4py.MPI.INTEGER2: Datatype = INTEGER2
+

Object INTEGER2 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INTEGER4.html b/4.0.0/html/reference/mpi4py.MPI.INTEGER4.html new file mode 100644 index 0000000..6ecafdf --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INTEGER4.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INTEGER4 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INTEGER4

+
+
+mpi4py.MPI.INTEGER4: Datatype = INTEGER4
+

Object INTEGER4 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INTEGER8.html b/4.0.0/html/reference/mpi4py.MPI.INTEGER8.html new file mode 100644 index 0000000..ed9218c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INTEGER8.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INTEGER8 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INTEGER8

+
+
+mpi4py.MPI.INTEGER8: Datatype = INTEGER8
+

Object INTEGER8 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.INT_INT.html b/4.0.0/html/reference/mpi4py.MPI.INT_INT.html new file mode 100644 index 0000000..5ce9294 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.INT_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.INT_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.INT_INT

+
+
+mpi4py.MPI.INT_INT: Datatype = INT_INT
+

Object INT_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.IN_PLACE.html b/4.0.0/html/reference/mpi4py.MPI.IN_PLACE.html new file mode 100644 index 0000000..cdcc37e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.IN_PLACE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.IN_PLACE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.IN_PLACE

+
+
+mpi4py.MPI.IN_PLACE: InPlaceType = IN_PLACE
+

Constant IN_PLACE of type InPlaceType

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.IO.html b/4.0.0/html/reference/mpi4py.MPI.IO.html new file mode 100644 index 0000000..de4eadd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.IO.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.IO — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.IO

+
+
+mpi4py.MPI.IO: int = IO
+

Constant IO of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Iflush_buffer.html b/4.0.0/html/reference/mpi4py.MPI.Iflush_buffer.html new file mode 100644 index 0000000..c330fdd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Iflush_buffer.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Iflush_buffer — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Iflush_buffer

+
+
+mpi4py.MPI.Iflush_buffer()
+

Nonblocking flush for buffered messages.

+
+
Return type:
+

Request

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.InPlaceType.html b/4.0.0/html/reference/mpi4py.MPI.InPlaceType.html new file mode 100644 index 0000000..34e6640 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.InPlaceType.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.InPlaceType — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.InPlaceType

+
+
+class mpi4py.MPI.InPlaceType
+

Bases: int

+

Type of IN_PLACE.

+
+
+static __new__(cls)
+
+
Return type:
+

Self

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Info.html b/4.0.0/html/reference/mpi4py.MPI.Info.html new file mode 100644 index 0000000..70a9028 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Info.html @@ -0,0 +1,508 @@ + + + + + + + + mpi4py.MPI.Info — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Info

+
+
+class mpi4py.MPI.Info
+

Bases: object

+

Info object.

+
+
+static __new__(cls, info=None)
+
+
Parameters:
+

info (Info | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Create([items])

Create a new info object.

Create_env([args])

Create a new environment info object.

Delete(key)

Remove a (key, value) pair from info.

Dup()

Duplicate an existing info object.

Free()

Free an info object.

Get(key)

Retrieve the value associated with a key.

Get_nkeys()

Return the number of currently defined keys in info.

Get_nthkey(n)

Return the n-th defined key in info.

Set(key, value)

Store a value associated with a key.

clear()

Clear contents.

copy()

Copy contents.

f2py(arg)

free()

Call Free if not null or predefined.

fromhandle(handle)

Create object from MPI handle.

get(key[, default])

Retrieve value by key.

items()

Return list of items.

keys()

Return list of keys.

pop(key, *default)

Pop value by key.

popitem()

Pop first item.

py2f()

update([items])

Update contents.

values()

Return list of values.

+

Attributes Summary

+ + + + + + +

handle

MPI handle.

+

Methods Documentation

+
+
+classmethod Create(items=None)
+

Create a new info object.

+
+
Parameters:
+

items (Info | Mapping[str, str] | Iterable[tuple[str, str]] | None)

+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_env(args=None)
+

Create a new environment info object.

+
+
Parameters:
+

args (Sequence[str] | None)

+
+
Return type:
+

Self

+
+
+
+ +
+
+Delete(key)
+

Remove a (key, value) pair from info.

+
+
Parameters:
+

key (str)

+
+
Return type:
+

None

+
+
+
+ +
+
+Dup()
+

Duplicate an existing info object.

+
+
Return type:
+

Self

+
+
+
+ +
+
+Free()
+

Free an info object.

+
+
Return type:
+

None

+
+
+
+ +
+
+Get(key)
+

Retrieve the value associated with a key.

+
+
Parameters:
+

key (str)

+
+
Return type:
+

str | None

+
+
+
+ +
+
+Get_nkeys()
+

Return the number of currently defined keys in info.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_nthkey(n)
+

Return the n-th defined key in info.

+
+
Parameters:
+

n (int)

+
+
Return type:
+

str

+
+
+
+ +
+
+Set(key, value)
+

Store a value associated with a key.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+clear()
+

Clear contents.

+
+
Return type:
+

None

+
+
+
+ +
+
+copy()
+

Copy contents.

+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Info

+
+
+
+ +
+
+free()
+

Call Free if not null or predefined.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Info

+
+
+
+ +
+
+get(key, default=None)
+

Retrieve value by key.

+
+
Parameters:
+
+
+
Return type:
+

str | None

+
+
+
+ +
+
+items()
+

Return list of items.

+
+
Return type:
+

list[tuple[str, str]]

+
+
+
+ +
+
+keys()
+

Return list of keys.

+
+
Return type:
+

list[str]

+
+
+
+ +
+
+pop(key, *default)
+

Pop value by key.

+
+
Parameters:
+
+
+
Return type:
+

str

+
+
+
+ +
+
+popitem()
+

Pop first item.

+
+
Return type:
+

tuple[str, str]

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +
+
+update(items=(), **kwds)
+

Update contents.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+values()
+

Return list of values.

+
+
Return type:
+

list[str]

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Init.html b/4.0.0/html/reference/mpi4py.MPI.Init.html new file mode 100644 index 0000000..db801c5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Init.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Init — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Init

+
+
+mpi4py.MPI.Init()
+

Initialize the MPI execution environment.

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Init_thread.html b/4.0.0/html/reference/mpi4py.MPI.Init_thread.html new file mode 100644 index 0000000..50c2c23 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Init_thread.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Init_thread — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Init_thread

+
+
+mpi4py.MPI.Init_thread(required=THREAD_MULTIPLE)
+

Initialize the MPI execution environment.

+
+
Parameters:
+

required (int)

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Intercomm.html b/4.0.0/html/reference/mpi4py.MPI.Intercomm.html new file mode 100644 index 0000000..231e525 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Intercomm.html @@ -0,0 +1,236 @@ + + + + + + + + mpi4py.MPI.Intercomm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Intercomm

+
+
+class mpi4py.MPI.Intercomm
+

Bases: Comm

+

Intercommunicator.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Intercomm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + +

Create_from_groups(local_group, ...[, ...])

Create communicator from group.

Get_remote_group()

Access the remote group associated with the inter-communicator.

Get_remote_size()

Intercommunicator remote size.

Merge([high])

Merge intercommunicator into an intracommunicator.

+

Attributes Summary

+ + + + + + + + + +

remote_group

Remote group.

remote_size

Number of remote processes.

+

Methods Documentation

+
+
+classmethod Create_from_groups(local_group, local_leader, remote_group, remote_leader, stringtag='org.mpi4py', info=INFO_NULL, errhandler=None)
+

Create communicator from group.

+
+
Parameters:
+
+
+
Return type:
+

Intracomm

+
+
+
+ +
+
+Get_remote_group()
+

Access the remote group associated with the inter-communicator.

+
+
Return type:
+

Group

+
+
+
+ +
+
+Get_remote_size()
+

Intercommunicator remote size.

+
+
Return type:
+

int

+
+
+
+ +
+
+Merge(high=False)
+

Merge intercommunicator into an intracommunicator.

+
+
Parameters:
+

high (bool)

+
+
Return type:
+

Intracomm

+
+
+
+ +

Attributes Documentation

+
+
+remote_group
+

Remote group.

+
+ +
+
+remote_size
+

Number of remote processes.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Intracomm.html b/4.0.0/html/reference/mpi4py.MPI.Intracomm.html new file mode 100644 index 0000000..cfd2565 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Intracomm.html @@ -0,0 +1,594 @@ + + + + + + + + mpi4py.MPI.Intracomm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Intracomm

+
+
+class mpi4py.MPI.Intracomm
+

Bases: Comm

+

Intracommunicator.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Intracomm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Accept(port_name[, info, root])

Accept a request to form a new intercommunicator.

Cart_map(dims[, periods])

Determine optimal process placement on a Cartesian topology.

Connect(port_name[, info, root])

Make a request to form a new intercommunicator.

Create_cart(dims[, periods, reorder])

Create cartesian communicator.

Create_dist_graph(sources, degrees, destinations)

Create distributed graph communicator.

Create_dist_graph_adjacent(sources, destinations)

Create distributed graph communicator.

Create_from_group(group[, stringtag, info, ...])

Create communicator from group.

Create_graph(index, edges[, reorder])

Create graph communicator.

Create_group(group[, tag])

Create communicator from group.

Create_intercomm(local_leader, peer_comm, ...)

Create intercommunicator.

Exscan(sendbuf, recvbuf[, op])

Exclusive Scan.

Exscan_init(sendbuf, recvbuf[, op, info])

Persistent Exclusive Scan.

Graph_map(index, edges)

Determine optimal process placement on a graph topology.

Iexscan(sendbuf, recvbuf[, op])

Inclusive Scan.

Iscan(sendbuf, recvbuf[, op])

Inclusive Scan.

Scan(sendbuf, recvbuf[, op])

Inclusive Scan.

Scan_init(sendbuf, recvbuf[, op, info])

Persistent Inclusive Scan.

Spawn(command[, args, maxprocs, info, root, ...])

Spawn instances of a single MPI application.

Spawn_multiple(command[, args, maxprocs, ...])

Spawn instances of multiple MPI applications.

exscan(sendobj[, op])

Exclusive Scan.

scan(sendobj[, op])

Inclusive Scan.

+

Methods Documentation

+
+
+Accept(port_name, info=INFO_NULL, root=0)
+

Accept a request to form a new intercommunicator.

+
+
Parameters:
+
+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+Cart_map(dims, periods=None)
+

Determine optimal process placement on a Cartesian topology.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Connect(port_name, info=INFO_NULL, root=0)
+

Make a request to form a new intercommunicator.

+
+
Parameters:
+
+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+Create_cart(dims, periods=None, reorder=False)
+

Create cartesian communicator.

+
+
Parameters:
+
+
+
Return type:
+

Cartcomm

+
+
+
+ +
+
+Create_dist_graph(sources, degrees, destinations, weights=None, info=INFO_NULL, reorder=False)
+

Create distributed graph communicator.

+
+
Parameters:
+
+
+
Return type:
+

Distgraphcomm

+
+
+
+ +
+
+Create_dist_graph_adjacent(sources, destinations, sourceweights=None, destweights=None, info=INFO_NULL, reorder=False)
+

Create distributed graph communicator.

+
+
Parameters:
+
+
+
Return type:
+

Distgraphcomm

+
+
+
+ +
+
+classmethod Create_from_group(group, stringtag='org.mpi4py', info=INFO_NULL, errhandler=None)
+

Create communicator from group.

+
+
Parameters:
+
+
+
Return type:
+

Intracomm

+
+
+
+ +
+
+Create_graph(index, edges, reorder=False)
+

Create graph communicator.

+
+
Parameters:
+
+
+
Return type:
+

Graphcomm

+
+
+
+ +
+
+Create_group(group, tag=0)
+

Create communicator from group.

+
+
Parameters:
+
+
+
Return type:
+

Intracomm

+
+
+
+ +
+
+Create_intercomm(local_leader, peer_comm, remote_leader, tag=0)
+

Create intercommunicator.

+
+
Parameters:
+
+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+Exscan(sendbuf, recvbuf, op=SUM)
+

Exclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Exscan_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL)
+

Persistent Exclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Graph_map(index, edges)
+

Determine optimal process placement on a graph topology.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Iexscan(sendbuf, recvbuf, op=SUM)
+

Inclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Iscan(sendbuf, recvbuf, op=SUM)
+

Inclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Scan(sendbuf, recvbuf, op=SUM)
+

Inclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Scan_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL)
+

Persistent Inclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Spawn(command, args=None, maxprocs=1, info=INFO_NULL, root=0, errcodes=None)
+

Spawn instances of a single MPI application.

+
+
Parameters:
+
+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+Spawn_multiple(command, args=None, maxprocs=None, info=INFO_NULL, root=0, errcodes=None)
+

Spawn instances of multiple MPI applications.

+
+
Parameters:
+
+
+
Return type:
+

Intercomm

+
+
+
+ +
+
+exscan(sendobj, op=SUM)
+

Exclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+
+scan(sendobj, op=SUM)
+

Inclusive Scan.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Is_finalized.html b/4.0.0/html/reference/mpi4py.MPI.Is_finalized.html new file mode 100644 index 0000000..47ae818 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Is_finalized.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Is_finalized — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Is_finalized

+
+
+mpi4py.MPI.Is_finalized()
+

Indicate whether Finalize has completed.

+
+
Return type:
+

bool

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Is_initialized.html b/4.0.0/html/reference/mpi4py.MPI.Is_initialized.html new file mode 100644 index 0000000..2266d8b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Is_initialized.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Is_initialized — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Is_initialized

+
+
+mpi4py.MPI.Is_initialized()
+

Indicate whether Init has been called.

+
+
Return type:
+

bool

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Is_thread_main.html b/4.0.0/html/reference/mpi4py.MPI.Is_thread_main.html new file mode 100644 index 0000000..3d428e6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Is_thread_main.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Is_thread_main — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Is_thread_main

+
+
+mpi4py.MPI.Is_thread_main()
+

Indicate whether this thread called Init or Init_thread.

+
+
Return type:
+

bool

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.KEYVAL_INVALID.html b/4.0.0/html/reference/mpi4py.MPI.KEYVAL_INVALID.html new file mode 100644 index 0000000..be1198a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.KEYVAL_INVALID.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.KEYVAL_INVALID — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.KEYVAL_INVALID

+
+
+mpi4py.MPI.KEYVAL_INVALID: int = KEYVAL_INVALID
+

Constant KEYVAL_INVALID of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LAND.html b/4.0.0/html/reference/mpi4py.MPI.LAND.html new file mode 100644 index 0000000..51f7802 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LAND.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.LAND — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LAND

+
+
+mpi4py.MPI.LAND: Op = LAND
+

Object LAND of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LASTUSEDCODE.html b/4.0.0/html/reference/mpi4py.MPI.LASTUSEDCODE.html new file mode 100644 index 0000000..f667d91 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LASTUSEDCODE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LASTUSEDCODE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LASTUSEDCODE

+
+
+mpi4py.MPI.LASTUSEDCODE: int = LASTUSEDCODE
+

Constant LASTUSEDCODE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOCK_EXCLUSIVE.html b/4.0.0/html/reference/mpi4py.MPI.LOCK_EXCLUSIVE.html new file mode 100644 index 0000000..f5eae12 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOCK_EXCLUSIVE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOCK_EXCLUSIVE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOCK_EXCLUSIVE

+
+
+mpi4py.MPI.LOCK_EXCLUSIVE: int = LOCK_EXCLUSIVE
+

Constant LOCK_EXCLUSIVE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOCK_SHARED.html b/4.0.0/html/reference/mpi4py.MPI.LOCK_SHARED.html new file mode 100644 index 0000000..85c7ae2 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOCK_SHARED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOCK_SHARED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOCK_SHARED

+
+
+mpi4py.MPI.LOCK_SHARED: int = LOCK_SHARED
+

Constant LOCK_SHARED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOGICAL.html b/4.0.0/html/reference/mpi4py.MPI.LOGICAL.html new file mode 100644 index 0000000..a606e3b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOGICAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOGICAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOGICAL

+
+
+mpi4py.MPI.LOGICAL: Datatype = LOGICAL
+

Object LOGICAL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOGICAL1.html b/4.0.0/html/reference/mpi4py.MPI.LOGICAL1.html new file mode 100644 index 0000000..3674e41 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOGICAL1.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOGICAL1 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOGICAL1

+
+
+mpi4py.MPI.LOGICAL1: Datatype = LOGICAL1
+

Object LOGICAL1 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOGICAL2.html b/4.0.0/html/reference/mpi4py.MPI.LOGICAL2.html new file mode 100644 index 0000000..51731e2 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOGICAL2.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOGICAL2 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOGICAL2

+
+
+mpi4py.MPI.LOGICAL2: Datatype = LOGICAL2
+

Object LOGICAL2 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOGICAL4.html b/4.0.0/html/reference/mpi4py.MPI.LOGICAL4.html new file mode 100644 index 0000000..6c9ad54 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOGICAL4.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOGICAL4 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOGICAL4

+
+
+mpi4py.MPI.LOGICAL4: Datatype = LOGICAL4
+

Object LOGICAL4 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOGICAL8.html b/4.0.0/html/reference/mpi4py.MPI.LOGICAL8.html new file mode 100644 index 0000000..c80eea4 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOGICAL8.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LOGICAL8 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOGICAL8

+
+
+mpi4py.MPI.LOGICAL8: Datatype = LOGICAL8
+

Object LOGICAL8 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LONG.html b/4.0.0/html/reference/mpi4py.MPI.LONG.html new file mode 100644 index 0000000..73cf8af --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LONG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LONG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LONG

+
+
+mpi4py.MPI.LONG: Datatype = LONG
+

Object LONG of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LONG_DOUBLE.html b/4.0.0/html/reference/mpi4py.MPI.LONG_DOUBLE.html new file mode 100644 index 0000000..3fd4cfb --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LONG_DOUBLE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LONG_DOUBLE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LONG_DOUBLE

+
+
+mpi4py.MPI.LONG_DOUBLE: Datatype = LONG_DOUBLE
+

Object LONG_DOUBLE of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LONG_DOUBLE_INT.html b/4.0.0/html/reference/mpi4py.MPI.LONG_DOUBLE_INT.html new file mode 100644 index 0000000..dd7bacf --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LONG_DOUBLE_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LONG_DOUBLE_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LONG_DOUBLE_INT

+
+
+mpi4py.MPI.LONG_DOUBLE_INT: Datatype = LONG_DOUBLE_INT
+

Object LONG_DOUBLE_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LONG_INT.html b/4.0.0/html/reference/mpi4py.MPI.LONG_INT.html new file mode 100644 index 0000000..f62340f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LONG_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LONG_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LONG_INT

+
+
+mpi4py.MPI.LONG_INT: Datatype = LONG_INT
+

Object LONG_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LONG_LONG.html b/4.0.0/html/reference/mpi4py.MPI.LONG_LONG.html new file mode 100644 index 0000000..b3fab57 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LONG_LONG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.LONG_LONG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LONG_LONG

+
+
+mpi4py.MPI.LONG_LONG: Datatype = LONG_LONG
+

Object LONG_LONG of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LOR.html b/4.0.0/html/reference/mpi4py.MPI.LOR.html new file mode 100644 index 0000000..888fef1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LOR.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.LOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LOR

+
+
+mpi4py.MPI.LOR: Op = LOR
+

Object LOR of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.LXOR.html b/4.0.0/html/reference/mpi4py.MPI.LXOR.html new file mode 100644 index 0000000..bf640b8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.LXOR.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.LXOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.LXOR

+
+
+mpi4py.MPI.LXOR: Op = LXOR
+

Object LXOR of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Lookup_name.html b/4.0.0/html/reference/mpi4py.MPI.Lookup_name.html new file mode 100644 index 0000000..93ebbc2 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Lookup_name.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.Lookup_name — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Lookup_name

+
+
+mpi4py.MPI.Lookup_name(service_name, info=INFO_NULL)
+

Lookup a port name given a service name.

+
+
Parameters:
+
    +
  • service_name (str)

  • +
  • info (Info)

  • +
+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX.html b/4.0.0/html/reference/mpi4py.MPI.MAX.html new file mode 100644 index 0000000..99180cd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.MAX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX

+
+
+mpi4py.MPI.MAX: Op = MAX
+

Object MAX of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAXLOC.html b/4.0.0/html/reference/mpi4py.MPI.MAXLOC.html new file mode 100644 index 0000000..006ac5d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAXLOC.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.MAXLOC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAXLOC

+
+
+mpi4py.MPI.MAXLOC: Op = MAXLOC
+

Object MAXLOC of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_DATAREP_STRING.html b/4.0.0/html/reference/mpi4py.MPI.MAX_DATAREP_STRING.html new file mode 100644 index 0000000..1b4221b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_DATAREP_STRING.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_DATAREP_STRING — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_DATAREP_STRING

+
+
+mpi4py.MPI.MAX_DATAREP_STRING: int = MAX_DATAREP_STRING
+

Constant MAX_DATAREP_STRING of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_ERROR_STRING.html b/4.0.0/html/reference/mpi4py.MPI.MAX_ERROR_STRING.html new file mode 100644 index 0000000..52c729c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_ERROR_STRING.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_ERROR_STRING — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_ERROR_STRING

+
+
+mpi4py.MPI.MAX_ERROR_STRING: int = MAX_ERROR_STRING
+

Constant MAX_ERROR_STRING of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_INFO_KEY.html b/4.0.0/html/reference/mpi4py.MPI.MAX_INFO_KEY.html new file mode 100644 index 0000000..bbf4da1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_INFO_KEY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_INFO_KEY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_INFO_KEY

+
+
+mpi4py.MPI.MAX_INFO_KEY: int = MAX_INFO_KEY
+

Constant MAX_INFO_KEY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_INFO_VAL.html b/4.0.0/html/reference/mpi4py.MPI.MAX_INFO_VAL.html new file mode 100644 index 0000000..c365079 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_INFO_VAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_INFO_VAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_INFO_VAL

+
+
+mpi4py.MPI.MAX_INFO_VAL: int = MAX_INFO_VAL
+

Constant MAX_INFO_VAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_LIBRARY_VERSION_STRING.html b/4.0.0/html/reference/mpi4py.MPI.MAX_LIBRARY_VERSION_STRING.html new file mode 100644 index 0000000..655e78e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_LIBRARY_VERSION_STRING.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_LIBRARY_VERSION_STRING — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_LIBRARY_VERSION_STRING

+
+
+mpi4py.MPI.MAX_LIBRARY_VERSION_STRING: int = MAX_LIBRARY_VERSION_STRING
+

Constant MAX_LIBRARY_VERSION_STRING of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_OBJECT_NAME.html b/4.0.0/html/reference/mpi4py.MPI.MAX_OBJECT_NAME.html new file mode 100644 index 0000000..98f6e5e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_OBJECT_NAME.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_OBJECT_NAME — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_OBJECT_NAME

+
+
+mpi4py.MPI.MAX_OBJECT_NAME: int = MAX_OBJECT_NAME
+

Constant MAX_OBJECT_NAME of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_PORT_NAME.html b/4.0.0/html/reference/mpi4py.MPI.MAX_PORT_NAME.html new file mode 100644 index 0000000..7ab098a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_PORT_NAME.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_PORT_NAME — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_PORT_NAME

+
+
+mpi4py.MPI.MAX_PORT_NAME: int = MAX_PORT_NAME
+

Constant MAX_PORT_NAME of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_PROCESSOR_NAME.html b/4.0.0/html/reference/mpi4py.MPI.MAX_PROCESSOR_NAME.html new file mode 100644 index 0000000..6aa404e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_PROCESSOR_NAME.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_PROCESSOR_NAME — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_PROCESSOR_NAME

+
+
+mpi4py.MPI.MAX_PROCESSOR_NAME: int = MAX_PROCESSOR_NAME
+

Constant MAX_PROCESSOR_NAME of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_PSET_NAME_LEN.html b/4.0.0/html/reference/mpi4py.MPI.MAX_PSET_NAME_LEN.html new file mode 100644 index 0000000..cf1258a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_PSET_NAME_LEN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_PSET_NAME_LEN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_PSET_NAME_LEN

+
+
+mpi4py.MPI.MAX_PSET_NAME_LEN: int = MAX_PSET_NAME_LEN
+

Constant MAX_PSET_NAME_LEN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MAX_STRINGTAG_LEN.html b/4.0.0/html/reference/mpi4py.MPI.MAX_STRINGTAG_LEN.html new file mode 100644 index 0000000..bbc9626 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MAX_STRINGTAG_LEN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MAX_STRINGTAG_LEN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MAX_STRINGTAG_LEN

+
+
+mpi4py.MPI.MAX_STRINGTAG_LEN: int = MAX_STRINGTAG_LEN
+

Constant MAX_STRINGTAG_LEN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MESSAGE_NO_PROC.html b/4.0.0/html/reference/mpi4py.MPI.MESSAGE_NO_PROC.html new file mode 100644 index 0000000..df00d7f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MESSAGE_NO_PROC.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MESSAGE_NO_PROC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MESSAGE_NO_PROC

+
+
+mpi4py.MPI.MESSAGE_NO_PROC: Message = MESSAGE_NO_PROC
+

Object MESSAGE_NO_PROC of type Message

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MESSAGE_NULL.html b/4.0.0/html/reference/mpi4py.MPI.MESSAGE_NULL.html new file mode 100644 index 0000000..78f9db8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MESSAGE_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MESSAGE_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MESSAGE_NULL

+
+
+mpi4py.MPI.MESSAGE_NULL: Message = MESSAGE_NULL
+

Object MESSAGE_NULL of type Message

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MIN.html b/4.0.0/html/reference/mpi4py.MPI.MIN.html new file mode 100644 index 0000000..a7c1c85 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MIN.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.MIN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MIN

+
+
+mpi4py.MPI.MIN: Op = MIN
+

Object MIN of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MINLOC.html b/4.0.0/html/reference/mpi4py.MPI.MINLOC.html new file mode 100644 index 0000000..6f3a259 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MINLOC.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.MINLOC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MINLOC

+
+
+mpi4py.MPI.MINLOC: Op = MINLOC
+

Object MINLOC of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_APPEND.html b/4.0.0/html/reference/mpi4py.MPI.MODE_APPEND.html new file mode 100644 index 0000000..25e1d30 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_APPEND.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_APPEND — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_APPEND

+
+
+mpi4py.MPI.MODE_APPEND: int = MODE_APPEND
+

Constant MODE_APPEND of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_CREATE.html b/4.0.0/html/reference/mpi4py.MPI.MODE_CREATE.html new file mode 100644 index 0000000..4d65528 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_CREATE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_CREATE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_CREATE

+
+
+mpi4py.MPI.MODE_CREATE: int = MODE_CREATE
+

Constant MODE_CREATE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_DELETE_ON_CLOSE.html b/4.0.0/html/reference/mpi4py.MPI.MODE_DELETE_ON_CLOSE.html new file mode 100644 index 0000000..2b5547b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_DELETE_ON_CLOSE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_DELETE_ON_CLOSE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_DELETE_ON_CLOSE

+
+
+mpi4py.MPI.MODE_DELETE_ON_CLOSE: int = MODE_DELETE_ON_CLOSE
+

Constant MODE_DELETE_ON_CLOSE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_EXCL.html b/4.0.0/html/reference/mpi4py.MPI.MODE_EXCL.html new file mode 100644 index 0000000..b947951 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_EXCL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_EXCL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_EXCL

+
+
+mpi4py.MPI.MODE_EXCL: int = MODE_EXCL
+

Constant MODE_EXCL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_NOCHECK.html b/4.0.0/html/reference/mpi4py.MPI.MODE_NOCHECK.html new file mode 100644 index 0000000..7dfdc0a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_NOCHECK.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_NOCHECK — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_NOCHECK

+
+
+mpi4py.MPI.MODE_NOCHECK: int = MODE_NOCHECK
+

Constant MODE_NOCHECK of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_NOPRECEDE.html b/4.0.0/html/reference/mpi4py.MPI.MODE_NOPRECEDE.html new file mode 100644 index 0000000..1ae6590 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_NOPRECEDE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_NOPRECEDE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_NOPRECEDE

+
+
+mpi4py.MPI.MODE_NOPRECEDE: int = MODE_NOPRECEDE
+

Constant MODE_NOPRECEDE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_NOPUT.html b/4.0.0/html/reference/mpi4py.MPI.MODE_NOPUT.html new file mode 100644 index 0000000..756e943 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_NOPUT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_NOPUT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_NOPUT

+
+
+mpi4py.MPI.MODE_NOPUT: int = MODE_NOPUT
+

Constant MODE_NOPUT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_NOSTORE.html b/4.0.0/html/reference/mpi4py.MPI.MODE_NOSTORE.html new file mode 100644 index 0000000..9527eea --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_NOSTORE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_NOSTORE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_NOSTORE

+
+
+mpi4py.MPI.MODE_NOSTORE: int = MODE_NOSTORE
+

Constant MODE_NOSTORE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_NOSUCCEED.html b/4.0.0/html/reference/mpi4py.MPI.MODE_NOSUCCEED.html new file mode 100644 index 0000000..dd8dd87 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_NOSUCCEED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_NOSUCCEED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_NOSUCCEED

+
+
+mpi4py.MPI.MODE_NOSUCCEED: int = MODE_NOSUCCEED
+

Constant MODE_NOSUCCEED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_RDONLY.html b/4.0.0/html/reference/mpi4py.MPI.MODE_RDONLY.html new file mode 100644 index 0000000..2f7b882 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_RDONLY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_RDONLY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_RDONLY

+
+
+mpi4py.MPI.MODE_RDONLY: int = MODE_RDONLY
+

Constant MODE_RDONLY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_RDWR.html b/4.0.0/html/reference/mpi4py.MPI.MODE_RDWR.html new file mode 100644 index 0000000..97a6e77 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_RDWR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_RDWR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_RDWR

+
+
+mpi4py.MPI.MODE_RDWR: int = MODE_RDWR
+

Constant MODE_RDWR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_SEQUENTIAL.html b/4.0.0/html/reference/mpi4py.MPI.MODE_SEQUENTIAL.html new file mode 100644 index 0000000..ff29c74 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_SEQUENTIAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_SEQUENTIAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_SEQUENTIAL

+
+
+mpi4py.MPI.MODE_SEQUENTIAL: int = MODE_SEQUENTIAL
+

Constant MODE_SEQUENTIAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_UNIQUE_OPEN.html b/4.0.0/html/reference/mpi4py.MPI.MODE_UNIQUE_OPEN.html new file mode 100644 index 0000000..0513f1b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_UNIQUE_OPEN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_UNIQUE_OPEN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_UNIQUE_OPEN

+
+
+mpi4py.MPI.MODE_UNIQUE_OPEN: int = MODE_UNIQUE_OPEN
+

Constant MODE_UNIQUE_OPEN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.MODE_WRONLY.html b/4.0.0/html/reference/mpi4py.MPI.MODE_WRONLY.html new file mode 100644 index 0000000..bf7eefd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.MODE_WRONLY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.MODE_WRONLY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.MODE_WRONLY

+
+
+mpi4py.MPI.MODE_WRONLY: int = MODE_WRONLY
+

Constant MODE_WRONLY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Message.html b/4.0.0/html/reference/mpi4py.MPI.Message.html new file mode 100644 index 0000000..44cc567 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Message.html @@ -0,0 +1,373 @@ + + + + + + + + mpi4py.MPI.Message — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Message

+
+
+class mpi4py.MPI.Message
+

Bases: object

+

Matched message.

+
+
+static __new__(cls, message=None)
+
+
Parameters:
+

message (Message | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Iprobe(comm[, source, tag, status])

Nonblocking test for a matched message.

Irecv(buf)

Nonblocking receive of matched message.

Probe(comm[, source, tag, status])

Blocking test for a matched message.

Recv(buf[, status])

Blocking receive of matched message.

f2py(arg)

free()

Do nothing.

fromhandle(handle)

Create object from MPI handle.

iprobe(comm[, source, tag, status])

Nonblocking test for a matched message.

irecv()

Nonblocking receive of matched message.

probe(comm[, source, tag, status])

Blocking test for a matched message.

py2f()

recv([status])

Blocking receive of matched message.

+

Attributes Summary

+ + + + + + +

handle

MPI handle.

+

Methods Documentation

+
+
+classmethod Iprobe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Self | None

+
+
+
+ +
+
+Irecv(buf)
+

Nonblocking receive of matched message.

+
+
Parameters:
+

buf (BufSpec)

+
+
Return type:
+

Request

+
+
+
+ +
+
+classmethod Probe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Recv(buf, status=None)
+

Blocking receive of matched message.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Message

+
+
+
+ +
+
+free()
+

Do nothing.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Message

+
+
+
+ +
+
+classmethod iprobe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Nonblocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Self | None

+
+
+
+ +
+
+irecv()
+

Nonblocking receive of matched message.

+
+
Return type:
+

Request

+
+
+
+ +
+
+classmethod probe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None)
+

Blocking test for a matched message.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +
+
+recv(status=None)
+

Blocking receive of matched message.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

Any

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.NO_OP.html b/4.0.0/html/reference/mpi4py.MPI.NO_OP.html new file mode 100644 index 0000000..3f22072 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.NO_OP.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.NO_OP — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.NO_OP

+
+
+mpi4py.MPI.NO_OP: Op = NO_OP
+

Object NO_OP of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.OFFSET.html b/4.0.0/html/reference/mpi4py.MPI.OFFSET.html new file mode 100644 index 0000000..22a840a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.OFFSET.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.OFFSET — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.OFFSET

+
+
+mpi4py.MPI.OFFSET: Datatype = OFFSET
+

Object OFFSET of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.OP_NULL.html b/4.0.0/html/reference/mpi4py.MPI.OP_NULL.html new file mode 100644 index 0000000..eca238c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.OP_NULL.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.OP_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.OP_NULL

+
+
+mpi4py.MPI.OP_NULL: Op = OP_NULL
+

Object OP_NULL of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ORDER_C.html b/4.0.0/html/reference/mpi4py.MPI.ORDER_C.html new file mode 100644 index 0000000..bb5fb8d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ORDER_C.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ORDER_C — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ORDER_C

+
+
+mpi4py.MPI.ORDER_C: int = ORDER_C
+

Constant ORDER_C of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ORDER_F.html b/4.0.0/html/reference/mpi4py.MPI.ORDER_F.html new file mode 100644 index 0000000..be9d742 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ORDER_F.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ORDER_F — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ORDER_F

+
+
+mpi4py.MPI.ORDER_F: int = ORDER_F
+

Constant ORDER_F of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ORDER_FORTRAN.html b/4.0.0/html/reference/mpi4py.MPI.ORDER_FORTRAN.html new file mode 100644 index 0000000..717b5bf --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ORDER_FORTRAN.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ORDER_FORTRAN — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ORDER_FORTRAN

+
+
+mpi4py.MPI.ORDER_FORTRAN: int = ORDER_FORTRAN
+

Constant ORDER_FORTRAN of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Op.html b/4.0.0/html/reference/mpi4py.MPI.Op.html new file mode 100644 index 0000000..5bc2435 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Op.html @@ -0,0 +1,303 @@ + + + + + + + + mpi4py.MPI.Op — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Op

+
+
+class mpi4py.MPI.Op
+

Bases: object

+

Reduction operation.

+
+
+static __new__(cls, op=None)
+
+
Parameters:
+

op (Op | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Create(function[, commute])

Create a user-defined reduction operation.

Free()

Free a user-defined reduction operation.

Is_commutative()

Query reduction operations for their commutativity.

Reduce_local(inbuf, inoutbuf)

Apply a reduction operation to local data.

f2py(arg)

free()

Call Free if not null or predefined.

fromhandle(handle)

Create object from MPI handle.

py2f()

+

Attributes Summary

+ + + + + + + + + + + + +

handle

MPI handle.

is_commutative

Is a commutative operation.

is_predefined

Is a predefined operation.

+

Methods Documentation

+
+
+classmethod Create(function, commute=False)
+

Create a user-defined reduction operation.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Free()
+

Free a user-defined reduction operation.

+
+
Return type:
+

None

+
+
+
+ +
+
+Is_commutative()
+

Query reduction operations for their commutativity.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Reduce_local(inbuf, inoutbuf)
+

Apply a reduction operation to local data.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Op

+
+
+
+ +
+
+free()
+

Call Free if not null or predefined.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Op

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+
+is_commutative
+

Is a commutative operation.

+
+ +
+
+is_predefined
+

Is a predefined operation.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Open_port.html b/4.0.0/html/reference/mpi4py.MPI.Open_port.html new file mode 100644 index 0000000..328a72a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Open_port.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Open_port — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Open_port

+
+
+mpi4py.MPI.Open_port(info=INFO_NULL)
+

Return an address used to connect group of processes.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.PACKED.html b/4.0.0/html/reference/mpi4py.MPI.PACKED.html new file mode 100644 index 0000000..6491dd6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.PACKED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.PACKED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.PACKED

+
+
+mpi4py.MPI.PACKED: Datatype = PACKED
+

Object PACKED of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.PROC_NULL.html b/4.0.0/html/reference/mpi4py.MPI.PROC_NULL.html new file mode 100644 index 0000000..858dac1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.PROC_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.PROC_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.PROC_NULL

+
+
+mpi4py.MPI.PROC_NULL: int = PROC_NULL
+

Constant PROC_NULL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.PROD.html b/4.0.0/html/reference/mpi4py.MPI.PROD.html new file mode 100644 index 0000000..ffaf8e6 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.PROD.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.PROD — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.PROD

+
+
+mpi4py.MPI.PROD: Op = PROD
+

Object PROD of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Pcontrol.html b/4.0.0/html/reference/mpi4py.MPI.Pcontrol.html new file mode 100644 index 0000000..c6a75ac --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Pcontrol.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Pcontrol — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Pcontrol

+
+
+mpi4py.MPI.Pcontrol(level)
+

Control profiling.

+
+
Parameters:
+

level (int)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Pickle.html b/4.0.0/html/reference/mpi4py.MPI.Pickle.html new file mode 100644 index 0000000..577ce85 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Pickle.html @@ -0,0 +1,237 @@ + + + + + + + + mpi4py.MPI.Pickle — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Pickle

+
+
+class mpi4py.MPI.Pickle
+

Bases: object

+

Pickle/unpickle Python objects.

+
+
+static __new__(cls, pickle=None)
+
+
Parameters:
+

pickle (Pickle | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + +

dumps(obj)

Serialize object to pickle data stream.

dumps_oob(obj)

Serialize object to pickle data stream and out-of-band buffers.

loads(data)

Deserialize object from pickle data stream.

loads_oob(data, buffers)

Deserialize object from pickle data stream and out-of-band buffers.

+

Attributes Summary

+ + + + + + + + + +

PROTOCOL

Protocol version.

THRESHOLD

Out-of-band threshold.

+

Methods Documentation

+
+
+dumps(obj)
+

Serialize object to pickle data stream.

+
+
Parameters:
+

obj (Any)

+
+
Return type:
+

bytes

+
+
+
+ +
+
+dumps_oob(obj)
+

Serialize object to pickle data stream and out-of-band buffers.

+
+
Parameters:
+

obj (Any)

+
+
Return type:
+

tuple[bytes, list[buffer]]

+
+
+
+ +
+
+loads(data)
+

Deserialize object from pickle data stream.

+
+
Parameters:
+

data (Buffer)

+
+
Return type:
+

Any

+
+
+
+ +
+
+loads_oob(data, buffers)
+

Deserialize object from pickle data stream and out-of-band buffers.

+
+
Parameters:
+
+
+
Return type:
+

Any

+
+
+
+ +

Attributes Documentation

+
+
+PROTOCOL
+

Protocol version.

+
+ +
+
+THRESHOLD
+

Out-of-band threshold.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Prequest.html b/4.0.0/html/reference/mpi4py.MPI.Prequest.html new file mode 100644 index 0000000..767fe08 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Prequest.html @@ -0,0 +1,244 @@ + + + + + + + + mpi4py.MPI.Prequest — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Prequest

+
+
+class mpi4py.MPI.Prequest
+

Bases: Request

+

Persistent request handler.

+
+
+static __new__(cls, request=None)
+
+
Parameters:
+

request (Prequest | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + +

Parrived(partition)

Test partial completion of a partitioned receive operation.

Pready(partition)

Mark a given partition as ready.

Pready_list(partitions)

Mark a sequence of partitions as ready.

Pready_range(partition_low, partition_high)

Mark a range of partitions as ready.

Start()

Initiate a communication with a persistent request.

Startall(requests)

Start a collection of persistent requests.

+

Methods Documentation

+
+
+Parrived(partition)
+

Test partial completion of a partitioned receive operation.

+
+
Parameters:
+

partition (int)

+
+
Return type:
+

bool

+
+
+
+ +
+
+Pready(partition)
+

Mark a given partition as ready.

+
+
Parameters:
+

partition (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Pready_list(partitions)
+

Mark a sequence of partitions as ready.

+
+
Parameters:
+

partitions (Sequence[int])

+
+
Return type:
+

None

+
+
+
+ +
+
+Pready_range(partition_low, partition_high)
+

Mark a range of partitions as ready.

+
+
Parameters:
+
    +
  • partition_low (int)

  • +
  • partition_high (int)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Start()
+

Initiate a communication with a persistent request.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Startall(requests)
+

Start a collection of persistent requests.

+
+
Parameters:
+

requests (list[Prequest])

+
+
Return type:
+

None

+
+
+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Publish_name.html b/4.0.0/html/reference/mpi4py.MPI.Publish_name.html new file mode 100644 index 0000000..aa2b3c1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Publish_name.html @@ -0,0 +1,134 @@ + + + + + + + + mpi4py.MPI.Publish_name — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Publish_name

+
+
+mpi4py.MPI.Publish_name(service_name, port_name, info=INFO_NULL)
+

Publish a service name.

+
+
Parameters:
+
    +
  • service_name (str)

  • +
  • port_name (str)

  • +
  • info (Info)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Query_thread.html b/4.0.0/html/reference/mpi4py.MPI.Query_thread.html new file mode 100644 index 0000000..8d178f3 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Query_thread.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Query_thread — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Query_thread

+
+
+mpi4py.MPI.Query_thread()
+

Return the level of thread support provided by the MPI library.

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REAL.html b/4.0.0/html/reference/mpi4py.MPI.REAL.html new file mode 100644 index 0000000..edfdd3a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.REAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REAL

+
+
+mpi4py.MPI.REAL: Datatype = REAL
+

Object REAL of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REAL16.html b/4.0.0/html/reference/mpi4py.MPI.REAL16.html new file mode 100644 index 0000000..9109a49 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REAL16.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.REAL16 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REAL16

+
+
+mpi4py.MPI.REAL16: Datatype = REAL16
+

Object REAL16 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REAL2.html b/4.0.0/html/reference/mpi4py.MPI.REAL2.html new file mode 100644 index 0000000..393447e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REAL2.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.REAL2 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REAL2

+
+
+mpi4py.MPI.REAL2: Datatype = REAL2
+

Object REAL2 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REAL4.html b/4.0.0/html/reference/mpi4py.MPI.REAL4.html new file mode 100644 index 0000000..da41a16 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REAL4.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.REAL4 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REAL4

+
+
+mpi4py.MPI.REAL4: Datatype = REAL4
+

Object REAL4 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REAL8.html b/4.0.0/html/reference/mpi4py.MPI.REAL8.html new file mode 100644 index 0000000..47a2f04 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REAL8.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.REAL8 — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REAL8

+
+
+mpi4py.MPI.REAL8: Datatype = REAL8
+

Object REAL8 of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REPLACE.html b/4.0.0/html/reference/mpi4py.MPI.REPLACE.html new file mode 100644 index 0000000..b9a9176 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REPLACE.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.REPLACE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REPLACE

+
+
+mpi4py.MPI.REPLACE: Op = REPLACE
+

Object REPLACE of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.REQUEST_NULL.html b/4.0.0/html/reference/mpi4py.MPI.REQUEST_NULL.html new file mode 100644 index 0000000..a0d2c58 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.REQUEST_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.REQUEST_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.REQUEST_NULL

+
+
+mpi4py.MPI.REQUEST_NULL: Request = REQUEST_NULL
+

Object REQUEST_NULL of type Request

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.ROOT.html b/4.0.0/html/reference/mpi4py.MPI.ROOT.html new file mode 100644 index 0000000..061e173 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.ROOT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.ROOT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.ROOT

+
+
+mpi4py.MPI.ROOT: int = ROOT
+

Constant ROOT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Register_datarep.html b/4.0.0/html/reference/mpi4py.MPI.Register_datarep.html new file mode 100644 index 0000000..d15c4ca --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Register_datarep.html @@ -0,0 +1,135 @@ + + + + + + + + mpi4py.MPI.Register_datarep — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Register_datarep

+
+
+mpi4py.MPI.Register_datarep(datarep, read_fn, write_fn, extent_fn)
+

Register user-defined data representations.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Remove_error_class.html b/4.0.0/html/reference/mpi4py.MPI.Remove_error_class.html new file mode 100644 index 0000000..bf40a91 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Remove_error_class.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Remove_error_class — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Remove_error_class

+
+
+mpi4py.MPI.Remove_error_class(errorclass)
+

Remove an error class from the known error classes.

+
+
Parameters:
+

errorclass (int)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Remove_error_code.html b/4.0.0/html/reference/mpi4py.MPI.Remove_error_code.html new file mode 100644 index 0000000..93cbb5e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Remove_error_code.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Remove_error_code — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Remove_error_code

+
+
+mpi4py.MPI.Remove_error_code(errorcode)
+

Remove an error code from the known error codes.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Remove_error_string.html b/4.0.0/html/reference/mpi4py.MPI.Remove_error_string.html new file mode 100644 index 0000000..b213f12 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Remove_error_string.html @@ -0,0 +1,130 @@ + + + + + + + + mpi4py.MPI.Remove_error_string — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Remove_error_string

+
+
+mpi4py.MPI.Remove_error_string(errorcode)
+

Remove error string association from error class or error code.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Request.html b/4.0.0/html/reference/mpi4py.MPI.Request.html new file mode 100644 index 0000000..82f102b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Request.html @@ -0,0 +1,721 @@ + + + + + + + + mpi4py.MPI.Request — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Request

+
+
+class mpi4py.MPI.Request
+

Bases: object

+

Request handler.

+
+
+static __new__(cls, request=None)
+
+
Parameters:
+

request (Request | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Cancel()

Cancel a request.

Free()

Free a communication request.

Get_status([status])

Non-destructive test for the completion of a request.

Get_status_all(requests[, statuses])

Non-destructive test for the completion of all requests.

Get_status_any(requests[, status])

Non-destructive test for the completion of any requests.

Get_status_some(requests[, statuses])

Non-destructive test for completion of some requests.

Test([status])

Test for the completion of a non-blocking operation.

Testall(requests[, statuses])

Test for completion of all previously initiated requests.

Testany(requests[, status])

Test for completion of any previously initiated request.

Testsome(requests[, statuses])

Test for completion of some previously initiated requests.

Wait([status])

Wait for a non-blocking operation to complete.

Waitall(requests[, statuses])

Wait for all previously initiated requests to complete.

Waitany(requests[, status])

Wait for any previously initiated request to complete.

Waitsome(requests[, statuses])

Wait for some previously initiated requests to complete.

cancel()

Cancel a request.

f2py(arg)

free()

Call Free if not null.

fromhandle(handle)

Create object from MPI handle.

get_status([status])

Non-destructive test for the completion of a request.

get_status_all(requests[, statuses])

Non-destructive test for the completion of all requests.

get_status_any(requests[, status])

Non-destructive test for the completion of any requests.

get_status_some(requests[, statuses])

Non-destructive test for completion of some requests.

py2f()

test([status])

Test for the completion of a non-blocking operation.

testall(requests[, statuses])

Test for completion of all previously initiated requests.

testany(requests[, status])

Test for completion of any previously initiated request.

testsome(requests[, statuses])

Test for completion of some previously initiated requests.

wait([status])

Wait for a non-blocking operation to complete.

waitall(requests[, statuses])

Wait for all previously initiated requests to complete.

waitany(requests[, status])

Wait for any previously initiated request to complete.

waitsome(requests[, statuses])

Wait for some previously initiated requests to complete.

+

Attributes Summary

+ + + + + + +

handle

MPI handle.

+

Methods Documentation

+
+
+Cancel()
+

Cancel a request.

+
+
Return type:
+

None

+
+
+
+ +
+
+Free()
+

Free a communication request.

+
+
Return type:
+

None

+
+
+
+ +
+
+Get_status(status=None)
+

Non-destructive test for the completion of a request.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

bool

+
+
+
+ +
+
+classmethod Get_status_all(requests, statuses=None)
+

Non-destructive test for the completion of all requests.

+
+
Parameters:
+
+
+
Return type:
+

bool

+
+
+
+ +
+
+classmethod Get_status_any(requests, status=None)
+

Non-destructive test for the completion of any requests.

+
+
Parameters:
+
+
+
Return type:
+

tuple[int, bool]

+
+
+
+ +
+
+classmethod Get_status_some(requests, statuses=None)
+

Non-destructive test for completion of some requests.

+
+
Parameters:
+
+
+
Return type:
+

list[int] | None

+
+
+
+ +
+
+Test(status=None)
+

Test for the completion of a non-blocking operation.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

bool

+
+
+
+ +
+
+classmethod Testall(requests, statuses=None)
+

Test for completion of all previously initiated requests.

+
+
Parameters:
+
+
+
Return type:
+

bool

+
+
+
+ +
+
+classmethod Testany(requests, status=None)
+

Test for completion of any previously initiated request.

+
+
Parameters:
+
+
+
Return type:
+

tuple[int, bool]

+
+
+
+ +
+
+classmethod Testsome(requests, statuses=None)
+

Test for completion of some previously initiated requests.

+
+
Parameters:
+
+
+
Return type:
+

list[int] | None

+
+
+
+ +
+
+Wait(status=None)
+

Wait for a non-blocking operation to complete.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

Literal[True]

+
+
+
+ +
+
+classmethod Waitall(requests, statuses=None)
+

Wait for all previously initiated requests to complete.

+
+
Parameters:
+
+
+
Return type:
+

Literal[True]

+
+
+
+ +
+
+classmethod Waitany(requests, status=None)
+

Wait for any previously initiated request to complete.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+classmethod Waitsome(requests, statuses=None)
+

Wait for some previously initiated requests to complete.

+
+
Parameters:
+
+
+
Return type:
+

list[int] | None

+
+
+
+ +
+
+cancel()
+

Cancel a request.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Request

+
+
+
+ +
+
+free()
+

Call Free if not null.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Request

+
+
+
+ +
+
+get_status(status=None)
+

Non-destructive test for the completion of a request.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

bool

+
+
+
+ +
+
+classmethod get_status_all(requests, statuses=None)
+

Non-destructive test for the completion of all requests.

+
+
Parameters:
+
+
+
Return type:
+

bool

+
+
+
+ +
+
+classmethod get_status_any(requests, status=None)
+

Non-destructive test for the completion of any requests.

+
+
Parameters:
+
+
+
Return type:
+

tuple[int, bool]

+
+
+
+ +
+
+classmethod get_status_some(requests, statuses=None)
+

Non-destructive test for completion of some requests.

+
+
Parameters:
+
+
+
Return type:
+

list[int] | None

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +
+
+test(status=None)
+

Test for the completion of a non-blocking operation.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

tuple[bool, Any | None]

+
+
+
+ +
+
+classmethod testall(requests, statuses=None)
+

Test for completion of all previously initiated requests.

+
+
Parameters:
+
+
+
Return type:
+

tuple[bool, list[Any] | None]

+
+
+
+ +
+
+classmethod testany(requests, status=None)
+

Test for completion of any previously initiated request.

+
+
Parameters:
+
+
+
Return type:
+

tuple[int, bool, Any | None]

+
+
+
+ +
+
+classmethod testsome(requests, statuses=None)
+

Test for completion of some previously initiated requests.

+
+
Parameters:
+
+
+
Return type:
+

tuple[list[int] | None, list[Any] | None]

+
+
+
+ +
+
+wait(status=None)
+

Wait for a non-blocking operation to complete.

+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

Any

+
+
+
+ +
+
+classmethod waitall(requests, statuses=None)
+

Wait for all previously initiated requests to complete.

+
+
Parameters:
+
+
+
Return type:
+

list[Any]

+
+
+
+ +
+
+classmethod waitany(requests, status=None)
+

Wait for any previously initiated request to complete.

+
+
Parameters:
+
+
+
Return type:
+

tuple[int, Any]

+
+
+
+ +
+
+classmethod waitsome(requests, statuses=None)
+

Wait for some previously initiated requests to complete.

+
+
Parameters:
+
+
+
Return type:
+

tuple[list[int] | None, list[Any] | None]

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SEEK_CUR.html b/4.0.0/html/reference/mpi4py.MPI.SEEK_CUR.html new file mode 100644 index 0000000..be24775 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SEEK_CUR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SEEK_CUR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SEEK_CUR

+
+
+mpi4py.MPI.SEEK_CUR: int = SEEK_CUR
+

Constant SEEK_CUR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SEEK_END.html b/4.0.0/html/reference/mpi4py.MPI.SEEK_END.html new file mode 100644 index 0000000..9ce0e25 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SEEK_END.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SEEK_END — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SEEK_END

+
+
+mpi4py.MPI.SEEK_END: int = SEEK_END
+

Constant SEEK_END of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SEEK_SET.html b/4.0.0/html/reference/mpi4py.MPI.SEEK_SET.html new file mode 100644 index 0000000..d8fcc07 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SEEK_SET.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SEEK_SET — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SEEK_SET

+
+
+mpi4py.MPI.SEEK_SET: int = SEEK_SET
+

Constant SEEK_SET of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SESSION_NULL.html b/4.0.0/html/reference/mpi4py.MPI.SESSION_NULL.html new file mode 100644 index 0000000..105d85f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SESSION_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SESSION_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SESSION_NULL

+
+
+mpi4py.MPI.SESSION_NULL: Session = SESSION_NULL
+

Object SESSION_NULL of type Session

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SHORT.html b/4.0.0/html/reference/mpi4py.MPI.SHORT.html new file mode 100644 index 0000000..59dcd8b --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SHORT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SHORT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SHORT

+
+
+mpi4py.MPI.SHORT: Datatype = SHORT
+

Object SHORT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SHORT_INT.html b/4.0.0/html/reference/mpi4py.MPI.SHORT_INT.html new file mode 100644 index 0000000..50c6d84 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SHORT_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SHORT_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SHORT_INT

+
+
+mpi4py.MPI.SHORT_INT: Datatype = SHORT_INT
+

Object SHORT_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SIGNED_CHAR.html b/4.0.0/html/reference/mpi4py.MPI.SIGNED_CHAR.html new file mode 100644 index 0000000..fd0448d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SIGNED_CHAR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SIGNED_CHAR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SIGNED_CHAR

+
+
+mpi4py.MPI.SIGNED_CHAR: Datatype = SIGNED_CHAR
+

Object SIGNED_CHAR of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SIGNED_INT.html b/4.0.0/html/reference/mpi4py.MPI.SIGNED_INT.html new file mode 100644 index 0000000..b7249b0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SIGNED_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SIGNED_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SIGNED_INT

+
+
+mpi4py.MPI.SIGNED_INT: Datatype = SIGNED_INT
+

Object SIGNED_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SIGNED_LONG.html b/4.0.0/html/reference/mpi4py.MPI.SIGNED_LONG.html new file mode 100644 index 0000000..c209008 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SIGNED_LONG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SIGNED_LONG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SIGNED_LONG

+
+
+mpi4py.MPI.SIGNED_LONG: Datatype = SIGNED_LONG
+

Object SIGNED_LONG of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SIGNED_LONG_LONG.html b/4.0.0/html/reference/mpi4py.MPI.SIGNED_LONG_LONG.html new file mode 100644 index 0000000..c5a1ec8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SIGNED_LONG_LONG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SIGNED_LONG_LONG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SIGNED_LONG_LONG

+
+
+mpi4py.MPI.SIGNED_LONG_LONG: Datatype = SIGNED_LONG_LONG
+

Object SIGNED_LONG_LONG of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SIGNED_SHORT.html b/4.0.0/html/reference/mpi4py.MPI.SIGNED_SHORT.html new file mode 100644 index 0000000..de7482f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SIGNED_SHORT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SIGNED_SHORT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SIGNED_SHORT

+
+
+mpi4py.MPI.SIGNED_SHORT: Datatype = SIGNED_SHORT
+

Object SIGNED_SHORT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SIMILAR.html b/4.0.0/html/reference/mpi4py.MPI.SIMILAR.html new file mode 100644 index 0000000..ae06e3f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SIMILAR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SIMILAR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SIMILAR

+
+
+mpi4py.MPI.SIMILAR: int = SIMILAR
+

Constant SIMILAR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SINT16_T.html b/4.0.0/html/reference/mpi4py.MPI.SINT16_T.html new file mode 100644 index 0000000..c907f18 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SINT16_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SINT16_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SINT16_T

+
+
+mpi4py.MPI.SINT16_T: Datatype = SINT16_T
+

Object SINT16_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SINT32_T.html b/4.0.0/html/reference/mpi4py.MPI.SINT32_T.html new file mode 100644 index 0000000..c0f514d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SINT32_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SINT32_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SINT32_T

+
+
+mpi4py.MPI.SINT32_T: Datatype = SINT32_T
+

Object SINT32_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SINT64_T.html b/4.0.0/html/reference/mpi4py.MPI.SINT64_T.html new file mode 100644 index 0000000..f5ccc11 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SINT64_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SINT64_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SINT64_T

+
+
+mpi4py.MPI.SINT64_T: Datatype = SINT64_T
+

Object SINT64_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SINT8_T.html b/4.0.0/html/reference/mpi4py.MPI.SINT8_T.html new file mode 100644 index 0000000..748a3c5 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SINT8_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SINT8_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SINT8_T

+
+
+mpi4py.MPI.SINT8_T: Datatype = SINT8_T
+

Object SINT8_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SUBVERSION.html b/4.0.0/html/reference/mpi4py.MPI.SUBVERSION.html new file mode 100644 index 0000000..dc9a4e0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SUBVERSION.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SUBVERSION — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SUBVERSION

+
+
+mpi4py.MPI.SUBVERSION: int = SUBVERSION
+

Constant SUBVERSION of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SUCCESS.html b/4.0.0/html/reference/mpi4py.MPI.SUCCESS.html new file mode 100644 index 0000000..6aa3b7c --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SUCCESS.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.SUCCESS — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SUCCESS

+
+
+mpi4py.MPI.SUCCESS: int = SUCCESS
+

Constant SUCCESS of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.SUM.html b/4.0.0/html/reference/mpi4py.MPI.SUM.html new file mode 100644 index 0000000..d6f7582 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.SUM.html @@ -0,0 +1,133 @@ + + + + + + + + mpi4py.MPI.SUM — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.SUM

+
+
+mpi4py.MPI.SUM: Op = SUM
+

Object SUM of type Op

+
+
Parameters:
+
    +
  • x (Any)

  • +
  • y (Any)

  • +
+
+
Return type:
+

Any

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Session.html b/4.0.0/html/reference/mpi4py.MPI.Session.html new file mode 100644 index 0000000..21577ca --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Session.html @@ -0,0 +1,460 @@ + + + + + + + + mpi4py.MPI.Session — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Session

+
+
+class mpi4py.MPI.Session
+

Bases: object

+

Session context.

+
+
+static __new__(cls, session=None)
+
+
Parameters:
+

session (Session | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Attach_buffer(buf)

Attach a user-provided buffer for sending in buffered mode.

Call_errhandler(errorcode)

Call the error handler installed on a session.

Create_errhandler(errhandler_fn)

Create a new error handler for sessions.

Create_group(pset_name)

Create a new group from session and process set.

Detach_buffer()

Remove an existing attached buffer.

Finalize()

Finalize a session.

Flush_buffer()

Block until all buffered messages have been transmitted.

Get_errhandler()

Get the error handler for a session.

Get_info()

Return the current hints for a session.

Get_nth_pset(n[, info])

Name of the n-th process set.

Get_num_psets([info])

Number of available process sets.

Get_pset_info(pset_name)

Return the current hints for a session and process set.

Iflush_buffer()

Nonblocking flush for buffered messages.

Init([info, errhandler])

Create a new session.

Set_errhandler(errhandler)

Set the error handler for a session.

f2py(arg)

free()

Call Finalize if not null.

fromhandle(handle)

Create object from MPI handle.

py2f()

+

Attributes Summary

+ + + + + + +

handle

MPI handle.

+

Methods Documentation

+
+
+Attach_buffer(buf)
+

Attach a user-provided buffer for sending in buffered mode.

+
+
Parameters:
+

buf (Buffer | None)

+
+
Return type:
+

None

+
+
+
+ +
+
+Call_errhandler(errorcode)
+

Call the error handler installed on a session.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Create_errhandler(errhandler_fn)
+

Create a new error handler for sessions.

+
+
Parameters:
+

errhandler_fn (Callable[[Session, int], None])

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+Create_group(pset_name)
+

Create a new group from session and process set.

+
+
Parameters:
+

pset_name (str)

+
+
Return type:
+

Group

+
+
+
+ +
+
+Detach_buffer()
+

Remove an existing attached buffer.

+
+
Return type:
+

Buffer | None

+
+
+
+ +
+
+Finalize()
+

Finalize a session.

+
+
Return type:
+

None

+
+
+
+ +
+
+Flush_buffer()
+

Block until all buffered messages have been transmitted.

+
+
Return type:
+

None

+
+
+
+ +
+
+Get_errhandler()
+

Get the error handler for a session.

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+Get_info()
+

Return the current hints for a session.

+
+
Return type:
+

Info

+
+
+
+ +
+
+Get_nth_pset(n, info=INFO_NULL)
+

Name of the n-th process set.

+
+
Parameters:
+
+
+
Return type:
+

str

+
+
+
+ +
+
+Get_num_psets(info=INFO_NULL)
+

Number of available process sets.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_pset_info(pset_name)
+

Return the current hints for a session and process set.

+
+
Parameters:
+

pset_name (str)

+
+
Return type:
+

Info

+
+
+
+ +
+
+Iflush_buffer()
+

Nonblocking flush for buffered messages.

+
+
Return type:
+

Request

+
+
+
+ +
+
+classmethod Init(info=INFO_NULL, errhandler=None)
+

Create a new session.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Set_errhandler(errhandler)
+

Set the error handler for a session.

+
+
Parameters:
+

errhandler (Errhandler)

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Session

+
+
+
+ +
+
+free()
+

Call Finalize if not null.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Session

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +

Attributes Documentation

+
+
+handle
+

MPI handle.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Status.html b/4.0.0/html/reference/mpi4py.MPI.Status.html new file mode 100644 index 0000000..01b767f --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Status.html @@ -0,0 +1,410 @@ + + + + + + + + mpi4py.MPI.Status — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Status

+
+
+class mpi4py.MPI.Status
+

Bases: object

+

Status object.

+
+
+static __new__(cls, status=None)
+
+
Parameters:
+

status (Status | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Get_count([datatype])

Get the number of top level elements.

Get_elements(datatype)

Get the number of basic elements in a datatype.

Get_error()

Get message error.

Get_source()

Get message source.

Get_tag()

Get message tag.

Is_cancelled()

Test to see if a request was cancelled.

Set_cancelled(flag)

Set the cancelled state associated with a status.

Set_elements(datatype, count)

Set the number of elements in a status.

Set_error(error)

Set message error.

Set_source(source)

Set message source.

Set_tag(tag)

Set message tag.

f2py(arg)

py2f()

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + +

cancelled

Cancelled state.

count

Byte count.

error

Message error.

source

Message source.

tag

Message tag.

+

Methods Documentation

+
+
+Get_count(datatype=BYTE)
+

Get the number of top level elements.

+
+
Parameters:
+

datatype (Datatype)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_elements(datatype)
+

Get the number of basic elements in a datatype.

+
+
Parameters:
+

datatype (Datatype)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_error()
+

Get message error.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_source()
+

Get message source.

+
+
Return type:
+

int

+
+
+
+ +
+
+Get_tag()
+

Get message tag.

+
+
Return type:
+

int

+
+
+
+ +
+
+Is_cancelled()
+

Test to see if a request was cancelled.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Set_cancelled(flag)
+

Set the cancelled state associated with a status.

+
+

Note

+

This method should be used only when implementing +query callback functions for generalized requests.

+
+
+
Parameters:
+

flag (bool)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_elements(datatype, count)
+

Set the number of elements in a status.

+
+

Note

+

This method should be only used when implementing +query callback functions for generalized requests.

+
+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Set_error(error)
+

Set message error.

+
+
Parameters:
+

error (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_source(source)
+

Set message source.

+
+
Parameters:
+

source (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_tag(tag)
+

Set message tag.

+
+
Parameters:
+

tag (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (list[int])

+
+
Return type:
+

Self

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

list[int]

+
+
+
+ +

Attributes Documentation

+
+
+cancelled
+

Cancelled state.

+
+ +
+
+count
+

Byte count.

+
+ +
+
+error
+

Message error.

+
+ +
+
+source
+

Message source.

+
+ +
+
+tag
+

Message tag.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.TAG_UB.html b/4.0.0/html/reference/mpi4py.MPI.TAG_UB.html new file mode 100644 index 0000000..da25241 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.TAG_UB.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.TAG_UB — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.TAG_UB

+
+
+mpi4py.MPI.TAG_UB: int = TAG_UB
+

Constant TAG_UB of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.THREAD_FUNNELED.html b/4.0.0/html/reference/mpi4py.MPI.THREAD_FUNNELED.html new file mode 100644 index 0000000..121ab79 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.THREAD_FUNNELED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.THREAD_FUNNELED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.THREAD_FUNNELED

+
+
+mpi4py.MPI.THREAD_FUNNELED: int = THREAD_FUNNELED
+

Constant THREAD_FUNNELED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.THREAD_MULTIPLE.html b/4.0.0/html/reference/mpi4py.MPI.THREAD_MULTIPLE.html new file mode 100644 index 0000000..15dd573 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.THREAD_MULTIPLE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.THREAD_MULTIPLE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.THREAD_MULTIPLE

+
+
+mpi4py.MPI.THREAD_MULTIPLE: int = THREAD_MULTIPLE
+

Constant THREAD_MULTIPLE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.THREAD_SERIALIZED.html b/4.0.0/html/reference/mpi4py.MPI.THREAD_SERIALIZED.html new file mode 100644 index 0000000..ced2b0a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.THREAD_SERIALIZED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.THREAD_SERIALIZED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.THREAD_SERIALIZED

+
+
+mpi4py.MPI.THREAD_SERIALIZED: int = THREAD_SERIALIZED
+

Constant THREAD_SERIALIZED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.THREAD_SINGLE.html b/4.0.0/html/reference/mpi4py.MPI.THREAD_SINGLE.html new file mode 100644 index 0000000..5879075 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.THREAD_SINGLE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.THREAD_SINGLE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.THREAD_SINGLE

+
+
+mpi4py.MPI.THREAD_SINGLE: int = THREAD_SINGLE
+

Constant THREAD_SINGLE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.TWOINT.html b/4.0.0/html/reference/mpi4py.MPI.TWOINT.html new file mode 100644 index 0000000..807d4dc --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.TWOINT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.TWOINT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.TWOINT

+
+
+mpi4py.MPI.TWOINT: Datatype = TWOINT
+

Object TWOINT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_COMPLEX.html b/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_COMPLEX.html new file mode 100644 index 0000000..b51006d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_COMPLEX.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.TYPECLASS_COMPLEX — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.TYPECLASS_COMPLEX

+
+
+mpi4py.MPI.TYPECLASS_COMPLEX: int = TYPECLASS_COMPLEX
+

Constant TYPECLASS_COMPLEX of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_INTEGER.html b/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_INTEGER.html new file mode 100644 index 0000000..241b3f1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_INTEGER.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.TYPECLASS_INTEGER — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.TYPECLASS_INTEGER

+
+
+mpi4py.MPI.TYPECLASS_INTEGER: int = TYPECLASS_INTEGER
+

Constant TYPECLASS_INTEGER of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_REAL.html b/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_REAL.html new file mode 100644 index 0000000..81046f1 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.TYPECLASS_REAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.TYPECLASS_REAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.TYPECLASS_REAL

+
+
+mpi4py.MPI.TYPECLASS_REAL: int = TYPECLASS_REAL
+

Constant TYPECLASS_REAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Topocomm.html b/4.0.0/html/reference/mpi4py.MPI.Topocomm.html new file mode 100644 index 0000000..eaebc7a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Topocomm.html @@ -0,0 +1,541 @@ + + + + + + + + mpi4py.MPI.Topocomm — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Topocomm

+
+
+class mpi4py.MPI.Topocomm
+

Bases: Intracomm

+

Topology intracommunicator.

+
+
+static __new__(cls, comm=None)
+
+
Parameters:
+

comm (Topocomm | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Ineighbor_allgather(sendbuf, recvbuf)

Nonblocking Neighbor Gather to All.

Ineighbor_allgatherv(sendbuf, recvbuf)

Nonblocking Neighbor Gather to All Vector.

Ineighbor_alltoall(sendbuf, recvbuf)

Nonblocking Neighbor All to All.

Ineighbor_alltoallv(sendbuf, recvbuf)

Nonblocking Neighbor All to All Vector.

Ineighbor_alltoallw(sendbuf, recvbuf)

Nonblocking Neighbor All to All General.

Neighbor_allgather(sendbuf, recvbuf)

Neighbor Gather to All.

Neighbor_allgather_init(sendbuf, recvbuf[, info])

Persistent Neighbor Gather to All.

Neighbor_allgatherv(sendbuf, recvbuf)

Neighbor Gather to All Vector.

Neighbor_allgatherv_init(sendbuf, recvbuf[, ...])

Persistent Neighbor Gather to All Vector.

Neighbor_alltoall(sendbuf, recvbuf)

Neighbor All to All.

Neighbor_alltoall_init(sendbuf, recvbuf[, info])

Persistent Neighbor All to All.

Neighbor_alltoallv(sendbuf, recvbuf)

Neighbor All to All Vector.

Neighbor_alltoallv_init(sendbuf, recvbuf[, info])

Persistent Neighbor All to All Vector.

Neighbor_alltoallw(sendbuf, recvbuf)

Neighbor All to All General.

Neighbor_alltoallw_init(sendbuf, recvbuf[, info])

Persistent Neighbor All to All General.

neighbor_allgather(sendobj)

Neighbor Gather to All.

neighbor_alltoall(sendobj)

Neighbor All to All.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + +

degrees

Number of incoming and outgoing neighbors.

indegree

Number of incoming neighbors.

inedges

Incoming neighbors.

inoutedges

Incoming and outgoing neighbors.

outdegree

Number of outgoing neighbors.

outedges

Outgoing neighbors.

+

Methods Documentation

+
+
+Ineighbor_allgather(sendbuf, recvbuf)
+

Nonblocking Neighbor Gather to All.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ineighbor_allgatherv(sendbuf, recvbuf)
+

Nonblocking Neighbor Gather to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ineighbor_alltoall(sendbuf, recvbuf)
+

Nonblocking Neighbor All to All.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ineighbor_alltoallv(sendbuf, recvbuf)
+

Nonblocking Neighbor All to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Ineighbor_alltoallw(sendbuf, recvbuf)
+

Nonblocking Neighbor All to All General.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Neighbor_allgather(sendbuf, recvbuf)
+

Neighbor Gather to All.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Neighbor_allgather_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Neighbor Gather to All.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Neighbor_allgatherv(sendbuf, recvbuf)
+

Neighbor Gather to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Neighbor_allgatherv_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Neighbor Gather to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Neighbor_alltoall(sendbuf, recvbuf)
+

Neighbor All to All.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Neighbor_alltoall_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Neighbor All to All.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Neighbor_alltoallv(sendbuf, recvbuf)
+

Neighbor All to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Neighbor_alltoallv_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Neighbor All to All Vector.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+Neighbor_alltoallw(sendbuf, recvbuf)
+

Neighbor All to All General.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Neighbor_alltoallw_init(sendbuf, recvbuf, info=INFO_NULL)
+

Persistent Neighbor All to All General.

+
+
Parameters:
+
+
+
Return type:
+

Prequest

+
+
+
+ +
+
+neighbor_allgather(sendobj)
+

Neighbor Gather to All.

+
+
Parameters:
+

sendobj (Any)

+
+
Return type:
+

list[Any]

+
+
+
+ +
+
+neighbor_alltoall(sendobj)
+

Neighbor All to All.

+
+
Parameters:
+

sendobj (list[Any])

+
+
Return type:
+

list[Any]

+
+
+
+ +

Attributes Documentation

+
+
+degrees
+

Number of incoming and outgoing neighbors.

+
+ +
+
+indegree
+

Number of incoming neighbors.

+
+ +
+
+inedges
+

Incoming neighbors.

+
+ +
+
+inoutedges
+

Incoming and outgoing neighbors.

+
+ +
+
+outdegree
+

Number of outgoing neighbors.

+
+ +
+
+outedges
+

Outgoing neighbors.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UINT16_T.html b/4.0.0/html/reference/mpi4py.MPI.UINT16_T.html new file mode 100644 index 0000000..3356beb --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UINT16_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UINT16_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UINT16_T

+
+
+mpi4py.MPI.UINT16_T: Datatype = UINT16_T
+

Object UINT16_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UINT32_T.html b/4.0.0/html/reference/mpi4py.MPI.UINT32_T.html new file mode 100644 index 0000000..c68341d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UINT32_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UINT32_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UINT32_T

+
+
+mpi4py.MPI.UINT32_T: Datatype = UINT32_T
+

Object UINT32_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UINT64_T.html b/4.0.0/html/reference/mpi4py.MPI.UINT64_T.html new file mode 100644 index 0000000..de123ec --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UINT64_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UINT64_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UINT64_T

+
+
+mpi4py.MPI.UINT64_T: Datatype = UINT64_T
+

Object UINT64_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UINT8_T.html b/4.0.0/html/reference/mpi4py.MPI.UINT8_T.html new file mode 100644 index 0000000..5b5e31e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UINT8_T.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UINT8_T — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UINT8_T

+
+
+mpi4py.MPI.UINT8_T: Datatype = UINT8_T
+

Object UINT8_T of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNDEFINED.html b/4.0.0/html/reference/mpi4py.MPI.UNDEFINED.html new file mode 100644 index 0000000..1193f28 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNDEFINED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNDEFINED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNDEFINED

+
+
+mpi4py.MPI.UNDEFINED: int = UNDEFINED
+

Constant UNDEFINED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNEQUAL.html b/4.0.0/html/reference/mpi4py.MPI.UNEQUAL.html new file mode 100644 index 0000000..f123b87 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNEQUAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNEQUAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNEQUAL

+
+
+mpi4py.MPI.UNEQUAL: int = UNEQUAL
+

Constant UNEQUAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNIVERSE_SIZE.html b/4.0.0/html/reference/mpi4py.MPI.UNIVERSE_SIZE.html new file mode 100644 index 0000000..7603532 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNIVERSE_SIZE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNIVERSE_SIZE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNIVERSE_SIZE

+
+
+mpi4py.MPI.UNIVERSE_SIZE: int = UNIVERSE_SIZE
+

Constant UNIVERSE_SIZE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNSIGNED.html b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED.html new file mode 100644 index 0000000..5a86d75 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNSIGNED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNSIGNED

+
+
+mpi4py.MPI.UNSIGNED: Datatype = UNSIGNED
+

Object UNSIGNED of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_CHAR.html b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_CHAR.html new file mode 100644 index 0000000..2c211c7 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_CHAR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNSIGNED_CHAR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNSIGNED_CHAR

+
+
+mpi4py.MPI.UNSIGNED_CHAR: Datatype = UNSIGNED_CHAR
+

Object UNSIGNED_CHAR of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_INT.html b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_INT.html new file mode 100644 index 0000000..2e3eb8e --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_INT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNSIGNED_INT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNSIGNED_INT

+
+
+mpi4py.MPI.UNSIGNED_INT: Datatype = UNSIGNED_INT
+

Object UNSIGNED_INT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_LONG.html b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_LONG.html new file mode 100644 index 0000000..5c6cda2 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_LONG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNSIGNED_LONG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNSIGNED_LONG

+
+
+mpi4py.MPI.UNSIGNED_LONG: Datatype = UNSIGNED_LONG
+

Object UNSIGNED_LONG of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_LONG_LONG.html b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_LONG_LONG.html new file mode 100644 index 0000000..cde16ae --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_LONG_LONG.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNSIGNED_LONG_LONG — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNSIGNED_LONG_LONG

+
+
+mpi4py.MPI.UNSIGNED_LONG_LONG: Datatype = UNSIGNED_LONG_LONG
+

Object UNSIGNED_LONG_LONG of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_SHORT.html b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_SHORT.html new file mode 100644 index 0000000..4f2e0c8 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNSIGNED_SHORT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNSIGNED_SHORT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNSIGNED_SHORT

+
+
+mpi4py.MPI.UNSIGNED_SHORT: Datatype = UNSIGNED_SHORT
+

Object UNSIGNED_SHORT of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.UNWEIGHTED.html b/4.0.0/html/reference/mpi4py.MPI.UNWEIGHTED.html new file mode 100644 index 0000000..708edbd --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.UNWEIGHTED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.UNWEIGHTED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.UNWEIGHTED

+
+
+mpi4py.MPI.UNWEIGHTED: int = UNWEIGHTED
+

Constant UNWEIGHTED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Unpublish_name.html b/4.0.0/html/reference/mpi4py.MPI.Unpublish_name.html new file mode 100644 index 0000000..41bd666 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Unpublish_name.html @@ -0,0 +1,134 @@ + + + + + + + + mpi4py.MPI.Unpublish_name — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Unpublish_name

+
+
+mpi4py.MPI.Unpublish_name(service_name, port_name, info=INFO_NULL)
+

Unpublish a service name.

+
+
Parameters:
+
    +
  • service_name (str)

  • +
  • port_name (str)

  • +
  • info (Info)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.VERSION.html b/4.0.0/html/reference/mpi4py.MPI.VERSION.html new file mode 100644 index 0000000..942f6fc --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.VERSION.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.VERSION — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.VERSION

+
+
+mpi4py.MPI.VERSION: int = VERSION
+

Constant VERSION of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WCHAR.html b/4.0.0/html/reference/mpi4py.MPI.WCHAR.html new file mode 100644 index 0000000..fe11e54 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WCHAR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WCHAR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WCHAR

+
+
+mpi4py.MPI.WCHAR: Datatype = WCHAR
+

Object WCHAR of type Datatype

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WEIGHTS_EMPTY.html b/4.0.0/html/reference/mpi4py.MPI.WEIGHTS_EMPTY.html new file mode 100644 index 0000000..bb1b59a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WEIGHTS_EMPTY.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WEIGHTS_EMPTY — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WEIGHTS_EMPTY

+
+
+mpi4py.MPI.WEIGHTS_EMPTY: int = WEIGHTS_EMPTY
+

Constant WEIGHTS_EMPTY of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_BASE.html b/4.0.0/html/reference/mpi4py.MPI.WIN_BASE.html new file mode 100644 index 0000000..37cf489 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_BASE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_BASE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_BASE

+
+
+mpi4py.MPI.WIN_BASE: int = WIN_BASE
+

Constant WIN_BASE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_CREATE_FLAVOR.html b/4.0.0/html/reference/mpi4py.MPI.WIN_CREATE_FLAVOR.html new file mode 100644 index 0000000..c06cade --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_CREATE_FLAVOR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_CREATE_FLAVOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_CREATE_FLAVOR

+
+
+mpi4py.MPI.WIN_CREATE_FLAVOR: int = WIN_CREATE_FLAVOR
+

Constant WIN_CREATE_FLAVOR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_DISP_UNIT.html b/4.0.0/html/reference/mpi4py.MPI.WIN_DISP_UNIT.html new file mode 100644 index 0000000..9609fa0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_DISP_UNIT.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_DISP_UNIT — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_DISP_UNIT

+
+
+mpi4py.MPI.WIN_DISP_UNIT: int = WIN_DISP_UNIT
+

Constant WIN_DISP_UNIT of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR.html b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR.html new file mode 100644 index 0000000..138a29d --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_FLAVOR — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_FLAVOR

+
+
+mpi4py.MPI.WIN_FLAVOR: int = WIN_FLAVOR
+

Constant WIN_FLAVOR of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_ALLOCATE.html b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_ALLOCATE.html new file mode 100644 index 0000000..4018671 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_ALLOCATE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_FLAVOR_ALLOCATE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_FLAVOR_ALLOCATE

+
+
+mpi4py.MPI.WIN_FLAVOR_ALLOCATE: int = WIN_FLAVOR_ALLOCATE
+

Constant WIN_FLAVOR_ALLOCATE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_CREATE.html b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_CREATE.html new file mode 100644 index 0000000..a881c79 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_CREATE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_FLAVOR_CREATE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_FLAVOR_CREATE

+
+
+mpi4py.MPI.WIN_FLAVOR_CREATE: int = WIN_FLAVOR_CREATE
+

Constant WIN_FLAVOR_CREATE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_DYNAMIC.html b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_DYNAMIC.html new file mode 100644 index 0000000..6281f09 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_DYNAMIC.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_FLAVOR_DYNAMIC — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_FLAVOR_DYNAMIC

+
+
+mpi4py.MPI.WIN_FLAVOR_DYNAMIC: int = WIN_FLAVOR_DYNAMIC
+

Constant WIN_FLAVOR_DYNAMIC of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_SHARED.html b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_SHARED.html new file mode 100644 index 0000000..9ce3257 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_FLAVOR_SHARED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_FLAVOR_SHARED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_FLAVOR_SHARED

+
+
+mpi4py.MPI.WIN_FLAVOR_SHARED: int = WIN_FLAVOR_SHARED
+

Constant WIN_FLAVOR_SHARED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_MODEL.html b/4.0.0/html/reference/mpi4py.MPI.WIN_MODEL.html new file mode 100644 index 0000000..a5cff72 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_MODEL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_MODEL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_MODEL

+
+
+mpi4py.MPI.WIN_MODEL: int = WIN_MODEL
+

Constant WIN_MODEL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_NULL.html b/4.0.0/html/reference/mpi4py.MPI.WIN_NULL.html new file mode 100644 index 0000000..8ed59bc --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_NULL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_NULL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_NULL

+
+
+mpi4py.MPI.WIN_NULL: Win = WIN_NULL
+

Object WIN_NULL of type Win

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_SEPARATE.html b/4.0.0/html/reference/mpi4py.MPI.WIN_SEPARATE.html new file mode 100644 index 0000000..c9c7543 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_SEPARATE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_SEPARATE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_SEPARATE

+
+
+mpi4py.MPI.WIN_SEPARATE: int = WIN_SEPARATE
+

Constant WIN_SEPARATE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_SIZE.html b/4.0.0/html/reference/mpi4py.MPI.WIN_SIZE.html new file mode 100644 index 0000000..51bf1a9 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_SIZE.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_SIZE — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_SIZE

+
+
+mpi4py.MPI.WIN_SIZE: int = WIN_SIZE
+

Constant WIN_SIZE of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WIN_UNIFIED.html b/4.0.0/html/reference/mpi4py.MPI.WIN_UNIFIED.html new file mode 100644 index 0000000..38ea304 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WIN_UNIFIED.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WIN_UNIFIED — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WIN_UNIFIED

+
+
+mpi4py.MPI.WIN_UNIFIED: int = WIN_UNIFIED
+

Constant WIN_UNIFIED of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.WTIME_IS_GLOBAL.html b/4.0.0/html/reference/mpi4py.MPI.WTIME_IS_GLOBAL.html new file mode 100644 index 0000000..831b137 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.WTIME_IS_GLOBAL.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.WTIME_IS_GLOBAL — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.WTIME_IS_GLOBAL

+
+
+mpi4py.MPI.WTIME_IS_GLOBAL: int = WTIME_IS_GLOBAL
+

Constant WTIME_IS_GLOBAL of type int

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Win.html b/4.0.0/html/reference/mpi4py.MPI.Win.html new file mode 100644 index 0000000..587f99a --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Win.html @@ -0,0 +1,1151 @@ + + + + + + + + mpi4py.MPI.Win — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Win

+
+
+class mpi4py.MPI.Win
+

Bases: object

+

Remote memory access context.

+
+
+static __new__(cls, win=None)
+
+
Parameters:
+

win (Win | None)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Accumulate(origin, target_rank[, target, op])

Accumulate data into the target process.

Allocate(size[, disp_unit, info, comm])

Create an window object for one-sided communication.

Allocate_shared(size[, disp_unit, info, comm])

Create an window object for one-sided communication.

Attach(memory)

Attach a local memory region.

Call_errhandler(errorcode)

Call the error handler installed on a window.

Compare_and_swap(origin, compare, result, ...)

Perform one-sided atomic compare-and-swap.

Complete()

Complete an RMA operation begun after an Start.

Create(memory[, disp_unit, info, comm])

Create an window object for one-sided communication.

Create_dynamic([info, comm])

Create an window object for one-sided communication.

Create_errhandler(errhandler_fn)

Create a new error handler for windows.

Create_keyval([copy_fn, delete_fn, nopython])

Create a new attribute key for windows.

Delete_attr(keyval)

Delete attribute value associated with a key.

Detach(memory)

Detach a local memory region.

Fence([assertion])

Perform an MPI fence synchronization on a window.

Fetch_and_op(origin, result, target_rank[, ...])

Perform one-sided read-modify-write.

Flush(rank)

Complete all outstanding RMA operations at a target.

Flush_all()

Complete all outstanding RMA operations at all targets.

Flush_local(rank)

Complete locally all outstanding RMA operations at a target.

Flush_local_all()

Complete locally all outstanding RMA operations at all targets.

Free()

Free a window.

Free_keyval(keyval)

Free an attribute key for windows.

Get(origin, target_rank[, target])

Get data from a memory window on a remote process.

Get_accumulate(origin, result, target_rank)

Fetch-and-accumulate data into the target process.

Get_attr(keyval)

Retrieve attribute value by key.

Get_errhandler()

Get the error handler for a window.

Get_group()

Access the group of processes that created the window.

Get_info()

Return the current hints for a window.

Get_name()

Get the print name for this window.

Lock(rank[, lock_type, assertion])

Begin an RMA access epoch at the target process.

Lock_all([assertion])

Begin an RMA access epoch at all processes.

Post(group[, assertion])

Start an RMA exposure epoch.

Put(origin, target_rank[, target])

Put data into a memory window on a remote process.

Raccumulate(origin, target_rank[, target, op])

Fetch-and-accumulate data into the target process.

Rget(origin, target_rank[, target])

Get data from a memory window on a remote process.

Rget_accumulate(origin, result, target_rank)

Accumulate data into the target process using remote memory access.

Rput(origin, target_rank[, target])

Put data into a memory window on a remote process.

Set_attr(keyval, attrval)

Store attribute value associated with a key.

Set_errhandler(errhandler)

Set the error handler for a window.

Set_info(info)

Set new values for the hints associated with a window.

Set_name(name)

Set the print name for this window.

Shared_query(rank)

Query the process-local address for remote memory segments.

Start(group[, assertion])

Start an RMA access epoch for MPI.

Sync()

Synchronize public and private copies of the window.

Test()

Test whether an RMA exposure epoch has completed.

Unlock(rank)

Complete an RMA access epoch at the target process.

Unlock_all()

Complete an RMA access epoch at all processes.

Wait()

Complete an RMA exposure epoch begun with Post.

f2py(arg)

free()

Call Free if not null.

fromhandle(handle)

Create object from MPI handle.

py2f()

tomemory()

Return window memory buffer.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

attrs

Attributes.

flavor

Create flavor.

group

Group.

group_rank

Group rank.

group_size

Group size.

handle

MPI handle.

info

Info hints.

model

Memory model.

name

Print name.

+

Methods Documentation

+
+
+Accumulate(origin, target_rank, target=None, op=SUM)
+

Accumulate data into the target process.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Allocate(size, disp_unit=1, info=INFO_NULL, comm=COMM_SELF)
+

Create an window object for one-sided communication.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Allocate_shared(size, disp_unit=1, info=INFO_NULL, comm=COMM_SELF)
+

Create an window object for one-sided communication.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+Attach(memory)
+

Attach a local memory region.

+
+
Parameters:
+

memory (Buffer)

+
+
Return type:
+

None

+
+
+
+ +
+
+Call_errhandler(errorcode)
+

Call the error handler installed on a window.

+
+
Parameters:
+

errorcode (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Compare_and_swap(origin, compare, result, target_rank, target_disp=0)
+

Perform one-sided atomic compare-and-swap.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Complete()
+

Complete an RMA operation begun after an Start.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Create(memory, disp_unit=1, info=INFO_NULL, comm=COMM_SELF)
+

Create an window object for one-sided communication.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_dynamic(info=INFO_NULL, comm=COMM_SELF)
+

Create an window object for one-sided communication.

+
+
Parameters:
+
+
+
Return type:
+

Self

+
+
+
+ +
+
+classmethod Create_errhandler(errhandler_fn)
+

Create a new error handler for windows.

+
+
Parameters:
+

errhandler_fn (Callable[[Win, int], None])

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+classmethod Create_keyval(copy_fn=None, delete_fn=None, nopython=False)
+

Create a new attribute key for windows.

+
+
Parameters:
+
+
+
Return type:
+

int

+
+
+
+ +
+
+Delete_attr(keyval)
+

Delete attribute value associated with a key.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Detach(memory)
+

Detach a local memory region.

+
+
Parameters:
+

memory (Buffer)

+
+
Return type:
+

None

+
+
+
+ +
+
+Fence(assertion=0)
+

Perform an MPI fence synchronization on a window.

+
+
Parameters:
+

assertion (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Fetch_and_op(origin, result, target_rank, target_disp=0, op=SUM)
+

Perform one-sided read-modify-write.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Flush(rank)
+

Complete all outstanding RMA operations at a target.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Flush_all()
+

Complete all outstanding RMA operations at all targets.

+
+
Return type:
+

None

+
+
+
+ +
+
+Flush_local(rank)
+

Complete locally all outstanding RMA operations at a target.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Flush_local_all()
+

Complete locally all outstanding RMA operations at all targets.

+
+
Return type:
+

None

+
+
+
+ +
+
+Free()
+

Free a window.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod Free_keyval(keyval)
+

Free an attribute key for windows.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

int

+
+
+
+ +
+
+Get(origin, target_rank, target=None)
+

Get data from a memory window on a remote process.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Get_accumulate(origin, result, target_rank, target=None, op=SUM)
+

Fetch-and-accumulate data into the target process.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Get_attr(keyval)
+

Retrieve attribute value by key.

+
+
Parameters:
+

keyval (int)

+
+
Return type:
+

int | Any | None

+
+
+
+ +
+
+Get_errhandler()
+

Get the error handler for a window.

+
+
Return type:
+

Errhandler

+
+
+
+ +
+
+Get_group()
+

Access the group of processes that created the window.

+
+
Return type:
+

Group

+
+
+
+ +
+
+Get_info()
+

Return the current hints for a window.

+
+
Return type:
+

Info

+
+
+
+ +
+
+Get_name()
+

Get the print name for this window.

+
+
Return type:
+

str

+
+
+
+ +
+
+Lock(rank, lock_type=LOCK_EXCLUSIVE, assertion=0)
+

Begin an RMA access epoch at the target process.

+
+
Parameters:
+
    +
  • rank (int)

  • +
  • lock_type (int)

  • +
  • assertion (int)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Lock_all(assertion=0)
+

Begin an RMA access epoch at all processes.

+
+
Parameters:
+

assertion (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Post(group, assertion=0)
+

Start an RMA exposure epoch.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Put(origin, target_rank, target=None)
+

Put data into a memory window on a remote process.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Raccumulate(origin, target_rank, target=None, op=SUM)
+

Fetch-and-accumulate data into the target process.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Rget(origin, target_rank, target=None)
+

Get data from a memory window on a remote process.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Rget_accumulate(origin, result, target_rank, target=None, op=SUM)
+

Accumulate data into the target process using remote memory access.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Rput(origin, target_rank, target=None)
+

Put data into a memory window on a remote process.

+
+
Parameters:
+
+
+
Return type:
+

Request

+
+
+
+ +
+
+Set_attr(keyval, attrval)
+

Store attribute value associated with a key.

+
+
Parameters:
+
    +
  • keyval (int)

  • +
  • attrval (Any)

  • +
+
+
Return type:
+

None

+
+
+
+ +
+
+Set_errhandler(errhandler)
+

Set the error handler for a window.

+
+
Parameters:
+

errhandler (Errhandler)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_info(info)
+

Set new values for the hints associated with a window.

+
+
Parameters:
+

info (Info)

+
+
Return type:
+

None

+
+
+
+ +
+
+Set_name(name)
+

Set the print name for this window.

+
+
Parameters:
+

name (str)

+
+
Return type:
+

None

+
+
+
+ +
+
+Shared_query(rank)
+

Query the process-local address for remote memory segments.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

tuple[buffer, int]

+
+
+
+ +
+
+Start(group, assertion=0)
+

Start an RMA access epoch for MPI.

+
+
Parameters:
+
+
+
Return type:
+

None

+
+
+
+ +
+
+Sync()
+

Synchronize public and private copies of the window.

+
+
Return type:
+

None

+
+
+
+ +
+
+Test()
+

Test whether an RMA exposure epoch has completed.

+
+
Return type:
+

bool

+
+
+
+ +
+
+Unlock(rank)
+

Complete an RMA access epoch at the target process.

+
+
Parameters:
+

rank (int)

+
+
Return type:
+

None

+
+
+
+ +
+
+Unlock_all()
+

Complete an RMA access epoch at all processes.

+
+
Return type:
+

None

+
+
+
+ +
+
+Wait()
+

Complete an RMA exposure epoch begun with Post.

+
+
Return type:
+

Literal[True]

+
+
+
+ +
+
+classmethod f2py(arg)
+
+
Parameters:
+

arg (int)

+
+
Return type:
+

Win

+
+
+
+ +
+
+free()
+

Call Free if not null.

+
+
Return type:
+

None

+
+
+
+ +
+
+classmethod fromhandle(handle)
+

Create object from MPI handle.

+
+
Parameters:
+

handle (int)

+
+
Return type:
+

Win

+
+
+
+ +
+
+py2f()
+
+
Return type:
+

int

+
+
+
+ +
+
+tomemory()
+

Return window memory buffer.

+
+
Return type:
+

buffer

+
+
+
+ +

Attributes Documentation

+
+
+attrs
+

Attributes.

+
+ +
+
+flavor
+

Create flavor.

+
+ +
+
+group
+

Group.

+
+ +
+
+group_rank
+

Group rank.

+
+ +
+
+group_size
+

Group size.

+
+ +
+
+handle
+

MPI handle.

+
+ +
+
+info
+

Info hints.

+
+ +
+
+model
+

Memory model.

+
+ +
+
+name
+

Print name.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Wtick.html b/4.0.0/html/reference/mpi4py.MPI.Wtick.html new file mode 100644 index 0000000..bd50e93 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Wtick.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Wtick — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Wtick

+
+
+mpi4py.MPI.Wtick()
+

Return the resolution of Wtime.

+
+
Return type:
+

float

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.Wtime.html b/4.0.0/html/reference/mpi4py.MPI.Wtime.html new file mode 100644 index 0000000..d19d019 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.Wtime.html @@ -0,0 +1,127 @@ + + + + + + + + mpi4py.MPI.Wtime — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.Wtime

+
+
+mpi4py.MPI.Wtime()
+

Return an elapsed time on the calling processor.

+
+
Return type:
+

float

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.buffer.html b/4.0.0/html/reference/mpi4py.MPI.buffer.html new file mode 100644 index 0000000..a01a5ef --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.buffer.html @@ -0,0 +1,328 @@ + + + + + + + + mpi4py.MPI.buffer — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.buffer

+
+
+class mpi4py.MPI.buffer
+

Bases: object

+

Buffer.

+
+
+static __new__(cls, buf)
+
+
Parameters:
+

buf (Buffer)

+
+
Return type:
+

Self

+
+
+
+ +

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + +

allocate(nbytes[, clear])

Buffer allocation.

cast(format[, shape])

Cast to a memoryview with new format or shape.

fromaddress(address, nbytes[, readonly])

Buffer from address and size in bytes.

frombuffer(obj[, readonly])

Buffer from buffer-like object.

release()

Release the underlying buffer exposed by the buffer object.

tobytes([order])

Return the data in the buffer as a byte string.

toreadonly()

Return a readonly version of the buffer object.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + +

address

Buffer address.

format

Format of each element.

itemsize

Size (in bytes) of each element.

nbytes

Buffer size (in bytes).

obj

Object exposing buffer.

readonly

Buffer is read-only.

+

Methods Documentation

+
+
+static allocate(nbytes, clear=False)
+

Buffer allocation.

+
+
Parameters:
+
+
+
Return type:
+

buffer

+
+
+
+ +
+
+cast(format, shape=Ellipsis)
+

Cast to a memoryview with new format or shape.

+
+
Parameters:
+
+
+
Return type:
+

memoryview

+
+
+
+ +
+
+static fromaddress(address, nbytes, readonly=False)
+

Buffer from address and size in bytes.

+
+
Parameters:
+
+
+
Return type:
+

buffer

+
+
+
+ +
+
+static frombuffer(obj, readonly=False)
+

Buffer from buffer-like object.

+
+
Parameters:
+
+
+
Return type:
+

buffer

+
+
+
+ +
+
+release()
+

Release the underlying buffer exposed by the buffer object.

+
+
Return type:
+

None

+
+
+
+ +
+
+tobytes(order=None)
+

Return the data in the buffer as a byte string.

+
+
Parameters:
+

order (str | None)

+
+
Return type:
+

bytes

+
+
+
+ +
+
+toreadonly()
+

Return a readonly version of the buffer object.

+
+
Return type:
+

buffer

+
+
+
+ +

Attributes Documentation

+
+
+address
+

Buffer address.

+
+ +
+
+format
+

Format of each element.

+
+ +
+
+itemsize
+

Size (in bytes) of each element.

+
+ +
+
+nbytes
+

Buffer size (in bytes).

+
+ +
+
+obj
+

Object exposing buffer.

+
+ +
+
+readonly
+

Buffer is read-only.

+
+ +
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.get_vendor.html b/4.0.0/html/reference/mpi4py.MPI.get_vendor.html new file mode 100644 index 0000000..1a2e3d0 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.get_vendor.html @@ -0,0 +1,134 @@ + + + + + + + + mpi4py.MPI.get_vendor — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.get_vendor

+
+
+mpi4py.MPI.get_vendor()
+

Information about the underlying MPI implementation.

+
+
Returns:
+

    +
  • string with the name of the MPI implementation.

  • +
  • integer 3-tuple version number (major, minor, micro).

  • +
+

+
+
Return type:
+

tuple[str, tuple[int, int, int]]

+
+
+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.html b/4.0.0/html/reference/mpi4py.MPI.html new file mode 100644 index 0000000..3042929 --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.html @@ -0,0 +1,1215 @@ + + + + + + + + mpi4py.MPI — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI

+

Message Passing Interface.

+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

BottomType

Type of BOTTOM.

BufferAutomaticType

Type of BUFFER_AUTOMATIC.

Cartcomm

Cartesian topology intracommunicator.

Comm

Communication context.

Datatype

Datatype object.

Distgraphcomm

Distributed graph topology intracommunicator.

Errhandler

Error handler.

File

File I/O context.

Graphcomm

General graph topology intracommunicator.

Grequest

Generalized request handler.

Group

Group of processes.

InPlaceType

Type of IN_PLACE.

Info

Info object.

Intercomm

Intercommunicator.

Intracomm

Intracommunicator.

Message

Matched message.

Op

Reduction operation.

Pickle

Pickle/unpickle Python objects.

Prequest

Persistent request handler.

Request

Request handler.

Session

Session context.

Status

Status object.

Topocomm

Topology intracommunicator.

Win

Remote memory access context.

buffer

Buffer.

memory

alias of buffer

+

Exceptions

+ + + + + + +

Exception

Exception class.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Add_error_class()

Add an error class to the known error classes.

Add_error_code(errorclass)

Add an error code to an error class.

Add_error_string(errorcode, string)

Associate an error string with an error class or error code.

Aint_add(base, disp)

Return the sum of base address and displacement.

Aint_diff(addr1, addr2)

Return the difference between absolute addresses.

Alloc_mem(size[, info])

Allocate memory for message passing and remote memory access.

Attach_buffer(buf)

Attach a user-provided buffer for sending in buffered mode.

Close_port(port_name)

Close a port.

Compute_dims(nnodes, dims)

Return a balanced distribution of processes per coordinate direction.

Detach_buffer()

Remove an existing attached buffer.

Finalize()

Terminate the MPI execution environment.

Flush_buffer()

Block until all buffered messages have been transmitted.

Free_mem(mem)

Free memory allocated with Alloc_mem.

Get_address(location)

Get the address of a location in memory.

Get_error_class(errorcode)

Convert an error code into an error class.

Get_error_string(errorcode)

Return the error string for a given error class or error code.

Get_hw_resource_info()

Obtain information about the hardware platform of the calling processor.

Get_library_version()

Obtain the version string of the MPI library.

Get_processor_name()

Obtain the name of the calling processor.

Get_version()

Obtain the version number of the MPI standard.

Iflush_buffer()

Nonblocking flush for buffered messages.

Init()

Initialize the MPI execution environment.

Init_thread([required])

Initialize the MPI execution environment.

Is_finalized()

Indicate whether Finalize has completed.

Is_initialized()

Indicate whether Init has been called.

Is_thread_main()

Indicate whether this thread called Init or Init_thread.

Lookup_name(service_name[, info])

Lookup a port name given a service name.

Open_port([info])

Return an address used to connect group of processes.

Pcontrol(level)

Control profiling.

Publish_name(service_name, port_name[, info])

Publish a service name.

Query_thread()

Return the level of thread support provided by the MPI library.

Register_datarep(datarep, read_fn, write_fn, ...)

Register user-defined data representations.

Remove_error_class(errorclass)

Remove an error class from the known error classes.

Remove_error_code(errorcode)

Remove an error code from the known error codes.

Remove_error_string(errorcode)

Remove error string association from error class or error code.

Unpublish_name(service_name, port_name[, info])

Unpublish a service name.

Wtick()

Return the resolution of Wtime.

Wtime()

Return an elapsed time on the calling processor.

get_vendor()

Information about the underlying MPI implementation.

+

Attributes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

UNDEFINED

Constant UNDEFINED of type int

ANY_SOURCE

Constant ANY_SOURCE of type int

ANY_TAG

Constant ANY_TAG of type int

PROC_NULL

Constant PROC_NULL of type int

ROOT

Constant ROOT of type int

BOTTOM

Constant BOTTOM of type BottomType

IN_PLACE

Constant IN_PLACE of type InPlaceType

KEYVAL_INVALID

Constant KEYVAL_INVALID of type int

TAG_UB

Constant TAG_UB of type int

IO

Constant IO of type int

WTIME_IS_GLOBAL

Constant WTIME_IS_GLOBAL of type int

UNIVERSE_SIZE

Constant UNIVERSE_SIZE of type int

APPNUM

Constant APPNUM of type int

LASTUSEDCODE

Constant LASTUSEDCODE of type int

WIN_BASE

Constant WIN_BASE of type int

WIN_SIZE

Constant WIN_SIZE of type int

WIN_DISP_UNIT

Constant WIN_DISP_UNIT of type int

WIN_CREATE_FLAVOR

Constant WIN_CREATE_FLAVOR of type int

WIN_FLAVOR

Constant WIN_FLAVOR of type int

WIN_MODEL

Constant WIN_MODEL of type int

SUCCESS

Constant SUCCESS of type int

ERR_LASTCODE

Constant ERR_LASTCODE of type int

ERR_TYPE

Constant ERR_TYPE of type int

ERR_REQUEST

Constant ERR_REQUEST of type int

ERR_OP

Constant ERR_OP of type int

ERR_GROUP

Constant ERR_GROUP of type int

ERR_INFO

Constant ERR_INFO of type int

ERR_ERRHANDLER

Constant ERR_ERRHANDLER of type int

ERR_SESSION

Constant ERR_SESSION of type int

ERR_COMM

Constant ERR_COMM of type int

ERR_WIN

Constant ERR_WIN of type int

ERR_FILE

Constant ERR_FILE of type int

ERR_BUFFER

Constant ERR_BUFFER of type int

ERR_COUNT

Constant ERR_COUNT of type int

ERR_TAG

Constant ERR_TAG of type int

ERR_RANK

Constant ERR_RANK of type int

ERR_ROOT

Constant ERR_ROOT of type int

ERR_TRUNCATE

Constant ERR_TRUNCATE of type int

ERR_IN_STATUS

Constant ERR_IN_STATUS of type int

ERR_PENDING

Constant ERR_PENDING of type int

ERR_TOPOLOGY

Constant ERR_TOPOLOGY of type int

ERR_DIMS

Constant ERR_DIMS of type int

ERR_ARG

Constant ERR_ARG of type int

ERR_OTHER

Constant ERR_OTHER of type int

ERR_UNKNOWN

Constant ERR_UNKNOWN of type int

ERR_INTERN

Constant ERR_INTERN of type int

ERR_KEYVAL

Constant ERR_KEYVAL of type int

ERR_NO_MEM

Constant ERR_NO_MEM of type int

ERR_INFO_KEY

Constant ERR_INFO_KEY of type int

ERR_INFO_VALUE

Constant ERR_INFO_VALUE of type int

ERR_INFO_NOKEY

Constant ERR_INFO_NOKEY of type int

ERR_SPAWN

Constant ERR_SPAWN of type int

ERR_PORT

Constant ERR_PORT of type int

ERR_SERVICE

Constant ERR_SERVICE of type int

ERR_NAME

Constant ERR_NAME of type int

ERR_PROC_ABORTED

Constant ERR_PROC_ABORTED of type int

ERR_BASE

Constant ERR_BASE of type int

ERR_SIZE

Constant ERR_SIZE of type int

ERR_DISP

Constant ERR_DISP of type int

ERR_ASSERT

Constant ERR_ASSERT of type int

ERR_LOCKTYPE

Constant ERR_LOCKTYPE of type int

ERR_RMA_CONFLICT

Constant ERR_RMA_CONFLICT of type int

ERR_RMA_SYNC

Constant ERR_RMA_SYNC of type int

ERR_RMA_RANGE

Constant ERR_RMA_RANGE of type int

ERR_RMA_ATTACH

Constant ERR_RMA_ATTACH of type int

ERR_RMA_SHARED

Constant ERR_RMA_SHARED of type int

ERR_RMA_FLAVOR

Constant ERR_RMA_FLAVOR of type int

ERR_BAD_FILE

Constant ERR_BAD_FILE of type int

ERR_NO_SUCH_FILE

Constant ERR_NO_SUCH_FILE of type int

ERR_FILE_EXISTS

Constant ERR_FILE_EXISTS of type int

ERR_FILE_IN_USE

Constant ERR_FILE_IN_USE of type int

ERR_AMODE

Constant ERR_AMODE of type int

ERR_ACCESS

Constant ERR_ACCESS of type int

ERR_READ_ONLY

Constant ERR_READ_ONLY of type int

ERR_NO_SPACE

Constant ERR_NO_SPACE of type int

ERR_QUOTA

Constant ERR_QUOTA of type int

ERR_NOT_SAME

Constant ERR_NOT_SAME of type int

ERR_IO

Constant ERR_IO of type int

ERR_UNSUPPORTED_OPERATION

Constant ERR_UNSUPPORTED_OPERATION of type int

ERR_UNSUPPORTED_DATAREP

Constant ERR_UNSUPPORTED_DATAREP of type int

ERR_CONVERSION

Constant ERR_CONVERSION of type int

ERR_DUP_DATAREP

Constant ERR_DUP_DATAREP of type int

ERR_VALUE_TOO_LARGE

Constant ERR_VALUE_TOO_LARGE of type int

ERR_REVOKED

Constant ERR_REVOKED of type int

ERR_PROC_FAILED

Constant ERR_PROC_FAILED of type int

ERR_PROC_FAILED_PENDING

Constant ERR_PROC_FAILED_PENDING of type int

ORDER_C

Constant ORDER_C of type int

ORDER_FORTRAN

Constant ORDER_FORTRAN of type int

ORDER_F

Constant ORDER_F of type int

TYPECLASS_INTEGER

Constant TYPECLASS_INTEGER of type int

TYPECLASS_REAL

Constant TYPECLASS_REAL of type int

TYPECLASS_COMPLEX

Constant TYPECLASS_COMPLEX of type int

DISTRIBUTE_NONE

Constant DISTRIBUTE_NONE of type int

DISTRIBUTE_BLOCK

Constant DISTRIBUTE_BLOCK of type int

DISTRIBUTE_CYCLIC

Constant DISTRIBUTE_CYCLIC of type int

DISTRIBUTE_DFLT_DARG

Constant DISTRIBUTE_DFLT_DARG of type int

COMBINER_NAMED

Constant COMBINER_NAMED of type int

COMBINER_DUP

Constant COMBINER_DUP of type int

COMBINER_CONTIGUOUS

Constant COMBINER_CONTIGUOUS of type int

COMBINER_VECTOR

Constant COMBINER_VECTOR of type int

COMBINER_HVECTOR

Constant COMBINER_HVECTOR of type int

COMBINER_INDEXED

Constant COMBINER_INDEXED of type int

COMBINER_HINDEXED

Constant COMBINER_HINDEXED of type int

COMBINER_INDEXED_BLOCK

Constant COMBINER_INDEXED_BLOCK of type int

COMBINER_HINDEXED_BLOCK

Constant COMBINER_HINDEXED_BLOCK of type int

COMBINER_STRUCT

Constant COMBINER_STRUCT of type int

COMBINER_SUBARRAY

Constant COMBINER_SUBARRAY of type int

COMBINER_DARRAY

Constant COMBINER_DARRAY of type int

COMBINER_RESIZED

Constant COMBINER_RESIZED of type int

COMBINER_VALUE_INDEX

Constant COMBINER_VALUE_INDEX of type int

COMBINER_F90_INTEGER

Constant COMBINER_F90_INTEGER of type int

COMBINER_F90_REAL

Constant COMBINER_F90_REAL of type int

COMBINER_F90_COMPLEX

Constant COMBINER_F90_COMPLEX of type int

F_SOURCE

Constant F_SOURCE of type int

F_TAG

Constant F_TAG of type int

F_ERROR

Constant F_ERROR of type int

F_STATUS_SIZE

Constant F_STATUS_SIZE of type int

IDENT

Constant IDENT of type int

CONGRUENT

Constant CONGRUENT of type int

SIMILAR

Constant SIMILAR of type int

UNEQUAL

Constant UNEQUAL of type int

CART

Constant CART of type int

GRAPH

Constant GRAPH of type int

DIST_GRAPH

Constant DIST_GRAPH of type int

UNWEIGHTED

Constant UNWEIGHTED of type int

WEIGHTS_EMPTY

Constant WEIGHTS_EMPTY of type int

COMM_TYPE_SHARED

Constant COMM_TYPE_SHARED of type int

COMM_TYPE_HW_GUIDED

Constant COMM_TYPE_HW_GUIDED of type int

COMM_TYPE_HW_UNGUIDED

Constant COMM_TYPE_HW_UNGUIDED of type int

COMM_TYPE_RESOURCE_GUIDED

Constant COMM_TYPE_RESOURCE_GUIDED of type int

BSEND_OVERHEAD

Constant BSEND_OVERHEAD of type int

BUFFER_AUTOMATIC

Constant BUFFER_AUTOMATIC of type BufferAutomaticType

WIN_FLAVOR_CREATE

Constant WIN_FLAVOR_CREATE of type int

WIN_FLAVOR_ALLOCATE

Constant WIN_FLAVOR_ALLOCATE of type int

WIN_FLAVOR_DYNAMIC

Constant WIN_FLAVOR_DYNAMIC of type int

WIN_FLAVOR_SHARED

Constant WIN_FLAVOR_SHARED of type int

WIN_SEPARATE

Constant WIN_SEPARATE of type int

WIN_UNIFIED

Constant WIN_UNIFIED of type int

MODE_NOCHECK

Constant MODE_NOCHECK of type int

MODE_NOSTORE

Constant MODE_NOSTORE of type int

MODE_NOPUT

Constant MODE_NOPUT of type int

MODE_NOPRECEDE

Constant MODE_NOPRECEDE of type int

MODE_NOSUCCEED

Constant MODE_NOSUCCEED of type int

LOCK_EXCLUSIVE

Constant LOCK_EXCLUSIVE of type int

LOCK_SHARED

Constant LOCK_SHARED of type int

MODE_RDONLY

Constant MODE_RDONLY of type int

MODE_WRONLY

Constant MODE_WRONLY of type int

MODE_RDWR

Constant MODE_RDWR of type int

MODE_CREATE

Constant MODE_CREATE of type int

MODE_EXCL

Constant MODE_EXCL of type int

MODE_DELETE_ON_CLOSE

Constant MODE_DELETE_ON_CLOSE of type int

MODE_UNIQUE_OPEN

Constant MODE_UNIQUE_OPEN of type int

MODE_SEQUENTIAL

Constant MODE_SEQUENTIAL of type int

MODE_APPEND

Constant MODE_APPEND of type int

SEEK_SET

Constant SEEK_SET of type int

SEEK_CUR

Constant SEEK_CUR of type int

SEEK_END

Constant SEEK_END of type int

DISPLACEMENT_CURRENT

Constant DISPLACEMENT_CURRENT of type int

DISP_CUR

Constant DISP_CUR of type int

THREAD_SINGLE

Constant THREAD_SINGLE of type int

THREAD_FUNNELED

Constant THREAD_FUNNELED of type int

THREAD_SERIALIZED

Constant THREAD_SERIALIZED of type int

THREAD_MULTIPLE

Constant THREAD_MULTIPLE of type int

VERSION

Constant VERSION of type int

SUBVERSION

Constant SUBVERSION of type int

MAX_PROCESSOR_NAME

Constant MAX_PROCESSOR_NAME of type int

MAX_ERROR_STRING

Constant MAX_ERROR_STRING of type int

MAX_PORT_NAME

Constant MAX_PORT_NAME of type int

MAX_INFO_KEY

Constant MAX_INFO_KEY of type int

MAX_INFO_VAL

Constant MAX_INFO_VAL of type int

MAX_OBJECT_NAME

Constant MAX_OBJECT_NAME of type int

MAX_DATAREP_STRING

Constant MAX_DATAREP_STRING of type int

MAX_LIBRARY_VERSION_STRING

Constant MAX_LIBRARY_VERSION_STRING of type int

MAX_PSET_NAME_LEN

Constant MAX_PSET_NAME_LEN of type int

MAX_STRINGTAG_LEN

Constant MAX_STRINGTAG_LEN of type int

DATATYPE_NULL

Object DATATYPE_NULL of type Datatype

PACKED

Object PACKED of type Datatype

BYTE

Object BYTE of type Datatype

AINT

Object AINT of type Datatype

OFFSET

Object OFFSET of type Datatype

COUNT

Object COUNT of type Datatype

CHAR

Object CHAR of type Datatype

WCHAR

Object WCHAR of type Datatype

SIGNED_CHAR

Object SIGNED_CHAR of type Datatype

SHORT

Object SHORT of type Datatype

INT

Object INT of type Datatype

LONG

Object LONG of type Datatype

LONG_LONG

Object LONG_LONG of type Datatype

UNSIGNED_CHAR

Object UNSIGNED_CHAR of type Datatype

UNSIGNED_SHORT

Object UNSIGNED_SHORT of type Datatype

UNSIGNED

Object UNSIGNED of type Datatype

UNSIGNED_LONG

Object UNSIGNED_LONG of type Datatype

UNSIGNED_LONG_LONG

Object UNSIGNED_LONG_LONG of type Datatype

FLOAT

Object FLOAT of type Datatype

DOUBLE

Object DOUBLE of type Datatype

LONG_DOUBLE

Object LONG_DOUBLE of type Datatype

C_BOOL

Object C_BOOL of type Datatype

INT8_T

Object INT8_T of type Datatype

INT16_T

Object INT16_T of type Datatype

INT32_T

Object INT32_T of type Datatype

INT64_T

Object INT64_T of type Datatype

UINT8_T

Object UINT8_T of type Datatype

UINT16_T

Object UINT16_T of type Datatype

UINT32_T

Object UINT32_T of type Datatype

UINT64_T

Object UINT64_T of type Datatype

C_COMPLEX

Object C_COMPLEX of type Datatype

C_FLOAT_COMPLEX

Object C_FLOAT_COMPLEX of type Datatype

C_DOUBLE_COMPLEX

Object C_DOUBLE_COMPLEX of type Datatype

C_LONG_DOUBLE_COMPLEX

Object C_LONG_DOUBLE_COMPLEX of type Datatype

CXX_BOOL

Object CXX_BOOL of type Datatype

CXX_FLOAT_COMPLEX

Object CXX_FLOAT_COMPLEX of type Datatype

CXX_DOUBLE_COMPLEX

Object CXX_DOUBLE_COMPLEX of type Datatype

CXX_LONG_DOUBLE_COMPLEX

Object CXX_LONG_DOUBLE_COMPLEX of type Datatype

SHORT_INT

Object SHORT_INT of type Datatype

INT_INT

Object INT_INT of type Datatype

TWOINT

Object TWOINT of type Datatype

LONG_INT

Object LONG_INT of type Datatype

FLOAT_INT

Object FLOAT_INT of type Datatype

DOUBLE_INT

Object DOUBLE_INT of type Datatype

LONG_DOUBLE_INT

Object LONG_DOUBLE_INT of type Datatype

CHARACTER

Object CHARACTER of type Datatype

LOGICAL

Object LOGICAL of type Datatype

INTEGER

Object INTEGER of type Datatype

REAL

Object REAL of type Datatype

DOUBLE_PRECISION

Object DOUBLE_PRECISION of type Datatype

COMPLEX

Object COMPLEX of type Datatype

DOUBLE_COMPLEX

Object DOUBLE_COMPLEX of type Datatype

LOGICAL1

Object LOGICAL1 of type Datatype

LOGICAL2

Object LOGICAL2 of type Datatype

LOGICAL4

Object LOGICAL4 of type Datatype

LOGICAL8

Object LOGICAL8 of type Datatype

INTEGER1

Object INTEGER1 of type Datatype

INTEGER2

Object INTEGER2 of type Datatype

INTEGER4

Object INTEGER4 of type Datatype

INTEGER8

Object INTEGER8 of type Datatype

INTEGER16

Object INTEGER16 of type Datatype

REAL2

Object REAL2 of type Datatype

REAL4

Object REAL4 of type Datatype

REAL8

Object REAL8 of type Datatype

REAL16

Object REAL16 of type Datatype

COMPLEX4

Object COMPLEX4 of type Datatype

COMPLEX8

Object COMPLEX8 of type Datatype

COMPLEX16

Object COMPLEX16 of type Datatype

COMPLEX32

Object COMPLEX32 of type Datatype

UNSIGNED_INT

Object UNSIGNED_INT of type Datatype

SIGNED_SHORT

Object SIGNED_SHORT of type Datatype

SIGNED_INT

Object SIGNED_INT of type Datatype

SIGNED_LONG

Object SIGNED_LONG of type Datatype

SIGNED_LONG_LONG

Object SIGNED_LONG_LONG of type Datatype

BOOL

Object BOOL of type Datatype

SINT8_T

Object SINT8_T of type Datatype

SINT16_T

Object SINT16_T of type Datatype

SINT32_T

Object SINT32_T of type Datatype

SINT64_T

Object SINT64_T of type Datatype

F_BOOL

Object F_BOOL of type Datatype

F_INT

Object F_INT of type Datatype

F_FLOAT

Object F_FLOAT of type Datatype

F_DOUBLE

Object F_DOUBLE of type Datatype

F_COMPLEX

Object F_COMPLEX of type Datatype

F_FLOAT_COMPLEX

Object F_FLOAT_COMPLEX of type Datatype

F_DOUBLE_COMPLEX

Object F_DOUBLE_COMPLEX of type Datatype

REQUEST_NULL

Object REQUEST_NULL of type Request

MESSAGE_NULL

Object MESSAGE_NULL of type Message

MESSAGE_NO_PROC

Object MESSAGE_NO_PROC of type Message

OP_NULL

Object OP_NULL of type Op

MAX

Object MAX of type Op

MIN

Object MIN of type Op

SUM

Object SUM of type Op

PROD

Object PROD of type Op

LAND

Object LAND of type Op

BAND

Object BAND of type Op

LOR

Object LOR of type Op

BOR

Object BOR of type Op

LXOR

Object LXOR of type Op

BXOR

Object BXOR of type Op

MAXLOC

Object MAXLOC of type Op

MINLOC

Object MINLOC of type Op

REPLACE

Object REPLACE of type Op

NO_OP

Object NO_OP of type Op

GROUP_NULL

Object GROUP_NULL of type Group

GROUP_EMPTY

Object GROUP_EMPTY of type Group

INFO_NULL

Object INFO_NULL of type Info

INFO_ENV

Object INFO_ENV of type Info

ERRHANDLER_NULL

Object ERRHANDLER_NULL of type Errhandler

ERRORS_RETURN

Object ERRORS_RETURN of type Errhandler

ERRORS_ABORT

Object ERRORS_ABORT of type Errhandler

ERRORS_ARE_FATAL

Object ERRORS_ARE_FATAL of type Errhandler

SESSION_NULL

Object SESSION_NULL of type Session

COMM_NULL

Object COMM_NULL of type Comm

COMM_SELF

Object COMM_SELF of type Intracomm

COMM_WORLD

Object COMM_WORLD of type Intracomm

WIN_NULL

Object WIN_NULL of type Win

FILE_NULL

Object FILE_NULL of type File

pickle

Object pickle of type Pickle

+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.memory.html b/4.0.0/html/reference/mpi4py.MPI.memory.html new file mode 100644 index 0000000..22489ec --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.memory.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.memory — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.memory

+
+
+mpi4py.MPI.memory
+

alias of buffer

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/reference/mpi4py.MPI.pickle.html b/4.0.0/html/reference/mpi4py.MPI.pickle.html new file mode 100644 index 0000000..dd1e9bb --- /dev/null +++ b/4.0.0/html/reference/mpi4py.MPI.pickle.html @@ -0,0 +1,122 @@ + + + + + + + + mpi4py.MPI.pickle — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

mpi4py.MPI.pickle

+
+
+mpi4py.MPI.pickle: Pickle = <mpi4py.MPI.Pickle object>
+

Object pickle of type Pickle

+
+ +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/search.html b/4.0.0/html/search.html new file mode 100644 index 0000000..f001b1b --- /dev/null +++ b/4.0.0/html/search.html @@ -0,0 +1,107 @@ + + + + + + + Search — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + +
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/html/searchindex.js b/4.0.0/html/searchindex.js new file mode 100644 index 0000000..e8acfd2 --- /dev/null +++ b/4.0.0/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"Abstract": [[4, null]], "Attributes": [[9, "attributes"]], "Blocking Communications": [[19, "blocking-communications"]], "Build backends": [[5, "build-backends"]], "Building": [[2, "building"]], "CHANGES": [[0, null]], "Citation": [[1, null], [11, "citation"]], "Classes": [[9, "classes"]], "Collective Communication": [[382, "collective-communication"]], "Collective Communications": [[19, "collective-communications"]], "Command line": [[11, "command-line"], [12, "command-line"]], "Communicating Python Objects and Array Data": [[19, "communicating-python-objects-and-array-data"]], "Communicators": [[19, "communicators"]], "Computing Pi (parallel task)": [[11, "computing-pi-parallel-task"]], "Computing the Julia set": [[11, "computing-the-julia-set"]], "Condition variable": [[18, "condition-variable"]], "Contents": [[4, null]], "Development": [[2, null]], "Dynamic Process Management": [[19, "dynamic-process-management"], [382, "dynamic-process-management"]], "Environment variables": [[8, "environment-variables"]], "Environmental Management": [[19, "environmental-management"]], "Error Handling": [[19, "error-handling"]], "Examples": [[11, "examples"], [16, "examples"], [18, "examples"]], "Exceptions and deadlocks": [[12, "exceptions-and-deadlocks"]], "Fair play": [[3, "fair-play"]], "Fair play rules": [[3, "fair-play-rules"]], "Functions": [[9, "functions"]], "GPU-aware MPI + Python GPU arrays": [[382, "gpu-aware-mpi-python-gpu-arrays"]], "Global counter": [[18, "global-counter"]], "Guidelines": [[3, null]], "Implementation Information": [[19, "implementation-information"]], "Initialization and Exit": [[19, "initialization-and-exit"]], "Input/Output (MPI-IO)": [[382, "input-output-mpi-io"]], "Installation": [[5, null]], "Installing": [[2, "installing"]], "Introduction": [[6, null]], "LICENSE": [[7, null]], "Linux": [[5, "linux"]], "MPI for Python": [[4, null]], "MPICommExecutor": [[11, "mpicommexecutor"]], "MPIPoolExecutor": [[11, "mpipoolexecutor"]], "Miscellaneous functions": [[8, "miscellaneous-functions"]], "Motivation": [[3, "motivation"]], "Mutual exclusion": [[18, "mutual-exclusion"]], "Nonblocking Communications": [[19, "nonblocking-communications"]], "One-Sided Communication (RMA)": [[382, "one-sided-communication-rma"]], "One-Sided Communications": [[19, "one-sided-communications"]], "Overview": [[19, null]], "Parallel Input/Output": [[19, "parallel-input-output"]], "Parallel tasks": [[11, "parallel-tasks"]], "Persistent Communications": [[19, "persistent-communications"]], "Point-to-Point Communication": [[382, "point-to-point-communication"]], "Point-to-Point Communications": [[19, "point-to-point-communications"]], "Prerequisites": [[2, "prerequisites"]], "Reference": [[20, null]], "Related Projects": [[6, "related-projects"]], "Release 1.0.0 [2009-03-20]": [[0, "release-1-0-0-2009-03-20"]], "Release 1.1.0 [2009-06-06]": [[0, "release-1-1-0-2009-06-06"]], "Release 1.2 [2009-12-29]": [[0, "release-1-2-2009-12-29"]], "Release 1.2.1 [2010-02-26]": [[0, "release-1-2-1-2010-02-26"]], "Release 1.2.2 [2010-09-13]": [[0, "release-1-2-2-2010-09-13"]], "Release 1.3 [2012-01-20]": [[0, "release-1-3-2012-01-20"]], "Release 1.3.1 [2013-08-07]": [[0, "release-1-3-1-2013-08-07"]], "Release 2.0.0 [2015-10-18]": [[0, "release-2-0-0-2015-10-18"]], "Release 3.0.0 [2017-11-08]": [[0, "release-3-0-0-2017-11-08"]], "Release 3.0.1 [2019-02-15]": [[0, "release-3-0-1-2019-02-15"]], "Release 3.0.2 [2019-06-11]": [[0, "release-3-0-2-2019-06-11"]], "Release 3.0.3 [2019-11-04]": [[0, "release-3-0-3-2019-11-04"]], "Release 3.1.0 [2021-08-12]": [[0, "release-3-1-0-2021-08-12"]], "Release 3.1.1 [2021-08-14]": [[0, "release-3-1-1-2021-08-14"]], "Release 3.1.2 [2021-11-04]": [[0, "release-3-1-2-2021-11-04"]], "Release 3.1.3 [2021-11-25]": [[0, "release-3-1-3-2021-11-25"]], "Release 3.1.4 [2022-11-02]": [[0, "release-3-1-4-2022-11-02"]], "Release 3.1.5 [2023-10-04]": [[0, "release-3-1-5-2023-10-04"]], "Release 3.1.6 [2024-04-14]": [[0, "release-3-1-6-2024-04-14"]], "Release 4.0.0 [2024-07-28]": [[0, "release-4-0-0-2024-07-28"]], "Running Python scripts with MPI": [[382, "running-python-scripts-with-mpi"]], "Runtime configuration options": [[8, "runtime-configuration-options"]], "Scope": [[3, "scope"]], "Semaphore object": [[18, "semaphore-object"]], "Sequential execution": [[18, "sequential-execution"]], "Summary": [[3, "summary"]], "Support for GPU-aware MPI": [[19, "support-for-gpu-aware-mpi"]], "Testing": [[2, "testing"]], "Timers": [[19, "timers"]], "Tutorial": [[382, null]], "Using conda": [[5, "using-conda"]], "Using meson-python": [[5, "using-meson-python"]], "Using pip": [[5, "using-pip"]], "Using scikit-build-core": [[5, "using-scikit-build-core"]], "Using setuptools": [[5, "using-setuptools"]], "Utilities": [[11, "utilities"]], "What is MPI?": [[6, "what-is-mpi"]], "What is Python?": [[6, "what-is-python"]], "Windows": [[5, "windows"]], "Wrapping with F2Py": [[382, "wrapping-with-f2py"]], "Wrapping with SWIG": [[382, "wrapping-with-swig"]], "macOS": [[5, "macos"]], "mpi4py": [[8, null]], "mpi4py.MPI": [[9, null], [21, null]], "mpi4py.MPI.AINT": [[22, null]], "mpi4py.MPI.ANY_SOURCE": [[23, null]], "mpi4py.MPI.ANY_TAG": [[24, null]], "mpi4py.MPI.APPNUM": [[25, null]], "mpi4py.MPI.Add_error_class": [[26, null]], "mpi4py.MPI.Add_error_code": [[27, null]], "mpi4py.MPI.Add_error_string": [[28, null]], "mpi4py.MPI.Aint_add": [[29, null]], "mpi4py.MPI.Aint_diff": [[30, null]], "mpi4py.MPI.Alloc_mem": [[31, null]], "mpi4py.MPI.Attach_buffer": [[32, null]], "mpi4py.MPI.BAND": [[33, null]], "mpi4py.MPI.BOOL": [[34, null]], "mpi4py.MPI.BOR": [[35, null]], "mpi4py.MPI.BOTTOM": [[36, null]], "mpi4py.MPI.BSEND_OVERHEAD": [[37, null]], "mpi4py.MPI.BUFFER_AUTOMATIC": [[38, null]], "mpi4py.MPI.BXOR": [[39, null]], "mpi4py.MPI.BYTE": [[40, null]], "mpi4py.MPI.BottomType": [[41, null]], "mpi4py.MPI.BufferAutomaticType": [[42, null]], "mpi4py.MPI.CART": [[43, null]], "mpi4py.MPI.CHAR": [[44, null]], "mpi4py.MPI.CHARACTER": [[45, null]], "mpi4py.MPI.COMBINER_CONTIGUOUS": [[46, null]], "mpi4py.MPI.COMBINER_DARRAY": [[47, null]], "mpi4py.MPI.COMBINER_DUP": [[48, null]], "mpi4py.MPI.COMBINER_F90_COMPLEX": [[49, null]], "mpi4py.MPI.COMBINER_F90_INTEGER": [[50, null]], "mpi4py.MPI.COMBINER_F90_REAL": [[51, null]], "mpi4py.MPI.COMBINER_HINDEXED": [[52, null]], "mpi4py.MPI.COMBINER_HINDEXED_BLOCK": [[53, null]], "mpi4py.MPI.COMBINER_HVECTOR": [[54, null]], "mpi4py.MPI.COMBINER_INDEXED": [[55, null]], "mpi4py.MPI.COMBINER_INDEXED_BLOCK": [[56, null]], "mpi4py.MPI.COMBINER_NAMED": [[57, null]], "mpi4py.MPI.COMBINER_RESIZED": [[58, null]], "mpi4py.MPI.COMBINER_STRUCT": [[59, null]], "mpi4py.MPI.COMBINER_SUBARRAY": [[60, null]], "mpi4py.MPI.COMBINER_VALUE_INDEX": [[61, null]], "mpi4py.MPI.COMBINER_VECTOR": [[62, null]], "mpi4py.MPI.COMM_NULL": [[63, null]], "mpi4py.MPI.COMM_SELF": [[64, null]], "mpi4py.MPI.COMM_TYPE_HW_GUIDED": [[65, null]], "mpi4py.MPI.COMM_TYPE_HW_UNGUIDED": [[66, null]], "mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED": [[67, null]], "mpi4py.MPI.COMM_TYPE_SHARED": [[68, null]], "mpi4py.MPI.COMM_WORLD": [[69, null]], "mpi4py.MPI.COMPLEX": [[70, null]], "mpi4py.MPI.COMPLEX16": [[71, null]], "mpi4py.MPI.COMPLEX32": [[72, null]], "mpi4py.MPI.COMPLEX4": [[73, null]], "mpi4py.MPI.COMPLEX8": [[74, null]], "mpi4py.MPI.CONGRUENT": [[75, null]], "mpi4py.MPI.COUNT": [[76, null]], "mpi4py.MPI.CXX_BOOL": [[77, null]], "mpi4py.MPI.CXX_DOUBLE_COMPLEX": [[78, null]], "mpi4py.MPI.CXX_FLOAT_COMPLEX": [[79, null]], "mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX": [[80, null]], "mpi4py.MPI.C_BOOL": [[81, null]], "mpi4py.MPI.C_COMPLEX": [[82, null]], "mpi4py.MPI.C_DOUBLE_COMPLEX": [[83, null]], "mpi4py.MPI.C_FLOAT_COMPLEX": [[84, null]], "mpi4py.MPI.C_LONG_DOUBLE_COMPLEX": [[85, null]], "mpi4py.MPI.Cartcomm": [[86, null]], "mpi4py.MPI.Close_port": [[87, null]], "mpi4py.MPI.Comm": [[88, null]], "mpi4py.MPI.Compute_dims": [[89, null]], "mpi4py.MPI.DATATYPE_NULL": [[90, null]], "mpi4py.MPI.DISPLACEMENT_CURRENT": [[91, null]], "mpi4py.MPI.DISP_CUR": [[92, null]], "mpi4py.MPI.DISTRIBUTE_BLOCK": [[93, null]], "mpi4py.MPI.DISTRIBUTE_CYCLIC": [[94, null]], "mpi4py.MPI.DISTRIBUTE_DFLT_DARG": [[95, null]], "mpi4py.MPI.DISTRIBUTE_NONE": [[96, null]], "mpi4py.MPI.DIST_GRAPH": [[97, null]], "mpi4py.MPI.DOUBLE": [[98, null]], "mpi4py.MPI.DOUBLE_COMPLEX": [[99, null]], "mpi4py.MPI.DOUBLE_INT": [[100, null]], "mpi4py.MPI.DOUBLE_PRECISION": [[101, null]], "mpi4py.MPI.Datatype": [[102, null]], "mpi4py.MPI.Detach_buffer": [[103, null]], "mpi4py.MPI.Distgraphcomm": [[104, null]], "mpi4py.MPI.ERRHANDLER_NULL": [[105, null]], "mpi4py.MPI.ERRORS_ABORT": [[106, null]], "mpi4py.MPI.ERRORS_ARE_FATAL": [[107, null]], "mpi4py.MPI.ERRORS_RETURN": [[108, null]], "mpi4py.MPI.ERR_ACCESS": [[109, null]], "mpi4py.MPI.ERR_AMODE": [[110, null]], "mpi4py.MPI.ERR_ARG": [[111, null]], "mpi4py.MPI.ERR_ASSERT": [[112, null]], "mpi4py.MPI.ERR_BAD_FILE": [[113, null]], "mpi4py.MPI.ERR_BASE": [[114, null]], "mpi4py.MPI.ERR_BUFFER": [[115, null]], "mpi4py.MPI.ERR_COMM": [[116, null]], "mpi4py.MPI.ERR_CONVERSION": [[117, null]], "mpi4py.MPI.ERR_COUNT": [[118, null]], "mpi4py.MPI.ERR_DIMS": [[119, null]], "mpi4py.MPI.ERR_DISP": [[120, null]], "mpi4py.MPI.ERR_DUP_DATAREP": [[121, null]], "mpi4py.MPI.ERR_ERRHANDLER": [[122, null]], "mpi4py.MPI.ERR_FILE": [[123, null]], "mpi4py.MPI.ERR_FILE_EXISTS": [[124, null]], "mpi4py.MPI.ERR_FILE_IN_USE": [[125, null]], "mpi4py.MPI.ERR_GROUP": [[126, null]], "mpi4py.MPI.ERR_INFO": [[127, null]], "mpi4py.MPI.ERR_INFO_KEY": [[128, null]], "mpi4py.MPI.ERR_INFO_NOKEY": [[129, null]], "mpi4py.MPI.ERR_INFO_VALUE": [[130, null]], "mpi4py.MPI.ERR_INTERN": [[131, null]], "mpi4py.MPI.ERR_IN_STATUS": [[132, null]], "mpi4py.MPI.ERR_IO": [[133, null]], "mpi4py.MPI.ERR_KEYVAL": [[134, null]], "mpi4py.MPI.ERR_LASTCODE": [[135, null]], "mpi4py.MPI.ERR_LOCKTYPE": [[136, null]], "mpi4py.MPI.ERR_NAME": [[137, null]], "mpi4py.MPI.ERR_NOT_SAME": [[138, null]], "mpi4py.MPI.ERR_NO_MEM": [[139, null]], "mpi4py.MPI.ERR_NO_SPACE": [[140, null]], "mpi4py.MPI.ERR_NO_SUCH_FILE": [[141, null]], "mpi4py.MPI.ERR_OP": [[142, null]], "mpi4py.MPI.ERR_OTHER": [[143, null]], "mpi4py.MPI.ERR_PENDING": [[144, null]], "mpi4py.MPI.ERR_PORT": [[145, null]], "mpi4py.MPI.ERR_PROC_ABORTED": [[146, null]], "mpi4py.MPI.ERR_PROC_FAILED": [[147, null]], "mpi4py.MPI.ERR_PROC_FAILED_PENDING": [[148, null]], "mpi4py.MPI.ERR_QUOTA": [[149, null]], "mpi4py.MPI.ERR_RANK": [[150, null]], "mpi4py.MPI.ERR_READ_ONLY": [[151, null]], "mpi4py.MPI.ERR_REQUEST": [[152, null]], "mpi4py.MPI.ERR_REVOKED": [[153, null]], "mpi4py.MPI.ERR_RMA_ATTACH": [[154, null]], "mpi4py.MPI.ERR_RMA_CONFLICT": [[155, null]], "mpi4py.MPI.ERR_RMA_FLAVOR": [[156, null]], "mpi4py.MPI.ERR_RMA_RANGE": [[157, null]], "mpi4py.MPI.ERR_RMA_SHARED": [[158, null]], "mpi4py.MPI.ERR_RMA_SYNC": [[159, null]], "mpi4py.MPI.ERR_ROOT": [[160, null]], "mpi4py.MPI.ERR_SERVICE": [[161, null]], "mpi4py.MPI.ERR_SESSION": [[162, null]], "mpi4py.MPI.ERR_SIZE": [[163, null]], "mpi4py.MPI.ERR_SPAWN": [[164, null]], "mpi4py.MPI.ERR_TAG": [[165, null]], "mpi4py.MPI.ERR_TOPOLOGY": [[166, null]], "mpi4py.MPI.ERR_TRUNCATE": [[167, null]], "mpi4py.MPI.ERR_TYPE": [[168, null]], "mpi4py.MPI.ERR_UNKNOWN": [[169, null]], "mpi4py.MPI.ERR_UNSUPPORTED_DATAREP": [[170, null]], "mpi4py.MPI.ERR_UNSUPPORTED_OPERATION": [[171, null]], "mpi4py.MPI.ERR_VALUE_TOO_LARGE": [[172, null]], "mpi4py.MPI.ERR_WIN": [[173, null]], "mpi4py.MPI.Errhandler": [[174, null]], "mpi4py.MPI.Exception": [[175, null]], "mpi4py.MPI.FILE_NULL": [[176, null]], "mpi4py.MPI.FLOAT": [[177, null]], "mpi4py.MPI.FLOAT_INT": [[178, null]], "mpi4py.MPI.F_BOOL": [[179, null]], "mpi4py.MPI.F_COMPLEX": [[180, null]], "mpi4py.MPI.F_DOUBLE": [[181, null]], "mpi4py.MPI.F_DOUBLE_COMPLEX": [[182, null]], "mpi4py.MPI.F_ERROR": [[183, null]], "mpi4py.MPI.F_FLOAT": [[184, null]], "mpi4py.MPI.F_FLOAT_COMPLEX": [[185, null]], "mpi4py.MPI.F_INT": [[186, null]], "mpi4py.MPI.F_SOURCE": [[187, null]], "mpi4py.MPI.F_STATUS_SIZE": [[188, null]], "mpi4py.MPI.F_TAG": [[189, null]], "mpi4py.MPI.File": [[190, null]], "mpi4py.MPI.Finalize": [[191, null]], "mpi4py.MPI.Flush_buffer": [[192, null]], "mpi4py.MPI.Free_mem": [[193, null]], "mpi4py.MPI.GRAPH": [[194, null]], "mpi4py.MPI.GROUP_EMPTY": [[195, null]], "mpi4py.MPI.GROUP_NULL": [[196, null]], "mpi4py.MPI.Get_address": [[197, null]], "mpi4py.MPI.Get_error_class": [[198, null]], "mpi4py.MPI.Get_error_string": [[199, null]], "mpi4py.MPI.Get_hw_resource_info": [[200, null]], "mpi4py.MPI.Get_library_version": [[201, null]], "mpi4py.MPI.Get_processor_name": [[202, null]], "mpi4py.MPI.Get_version": [[203, null]], "mpi4py.MPI.Graphcomm": [[204, null]], "mpi4py.MPI.Grequest": [[205, null]], "mpi4py.MPI.Group": [[206, null]], "mpi4py.MPI.IDENT": [[207, null]], "mpi4py.MPI.INFO_ENV": [[208, null]], "mpi4py.MPI.INFO_NULL": [[209, null]], "mpi4py.MPI.INT": [[210, null]], "mpi4py.MPI.INT16_T": [[211, null]], "mpi4py.MPI.INT32_T": [[212, null]], "mpi4py.MPI.INT64_T": [[213, null]], "mpi4py.MPI.INT8_T": [[214, null]], "mpi4py.MPI.INTEGER": [[215, null]], "mpi4py.MPI.INTEGER1": [[216, null]], "mpi4py.MPI.INTEGER16": [[217, null]], "mpi4py.MPI.INTEGER2": [[218, null]], "mpi4py.MPI.INTEGER4": [[219, null]], "mpi4py.MPI.INTEGER8": [[220, null]], "mpi4py.MPI.INT_INT": [[221, null]], "mpi4py.MPI.IN_PLACE": [[222, null]], "mpi4py.MPI.IO": [[223, null]], "mpi4py.MPI.Iflush_buffer": [[224, null]], "mpi4py.MPI.InPlaceType": [[225, null]], "mpi4py.MPI.Info": [[226, null]], "mpi4py.MPI.Init": [[227, null]], "mpi4py.MPI.Init_thread": [[228, null]], "mpi4py.MPI.Intercomm": [[229, null]], "mpi4py.MPI.Intracomm": [[230, null]], "mpi4py.MPI.Is_finalized": [[231, null]], "mpi4py.MPI.Is_initialized": [[232, null]], "mpi4py.MPI.Is_thread_main": [[233, null]], "mpi4py.MPI.KEYVAL_INVALID": [[234, null]], "mpi4py.MPI.LAND": [[235, null]], "mpi4py.MPI.LASTUSEDCODE": [[236, null]], "mpi4py.MPI.LOCK_EXCLUSIVE": [[237, null]], "mpi4py.MPI.LOCK_SHARED": [[238, null]], "mpi4py.MPI.LOGICAL": [[239, null]], "mpi4py.MPI.LOGICAL1": [[240, null]], "mpi4py.MPI.LOGICAL2": [[241, null]], "mpi4py.MPI.LOGICAL4": [[242, null]], "mpi4py.MPI.LOGICAL8": [[243, null]], "mpi4py.MPI.LONG": [[244, null]], "mpi4py.MPI.LONG_DOUBLE": [[245, null]], "mpi4py.MPI.LONG_DOUBLE_INT": [[246, null]], "mpi4py.MPI.LONG_INT": [[247, null]], "mpi4py.MPI.LONG_LONG": [[248, null]], "mpi4py.MPI.LOR": [[249, null]], "mpi4py.MPI.LXOR": [[250, null]], "mpi4py.MPI.Lookup_name": [[251, null]], "mpi4py.MPI.MAX": [[252, null]], "mpi4py.MPI.MAXLOC": [[253, null]], "mpi4py.MPI.MAX_DATAREP_STRING": [[254, null]], "mpi4py.MPI.MAX_ERROR_STRING": [[255, null]], "mpi4py.MPI.MAX_INFO_KEY": [[256, null]], "mpi4py.MPI.MAX_INFO_VAL": [[257, null]], "mpi4py.MPI.MAX_LIBRARY_VERSION_STRING": [[258, null]], "mpi4py.MPI.MAX_OBJECT_NAME": [[259, null]], "mpi4py.MPI.MAX_PORT_NAME": [[260, null]], "mpi4py.MPI.MAX_PROCESSOR_NAME": [[261, null]], "mpi4py.MPI.MAX_PSET_NAME_LEN": [[262, null]], "mpi4py.MPI.MAX_STRINGTAG_LEN": [[263, null]], "mpi4py.MPI.MESSAGE_NO_PROC": [[264, null]], "mpi4py.MPI.MESSAGE_NULL": [[265, null]], "mpi4py.MPI.MIN": [[266, null]], "mpi4py.MPI.MINLOC": [[267, null]], "mpi4py.MPI.MODE_APPEND": [[268, null]], "mpi4py.MPI.MODE_CREATE": [[269, null]], "mpi4py.MPI.MODE_DELETE_ON_CLOSE": [[270, null]], "mpi4py.MPI.MODE_EXCL": [[271, null]], "mpi4py.MPI.MODE_NOCHECK": [[272, null]], "mpi4py.MPI.MODE_NOPRECEDE": [[273, null]], "mpi4py.MPI.MODE_NOPUT": [[274, null]], "mpi4py.MPI.MODE_NOSTORE": [[275, null]], "mpi4py.MPI.MODE_NOSUCCEED": [[276, null]], "mpi4py.MPI.MODE_RDONLY": [[277, null]], "mpi4py.MPI.MODE_RDWR": [[278, null]], "mpi4py.MPI.MODE_SEQUENTIAL": [[279, null]], "mpi4py.MPI.MODE_UNIQUE_OPEN": [[280, null]], "mpi4py.MPI.MODE_WRONLY": [[281, null]], "mpi4py.MPI.Message": [[282, null]], "mpi4py.MPI.NO_OP": [[283, null]], "mpi4py.MPI.OFFSET": [[284, null]], "mpi4py.MPI.OP_NULL": [[285, null]], "mpi4py.MPI.ORDER_C": [[286, null]], "mpi4py.MPI.ORDER_F": [[287, null]], "mpi4py.MPI.ORDER_FORTRAN": [[288, null]], "mpi4py.MPI.Op": [[289, null]], "mpi4py.MPI.Open_port": [[290, null]], "mpi4py.MPI.PACKED": [[291, null]], "mpi4py.MPI.PROC_NULL": [[292, null]], "mpi4py.MPI.PROD": [[293, null]], "mpi4py.MPI.Pcontrol": [[294, null]], "mpi4py.MPI.Pickle": [[295, null]], "mpi4py.MPI.Prequest": [[296, null]], "mpi4py.MPI.Publish_name": [[297, null]], "mpi4py.MPI.Query_thread": [[298, null]], "mpi4py.MPI.REAL": [[299, null]], "mpi4py.MPI.REAL16": [[300, null]], "mpi4py.MPI.REAL2": [[301, null]], "mpi4py.MPI.REAL4": [[302, null]], "mpi4py.MPI.REAL8": [[303, null]], "mpi4py.MPI.REPLACE": [[304, null]], "mpi4py.MPI.REQUEST_NULL": [[305, null]], "mpi4py.MPI.ROOT": [[306, null]], "mpi4py.MPI.Register_datarep": [[307, null]], "mpi4py.MPI.Remove_error_class": [[308, null]], "mpi4py.MPI.Remove_error_code": [[309, null]], "mpi4py.MPI.Remove_error_string": [[310, null]], "mpi4py.MPI.Request": [[311, null]], "mpi4py.MPI.SEEK_CUR": [[312, null]], "mpi4py.MPI.SEEK_END": [[313, null]], "mpi4py.MPI.SEEK_SET": [[314, null]], "mpi4py.MPI.SESSION_NULL": [[315, null]], "mpi4py.MPI.SHORT": [[316, null]], "mpi4py.MPI.SHORT_INT": [[317, null]], "mpi4py.MPI.SIGNED_CHAR": [[318, null]], "mpi4py.MPI.SIGNED_INT": [[319, null]], "mpi4py.MPI.SIGNED_LONG": [[320, null]], "mpi4py.MPI.SIGNED_LONG_LONG": [[321, null]], "mpi4py.MPI.SIGNED_SHORT": [[322, null]], "mpi4py.MPI.SIMILAR": [[323, null]], "mpi4py.MPI.SINT16_T": [[324, null]], "mpi4py.MPI.SINT32_T": [[325, null]], "mpi4py.MPI.SINT64_T": [[326, null]], "mpi4py.MPI.SINT8_T": [[327, null]], "mpi4py.MPI.SUBVERSION": [[328, null]], "mpi4py.MPI.SUCCESS": [[329, null]], "mpi4py.MPI.SUM": [[330, null]], "mpi4py.MPI.Session": [[331, null]], "mpi4py.MPI.Status": [[332, null]], "mpi4py.MPI.TAG_UB": [[333, null]], "mpi4py.MPI.THREAD_FUNNELED": [[334, null]], "mpi4py.MPI.THREAD_MULTIPLE": [[335, null]], "mpi4py.MPI.THREAD_SERIALIZED": [[336, null]], "mpi4py.MPI.THREAD_SINGLE": [[337, null]], "mpi4py.MPI.TWOINT": [[338, null]], "mpi4py.MPI.TYPECLASS_COMPLEX": [[339, null]], "mpi4py.MPI.TYPECLASS_INTEGER": [[340, null]], "mpi4py.MPI.TYPECLASS_REAL": [[341, null]], "mpi4py.MPI.Topocomm": [[342, null]], "mpi4py.MPI.UINT16_T": [[343, null]], "mpi4py.MPI.UINT32_T": [[344, null]], "mpi4py.MPI.UINT64_T": [[345, null]], "mpi4py.MPI.UINT8_T": [[346, null]], "mpi4py.MPI.UNDEFINED": [[347, null]], "mpi4py.MPI.UNEQUAL": [[348, null]], "mpi4py.MPI.UNIVERSE_SIZE": [[349, null]], "mpi4py.MPI.UNSIGNED": [[350, null]], "mpi4py.MPI.UNSIGNED_CHAR": [[351, null]], "mpi4py.MPI.UNSIGNED_INT": [[352, null]], "mpi4py.MPI.UNSIGNED_LONG": [[353, null]], "mpi4py.MPI.UNSIGNED_LONG_LONG": [[354, null]], "mpi4py.MPI.UNSIGNED_SHORT": [[355, null]], "mpi4py.MPI.UNWEIGHTED": [[356, null]], "mpi4py.MPI.Unpublish_name": [[357, null]], "mpi4py.MPI.VERSION": [[358, null]], "mpi4py.MPI.WCHAR": [[359, null]], "mpi4py.MPI.WEIGHTS_EMPTY": [[360, null]], "mpi4py.MPI.WIN_BASE": [[361, null]], "mpi4py.MPI.WIN_CREATE_FLAVOR": [[362, null]], "mpi4py.MPI.WIN_DISP_UNIT": [[363, null]], "mpi4py.MPI.WIN_FLAVOR": [[364, null]], "mpi4py.MPI.WIN_FLAVOR_ALLOCATE": [[365, null]], "mpi4py.MPI.WIN_FLAVOR_CREATE": [[366, null]], "mpi4py.MPI.WIN_FLAVOR_DYNAMIC": [[367, null]], "mpi4py.MPI.WIN_FLAVOR_SHARED": [[368, null]], "mpi4py.MPI.WIN_MODEL": [[369, null]], "mpi4py.MPI.WIN_NULL": [[370, null]], "mpi4py.MPI.WIN_SEPARATE": [[371, null]], "mpi4py.MPI.WIN_SIZE": [[372, null]], "mpi4py.MPI.WIN_UNIFIED": [[373, null]], "mpi4py.MPI.WTIME_IS_GLOBAL": [[374, null]], "mpi4py.MPI.Win": [[375, null]], "mpi4py.MPI.Wtick": [[376, null]], "mpi4py.MPI.Wtime": [[377, null]], "mpi4py.MPI.buffer": [[378, null]], "mpi4py.MPI.get_vendor": [[379, null]], "mpi4py.MPI.memory": [[380, null]], "mpi4py.MPI.pickle": [[381, null]], "mpi4py.bench": [[10, null]], "mpi4py.futures": [[11, null]], "mpi4py.run": [[12, null]], "mpi4py.typing": [[13, null]], "mpi4py.util": [[14, null]], "mpi4py.util.dtlib": [[15, null]], "mpi4py.util.pkl5": [[16, null]], "mpi4py.util.pool": [[17, null]], "mpi4py.util.sync": [[18, null]]}, "docnames": ["changes", "citation", "develop", "guidelines", "index", "install", "intro", "license", "mpi4py", "mpi4py.MPI", "mpi4py.bench", "mpi4py.futures", "mpi4py.run", "mpi4py.typing", "mpi4py.util", "mpi4py.util.dtlib", "mpi4py.util.pkl5", "mpi4py.util.pool", "mpi4py.util.sync", "overview", "reference", "reference/mpi4py.MPI", "reference/mpi4py.MPI.AINT", "reference/mpi4py.MPI.ANY_SOURCE", "reference/mpi4py.MPI.ANY_TAG", "reference/mpi4py.MPI.APPNUM", "reference/mpi4py.MPI.Add_error_class", "reference/mpi4py.MPI.Add_error_code", "reference/mpi4py.MPI.Add_error_string", "reference/mpi4py.MPI.Aint_add", "reference/mpi4py.MPI.Aint_diff", "reference/mpi4py.MPI.Alloc_mem", "reference/mpi4py.MPI.Attach_buffer", "reference/mpi4py.MPI.BAND", "reference/mpi4py.MPI.BOOL", "reference/mpi4py.MPI.BOR", "reference/mpi4py.MPI.BOTTOM", "reference/mpi4py.MPI.BSEND_OVERHEAD", "reference/mpi4py.MPI.BUFFER_AUTOMATIC", "reference/mpi4py.MPI.BXOR", "reference/mpi4py.MPI.BYTE", "reference/mpi4py.MPI.BottomType", "reference/mpi4py.MPI.BufferAutomaticType", "reference/mpi4py.MPI.CART", "reference/mpi4py.MPI.CHAR", "reference/mpi4py.MPI.CHARACTER", "reference/mpi4py.MPI.COMBINER_CONTIGUOUS", "reference/mpi4py.MPI.COMBINER_DARRAY", "reference/mpi4py.MPI.COMBINER_DUP", "reference/mpi4py.MPI.COMBINER_F90_COMPLEX", "reference/mpi4py.MPI.COMBINER_F90_INTEGER", "reference/mpi4py.MPI.COMBINER_F90_REAL", "reference/mpi4py.MPI.COMBINER_HINDEXED", "reference/mpi4py.MPI.COMBINER_HINDEXED_BLOCK", "reference/mpi4py.MPI.COMBINER_HVECTOR", "reference/mpi4py.MPI.COMBINER_INDEXED", "reference/mpi4py.MPI.COMBINER_INDEXED_BLOCK", "reference/mpi4py.MPI.COMBINER_NAMED", "reference/mpi4py.MPI.COMBINER_RESIZED", "reference/mpi4py.MPI.COMBINER_STRUCT", "reference/mpi4py.MPI.COMBINER_SUBARRAY", "reference/mpi4py.MPI.COMBINER_VALUE_INDEX", "reference/mpi4py.MPI.COMBINER_VECTOR", "reference/mpi4py.MPI.COMM_NULL", "reference/mpi4py.MPI.COMM_SELF", "reference/mpi4py.MPI.COMM_TYPE_HW_GUIDED", "reference/mpi4py.MPI.COMM_TYPE_HW_UNGUIDED", "reference/mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED", "reference/mpi4py.MPI.COMM_TYPE_SHARED", "reference/mpi4py.MPI.COMM_WORLD", "reference/mpi4py.MPI.COMPLEX", "reference/mpi4py.MPI.COMPLEX16", "reference/mpi4py.MPI.COMPLEX32", "reference/mpi4py.MPI.COMPLEX4", "reference/mpi4py.MPI.COMPLEX8", "reference/mpi4py.MPI.CONGRUENT", "reference/mpi4py.MPI.COUNT", "reference/mpi4py.MPI.CXX_BOOL", "reference/mpi4py.MPI.CXX_DOUBLE_COMPLEX", "reference/mpi4py.MPI.CXX_FLOAT_COMPLEX", "reference/mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX", "reference/mpi4py.MPI.C_BOOL", "reference/mpi4py.MPI.C_COMPLEX", "reference/mpi4py.MPI.C_DOUBLE_COMPLEX", "reference/mpi4py.MPI.C_FLOAT_COMPLEX", "reference/mpi4py.MPI.C_LONG_DOUBLE_COMPLEX", "reference/mpi4py.MPI.Cartcomm", "reference/mpi4py.MPI.Close_port", "reference/mpi4py.MPI.Comm", "reference/mpi4py.MPI.Compute_dims", "reference/mpi4py.MPI.DATATYPE_NULL", "reference/mpi4py.MPI.DISPLACEMENT_CURRENT", "reference/mpi4py.MPI.DISP_CUR", "reference/mpi4py.MPI.DISTRIBUTE_BLOCK", "reference/mpi4py.MPI.DISTRIBUTE_CYCLIC", "reference/mpi4py.MPI.DISTRIBUTE_DFLT_DARG", "reference/mpi4py.MPI.DISTRIBUTE_NONE", "reference/mpi4py.MPI.DIST_GRAPH", "reference/mpi4py.MPI.DOUBLE", "reference/mpi4py.MPI.DOUBLE_COMPLEX", "reference/mpi4py.MPI.DOUBLE_INT", "reference/mpi4py.MPI.DOUBLE_PRECISION", "reference/mpi4py.MPI.Datatype", "reference/mpi4py.MPI.Detach_buffer", "reference/mpi4py.MPI.Distgraphcomm", "reference/mpi4py.MPI.ERRHANDLER_NULL", "reference/mpi4py.MPI.ERRORS_ABORT", "reference/mpi4py.MPI.ERRORS_ARE_FATAL", "reference/mpi4py.MPI.ERRORS_RETURN", "reference/mpi4py.MPI.ERR_ACCESS", "reference/mpi4py.MPI.ERR_AMODE", "reference/mpi4py.MPI.ERR_ARG", "reference/mpi4py.MPI.ERR_ASSERT", "reference/mpi4py.MPI.ERR_BAD_FILE", "reference/mpi4py.MPI.ERR_BASE", "reference/mpi4py.MPI.ERR_BUFFER", "reference/mpi4py.MPI.ERR_COMM", "reference/mpi4py.MPI.ERR_CONVERSION", "reference/mpi4py.MPI.ERR_COUNT", "reference/mpi4py.MPI.ERR_DIMS", "reference/mpi4py.MPI.ERR_DISP", "reference/mpi4py.MPI.ERR_DUP_DATAREP", "reference/mpi4py.MPI.ERR_ERRHANDLER", "reference/mpi4py.MPI.ERR_FILE", "reference/mpi4py.MPI.ERR_FILE_EXISTS", "reference/mpi4py.MPI.ERR_FILE_IN_USE", "reference/mpi4py.MPI.ERR_GROUP", "reference/mpi4py.MPI.ERR_INFO", "reference/mpi4py.MPI.ERR_INFO_KEY", "reference/mpi4py.MPI.ERR_INFO_NOKEY", "reference/mpi4py.MPI.ERR_INFO_VALUE", "reference/mpi4py.MPI.ERR_INTERN", "reference/mpi4py.MPI.ERR_IN_STATUS", "reference/mpi4py.MPI.ERR_IO", "reference/mpi4py.MPI.ERR_KEYVAL", "reference/mpi4py.MPI.ERR_LASTCODE", "reference/mpi4py.MPI.ERR_LOCKTYPE", "reference/mpi4py.MPI.ERR_NAME", "reference/mpi4py.MPI.ERR_NOT_SAME", "reference/mpi4py.MPI.ERR_NO_MEM", "reference/mpi4py.MPI.ERR_NO_SPACE", "reference/mpi4py.MPI.ERR_NO_SUCH_FILE", "reference/mpi4py.MPI.ERR_OP", "reference/mpi4py.MPI.ERR_OTHER", "reference/mpi4py.MPI.ERR_PENDING", "reference/mpi4py.MPI.ERR_PORT", "reference/mpi4py.MPI.ERR_PROC_ABORTED", "reference/mpi4py.MPI.ERR_PROC_FAILED", "reference/mpi4py.MPI.ERR_PROC_FAILED_PENDING", "reference/mpi4py.MPI.ERR_QUOTA", "reference/mpi4py.MPI.ERR_RANK", "reference/mpi4py.MPI.ERR_READ_ONLY", "reference/mpi4py.MPI.ERR_REQUEST", "reference/mpi4py.MPI.ERR_REVOKED", "reference/mpi4py.MPI.ERR_RMA_ATTACH", "reference/mpi4py.MPI.ERR_RMA_CONFLICT", "reference/mpi4py.MPI.ERR_RMA_FLAVOR", "reference/mpi4py.MPI.ERR_RMA_RANGE", "reference/mpi4py.MPI.ERR_RMA_SHARED", "reference/mpi4py.MPI.ERR_RMA_SYNC", "reference/mpi4py.MPI.ERR_ROOT", "reference/mpi4py.MPI.ERR_SERVICE", "reference/mpi4py.MPI.ERR_SESSION", "reference/mpi4py.MPI.ERR_SIZE", "reference/mpi4py.MPI.ERR_SPAWN", "reference/mpi4py.MPI.ERR_TAG", "reference/mpi4py.MPI.ERR_TOPOLOGY", "reference/mpi4py.MPI.ERR_TRUNCATE", "reference/mpi4py.MPI.ERR_TYPE", "reference/mpi4py.MPI.ERR_UNKNOWN", "reference/mpi4py.MPI.ERR_UNSUPPORTED_DATAREP", "reference/mpi4py.MPI.ERR_UNSUPPORTED_OPERATION", "reference/mpi4py.MPI.ERR_VALUE_TOO_LARGE", "reference/mpi4py.MPI.ERR_WIN", "reference/mpi4py.MPI.Errhandler", "reference/mpi4py.MPI.Exception", "reference/mpi4py.MPI.FILE_NULL", "reference/mpi4py.MPI.FLOAT", "reference/mpi4py.MPI.FLOAT_INT", "reference/mpi4py.MPI.F_BOOL", "reference/mpi4py.MPI.F_COMPLEX", "reference/mpi4py.MPI.F_DOUBLE", "reference/mpi4py.MPI.F_DOUBLE_COMPLEX", "reference/mpi4py.MPI.F_ERROR", "reference/mpi4py.MPI.F_FLOAT", "reference/mpi4py.MPI.F_FLOAT_COMPLEX", "reference/mpi4py.MPI.F_INT", "reference/mpi4py.MPI.F_SOURCE", "reference/mpi4py.MPI.F_STATUS_SIZE", "reference/mpi4py.MPI.F_TAG", "reference/mpi4py.MPI.File", "reference/mpi4py.MPI.Finalize", "reference/mpi4py.MPI.Flush_buffer", "reference/mpi4py.MPI.Free_mem", "reference/mpi4py.MPI.GRAPH", "reference/mpi4py.MPI.GROUP_EMPTY", "reference/mpi4py.MPI.GROUP_NULL", "reference/mpi4py.MPI.Get_address", "reference/mpi4py.MPI.Get_error_class", "reference/mpi4py.MPI.Get_error_string", "reference/mpi4py.MPI.Get_hw_resource_info", "reference/mpi4py.MPI.Get_library_version", "reference/mpi4py.MPI.Get_processor_name", "reference/mpi4py.MPI.Get_version", "reference/mpi4py.MPI.Graphcomm", "reference/mpi4py.MPI.Grequest", "reference/mpi4py.MPI.Group", "reference/mpi4py.MPI.IDENT", "reference/mpi4py.MPI.INFO_ENV", "reference/mpi4py.MPI.INFO_NULL", "reference/mpi4py.MPI.INT", "reference/mpi4py.MPI.INT16_T", "reference/mpi4py.MPI.INT32_T", "reference/mpi4py.MPI.INT64_T", "reference/mpi4py.MPI.INT8_T", "reference/mpi4py.MPI.INTEGER", "reference/mpi4py.MPI.INTEGER1", "reference/mpi4py.MPI.INTEGER16", "reference/mpi4py.MPI.INTEGER2", "reference/mpi4py.MPI.INTEGER4", "reference/mpi4py.MPI.INTEGER8", "reference/mpi4py.MPI.INT_INT", "reference/mpi4py.MPI.IN_PLACE", "reference/mpi4py.MPI.IO", "reference/mpi4py.MPI.Iflush_buffer", "reference/mpi4py.MPI.InPlaceType", "reference/mpi4py.MPI.Info", "reference/mpi4py.MPI.Init", "reference/mpi4py.MPI.Init_thread", "reference/mpi4py.MPI.Intercomm", "reference/mpi4py.MPI.Intracomm", "reference/mpi4py.MPI.Is_finalized", "reference/mpi4py.MPI.Is_initialized", "reference/mpi4py.MPI.Is_thread_main", "reference/mpi4py.MPI.KEYVAL_INVALID", "reference/mpi4py.MPI.LAND", "reference/mpi4py.MPI.LASTUSEDCODE", "reference/mpi4py.MPI.LOCK_EXCLUSIVE", "reference/mpi4py.MPI.LOCK_SHARED", "reference/mpi4py.MPI.LOGICAL", "reference/mpi4py.MPI.LOGICAL1", "reference/mpi4py.MPI.LOGICAL2", "reference/mpi4py.MPI.LOGICAL4", "reference/mpi4py.MPI.LOGICAL8", "reference/mpi4py.MPI.LONG", "reference/mpi4py.MPI.LONG_DOUBLE", "reference/mpi4py.MPI.LONG_DOUBLE_INT", "reference/mpi4py.MPI.LONG_INT", "reference/mpi4py.MPI.LONG_LONG", "reference/mpi4py.MPI.LOR", "reference/mpi4py.MPI.LXOR", "reference/mpi4py.MPI.Lookup_name", "reference/mpi4py.MPI.MAX", "reference/mpi4py.MPI.MAXLOC", "reference/mpi4py.MPI.MAX_DATAREP_STRING", "reference/mpi4py.MPI.MAX_ERROR_STRING", "reference/mpi4py.MPI.MAX_INFO_KEY", "reference/mpi4py.MPI.MAX_INFO_VAL", "reference/mpi4py.MPI.MAX_LIBRARY_VERSION_STRING", "reference/mpi4py.MPI.MAX_OBJECT_NAME", "reference/mpi4py.MPI.MAX_PORT_NAME", "reference/mpi4py.MPI.MAX_PROCESSOR_NAME", "reference/mpi4py.MPI.MAX_PSET_NAME_LEN", "reference/mpi4py.MPI.MAX_STRINGTAG_LEN", "reference/mpi4py.MPI.MESSAGE_NO_PROC", "reference/mpi4py.MPI.MESSAGE_NULL", "reference/mpi4py.MPI.MIN", "reference/mpi4py.MPI.MINLOC", "reference/mpi4py.MPI.MODE_APPEND", "reference/mpi4py.MPI.MODE_CREATE", "reference/mpi4py.MPI.MODE_DELETE_ON_CLOSE", "reference/mpi4py.MPI.MODE_EXCL", "reference/mpi4py.MPI.MODE_NOCHECK", "reference/mpi4py.MPI.MODE_NOPRECEDE", "reference/mpi4py.MPI.MODE_NOPUT", "reference/mpi4py.MPI.MODE_NOSTORE", "reference/mpi4py.MPI.MODE_NOSUCCEED", "reference/mpi4py.MPI.MODE_RDONLY", "reference/mpi4py.MPI.MODE_RDWR", "reference/mpi4py.MPI.MODE_SEQUENTIAL", "reference/mpi4py.MPI.MODE_UNIQUE_OPEN", "reference/mpi4py.MPI.MODE_WRONLY", "reference/mpi4py.MPI.Message", "reference/mpi4py.MPI.NO_OP", "reference/mpi4py.MPI.OFFSET", "reference/mpi4py.MPI.OP_NULL", "reference/mpi4py.MPI.ORDER_C", "reference/mpi4py.MPI.ORDER_F", "reference/mpi4py.MPI.ORDER_FORTRAN", "reference/mpi4py.MPI.Op", "reference/mpi4py.MPI.Open_port", "reference/mpi4py.MPI.PACKED", "reference/mpi4py.MPI.PROC_NULL", "reference/mpi4py.MPI.PROD", "reference/mpi4py.MPI.Pcontrol", "reference/mpi4py.MPI.Pickle", "reference/mpi4py.MPI.Prequest", "reference/mpi4py.MPI.Publish_name", "reference/mpi4py.MPI.Query_thread", "reference/mpi4py.MPI.REAL", "reference/mpi4py.MPI.REAL16", "reference/mpi4py.MPI.REAL2", "reference/mpi4py.MPI.REAL4", "reference/mpi4py.MPI.REAL8", "reference/mpi4py.MPI.REPLACE", "reference/mpi4py.MPI.REQUEST_NULL", "reference/mpi4py.MPI.ROOT", "reference/mpi4py.MPI.Register_datarep", "reference/mpi4py.MPI.Remove_error_class", "reference/mpi4py.MPI.Remove_error_code", "reference/mpi4py.MPI.Remove_error_string", "reference/mpi4py.MPI.Request", "reference/mpi4py.MPI.SEEK_CUR", "reference/mpi4py.MPI.SEEK_END", "reference/mpi4py.MPI.SEEK_SET", "reference/mpi4py.MPI.SESSION_NULL", "reference/mpi4py.MPI.SHORT", "reference/mpi4py.MPI.SHORT_INT", "reference/mpi4py.MPI.SIGNED_CHAR", "reference/mpi4py.MPI.SIGNED_INT", "reference/mpi4py.MPI.SIGNED_LONG", "reference/mpi4py.MPI.SIGNED_LONG_LONG", "reference/mpi4py.MPI.SIGNED_SHORT", "reference/mpi4py.MPI.SIMILAR", "reference/mpi4py.MPI.SINT16_T", "reference/mpi4py.MPI.SINT32_T", "reference/mpi4py.MPI.SINT64_T", "reference/mpi4py.MPI.SINT8_T", "reference/mpi4py.MPI.SUBVERSION", "reference/mpi4py.MPI.SUCCESS", "reference/mpi4py.MPI.SUM", "reference/mpi4py.MPI.Session", "reference/mpi4py.MPI.Status", "reference/mpi4py.MPI.TAG_UB", "reference/mpi4py.MPI.THREAD_FUNNELED", "reference/mpi4py.MPI.THREAD_MULTIPLE", "reference/mpi4py.MPI.THREAD_SERIALIZED", "reference/mpi4py.MPI.THREAD_SINGLE", "reference/mpi4py.MPI.TWOINT", "reference/mpi4py.MPI.TYPECLASS_COMPLEX", "reference/mpi4py.MPI.TYPECLASS_INTEGER", "reference/mpi4py.MPI.TYPECLASS_REAL", "reference/mpi4py.MPI.Topocomm", "reference/mpi4py.MPI.UINT16_T", "reference/mpi4py.MPI.UINT32_T", "reference/mpi4py.MPI.UINT64_T", "reference/mpi4py.MPI.UINT8_T", "reference/mpi4py.MPI.UNDEFINED", "reference/mpi4py.MPI.UNEQUAL", "reference/mpi4py.MPI.UNIVERSE_SIZE", "reference/mpi4py.MPI.UNSIGNED", "reference/mpi4py.MPI.UNSIGNED_CHAR", "reference/mpi4py.MPI.UNSIGNED_INT", "reference/mpi4py.MPI.UNSIGNED_LONG", "reference/mpi4py.MPI.UNSIGNED_LONG_LONG", "reference/mpi4py.MPI.UNSIGNED_SHORT", "reference/mpi4py.MPI.UNWEIGHTED", "reference/mpi4py.MPI.Unpublish_name", "reference/mpi4py.MPI.VERSION", "reference/mpi4py.MPI.WCHAR", "reference/mpi4py.MPI.WEIGHTS_EMPTY", "reference/mpi4py.MPI.WIN_BASE", "reference/mpi4py.MPI.WIN_CREATE_FLAVOR", "reference/mpi4py.MPI.WIN_DISP_UNIT", "reference/mpi4py.MPI.WIN_FLAVOR", "reference/mpi4py.MPI.WIN_FLAVOR_ALLOCATE", "reference/mpi4py.MPI.WIN_FLAVOR_CREATE", "reference/mpi4py.MPI.WIN_FLAVOR_DYNAMIC", "reference/mpi4py.MPI.WIN_FLAVOR_SHARED", "reference/mpi4py.MPI.WIN_MODEL", "reference/mpi4py.MPI.WIN_NULL", "reference/mpi4py.MPI.WIN_SEPARATE", "reference/mpi4py.MPI.WIN_SIZE", "reference/mpi4py.MPI.WIN_UNIFIED", "reference/mpi4py.MPI.WTIME_IS_GLOBAL", "reference/mpi4py.MPI.Win", "reference/mpi4py.MPI.Wtick", "reference/mpi4py.MPI.Wtime", "reference/mpi4py.MPI.buffer", "reference/mpi4py.MPI.get_vendor", "reference/mpi4py.MPI.memory", "reference/mpi4py.MPI.pickle", "tutorial"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["changes.rst", "citation.rst", "develop.rst", "guidelines.rst", "index.rst", "install.rst", "intro.rst", "license.rst", "mpi4py.rst", "mpi4py.MPI.rst", "mpi4py.bench.rst", "mpi4py.futures.rst", "mpi4py.run.rst", "mpi4py.typing.rst", "mpi4py.util.rst", "mpi4py.util.dtlib.rst", "mpi4py.util.pkl5.rst", "mpi4py.util.pool.rst", "mpi4py.util.sync.rst", "overview.rst", "reference.rst", "reference/mpi4py.MPI.rst", "reference/mpi4py.MPI.AINT.rst", "reference/mpi4py.MPI.ANY_SOURCE.rst", "reference/mpi4py.MPI.ANY_TAG.rst", "reference/mpi4py.MPI.APPNUM.rst", "reference/mpi4py.MPI.Add_error_class.rst", "reference/mpi4py.MPI.Add_error_code.rst", "reference/mpi4py.MPI.Add_error_string.rst", "reference/mpi4py.MPI.Aint_add.rst", "reference/mpi4py.MPI.Aint_diff.rst", "reference/mpi4py.MPI.Alloc_mem.rst", "reference/mpi4py.MPI.Attach_buffer.rst", "reference/mpi4py.MPI.BAND.rst", "reference/mpi4py.MPI.BOOL.rst", "reference/mpi4py.MPI.BOR.rst", "reference/mpi4py.MPI.BOTTOM.rst", "reference/mpi4py.MPI.BSEND_OVERHEAD.rst", "reference/mpi4py.MPI.BUFFER_AUTOMATIC.rst", "reference/mpi4py.MPI.BXOR.rst", "reference/mpi4py.MPI.BYTE.rst", "reference/mpi4py.MPI.BottomType.rst", "reference/mpi4py.MPI.BufferAutomaticType.rst", "reference/mpi4py.MPI.CART.rst", "reference/mpi4py.MPI.CHAR.rst", "reference/mpi4py.MPI.CHARACTER.rst", "reference/mpi4py.MPI.COMBINER_CONTIGUOUS.rst", "reference/mpi4py.MPI.COMBINER_DARRAY.rst", "reference/mpi4py.MPI.COMBINER_DUP.rst", "reference/mpi4py.MPI.COMBINER_F90_COMPLEX.rst", "reference/mpi4py.MPI.COMBINER_F90_INTEGER.rst", "reference/mpi4py.MPI.COMBINER_F90_REAL.rst", "reference/mpi4py.MPI.COMBINER_HINDEXED.rst", "reference/mpi4py.MPI.COMBINER_HINDEXED_BLOCK.rst", "reference/mpi4py.MPI.COMBINER_HVECTOR.rst", "reference/mpi4py.MPI.COMBINER_INDEXED.rst", "reference/mpi4py.MPI.COMBINER_INDEXED_BLOCK.rst", "reference/mpi4py.MPI.COMBINER_NAMED.rst", "reference/mpi4py.MPI.COMBINER_RESIZED.rst", "reference/mpi4py.MPI.COMBINER_STRUCT.rst", "reference/mpi4py.MPI.COMBINER_SUBARRAY.rst", "reference/mpi4py.MPI.COMBINER_VALUE_INDEX.rst", "reference/mpi4py.MPI.COMBINER_VECTOR.rst", "reference/mpi4py.MPI.COMM_NULL.rst", "reference/mpi4py.MPI.COMM_SELF.rst", "reference/mpi4py.MPI.COMM_TYPE_HW_GUIDED.rst", "reference/mpi4py.MPI.COMM_TYPE_HW_UNGUIDED.rst", "reference/mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED.rst", "reference/mpi4py.MPI.COMM_TYPE_SHARED.rst", "reference/mpi4py.MPI.COMM_WORLD.rst", "reference/mpi4py.MPI.COMPLEX.rst", "reference/mpi4py.MPI.COMPLEX16.rst", "reference/mpi4py.MPI.COMPLEX32.rst", "reference/mpi4py.MPI.COMPLEX4.rst", "reference/mpi4py.MPI.COMPLEX8.rst", "reference/mpi4py.MPI.CONGRUENT.rst", "reference/mpi4py.MPI.COUNT.rst", "reference/mpi4py.MPI.CXX_BOOL.rst", "reference/mpi4py.MPI.CXX_DOUBLE_COMPLEX.rst", "reference/mpi4py.MPI.CXX_FLOAT_COMPLEX.rst", "reference/mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX.rst", "reference/mpi4py.MPI.C_BOOL.rst", "reference/mpi4py.MPI.C_COMPLEX.rst", "reference/mpi4py.MPI.C_DOUBLE_COMPLEX.rst", "reference/mpi4py.MPI.C_FLOAT_COMPLEX.rst", "reference/mpi4py.MPI.C_LONG_DOUBLE_COMPLEX.rst", "reference/mpi4py.MPI.Cartcomm.rst", "reference/mpi4py.MPI.Close_port.rst", "reference/mpi4py.MPI.Comm.rst", "reference/mpi4py.MPI.Compute_dims.rst", "reference/mpi4py.MPI.DATATYPE_NULL.rst", "reference/mpi4py.MPI.DISPLACEMENT_CURRENT.rst", "reference/mpi4py.MPI.DISP_CUR.rst", "reference/mpi4py.MPI.DISTRIBUTE_BLOCK.rst", "reference/mpi4py.MPI.DISTRIBUTE_CYCLIC.rst", "reference/mpi4py.MPI.DISTRIBUTE_DFLT_DARG.rst", "reference/mpi4py.MPI.DISTRIBUTE_NONE.rst", "reference/mpi4py.MPI.DIST_GRAPH.rst", "reference/mpi4py.MPI.DOUBLE.rst", "reference/mpi4py.MPI.DOUBLE_COMPLEX.rst", "reference/mpi4py.MPI.DOUBLE_INT.rst", "reference/mpi4py.MPI.DOUBLE_PRECISION.rst", "reference/mpi4py.MPI.Datatype.rst", "reference/mpi4py.MPI.Detach_buffer.rst", "reference/mpi4py.MPI.Distgraphcomm.rst", "reference/mpi4py.MPI.ERRHANDLER_NULL.rst", "reference/mpi4py.MPI.ERRORS_ABORT.rst", "reference/mpi4py.MPI.ERRORS_ARE_FATAL.rst", "reference/mpi4py.MPI.ERRORS_RETURN.rst", "reference/mpi4py.MPI.ERR_ACCESS.rst", "reference/mpi4py.MPI.ERR_AMODE.rst", "reference/mpi4py.MPI.ERR_ARG.rst", "reference/mpi4py.MPI.ERR_ASSERT.rst", "reference/mpi4py.MPI.ERR_BAD_FILE.rst", "reference/mpi4py.MPI.ERR_BASE.rst", "reference/mpi4py.MPI.ERR_BUFFER.rst", "reference/mpi4py.MPI.ERR_COMM.rst", "reference/mpi4py.MPI.ERR_CONVERSION.rst", "reference/mpi4py.MPI.ERR_COUNT.rst", "reference/mpi4py.MPI.ERR_DIMS.rst", "reference/mpi4py.MPI.ERR_DISP.rst", "reference/mpi4py.MPI.ERR_DUP_DATAREP.rst", "reference/mpi4py.MPI.ERR_ERRHANDLER.rst", "reference/mpi4py.MPI.ERR_FILE.rst", "reference/mpi4py.MPI.ERR_FILE_EXISTS.rst", "reference/mpi4py.MPI.ERR_FILE_IN_USE.rst", "reference/mpi4py.MPI.ERR_GROUP.rst", "reference/mpi4py.MPI.ERR_INFO.rst", "reference/mpi4py.MPI.ERR_INFO_KEY.rst", "reference/mpi4py.MPI.ERR_INFO_NOKEY.rst", "reference/mpi4py.MPI.ERR_INFO_VALUE.rst", "reference/mpi4py.MPI.ERR_INTERN.rst", "reference/mpi4py.MPI.ERR_IN_STATUS.rst", "reference/mpi4py.MPI.ERR_IO.rst", "reference/mpi4py.MPI.ERR_KEYVAL.rst", "reference/mpi4py.MPI.ERR_LASTCODE.rst", "reference/mpi4py.MPI.ERR_LOCKTYPE.rst", "reference/mpi4py.MPI.ERR_NAME.rst", "reference/mpi4py.MPI.ERR_NOT_SAME.rst", "reference/mpi4py.MPI.ERR_NO_MEM.rst", "reference/mpi4py.MPI.ERR_NO_SPACE.rst", "reference/mpi4py.MPI.ERR_NO_SUCH_FILE.rst", "reference/mpi4py.MPI.ERR_OP.rst", "reference/mpi4py.MPI.ERR_OTHER.rst", "reference/mpi4py.MPI.ERR_PENDING.rst", "reference/mpi4py.MPI.ERR_PORT.rst", "reference/mpi4py.MPI.ERR_PROC_ABORTED.rst", "reference/mpi4py.MPI.ERR_PROC_FAILED.rst", "reference/mpi4py.MPI.ERR_PROC_FAILED_PENDING.rst", "reference/mpi4py.MPI.ERR_QUOTA.rst", "reference/mpi4py.MPI.ERR_RANK.rst", "reference/mpi4py.MPI.ERR_READ_ONLY.rst", "reference/mpi4py.MPI.ERR_REQUEST.rst", "reference/mpi4py.MPI.ERR_REVOKED.rst", "reference/mpi4py.MPI.ERR_RMA_ATTACH.rst", "reference/mpi4py.MPI.ERR_RMA_CONFLICT.rst", "reference/mpi4py.MPI.ERR_RMA_FLAVOR.rst", "reference/mpi4py.MPI.ERR_RMA_RANGE.rst", "reference/mpi4py.MPI.ERR_RMA_SHARED.rst", "reference/mpi4py.MPI.ERR_RMA_SYNC.rst", "reference/mpi4py.MPI.ERR_ROOT.rst", "reference/mpi4py.MPI.ERR_SERVICE.rst", "reference/mpi4py.MPI.ERR_SESSION.rst", "reference/mpi4py.MPI.ERR_SIZE.rst", "reference/mpi4py.MPI.ERR_SPAWN.rst", "reference/mpi4py.MPI.ERR_TAG.rst", "reference/mpi4py.MPI.ERR_TOPOLOGY.rst", "reference/mpi4py.MPI.ERR_TRUNCATE.rst", "reference/mpi4py.MPI.ERR_TYPE.rst", "reference/mpi4py.MPI.ERR_UNKNOWN.rst", "reference/mpi4py.MPI.ERR_UNSUPPORTED_DATAREP.rst", "reference/mpi4py.MPI.ERR_UNSUPPORTED_OPERATION.rst", "reference/mpi4py.MPI.ERR_VALUE_TOO_LARGE.rst", "reference/mpi4py.MPI.ERR_WIN.rst", "reference/mpi4py.MPI.Errhandler.rst", "reference/mpi4py.MPI.Exception.rst", "reference/mpi4py.MPI.FILE_NULL.rst", "reference/mpi4py.MPI.FLOAT.rst", "reference/mpi4py.MPI.FLOAT_INT.rst", "reference/mpi4py.MPI.F_BOOL.rst", "reference/mpi4py.MPI.F_COMPLEX.rst", "reference/mpi4py.MPI.F_DOUBLE.rst", "reference/mpi4py.MPI.F_DOUBLE_COMPLEX.rst", "reference/mpi4py.MPI.F_ERROR.rst", "reference/mpi4py.MPI.F_FLOAT.rst", "reference/mpi4py.MPI.F_FLOAT_COMPLEX.rst", "reference/mpi4py.MPI.F_INT.rst", "reference/mpi4py.MPI.F_SOURCE.rst", "reference/mpi4py.MPI.F_STATUS_SIZE.rst", "reference/mpi4py.MPI.F_TAG.rst", "reference/mpi4py.MPI.File.rst", "reference/mpi4py.MPI.Finalize.rst", "reference/mpi4py.MPI.Flush_buffer.rst", "reference/mpi4py.MPI.Free_mem.rst", "reference/mpi4py.MPI.GRAPH.rst", "reference/mpi4py.MPI.GROUP_EMPTY.rst", "reference/mpi4py.MPI.GROUP_NULL.rst", "reference/mpi4py.MPI.Get_address.rst", "reference/mpi4py.MPI.Get_error_class.rst", "reference/mpi4py.MPI.Get_error_string.rst", "reference/mpi4py.MPI.Get_hw_resource_info.rst", "reference/mpi4py.MPI.Get_library_version.rst", "reference/mpi4py.MPI.Get_processor_name.rst", "reference/mpi4py.MPI.Get_version.rst", "reference/mpi4py.MPI.Graphcomm.rst", "reference/mpi4py.MPI.Grequest.rst", "reference/mpi4py.MPI.Group.rst", "reference/mpi4py.MPI.IDENT.rst", "reference/mpi4py.MPI.INFO_ENV.rst", "reference/mpi4py.MPI.INFO_NULL.rst", "reference/mpi4py.MPI.INT.rst", "reference/mpi4py.MPI.INT16_T.rst", "reference/mpi4py.MPI.INT32_T.rst", "reference/mpi4py.MPI.INT64_T.rst", "reference/mpi4py.MPI.INT8_T.rst", "reference/mpi4py.MPI.INTEGER.rst", "reference/mpi4py.MPI.INTEGER1.rst", "reference/mpi4py.MPI.INTEGER16.rst", "reference/mpi4py.MPI.INTEGER2.rst", "reference/mpi4py.MPI.INTEGER4.rst", "reference/mpi4py.MPI.INTEGER8.rst", "reference/mpi4py.MPI.INT_INT.rst", "reference/mpi4py.MPI.IN_PLACE.rst", "reference/mpi4py.MPI.IO.rst", "reference/mpi4py.MPI.Iflush_buffer.rst", "reference/mpi4py.MPI.InPlaceType.rst", "reference/mpi4py.MPI.Info.rst", "reference/mpi4py.MPI.Init.rst", "reference/mpi4py.MPI.Init_thread.rst", "reference/mpi4py.MPI.Intercomm.rst", "reference/mpi4py.MPI.Intracomm.rst", "reference/mpi4py.MPI.Is_finalized.rst", "reference/mpi4py.MPI.Is_initialized.rst", "reference/mpi4py.MPI.Is_thread_main.rst", "reference/mpi4py.MPI.KEYVAL_INVALID.rst", "reference/mpi4py.MPI.LAND.rst", "reference/mpi4py.MPI.LASTUSEDCODE.rst", "reference/mpi4py.MPI.LOCK_EXCLUSIVE.rst", "reference/mpi4py.MPI.LOCK_SHARED.rst", "reference/mpi4py.MPI.LOGICAL.rst", "reference/mpi4py.MPI.LOGICAL1.rst", "reference/mpi4py.MPI.LOGICAL2.rst", "reference/mpi4py.MPI.LOGICAL4.rst", "reference/mpi4py.MPI.LOGICAL8.rst", "reference/mpi4py.MPI.LONG.rst", "reference/mpi4py.MPI.LONG_DOUBLE.rst", "reference/mpi4py.MPI.LONG_DOUBLE_INT.rst", "reference/mpi4py.MPI.LONG_INT.rst", "reference/mpi4py.MPI.LONG_LONG.rst", "reference/mpi4py.MPI.LOR.rst", "reference/mpi4py.MPI.LXOR.rst", "reference/mpi4py.MPI.Lookup_name.rst", "reference/mpi4py.MPI.MAX.rst", "reference/mpi4py.MPI.MAXLOC.rst", "reference/mpi4py.MPI.MAX_DATAREP_STRING.rst", "reference/mpi4py.MPI.MAX_ERROR_STRING.rst", "reference/mpi4py.MPI.MAX_INFO_KEY.rst", "reference/mpi4py.MPI.MAX_INFO_VAL.rst", "reference/mpi4py.MPI.MAX_LIBRARY_VERSION_STRING.rst", "reference/mpi4py.MPI.MAX_OBJECT_NAME.rst", "reference/mpi4py.MPI.MAX_PORT_NAME.rst", "reference/mpi4py.MPI.MAX_PROCESSOR_NAME.rst", "reference/mpi4py.MPI.MAX_PSET_NAME_LEN.rst", "reference/mpi4py.MPI.MAX_STRINGTAG_LEN.rst", "reference/mpi4py.MPI.MESSAGE_NO_PROC.rst", "reference/mpi4py.MPI.MESSAGE_NULL.rst", "reference/mpi4py.MPI.MIN.rst", "reference/mpi4py.MPI.MINLOC.rst", "reference/mpi4py.MPI.MODE_APPEND.rst", "reference/mpi4py.MPI.MODE_CREATE.rst", "reference/mpi4py.MPI.MODE_DELETE_ON_CLOSE.rst", "reference/mpi4py.MPI.MODE_EXCL.rst", "reference/mpi4py.MPI.MODE_NOCHECK.rst", "reference/mpi4py.MPI.MODE_NOPRECEDE.rst", "reference/mpi4py.MPI.MODE_NOPUT.rst", "reference/mpi4py.MPI.MODE_NOSTORE.rst", "reference/mpi4py.MPI.MODE_NOSUCCEED.rst", "reference/mpi4py.MPI.MODE_RDONLY.rst", "reference/mpi4py.MPI.MODE_RDWR.rst", "reference/mpi4py.MPI.MODE_SEQUENTIAL.rst", "reference/mpi4py.MPI.MODE_UNIQUE_OPEN.rst", "reference/mpi4py.MPI.MODE_WRONLY.rst", "reference/mpi4py.MPI.Message.rst", "reference/mpi4py.MPI.NO_OP.rst", "reference/mpi4py.MPI.OFFSET.rst", "reference/mpi4py.MPI.OP_NULL.rst", "reference/mpi4py.MPI.ORDER_C.rst", "reference/mpi4py.MPI.ORDER_F.rst", "reference/mpi4py.MPI.ORDER_FORTRAN.rst", "reference/mpi4py.MPI.Op.rst", "reference/mpi4py.MPI.Open_port.rst", "reference/mpi4py.MPI.PACKED.rst", "reference/mpi4py.MPI.PROC_NULL.rst", "reference/mpi4py.MPI.PROD.rst", "reference/mpi4py.MPI.Pcontrol.rst", "reference/mpi4py.MPI.Pickle.rst", "reference/mpi4py.MPI.Prequest.rst", "reference/mpi4py.MPI.Publish_name.rst", "reference/mpi4py.MPI.Query_thread.rst", "reference/mpi4py.MPI.REAL.rst", "reference/mpi4py.MPI.REAL16.rst", "reference/mpi4py.MPI.REAL2.rst", "reference/mpi4py.MPI.REAL4.rst", "reference/mpi4py.MPI.REAL8.rst", "reference/mpi4py.MPI.REPLACE.rst", "reference/mpi4py.MPI.REQUEST_NULL.rst", "reference/mpi4py.MPI.ROOT.rst", "reference/mpi4py.MPI.Register_datarep.rst", "reference/mpi4py.MPI.Remove_error_class.rst", "reference/mpi4py.MPI.Remove_error_code.rst", "reference/mpi4py.MPI.Remove_error_string.rst", "reference/mpi4py.MPI.Request.rst", "reference/mpi4py.MPI.SEEK_CUR.rst", "reference/mpi4py.MPI.SEEK_END.rst", "reference/mpi4py.MPI.SEEK_SET.rst", "reference/mpi4py.MPI.SESSION_NULL.rst", "reference/mpi4py.MPI.SHORT.rst", "reference/mpi4py.MPI.SHORT_INT.rst", "reference/mpi4py.MPI.SIGNED_CHAR.rst", "reference/mpi4py.MPI.SIGNED_INT.rst", "reference/mpi4py.MPI.SIGNED_LONG.rst", "reference/mpi4py.MPI.SIGNED_LONG_LONG.rst", "reference/mpi4py.MPI.SIGNED_SHORT.rst", "reference/mpi4py.MPI.SIMILAR.rst", "reference/mpi4py.MPI.SINT16_T.rst", "reference/mpi4py.MPI.SINT32_T.rst", "reference/mpi4py.MPI.SINT64_T.rst", "reference/mpi4py.MPI.SINT8_T.rst", "reference/mpi4py.MPI.SUBVERSION.rst", "reference/mpi4py.MPI.SUCCESS.rst", "reference/mpi4py.MPI.SUM.rst", "reference/mpi4py.MPI.Session.rst", "reference/mpi4py.MPI.Status.rst", "reference/mpi4py.MPI.TAG_UB.rst", "reference/mpi4py.MPI.THREAD_FUNNELED.rst", "reference/mpi4py.MPI.THREAD_MULTIPLE.rst", "reference/mpi4py.MPI.THREAD_SERIALIZED.rst", "reference/mpi4py.MPI.THREAD_SINGLE.rst", "reference/mpi4py.MPI.TWOINT.rst", "reference/mpi4py.MPI.TYPECLASS_COMPLEX.rst", "reference/mpi4py.MPI.TYPECLASS_INTEGER.rst", "reference/mpi4py.MPI.TYPECLASS_REAL.rst", "reference/mpi4py.MPI.Topocomm.rst", "reference/mpi4py.MPI.UINT16_T.rst", "reference/mpi4py.MPI.UINT32_T.rst", "reference/mpi4py.MPI.UINT64_T.rst", "reference/mpi4py.MPI.UINT8_T.rst", "reference/mpi4py.MPI.UNDEFINED.rst", "reference/mpi4py.MPI.UNEQUAL.rst", "reference/mpi4py.MPI.UNIVERSE_SIZE.rst", "reference/mpi4py.MPI.UNSIGNED.rst", "reference/mpi4py.MPI.UNSIGNED_CHAR.rst", "reference/mpi4py.MPI.UNSIGNED_INT.rst", "reference/mpi4py.MPI.UNSIGNED_LONG.rst", "reference/mpi4py.MPI.UNSIGNED_LONG_LONG.rst", "reference/mpi4py.MPI.UNSIGNED_SHORT.rst", "reference/mpi4py.MPI.UNWEIGHTED.rst", "reference/mpi4py.MPI.Unpublish_name.rst", "reference/mpi4py.MPI.VERSION.rst", "reference/mpi4py.MPI.WCHAR.rst", "reference/mpi4py.MPI.WEIGHTS_EMPTY.rst", "reference/mpi4py.MPI.WIN_BASE.rst", "reference/mpi4py.MPI.WIN_CREATE_FLAVOR.rst", "reference/mpi4py.MPI.WIN_DISP_UNIT.rst", "reference/mpi4py.MPI.WIN_FLAVOR.rst", "reference/mpi4py.MPI.WIN_FLAVOR_ALLOCATE.rst", "reference/mpi4py.MPI.WIN_FLAVOR_CREATE.rst", "reference/mpi4py.MPI.WIN_FLAVOR_DYNAMIC.rst", "reference/mpi4py.MPI.WIN_FLAVOR_SHARED.rst", "reference/mpi4py.MPI.WIN_MODEL.rst", "reference/mpi4py.MPI.WIN_NULL.rst", "reference/mpi4py.MPI.WIN_SEPARATE.rst", "reference/mpi4py.MPI.WIN_SIZE.rst", "reference/mpi4py.MPI.WIN_UNIFIED.rst", "reference/mpi4py.MPI.WTIME_IS_GLOBAL.rst", "reference/mpi4py.MPI.Win.rst", "reference/mpi4py.MPI.Wtick.rst", "reference/mpi4py.MPI.Wtime.rst", "reference/mpi4py.MPI.buffer.rst", "reference/mpi4py.MPI.get_vendor.rst", "reference/mpi4py.MPI.memory.rst", "reference/mpi4py.MPI.pickle.rst", "tutorial.rst"], "indexentries": {"--configure": [[2, "cmdoption-configure", false]], "--mpi": [[2, "cmdoption-mpi", false]], "--mpicc": [[2, "cmdoption-mpicc", false]], "--mpild": [[2, "cmdoption-mpild", false]], "-c": [[12, "cmdoption-c", false]], "-m": [[12, "cmdoption-m", false]], "__enter__() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.__enter__", false]], "__enter__() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.__enter__", false]], "__enter__() (mpi4py.util.sync.semaphore method)": [[18, "mpi4py.util.sync.Semaphore.__enter__", false]], "__enter__() (mpi4py.util.sync.sequential method)": [[18, "mpi4py.util.sync.Sequential.__enter__", false]], "__exit__() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.__exit__", false]], "__exit__() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.__exit__", false]], "__exit__() (mpi4py.util.sync.semaphore method)": [[18, "mpi4py.util.sync.Semaphore.__exit__", false]], "__exit__() (mpi4py.util.sync.sequential method)": [[18, "mpi4py.util.sync.Sequential.__exit__", false]], "__init__() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.__init__", false]], "__init__() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.__init__", false]], "__init__() (mpi4py.util.sync.counter method)": [[18, "mpi4py.util.sync.Counter.__init__", false]], "__init__() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.__init__", false]], "__init__() (mpi4py.util.sync.semaphore method)": [[18, "mpi4py.util.sync.Semaphore.__init__", false]], "__init__() (mpi4py.util.sync.sequential method)": [[18, "mpi4py.util.sync.Sequential.__init__", false]], "__iter__() (mpi4py.util.sync.counter method)": [[18, "mpi4py.util.sync.Counter.__iter__", false]], "__new__() (mpi4py.mpi.bottomtype static method)": [[41, "mpi4py.MPI.BottomType.__new__", false]], "__new__() (mpi4py.mpi.buffer static method)": [[378, "mpi4py.MPI.buffer.__new__", false]], "__new__() (mpi4py.mpi.bufferautomatictype static method)": [[42, "mpi4py.MPI.BufferAutomaticType.__new__", false]], "__new__() (mpi4py.mpi.cartcomm static method)": [[86, "mpi4py.MPI.Cartcomm.__new__", false]], "__new__() (mpi4py.mpi.comm static method)": [[88, "mpi4py.MPI.Comm.__new__", false]], "__new__() (mpi4py.mpi.datatype static method)": [[102, "mpi4py.MPI.Datatype.__new__", false]], "__new__() (mpi4py.mpi.distgraphcomm static method)": [[104, "mpi4py.MPI.Distgraphcomm.__new__", false]], "__new__() (mpi4py.mpi.errhandler static method)": [[174, "mpi4py.MPI.Errhandler.__new__", false]], "__new__() (mpi4py.mpi.exception static method)": [[175, "mpi4py.MPI.Exception.__new__", false]], "__new__() (mpi4py.mpi.file static method)": [[190, "mpi4py.MPI.File.__new__", false]], "__new__() (mpi4py.mpi.graphcomm static method)": [[204, "mpi4py.MPI.Graphcomm.__new__", false]], "__new__() (mpi4py.mpi.grequest static method)": [[205, "mpi4py.MPI.Grequest.__new__", false]], "__new__() (mpi4py.mpi.group static method)": [[206, "mpi4py.MPI.Group.__new__", false]], "__new__() (mpi4py.mpi.info static method)": [[226, "mpi4py.MPI.Info.__new__", false]], "__new__() (mpi4py.mpi.inplacetype static method)": [[225, "mpi4py.MPI.InPlaceType.__new__", false]], "__new__() (mpi4py.mpi.intercomm static method)": [[229, "mpi4py.MPI.Intercomm.__new__", false]], "__new__() (mpi4py.mpi.intracomm static method)": [[230, "mpi4py.MPI.Intracomm.__new__", false]], "__new__() (mpi4py.mpi.message static method)": [[282, "mpi4py.MPI.Message.__new__", false]], "__new__() (mpi4py.mpi.op static method)": [[289, "mpi4py.MPI.Op.__new__", false]], "__new__() (mpi4py.mpi.pickle static method)": [[295, "mpi4py.MPI.Pickle.__new__", false]], "__new__() (mpi4py.mpi.prequest static method)": [[296, "mpi4py.MPI.Prequest.__new__", false]], "__new__() (mpi4py.mpi.request static method)": [[311, "mpi4py.MPI.Request.__new__", false]], "__new__() (mpi4py.mpi.session static method)": [[331, "mpi4py.MPI.Session.__new__", false]], "__new__() (mpi4py.mpi.status static method)": [[332, "mpi4py.MPI.Status.__new__", false]], "__new__() (mpi4py.mpi.topocomm static method)": [[342, "mpi4py.MPI.Topocomm.__new__", false]], "__new__() (mpi4py.mpi.win static method)": [[375, "mpi4py.MPI.Win.__new__", false]], "__next__() (mpi4py.util.sync.counter method)": [[18, "mpi4py.util.sync.Counter.__next__", false]], "abort() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Abort", false]], "accept() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Accept", false]], "accumulate() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Accumulate", false]], "ack_failed() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ack_failed", false]], "acquire() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.acquire", false]], "acquire() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.acquire", false]], "acquire() (mpi4py.util.sync.semaphore method)": [[18, "mpi4py.util.sync.Semaphore.acquire", false]], "add_error_class() (in module mpi4py.mpi)": [[26, "mpi4py.MPI.Add_error_class", false]], "add_error_code() (in module mpi4py.mpi)": [[27, "mpi4py.MPI.Add_error_code", false]], "add_error_string() (in module mpi4py.mpi)": [[28, "mpi4py.MPI.Add_error_string", false]], "address (mpi4py.mpi.buffer attribute)": [[378, "mpi4py.MPI.buffer.address", false]], "agree() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Agree", false]], "aint (in module mpi4py.mpi)": [[22, "mpi4py.MPI.AINT", false]], "aint (in module mpi4py.typing)": [[13, "mpi4py.typing.Aint", false]], "aint_add() (in module mpi4py.mpi)": [[29, "mpi4py.MPI.Aint_add", false]], "aint_diff() (in module mpi4py.mpi)": [[30, "mpi4py.MPI.Aint_diff", false]], "allgather() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Allgather", false], [88, "mpi4py.MPI.Comm.allgather", false]], "allgather() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.allgather", false]], "allgather_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Allgather_init", false]], "allgatherv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Allgatherv", false]], "allgatherv_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Allgatherv_init", false]], "alloc_mem() (in module mpi4py.mpi)": [[31, "mpi4py.MPI.Alloc_mem", false]], "allocate() (mpi4py.mpi.buffer static method)": [[378, "mpi4py.MPI.buffer.allocate", false]], "allocate() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Allocate", false]], "allocate_shared() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Allocate_shared", false]], "allreduce() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Allreduce", false], [88, "mpi4py.MPI.Comm.allreduce", false]], "allreduce_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Allreduce_init", false]], "alltoall() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Alltoall", false], [88, "mpi4py.MPI.Comm.alltoall", false]], "alltoall() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.alltoall", false]], "alltoall_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Alltoall_init", false]], "alltoallv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Alltoallv", false]], "alltoallv_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Alltoallv_init", false]], "alltoallw() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Alltoallw", false]], "alltoallw_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Alltoallw_init", false]], "amode (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.amode", false]], "any_source (in module mpi4py.mpi)": [[23, "mpi4py.MPI.ANY_SOURCE", false]], "any_tag (in module mpi4py.mpi)": [[24, "mpi4py.MPI.ANY_TAG", false]], "apply() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.apply", false]], "apply_async() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.apply_async", false]], "applyresult (class in mpi4py.util.pool)": [[17, "mpi4py.util.pool.ApplyResult", false]], "appnum (in module mpi4py.mpi)": [[25, "mpi4py.MPI.APPNUM", false]], "asyncresult (class in mpi4py.util.pool)": [[17, "mpi4py.util.pool.AsyncResult", false]], "atomicity (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.atomicity", false]], "attach() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Attach", false]], "attach_buffer() (in module mpi4py.mpi)": [[32, "mpi4py.MPI.Attach_buffer", false]], "attach_buffer() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Attach_buffer", false]], "attach_buffer() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Attach_buffer", false]], "attrs (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.attrs", false]], "band (in module mpi4py.mpi)": [[33, "mpi4py.MPI.BAND", false]], "barrier() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Barrier", false], [88, "mpi4py.MPI.Comm.barrier", false]], "barrier_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Barrier_init", false]], "bcast() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Bcast", false], [88, "mpi4py.MPI.Comm.bcast", false]], "bcast() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.bcast", false]], "bcast_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Bcast_init", false]], "begin() (mpi4py.util.sync.sequential method)": [[18, "mpi4py.util.sync.Sequential.begin", false]], "bool (in module mpi4py.mpi)": [[34, "mpi4py.MPI.BOOL", false]], "bootup() (mpi4py.futures.mpipoolexecutor method)": [[11, "mpi4py.futures.MPIPoolExecutor.bootup", false]], "bor (in module mpi4py.mpi)": [[35, "mpi4py.MPI.BOR", false]], "bottom (in module mpi4py.mpi)": [[36, "mpi4py.MPI.BOTTOM", false]], "bottom (in module mpi4py.typing)": [[13, "mpi4py.typing.Bottom", false]], "bottomtype (class in mpi4py.mpi)": [[41, "mpi4py.MPI.BottomType", false]], "bsend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Bsend", false], [88, "mpi4py.MPI.Comm.bsend", false]], "bsend() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.bsend", false]], "bsend_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Bsend_init", false]], "bsend_overhead (in module mpi4py.mpi)": [[37, "mpi4py.MPI.BSEND_OVERHEAD", false]], "buffer (class in mpi4py.mpi)": [[378, "mpi4py.MPI.buffer", false]], "buffer (in module mpi4py.typing)": [[13, "mpi4py.typing.Buffer", false]], "buffer_automatic (in module mpi4py.mpi)": [[38, "mpi4py.MPI.BUFFER_AUTOMATIC", false]], "bufferautomatictype (class in mpi4py.mpi)": [[42, "mpi4py.MPI.BufferAutomaticType", false]], "bufspec (in module mpi4py.typing)": [[13, "mpi4py.typing.BufSpec", false]], "bufspecb (in module mpi4py.typing)": [[13, "mpi4py.typing.BufSpecB", false]], "bufspecv (in module mpi4py.typing)": [[13, "mpi4py.typing.BufSpecV", false]], "bufspecw (in module mpi4py.typing)": [[13, "mpi4py.typing.BufSpecW", false]], "bxor (in module mpi4py.mpi)": [[39, "mpi4py.MPI.BXOR", false]], "byte (in module mpi4py.mpi)": [[40, "mpi4py.MPI.BYTE", false]], "c_bool (in module mpi4py.mpi)": [[81, "mpi4py.MPI.C_BOOL", false]], "c_complex (in module mpi4py.mpi)": [[82, "mpi4py.MPI.C_COMPLEX", false]], "c_double_complex (in module mpi4py.mpi)": [[83, "mpi4py.MPI.C_DOUBLE_COMPLEX", false]], "c_float_complex (in module mpi4py.mpi)": [[84, "mpi4py.MPI.C_FLOAT_COMPLEX", false]], "c_long_double_complex (in module mpi4py.mpi)": [[85, "mpi4py.MPI.C_LONG_DOUBLE_COMPLEX", false]], "call_errhandler() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Call_errhandler", false]], "call_errhandler() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Call_errhandler", false]], "call_errhandler() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Call_errhandler", false]], "call_errhandler() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Call_errhandler", false]], "cancel() (mpi4py.mpi.request method)": [[311, "mpi4py.MPI.Request.Cancel", false], [311, "mpi4py.MPI.Request.cancel", false]], "cancel() (mpi4py.util.pkl5.request method)": [[16, "mpi4py.util.pkl5.Request.cancel", false]], "cancelled (mpi4py.mpi.status attribute)": [[332, "mpi4py.MPI.Status.cancelled", false]], "cart (in module mpi4py.mpi)": [[43, "mpi4py.MPI.CART", false]], "cart_map() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Cart_map", false]], "cartcomm (class in mpi4py.mpi)": [[86, "mpi4py.MPI.Cartcomm", false]], "cast() (mpi4py.mpi.buffer method)": [[378, "mpi4py.MPI.buffer.cast", false]], "cc": [[5, "index-12", false]], "char (in module mpi4py.mpi)": [[44, "mpi4py.MPI.CHAR", false]], "character (in module mpi4py.mpi)": [[45, "mpi4py.MPI.CHARACTER", false]], "clear() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.clear", false]], "clone() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Clone", false]], "close() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Close", false]], "close() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.close", false]], "close_port() (in module mpi4py.mpi)": [[87, "mpi4py.MPI.Close_port", false]], "collect() (in module mpi4py.futures)": [[11, "mpi4py.futures.collect", false]], "combiner (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.combiner", false]], "combiner_contiguous (in module mpi4py.mpi)": [[46, "mpi4py.MPI.COMBINER_CONTIGUOUS", false]], "combiner_darray (in module mpi4py.mpi)": [[47, "mpi4py.MPI.COMBINER_DARRAY", false]], "combiner_dup (in module mpi4py.mpi)": [[48, "mpi4py.MPI.COMBINER_DUP", false]], "combiner_f90_complex (in module mpi4py.mpi)": [[49, "mpi4py.MPI.COMBINER_F90_COMPLEX", false]], "combiner_f90_integer (in module mpi4py.mpi)": [[50, "mpi4py.MPI.COMBINER_F90_INTEGER", false]], "combiner_f90_real (in module mpi4py.mpi)": [[51, "mpi4py.MPI.COMBINER_F90_REAL", false]], "combiner_hindexed (in module mpi4py.mpi)": [[52, "mpi4py.MPI.COMBINER_HINDEXED", false]], "combiner_hindexed_block (in module mpi4py.mpi)": [[53, "mpi4py.MPI.COMBINER_HINDEXED_BLOCK", false]], "combiner_hvector (in module mpi4py.mpi)": [[54, "mpi4py.MPI.COMBINER_HVECTOR", false]], "combiner_indexed (in module mpi4py.mpi)": [[55, "mpi4py.MPI.COMBINER_INDEXED", false]], "combiner_indexed_block (in module mpi4py.mpi)": [[56, "mpi4py.MPI.COMBINER_INDEXED_BLOCK", false]], "combiner_named (in module mpi4py.mpi)": [[57, "mpi4py.MPI.COMBINER_NAMED", false]], "combiner_resized (in module mpi4py.mpi)": [[58, "mpi4py.MPI.COMBINER_RESIZED", false]], "combiner_struct (in module mpi4py.mpi)": [[59, "mpi4py.MPI.COMBINER_STRUCT", false]], "combiner_subarray (in module mpi4py.mpi)": [[60, "mpi4py.MPI.COMBINER_SUBARRAY", false]], "combiner_value_index (in module mpi4py.mpi)": [[61, "mpi4py.MPI.COMBINER_VALUE_INDEX", false]], "combiner_vector (in module mpi4py.mpi)": [[62, "mpi4py.MPI.COMBINER_VECTOR", false]], "comm (class in mpi4py.mpi)": [[88, "mpi4py.MPI.Comm", false]], "comm (class in mpi4py.util.pkl5)": [[16, "mpi4py.util.pkl5.Comm", false]], "comm_null (in module mpi4py.mpi)": [[63, "mpi4py.MPI.COMM_NULL", false]], "comm_self (in module mpi4py.mpi)": [[64, "mpi4py.MPI.COMM_SELF", false]], "comm_type_hw_guided (in module mpi4py.mpi)": [[65, "mpi4py.MPI.COMM_TYPE_HW_GUIDED", false]], "comm_type_hw_unguided (in module mpi4py.mpi)": [[66, "mpi4py.MPI.COMM_TYPE_HW_UNGUIDED", false]], "comm_type_resource_guided (in module mpi4py.mpi)": [[67, "mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED", false]], "comm_type_shared (in module mpi4py.mpi)": [[68, "mpi4py.MPI.COMM_TYPE_SHARED", false]], "comm_world (in module mpi4py.mpi)": [[69, "mpi4py.MPI.COMM_WORLD", false]], "command line option": [[2, "cmdoption-configure", false], [2, "cmdoption-mpi", false], [2, "cmdoption-mpicc", false], [2, "cmdoption-mpild", false], [12, "cmdoption-c", false], [12, "cmdoption-m", false]], "commit() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Commit", false]], "compare() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Compare", false]], "compare() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Compare", false]], "compare_and_swap() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Compare_and_swap", false]], "complete() (mpi4py.mpi.grequest method)": [[205, "mpi4py.MPI.Grequest.Complete", false], [205, "mpi4py.MPI.Grequest.complete", false]], "complete() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Complete", false]], "complex (in module mpi4py.mpi)": [[70, "mpi4py.MPI.COMPLEX", false]], "complex16 (in module mpi4py.mpi)": [[71, "mpi4py.MPI.COMPLEX16", false]], "complex32 (in module mpi4py.mpi)": [[72, "mpi4py.MPI.COMPLEX32", false]], "complex4 (in module mpi4py.mpi)": [[73, "mpi4py.MPI.COMPLEX4", false]], "complex8 (in module mpi4py.mpi)": [[74, "mpi4py.MPI.COMPLEX8", false]], "compose() (in module mpi4py.futures)": [[11, "mpi4py.futures.compose", false]], "compute_dims() (in module mpi4py.mpi)": [[89, "mpi4py.MPI.Compute_dims", false]], "condition (class in mpi4py.util.sync)": [[18, "mpi4py.util.sync.Condition", false]], "congruent (in module mpi4py.mpi)": [[75, "mpi4py.MPI.CONGRUENT", false]], "connect() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Connect", false]], "contents (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.contents", false]], "coords (mpi4py.mpi.cartcomm attribute)": [[86, "mpi4py.MPI.Cartcomm.coords", false]], "copy() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.copy", false]], "count (in module mpi4py.mpi)": [[76, "mpi4py.MPI.COUNT", false]], "count (in module mpi4py.typing)": [[13, "mpi4py.typing.Count", false]], "count (mpi4py.mpi.status attribute)": [[332, "mpi4py.MPI.Status.count", false]], "count() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.count", false]], "counter (class in mpi4py.util.sync)": [[18, "mpi4py.util.sync.Counter", false]], "create() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Create", false]], "create() (mpi4py.mpi.info class method)": [[226, "mpi4py.MPI.Info.Create", false]], "create() (mpi4py.mpi.op class method)": [[289, "mpi4py.MPI.Op.Create", false]], "create() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Create", false]], "create_cart() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Create_cart", false]], "create_contiguous() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_contiguous", false]], "create_darray() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_darray", false]], "create_dist_graph() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Create_dist_graph", false]], "create_dist_graph_adjacent() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Create_dist_graph_adjacent", false]], "create_dynamic() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Create_dynamic", false]], "create_env() (mpi4py.mpi.info class method)": [[226, "mpi4py.MPI.Info.Create_env", false]], "create_errhandler() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.Create_errhandler", false]], "create_errhandler() (mpi4py.mpi.file class method)": [[190, "mpi4py.MPI.File.Create_errhandler", false]], "create_errhandler() (mpi4py.mpi.session class method)": [[331, "mpi4py.MPI.Session.Create_errhandler", false]], "create_errhandler() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Create_errhandler", false]], "create_f90_complex() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Create_f90_complex", false]], "create_f90_integer() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Create_f90_integer", false]], "create_f90_real() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Create_f90_real", false]], "create_from_group() (mpi4py.mpi.intracomm class method)": [[230, "mpi4py.MPI.Intracomm.Create_from_group", false]], "create_from_groups() (mpi4py.mpi.intercomm class method)": [[229, "mpi4py.MPI.Intercomm.Create_from_groups", false]], "create_from_session_pset() (mpi4py.mpi.group class method)": [[206, "mpi4py.MPI.Group.Create_from_session_pset", false]], "create_graph() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Create_graph", false]], "create_group() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Create_group", false]], "create_group() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Create_group", false]], "create_hindexed() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_hindexed", false]], "create_hindexed_block() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_hindexed_block", false]], "create_hvector() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_hvector", false]], "create_indexed() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_indexed", false]], "create_indexed_block() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_indexed_block", false]], "create_intercomm() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Create_intercomm", false]], "create_keyval() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.Create_keyval", false]], "create_keyval() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Create_keyval", false]], "create_keyval() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Create_keyval", false]], "create_resized() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_resized", false]], "create_struct() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Create_struct", false]], "create_subarray() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_subarray", false]], "create_vector() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Create_vector", false]], "cxx_bool (in module mpi4py.mpi)": [[77, "mpi4py.MPI.CXX_BOOL", false]], "cxx_double_complex (in module mpi4py.mpi)": [[78, "mpi4py.MPI.CXX_DOUBLE_COMPLEX", false]], "cxx_float_complex (in module mpi4py.mpi)": [[79, "mpi4py.MPI.CXX_FLOAT_COMPLEX", false]], "cxx_long_double_complex (in module mpi4py.mpi)": [[80, "mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX", false]], "datatype (class in mpi4py.mpi)": [[102, "mpi4py.MPI.Datatype", false]], "datatype_null (in module mpi4py.mpi)": [[90, "mpi4py.MPI.DATATYPE_NULL", false]], "decode() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.decode", false]], "degrees (mpi4py.mpi.topocomm attribute)": [[342, "mpi4py.MPI.Topocomm.degrees", false]], "delete() (mpi4py.mpi.file class method)": [[190, "mpi4py.MPI.File.Delete", false]], "delete() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Delete", false]], "delete_attr() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Delete_attr", false]], "delete_attr() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Delete_attr", false]], "delete_attr() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Delete_attr", false]], "detach() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Detach", false]], "detach_buffer() (in module mpi4py.mpi)": [[103, "mpi4py.MPI.Detach_buffer", false]], "detach_buffer() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Detach_buffer", false]], "detach_buffer() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Detach_buffer", false]], "difference() (mpi4py.mpi.group class method)": [[206, "mpi4py.MPI.Group.Difference", false]], "dim (mpi4py.mpi.cartcomm attribute)": [[86, "mpi4py.MPI.Cartcomm.dim", false]], "dims (mpi4py.mpi.cartcomm attribute)": [[86, "mpi4py.MPI.Cartcomm.dims", false]], "dims (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.dims", false]], "disconnect() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Disconnect", false]], "disp_cur (in module mpi4py.mpi)": [[92, "mpi4py.MPI.DISP_CUR", false]], "displ (in module mpi4py.typing)": [[13, "mpi4py.typing.Displ", false]], "displacement_current (in module mpi4py.mpi)": [[91, "mpi4py.MPI.DISPLACEMENT_CURRENT", false]], "dist_graph (in module mpi4py.mpi)": [[97, "mpi4py.MPI.DIST_GRAPH", false]], "distgraphcomm (class in mpi4py.mpi)": [[104, "mpi4py.MPI.Distgraphcomm", false]], "distribute_block (in module mpi4py.mpi)": [[93, "mpi4py.MPI.DISTRIBUTE_BLOCK", false]], "distribute_cyclic (in module mpi4py.mpi)": [[94, "mpi4py.MPI.DISTRIBUTE_CYCLIC", false]], "distribute_dflt_darg (in module mpi4py.mpi)": [[95, "mpi4py.MPI.DISTRIBUTE_DFLT_DARG", false]], "distribute_none (in module mpi4py.mpi)": [[96, "mpi4py.MPI.DISTRIBUTE_NONE", false]], "double (in module mpi4py.mpi)": [[98, "mpi4py.MPI.DOUBLE", false]], "double_complex (in module mpi4py.mpi)": [[99, "mpi4py.MPI.DOUBLE_COMPLEX", false]], "double_int (in module mpi4py.mpi)": [[100, "mpi4py.MPI.DOUBLE_INT", false]], "double_precision (in module mpi4py.mpi)": [[101, "mpi4py.MPI.DOUBLE_PRECISION", false]], "dumps() (mpi4py.mpi.pickle method)": [[295, "mpi4py.MPI.Pickle.dumps", false]], "dumps_oob() (mpi4py.mpi.pickle method)": [[295, "mpi4py.MPI.Pickle.dumps_oob", false]], "dup() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Dup", false]], "dup() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Dup", false]], "dup() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Dup", false]], "dup() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Dup", false]], "dup_with_info() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Dup_with_info", false]], "edges (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.edges", false]], "end() (mpi4py.util.sync.sequential method)": [[18, "mpi4py.util.sync.Sequential.end", false]], "envelope (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.envelope", false]], "environment variable": [[2, "index-0", false], [2, "index-1", false], [2, "index-2", false], [2, "index-3", false], [2, "index-4", false], [5, "envvar-MPI4PY_BUILD_BACKEND", false], [5, "envvar-MPI4PY_BUILD_CONFIGURE", false], [5, "envvar-MPI4PY_BUILD_MPICC", false], [5, "envvar-MPI4PY_BUILD_MPICFG", false], [5, "envvar-MPI4PY_BUILD_MPILD", false], [5, "envvar-MPICC", false], [5, "envvar-MPICFG", false], [5, "envvar-MPILD", false], [5, "index-0", false], [5, "index-1", false], [5, "index-10", false], [5, "index-11", false], [5, "index-12", false], [5, "index-2", false], [5, "index-3", false], [5, "index-4", false], [5, "index-5", false], [5, "index-6", false], [5, "index-7", false], [5, "index-8", false], [5, "index-9", false], [8, "envvar-MPI4PY_PICKLE_PROTOCOL", false], [8, "envvar-MPI4PY_PICKLE_THRESHOLD", false], [8, "envvar-MPI4PY_RC_ERRORS", false], [8, "envvar-MPI4PY_RC_FAST_REDUCE", false], [8, "envvar-MPI4PY_RC_FINALIZE", false], [8, "envvar-MPI4PY_RC_INITIALIZE", false], [8, "envvar-MPI4PY_RC_IRECV_BUFSZ", false], [8, "envvar-MPI4PY_RC_RECV_MPROBE", false], [8, "envvar-MPI4PY_RC_THREADS", false], [8, "envvar-MPI4PY_RC_THREAD_LEVEL", false], [8, "index-0", false], [8, "index-1", false], [8, "index-2", false], [8, "index-3", false], [8, "index-4", false], [8, "index-5", false], [8, "index-6", false], [8, "index-7", false], [11, "envvar-MPI4PY_FUTURES_BACKOFF", false], [11, "envvar-MPI4PY_FUTURES_MAX_WORKERS", false], [11, "envvar-MPI4PY_FUTURES_USE_PKL5", false], [11, "index-0", false], [11, "index-1", false], [11, "index-2", false], [11, "index-3", false], [11, "index-4", false], [11, "index-5", false], [11, "index-6", false], [11, "index-7", false], [382, "index-0", false]], "err_access (in module mpi4py.mpi)": [[109, "mpi4py.MPI.ERR_ACCESS", false]], "err_amode (in module mpi4py.mpi)": [[110, "mpi4py.MPI.ERR_AMODE", false]], "err_arg (in module mpi4py.mpi)": [[111, "mpi4py.MPI.ERR_ARG", false]], "err_assert (in module mpi4py.mpi)": [[112, "mpi4py.MPI.ERR_ASSERT", false]], "err_bad_file (in module mpi4py.mpi)": [[113, "mpi4py.MPI.ERR_BAD_FILE", false]], "err_base (in module mpi4py.mpi)": [[114, "mpi4py.MPI.ERR_BASE", false]], "err_buffer (in module mpi4py.mpi)": [[115, "mpi4py.MPI.ERR_BUFFER", false]], "err_comm (in module mpi4py.mpi)": [[116, "mpi4py.MPI.ERR_COMM", false]], "err_conversion (in module mpi4py.mpi)": [[117, "mpi4py.MPI.ERR_CONVERSION", false]], "err_count (in module mpi4py.mpi)": [[118, "mpi4py.MPI.ERR_COUNT", false]], "err_dims (in module mpi4py.mpi)": [[119, "mpi4py.MPI.ERR_DIMS", false]], "err_disp (in module mpi4py.mpi)": [[120, "mpi4py.MPI.ERR_DISP", false]], "err_dup_datarep (in module mpi4py.mpi)": [[121, "mpi4py.MPI.ERR_DUP_DATAREP", false]], "err_errhandler (in module mpi4py.mpi)": [[122, "mpi4py.MPI.ERR_ERRHANDLER", false]], "err_file (in module mpi4py.mpi)": [[123, "mpi4py.MPI.ERR_FILE", false]], "err_file_exists (in module mpi4py.mpi)": [[124, "mpi4py.MPI.ERR_FILE_EXISTS", false]], "err_file_in_use (in module mpi4py.mpi)": [[125, "mpi4py.MPI.ERR_FILE_IN_USE", false]], "err_group (in module mpi4py.mpi)": [[126, "mpi4py.MPI.ERR_GROUP", false]], "err_in_status (in module mpi4py.mpi)": [[132, "mpi4py.MPI.ERR_IN_STATUS", false]], "err_info (in module mpi4py.mpi)": [[127, "mpi4py.MPI.ERR_INFO", false]], "err_info_key (in module mpi4py.mpi)": [[128, "mpi4py.MPI.ERR_INFO_KEY", false]], "err_info_nokey (in module mpi4py.mpi)": [[129, "mpi4py.MPI.ERR_INFO_NOKEY", false]], "err_info_value (in module mpi4py.mpi)": [[130, "mpi4py.MPI.ERR_INFO_VALUE", false]], "err_intern (in module mpi4py.mpi)": [[131, "mpi4py.MPI.ERR_INTERN", false]], "err_io (in module mpi4py.mpi)": [[133, "mpi4py.MPI.ERR_IO", false]], "err_keyval (in module mpi4py.mpi)": [[134, "mpi4py.MPI.ERR_KEYVAL", false]], "err_lastcode (in module mpi4py.mpi)": [[135, "mpi4py.MPI.ERR_LASTCODE", false]], "err_locktype (in module mpi4py.mpi)": [[136, "mpi4py.MPI.ERR_LOCKTYPE", false]], "err_name (in module mpi4py.mpi)": [[137, "mpi4py.MPI.ERR_NAME", false]], "err_no_mem (in module mpi4py.mpi)": [[139, "mpi4py.MPI.ERR_NO_MEM", false]], "err_no_space (in module mpi4py.mpi)": [[140, "mpi4py.MPI.ERR_NO_SPACE", false]], "err_no_such_file (in module mpi4py.mpi)": [[141, "mpi4py.MPI.ERR_NO_SUCH_FILE", false]], "err_not_same (in module mpi4py.mpi)": [[138, "mpi4py.MPI.ERR_NOT_SAME", false]], "err_op (in module mpi4py.mpi)": [[142, "mpi4py.MPI.ERR_OP", false]], "err_other (in module mpi4py.mpi)": [[143, "mpi4py.MPI.ERR_OTHER", false]], "err_pending (in module mpi4py.mpi)": [[144, "mpi4py.MPI.ERR_PENDING", false]], "err_port (in module mpi4py.mpi)": [[145, "mpi4py.MPI.ERR_PORT", false]], "err_proc_aborted (in module mpi4py.mpi)": [[146, "mpi4py.MPI.ERR_PROC_ABORTED", false]], "err_proc_failed (in module mpi4py.mpi)": [[147, "mpi4py.MPI.ERR_PROC_FAILED", false]], "err_proc_failed_pending (in module mpi4py.mpi)": [[148, "mpi4py.MPI.ERR_PROC_FAILED_PENDING", false]], "err_quota (in module mpi4py.mpi)": [[149, "mpi4py.MPI.ERR_QUOTA", false]], "err_rank (in module mpi4py.mpi)": [[150, "mpi4py.MPI.ERR_RANK", false]], "err_read_only (in module mpi4py.mpi)": [[151, "mpi4py.MPI.ERR_READ_ONLY", false]], "err_request (in module mpi4py.mpi)": [[152, "mpi4py.MPI.ERR_REQUEST", false]], "err_revoked (in module mpi4py.mpi)": [[153, "mpi4py.MPI.ERR_REVOKED", false]], "err_rma_attach (in module mpi4py.mpi)": [[154, "mpi4py.MPI.ERR_RMA_ATTACH", false]], "err_rma_conflict (in module mpi4py.mpi)": [[155, "mpi4py.MPI.ERR_RMA_CONFLICT", false]], "err_rma_flavor (in module mpi4py.mpi)": [[156, "mpi4py.MPI.ERR_RMA_FLAVOR", false]], "err_rma_range (in module mpi4py.mpi)": [[157, "mpi4py.MPI.ERR_RMA_RANGE", false]], "err_rma_shared (in module mpi4py.mpi)": [[158, "mpi4py.MPI.ERR_RMA_SHARED", false]], "err_rma_sync (in module mpi4py.mpi)": [[159, "mpi4py.MPI.ERR_RMA_SYNC", false]], "err_root (in module mpi4py.mpi)": [[160, "mpi4py.MPI.ERR_ROOT", false]], "err_service (in module mpi4py.mpi)": [[161, "mpi4py.MPI.ERR_SERVICE", false]], "err_session (in module mpi4py.mpi)": [[162, "mpi4py.MPI.ERR_SESSION", false]], "err_size (in module mpi4py.mpi)": [[163, "mpi4py.MPI.ERR_SIZE", false]], "err_spawn (in module mpi4py.mpi)": [[164, "mpi4py.MPI.ERR_SPAWN", false]], "err_tag (in module mpi4py.mpi)": [[165, "mpi4py.MPI.ERR_TAG", false]], "err_topology (in module mpi4py.mpi)": [[166, "mpi4py.MPI.ERR_TOPOLOGY", false]], "err_truncate (in module mpi4py.mpi)": [[167, "mpi4py.MPI.ERR_TRUNCATE", false]], "err_type (in module mpi4py.mpi)": [[168, "mpi4py.MPI.ERR_TYPE", false]], "err_unknown (in module mpi4py.mpi)": [[169, "mpi4py.MPI.ERR_UNKNOWN", false]], "err_unsupported_datarep (in module mpi4py.mpi)": [[170, "mpi4py.MPI.ERR_UNSUPPORTED_DATAREP", false]], "err_unsupported_operation (in module mpi4py.mpi)": [[171, "mpi4py.MPI.ERR_UNSUPPORTED_OPERATION", false]], "err_value_too_large (in module mpi4py.mpi)": [[172, "mpi4py.MPI.ERR_VALUE_TOO_LARGE", false]], "err_win (in module mpi4py.mpi)": [[173, "mpi4py.MPI.ERR_WIN", false]], "errhandler (class in mpi4py.mpi)": [[174, "mpi4py.MPI.Errhandler", false]], "errhandler_null (in module mpi4py.mpi)": [[105, "mpi4py.MPI.ERRHANDLER_NULL", false]], "error (mpi4py.mpi.status attribute)": [[332, "mpi4py.MPI.Status.error", false]], "error_class (mpi4py.mpi.exception attribute)": [[175, "mpi4py.MPI.Exception.error_class", false]], "error_code (mpi4py.mpi.exception attribute)": [[175, "mpi4py.MPI.Exception.error_code", false]], "error_string (mpi4py.mpi.exception attribute)": [[175, "mpi4py.MPI.Exception.error_string", false]], "errors (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.errors", false]], "errors_abort (in module mpi4py.mpi)": [[106, "mpi4py.MPI.ERRORS_ABORT", false]], "errors_are_fatal (in module mpi4py.mpi)": [[107, "mpi4py.MPI.ERRORS_ARE_FATAL", false]], "errors_return (in module mpi4py.mpi)": [[108, "mpi4py.MPI.ERRORS_RETURN", false]], "exception": [[175, "mpi4py.MPI.Exception", false]], "excl() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Excl", false]], "exscan() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Exscan", false], [230, "mpi4py.MPI.Intracomm.exscan", false]], "exscan_init() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Exscan_init", false]], "extent (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.extent", false]], "f2py() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.f2py", false]], "f2py() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.f2py", false]], "f2py() (mpi4py.mpi.errhandler class method)": [[174, "mpi4py.MPI.Errhandler.f2py", false]], "f2py() (mpi4py.mpi.file class method)": [[190, "mpi4py.MPI.File.f2py", false]], "f2py() (mpi4py.mpi.group class method)": [[206, "mpi4py.MPI.Group.f2py", false]], "f2py() (mpi4py.mpi.info class method)": [[226, "mpi4py.MPI.Info.f2py", false]], "f2py() (mpi4py.mpi.message class method)": [[282, "mpi4py.MPI.Message.f2py", false]], "f2py() (mpi4py.mpi.op class method)": [[289, "mpi4py.MPI.Op.f2py", false]], "f2py() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.f2py", false]], "f2py() (mpi4py.mpi.session class method)": [[331, "mpi4py.MPI.Session.f2py", false]], "f2py() (mpi4py.mpi.status class method)": [[332, "mpi4py.MPI.Status.f2py", false]], "f2py() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.f2py", false]], "f_bool (in module mpi4py.mpi)": [[179, "mpi4py.MPI.F_BOOL", false]], "f_complex (in module mpi4py.mpi)": [[180, "mpi4py.MPI.F_COMPLEX", false]], "f_double (in module mpi4py.mpi)": [[181, "mpi4py.MPI.F_DOUBLE", false]], "f_double_complex (in module mpi4py.mpi)": [[182, "mpi4py.MPI.F_DOUBLE_COMPLEX", false]], "f_error (in module mpi4py.mpi)": [[183, "mpi4py.MPI.F_ERROR", false]], "f_float (in module mpi4py.mpi)": [[184, "mpi4py.MPI.F_FLOAT", false]], "f_float_complex (in module mpi4py.mpi)": [[185, "mpi4py.MPI.F_FLOAT_COMPLEX", false]], "f_int (in module mpi4py.mpi)": [[186, "mpi4py.MPI.F_INT", false]], "f_source (in module mpi4py.mpi)": [[187, "mpi4py.MPI.F_SOURCE", false]], "f_status_size (in module mpi4py.mpi)": [[188, "mpi4py.MPI.F_STATUS_SIZE", false]], "f_tag (in module mpi4py.mpi)": [[189, "mpi4py.MPI.F_TAG", false]], "fast_reduce (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.fast_reduce", false]], "fence() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Fence", false]], "fetch_and_op() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Fetch_and_op", false]], "file (class in mpi4py.mpi)": [[190, "mpi4py.MPI.File", false]], "file_null (in module mpi4py.mpi)": [[176, "mpi4py.MPI.FILE_NULL", false]], "finalize (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.finalize", false]], "finalize() (in module mpi4py.mpi)": [[191, "mpi4py.MPI.Finalize", false]], "finalize() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Finalize", false]], "flavor (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.flavor", false]], "float (in module mpi4py.mpi)": [[177, "mpi4py.MPI.FLOAT", false]], "float_int (in module mpi4py.mpi)": [[178, "mpi4py.MPI.FLOAT_INT", false]], "flush() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Flush", false]], "flush_all() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Flush_all", false]], "flush_buffer() (in module mpi4py.mpi)": [[192, "mpi4py.MPI.Flush_buffer", false]], "flush_buffer() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Flush_buffer", false]], "flush_buffer() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Flush_buffer", false]], "flush_local() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Flush_local", false]], "flush_local_all() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Flush_local_all", false]], "format (mpi4py.mpi.buffer attribute)": [[378, "mpi4py.MPI.buffer.format", false]], "free() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Free", false], [88, "mpi4py.MPI.Comm.free", false]], "free() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Free", false], [102, "mpi4py.MPI.Datatype.free", false]], "free() (mpi4py.mpi.errhandler method)": [[174, "mpi4py.MPI.Errhandler.Free", false], [174, "mpi4py.MPI.Errhandler.free", false]], "free() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.free", false]], "free() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Free", false], [206, "mpi4py.MPI.Group.free", false]], "free() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Free", false], [226, "mpi4py.MPI.Info.free", false]], "free() (mpi4py.mpi.message method)": [[282, "mpi4py.MPI.Message.free", false]], "free() (mpi4py.mpi.op method)": [[289, "mpi4py.MPI.Op.Free", false], [289, "mpi4py.MPI.Op.free", false]], "free() (mpi4py.mpi.request method)": [[311, "mpi4py.MPI.Request.Free", false], [311, "mpi4py.MPI.Request.free", false]], "free() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.free", false]], "free() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Free", false], [375, "mpi4py.MPI.Win.free", false]], "free() (mpi4py.util.pkl5.message method)": [[16, "mpi4py.util.pkl5.Message.free", false]], "free() (mpi4py.util.pkl5.request method)": [[16, "mpi4py.util.pkl5.Request.Free", false], [16, "mpi4py.util.pkl5.Request.free", false]], "free() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.free", false]], "free() (mpi4py.util.sync.counter method)": [[18, "mpi4py.util.sync.Counter.free", false]], "free() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.free", false]], "free() (mpi4py.util.sync.semaphore method)": [[18, "mpi4py.util.sync.Semaphore.free", false]], "free_keyval() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.Free_keyval", false]], "free_keyval() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Free_keyval", false]], "free_keyval() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.Free_keyval", false]], "free_mem() (in module mpi4py.mpi)": [[193, "mpi4py.MPI.Free_mem", false]], "from_numpy_dtype() (in module mpi4py.util.dtlib)": [[15, "mpi4py.util.dtlib.from_numpy_dtype", false]], "fromaddress() (mpi4py.mpi.buffer static method)": [[378, "mpi4py.MPI.buffer.fromaddress", false]], "frombuffer() (mpi4py.mpi.buffer static method)": [[378, "mpi4py.MPI.buffer.frombuffer", false]], "fromcode() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.fromcode", false]], "fromhandle() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.fromhandle", false]], "fromhandle() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.fromhandle", false]], "fromhandle() (mpi4py.mpi.errhandler class method)": [[174, "mpi4py.MPI.Errhandler.fromhandle", false]], "fromhandle() (mpi4py.mpi.file class method)": [[190, "mpi4py.MPI.File.fromhandle", false]], "fromhandle() (mpi4py.mpi.group class method)": [[206, "mpi4py.MPI.Group.fromhandle", false]], "fromhandle() (mpi4py.mpi.info class method)": [[226, "mpi4py.MPI.Info.fromhandle", false]], "fromhandle() (mpi4py.mpi.message class method)": [[282, "mpi4py.MPI.Message.fromhandle", false]], "fromhandle() (mpi4py.mpi.op class method)": [[289, "mpi4py.MPI.Op.fromhandle", false]], "fromhandle() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.fromhandle", false]], "fromhandle() (mpi4py.mpi.session class method)": [[331, "mpi4py.MPI.Session.fromhandle", false]], "fromhandle() (mpi4py.mpi.win class method)": [[375, "mpi4py.MPI.Win.fromhandle", false]], "gather() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Gather", false], [88, "mpi4py.MPI.Comm.gather", false]], "gather() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.gather", false]], "gather_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Gather_init", false]], "gatherv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Gatherv", false]], "gatherv_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Gatherv_init", false]], "get() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Get", false], [226, "mpi4py.MPI.Info.get", false]], "get() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get", false]], "get() (mpi4py.util.pool.asyncresult method)": [[17, "mpi4py.util.pool.AsyncResult.get", false]], "get_accumulate() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get_accumulate", false]], "get_address() (in module mpi4py.mpi)": [[197, "mpi4py.MPI.Get_address", false]], "get_amode() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_amode", false]], "get_atomicity() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_atomicity", false]], "get_attr() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_attr", false]], "get_attr() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_attr", false]], "get_attr() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get_attr", false]], "get_byte_offset() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_byte_offset", false]], "get_cart_rank() (mpi4py.mpi.cartcomm method)": [[86, "mpi4py.MPI.Cartcomm.Get_cart_rank", false]], "get_comm_workers() (in module mpi4py.futures)": [[11, "mpi4py.futures.get_comm_workers", false]], "get_config() (in module mpi4py)": [[8, "mpi4py.get_config", false]], "get_contents() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_contents", false]], "get_coords() (mpi4py.mpi.cartcomm method)": [[86, "mpi4py.MPI.Cartcomm.Get_coords", false]], "get_count() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Get_count", false]], "get_dim() (mpi4py.mpi.cartcomm method)": [[86, "mpi4py.MPI.Cartcomm.Get_dim", false]], "get_dims() (mpi4py.mpi.graphcomm method)": [[204, "mpi4py.MPI.Graphcomm.Get_dims", false]], "get_dist_neighbors() (mpi4py.mpi.distgraphcomm method)": [[104, "mpi4py.MPI.Distgraphcomm.Get_dist_neighbors", false]], "get_dist_neighbors_count() (mpi4py.mpi.distgraphcomm method)": [[104, "mpi4py.MPI.Distgraphcomm.Get_dist_neighbors_count", false]], "get_elements() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Get_elements", false]], "get_envelope() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_envelope", false]], "get_errhandler() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_errhandler", false]], "get_errhandler() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_errhandler", false]], "get_errhandler() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Get_errhandler", false]], "get_errhandler() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get_errhandler", false]], "get_error() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Get_error", false]], "get_error_class() (in module mpi4py.mpi)": [[198, "mpi4py.MPI.Get_error_class", false]], "get_error_class() (mpi4py.mpi.exception method)": [[175, "mpi4py.MPI.Exception.Get_error_class", false]], "get_error_code() (mpi4py.mpi.exception method)": [[175, "mpi4py.MPI.Exception.Get_error_code", false]], "get_error_string() (in module mpi4py.mpi)": [[199, "mpi4py.MPI.Get_error_string", false]], "get_error_string() (mpi4py.mpi.exception method)": [[175, "mpi4py.MPI.Exception.Get_error_string", false]], "get_extent() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_extent", false]], "get_failed() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_failed", false]], "get_group() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_group", false]], "get_group() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_group", false]], "get_group() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get_group", false]], "get_hw_resource_info() (in module mpi4py.mpi)": [[200, "mpi4py.MPI.Get_hw_resource_info", false]], "get_include() (in module mpi4py)": [[8, "mpi4py.get_include", false]], "get_info() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_info", false]], "get_info() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_info", false]], "get_info() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Get_info", false]], "get_info() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get_info", false]], "get_library_version() (in module mpi4py.mpi)": [[201, "mpi4py.MPI.Get_library_version", false]], "get_name() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_name", false]], "get_name() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_name", false]], "get_name() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Get_name", false]], "get_neighbors() (mpi4py.mpi.graphcomm method)": [[204, "mpi4py.MPI.Graphcomm.Get_neighbors", false]], "get_neighbors_count() (mpi4py.mpi.graphcomm method)": [[204, "mpi4py.MPI.Graphcomm.Get_neighbors_count", false]], "get_nkeys() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Get_nkeys", false]], "get_nth_pset() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Get_nth_pset", false]], "get_nthkey() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Get_nthkey", false]], "get_num_psets() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Get_num_psets", false]], "get_parent() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.Get_parent", false]], "get_position() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_position", false]], "get_position_shared() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_position_shared", false]], "get_processor_name() (in module mpi4py.mpi)": [[202, "mpi4py.MPI.Get_processor_name", false]], "get_pset_info() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Get_pset_info", false]], "get_rank() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_rank", false]], "get_rank() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Get_rank", false]], "get_remote_group() (mpi4py.mpi.intercomm method)": [[229, "mpi4py.MPI.Intercomm.Get_remote_group", false]], "get_remote_size() (mpi4py.mpi.intercomm method)": [[229, "mpi4py.MPI.Intercomm.Get_remote_size", false]], "get_size() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_size", false]], "get_size() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_size", false]], "get_size() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_size", false]], "get_size() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Get_size", false]], "get_source() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Get_source", false]], "get_status() (mpi4py.mpi.request method)": [[311, "mpi4py.MPI.Request.Get_status", false], [311, "mpi4py.MPI.Request.get_status", false]], "get_status() (mpi4py.util.pkl5.request method)": [[16, "mpi4py.util.pkl5.Request.get_status", false]], "get_status_all() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Get_status_all", false], [311, "mpi4py.MPI.Request.get_status_all", false]], "get_status_all() (mpi4py.util.pkl5.request class method)": [[16, "mpi4py.util.pkl5.Request.get_status_all", false]], "get_status_any() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Get_status_any", false], [311, "mpi4py.MPI.Request.get_status_any", false]], "get_status_some() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Get_status_some", false], [311, "mpi4py.MPI.Request.get_status_some", false]], "get_tag() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Get_tag", false]], "get_topo() (mpi4py.mpi.cartcomm method)": [[86, "mpi4py.MPI.Cartcomm.Get_topo", false]], "get_topo() (mpi4py.mpi.graphcomm method)": [[204, "mpi4py.MPI.Graphcomm.Get_topo", false]], "get_topology() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Get_topology", false]], "get_true_extent() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Get_true_extent", false]], "get_type_extent() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_type_extent", false]], "get_value_index() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Get_value_index", false]], "get_vendor() (in module mpi4py.mpi)": [[379, "mpi4py.MPI.get_vendor", false]], "get_version() (in module mpi4py.mpi)": [[203, "mpi4py.MPI.Get_version", false]], "get_view() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Get_view", false]], "graph (in module mpi4py.mpi)": [[194, "mpi4py.MPI.GRAPH", false]], "graph_map() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Graph_map", false]], "graphcomm (class in mpi4py.mpi)": [[204, "mpi4py.MPI.Graphcomm", false]], "grequest (class in mpi4py.mpi)": [[205, "mpi4py.MPI.Grequest", false]], "group (class in mpi4py.mpi)": [[206, "mpi4py.MPI.Group", false]], "group (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.group", false]], "group (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.group", false]], "group (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.group", false]], "group_empty (in module mpi4py.mpi)": [[195, "mpi4py.MPI.GROUP_EMPTY", false]], "group_null (in module mpi4py.mpi)": [[196, "mpi4py.MPI.GROUP_NULL", false]], "group_rank (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.group_rank", false]], "group_rank (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.group_rank", false]], "group_size (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.group_size", false]], "group_size (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.group_size", false]], "handle (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.handle", false]], "handle (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.handle", false]], "handle (mpi4py.mpi.errhandler attribute)": [[174, "mpi4py.MPI.Errhandler.handle", false]], "handle (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.handle", false]], "handle (mpi4py.mpi.group attribute)": [[206, "mpi4py.MPI.Group.handle", false]], "handle (mpi4py.mpi.info attribute)": [[226, "mpi4py.MPI.Info.handle", false]], "handle (mpi4py.mpi.message attribute)": [[282, "mpi4py.MPI.Message.handle", false]], "handle (mpi4py.mpi.op attribute)": [[289, "mpi4py.MPI.Op.handle", false]], "handle (mpi4py.mpi.request attribute)": [[311, "mpi4py.MPI.Request.handle", false]], "handle (mpi4py.mpi.session attribute)": [[331, "mpi4py.MPI.Session.handle", false]], "handle (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.handle", false]], "iagree() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iagree", false]], "iallgather() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iallgather", false]], "iallgatherv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iallgatherv", false]], "iallreduce() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iallreduce", false]], "ialltoall() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ialltoall", false]], "ialltoallv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ialltoallv", false]], "ialltoallw() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ialltoallw", false]], "ibarrier() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ibarrier", false]], "ibcast() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ibcast", false]], "ibsend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ibsend", false], [88, "mpi4py.MPI.Comm.ibsend", false]], "ibsend() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.ibsend", false]], "ident (in module mpi4py.mpi)": [[207, "mpi4py.MPI.IDENT", false]], "idup() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Idup", false]], "idup_with_info() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Idup_with_info", false]], "iexscan() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Iexscan", false]], "iflush_buffer() (in module mpi4py.mpi)": [[224, "mpi4py.MPI.Iflush_buffer", false]], "iflush_buffer() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iflush_buffer", false]], "iflush_buffer() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Iflush_buffer", false]], "igather() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Igather", false]], "igatherv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Igatherv", false]], "imap() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.imap", false]], "imap_unordered() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.imap_unordered", false]], "improbe() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Improbe", false], [88, "mpi4py.MPI.Comm.improbe", false]], "improbe() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.improbe", false]], "in_place (in module mpi4py.mpi)": [[222, "mpi4py.MPI.IN_PLACE", false]], "incl() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Incl", false]], "indegree (mpi4py.mpi.topocomm attribute)": [[342, "mpi4py.MPI.Topocomm.indegree", false]], "index (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.index", false]], "inedges (mpi4py.mpi.topocomm attribute)": [[342, "mpi4py.MPI.Topocomm.inedges", false]], "ineighbor_allgather() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Ineighbor_allgather", false]], "ineighbor_allgatherv() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Ineighbor_allgatherv", false]], "ineighbor_alltoall() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Ineighbor_alltoall", false]], "ineighbor_alltoallv() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Ineighbor_alltoallv", false]], "ineighbor_alltoallw() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Ineighbor_alltoallw", false]], "info (class in mpi4py.mpi)": [[226, "mpi4py.MPI.Info", false]], "info (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.info", false]], "info (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.info", false]], "info (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.info", false]], "info_env (in module mpi4py.mpi)": [[208, "mpi4py.MPI.INFO_ENV", false]], "info_null (in module mpi4py.mpi)": [[209, "mpi4py.MPI.INFO_NULL", false]], "init() (in module mpi4py.mpi)": [[227, "mpi4py.MPI.Init", false]], "init() (mpi4py.mpi.session class method)": [[331, "mpi4py.MPI.Session.Init", false]], "init_thread() (in module mpi4py.mpi)": [[228, "mpi4py.MPI.Init_thread", false]], "initialize (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.initialize", false]], "inoutedges (mpi4py.mpi.topocomm attribute)": [[342, "mpi4py.MPI.Topocomm.inoutedges", false]], "inplace (in module mpi4py.typing)": [[13, "mpi4py.typing.InPlace", false]], "inplacetype (class in mpi4py.mpi)": [[225, "mpi4py.MPI.InPlaceType", false]], "int (in module mpi4py.mpi)": [[210, "mpi4py.MPI.INT", false]], "int16_t (in module mpi4py.mpi)": [[211, "mpi4py.MPI.INT16_T", false]], "int32_t (in module mpi4py.mpi)": [[212, "mpi4py.MPI.INT32_T", false]], "int64_t (in module mpi4py.mpi)": [[213, "mpi4py.MPI.INT64_T", false]], "int8_t (in module mpi4py.mpi)": [[214, "mpi4py.MPI.INT8_T", false]], "int_int (in module mpi4py.mpi)": [[221, "mpi4py.MPI.INT_INT", false]], "integer (in module mpi4py.mpi)": [[215, "mpi4py.MPI.INTEGER", false]], "integer1 (in module mpi4py.mpi)": [[216, "mpi4py.MPI.INTEGER1", false]], "integer16 (in module mpi4py.mpi)": [[217, "mpi4py.MPI.INTEGER16", false]], "integer2 (in module mpi4py.mpi)": [[218, "mpi4py.MPI.INTEGER2", false]], "integer4 (in module mpi4py.mpi)": [[219, "mpi4py.MPI.INTEGER4", false]], "integer8 (in module mpi4py.mpi)": [[220, "mpi4py.MPI.INTEGER8", false]], "intercomm (class in mpi4py.mpi)": [[229, "mpi4py.MPI.Intercomm", false]], "intercomm (class in mpi4py.util.pkl5)": [[16, "mpi4py.util.pkl5.Intercomm", false]], "intersection() (mpi4py.mpi.group class method)": [[206, "mpi4py.MPI.Group.Intersection", false]], "intracomm (class in mpi4py.mpi)": [[230, "mpi4py.MPI.Intracomm", false]], "intracomm (class in mpi4py.util.pkl5)": [[16, "mpi4py.util.pkl5.Intracomm", false]], "io (in module mpi4py.mpi)": [[223, "mpi4py.MPI.IO", false]], "iprobe() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iprobe", false], [88, "mpi4py.MPI.Comm.iprobe", false]], "iprobe() (mpi4py.mpi.message class method)": [[282, "mpi4py.MPI.Message.Iprobe", false], [282, "mpi4py.MPI.Message.iprobe", false]], "iprobe() (mpi4py.util.pkl5.message class method)": [[16, "mpi4py.util.pkl5.Message.iprobe", false]], "iread() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iread", false]], "iread_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iread_all", false]], "iread_at() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iread_at", false]], "iread_at_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iread_at_all", false]], "iread_shared() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iread_shared", false]], "irecv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Irecv", false], [88, "mpi4py.MPI.Comm.irecv", false]], "irecv() (mpi4py.mpi.message method)": [[282, "mpi4py.MPI.Message.Irecv", false], [282, "mpi4py.MPI.Message.irecv", false]], "irecv() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.irecv", false]], "irecv() (mpi4py.util.pkl5.message method)": [[16, "mpi4py.util.pkl5.Message.irecv", false]], "irecv_bufsz (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.irecv_bufsz", false]], "ireduce() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ireduce", false]], "ireduce_scatter() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ireduce_scatter", false]], "ireduce_scatter_block() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ireduce_scatter_block", false]], "irsend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Irsend", false]], "is_cancelled() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Is_cancelled", false]], "is_commutative (mpi4py.mpi.op attribute)": [[289, "mpi4py.MPI.Op.is_commutative", false]], "is_commutative() (mpi4py.mpi.op method)": [[289, "mpi4py.MPI.Op.Is_commutative", false]], "is_finalized() (in module mpi4py.mpi)": [[231, "mpi4py.MPI.Is_finalized", false]], "is_initialized() (in module mpi4py.mpi)": [[232, "mpi4py.MPI.Is_initialized", false]], "is_inter (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.is_inter", false]], "is_inter() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Is_inter", false]], "is_intra (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.is_intra", false]], "is_intra() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Is_intra", false]], "is_named (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.is_named", false]], "is_predefined (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.is_predefined", false]], "is_predefined (mpi4py.mpi.op attribute)": [[289, "mpi4py.MPI.Op.is_predefined", false]], "is_revoked() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Is_revoked", false]], "is_thread_main() (in module mpi4py.mpi)": [[233, "mpi4py.MPI.Is_thread_main", false]], "is_topo (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.is_topo", false]], "iscan() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Iscan", false]], "iscatter() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iscatter", false]], "iscatterv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Iscatterv", false]], "isend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Isend", false], [88, "mpi4py.MPI.Comm.isend", false]], "isend() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.isend", false]], "isendrecv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Isendrecv", false]], "isendrecv_replace() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Isendrecv_replace", false]], "ishrink() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ishrink", false]], "issend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Issend", false], [88, "mpi4py.MPI.Comm.issend", false]], "issend() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.issend", false]], "istarmap() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.istarmap", false]], "istarmap_unordered() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.istarmap_unordered", false]], "items() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.items", false]], "itemsize (mpi4py.mpi.buffer attribute)": [[378, "mpi4py.MPI.buffer.itemsize", false]], "iwrite() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iwrite", false]], "iwrite_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iwrite_all", false]], "iwrite_at() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iwrite_at", false]], "iwrite_at_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iwrite_at_all", false]], "iwrite_shared() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Iwrite_shared", false]], "join() (mpi4py.mpi.comm class method)": [[88, "mpi4py.MPI.Comm.Join", false]], "join() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.join", false]], "keys() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.keys", false]], "keyval_invalid (in module mpi4py.mpi)": [[234, "mpi4py.MPI.KEYVAL_INVALID", false]], "land (in module mpi4py.mpi)": [[235, "mpi4py.MPI.LAND", false]], "lastusedcode (in module mpi4py.mpi)": [[236, "mpi4py.MPI.LASTUSEDCODE", false]], "lb (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.lb", false]], "loads() (mpi4py.mpi.pickle method)": [[295, "mpi4py.MPI.Pickle.loads", false]], "loads_oob() (mpi4py.mpi.pickle method)": [[295, "mpi4py.MPI.Pickle.loads_oob", false]], "lock() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Lock", false]], "lock_all() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Lock_all", false]], "lock_exclusive (in module mpi4py.mpi)": [[237, "mpi4py.MPI.LOCK_EXCLUSIVE", false]], "lock_shared (in module mpi4py.mpi)": [[238, "mpi4py.MPI.LOCK_SHARED", false]], "locked() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.locked", false]], "locked() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.locked", false]], "logical (in module mpi4py.mpi)": [[239, "mpi4py.MPI.LOGICAL", false]], "logical1 (in module mpi4py.mpi)": [[240, "mpi4py.MPI.LOGICAL1", false]], "logical2 (in module mpi4py.mpi)": [[241, "mpi4py.MPI.LOGICAL2", false]], "logical4 (in module mpi4py.mpi)": [[242, "mpi4py.MPI.LOGICAL4", false]], "logical8 (in module mpi4py.mpi)": [[243, "mpi4py.MPI.LOGICAL8", false]], "long (in module mpi4py.mpi)": [[244, "mpi4py.MPI.LONG", false]], "long_double (in module mpi4py.mpi)": [[245, "mpi4py.MPI.LONG_DOUBLE", false]], "long_double_int (in module mpi4py.mpi)": [[246, "mpi4py.MPI.LONG_DOUBLE_INT", false]], "long_int (in module mpi4py.mpi)": [[247, "mpi4py.MPI.LONG_INT", false]], "long_long (in module mpi4py.mpi)": [[248, "mpi4py.MPI.LONG_LONG", false]], "lookup_name() (in module mpi4py.mpi)": [[251, "mpi4py.MPI.Lookup_name", false]], "lor (in module mpi4py.mpi)": [[249, "mpi4py.MPI.LOR", false]], "lxor (in module mpi4py.mpi)": [[250, "mpi4py.MPI.LXOR", false]], "map() (mpi4py.futures.mpipoolexecutor method)": [[11, "mpi4py.futures.MPIPoolExecutor.map", false]], "map() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.map", false]], "map_async() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.map_async", false]], "mapresult (class in mpi4py.util.pool)": [[17, "mpi4py.util.pool.MapResult", false]], "match_size() (mpi4py.mpi.datatype class method)": [[102, "mpi4py.MPI.Datatype.Match_size", false]], "max (in module mpi4py.mpi)": [[252, "mpi4py.MPI.MAX", false]], "max_datarep_string (in module mpi4py.mpi)": [[254, "mpi4py.MPI.MAX_DATAREP_STRING", false]], "max_error_string (in module mpi4py.mpi)": [[255, "mpi4py.MPI.MAX_ERROR_STRING", false]], "max_info_key (in module mpi4py.mpi)": [[256, "mpi4py.MPI.MAX_INFO_KEY", false]], "max_info_val (in module mpi4py.mpi)": [[257, "mpi4py.MPI.MAX_INFO_VAL", false]], "max_library_version_string (in module mpi4py.mpi)": [[258, "mpi4py.MPI.MAX_LIBRARY_VERSION_STRING", false]], "max_object_name (in module mpi4py.mpi)": [[259, "mpi4py.MPI.MAX_OBJECT_NAME", false]], "max_port_name (in module mpi4py.mpi)": [[260, "mpi4py.MPI.MAX_PORT_NAME", false]], "max_processor_name (in module mpi4py.mpi)": [[261, "mpi4py.MPI.MAX_PROCESSOR_NAME", false]], "max_pset_name_len (in module mpi4py.mpi)": [[262, "mpi4py.MPI.MAX_PSET_NAME_LEN", false]], "max_stringtag_len (in module mpi4py.mpi)": [[263, "mpi4py.MPI.MAX_STRINGTAG_LEN", false]], "maxloc (in module mpi4py.mpi)": [[253, "mpi4py.MPI.MAXLOC", false]], "memory (in module mpi4py.mpi)": [[380, "mpi4py.MPI.memory", false]], "merge() (mpi4py.mpi.intercomm method)": [[229, "mpi4py.MPI.Intercomm.Merge", false]], "message (class in mpi4py.mpi)": [[282, "mpi4py.MPI.Message", false]], "message (class in mpi4py.util.pkl5)": [[16, "mpi4py.util.pkl5.Message", false]], "message_no_proc (in module mpi4py.mpi)": [[264, "mpi4py.MPI.MESSAGE_NO_PROC", false]], "message_null (in module mpi4py.mpi)": [[265, "mpi4py.MPI.MESSAGE_NULL", false]], "min (in module mpi4py.mpi)": [[266, "mpi4py.MPI.MIN", false]], "minloc (in module mpi4py.mpi)": [[267, "mpi4py.MPI.MINLOC", false]], "mode_append (in module mpi4py.mpi)": [[268, "mpi4py.MPI.MODE_APPEND", false]], "mode_create (in module mpi4py.mpi)": [[269, "mpi4py.MPI.MODE_CREATE", false]], "mode_delete_on_close (in module mpi4py.mpi)": [[270, "mpi4py.MPI.MODE_DELETE_ON_CLOSE", false]], "mode_excl (in module mpi4py.mpi)": [[271, "mpi4py.MPI.MODE_EXCL", false]], "mode_nocheck (in module mpi4py.mpi)": [[272, "mpi4py.MPI.MODE_NOCHECK", false]], "mode_noprecede (in module mpi4py.mpi)": [[273, "mpi4py.MPI.MODE_NOPRECEDE", false]], "mode_noput (in module mpi4py.mpi)": [[274, "mpi4py.MPI.MODE_NOPUT", false]], "mode_nostore (in module mpi4py.mpi)": [[275, "mpi4py.MPI.MODE_NOSTORE", false]], "mode_nosucceed (in module mpi4py.mpi)": [[276, "mpi4py.MPI.MODE_NOSUCCEED", false]], "mode_rdonly (in module mpi4py.mpi)": [[277, "mpi4py.MPI.MODE_RDONLY", false]], "mode_rdwr (in module mpi4py.mpi)": [[278, "mpi4py.MPI.MODE_RDWR", false]], "mode_sequential (in module mpi4py.mpi)": [[279, "mpi4py.MPI.MODE_SEQUENTIAL", false]], "mode_unique_open (in module mpi4py.mpi)": [[280, "mpi4py.MPI.MODE_UNIQUE_OPEN", false]], "mode_wronly (in module mpi4py.mpi)": [[281, "mpi4py.MPI.MODE_WRONLY", false]], "model (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.model", false]], "module": [[8, "module-mpi4py", false], [10, "module-mpi4py.bench", false], [11, "module-mpi4py.futures", false], [12, "module-mpi4py.run", false], [13, "module-mpi4py.typing", false], [14, "module-mpi4py.util", false], [15, "module-mpi4py.util.dtlib", false], [16, "module-mpi4py.util.pkl5", false], [17, "module-mpi4py.util.pool", false], [18, "module-mpi4py.util.sync", false], [21, "module-mpi4py.MPI", false]], "mpi4py": [[8, "module-mpi4py", false]], "mpi4py.bench": [[10, "module-mpi4py.bench", false]], "mpi4py.futures": [[11, "module-mpi4py.futures", false]], "mpi4py.mpi": [[21, "module-mpi4py.MPI", false]], "mpi4py.rc (in module mpi4py)": [[8, "mpi4py.mpi4py.rc", false]], "mpi4py.run": [[12, "module-mpi4py.run", false]], "mpi4py.typing": [[13, "module-mpi4py.typing", false]], "mpi4py.util": [[14, "module-mpi4py.util", false]], "mpi4py.util.dtlib": [[15, "module-mpi4py.util.dtlib", false]], "mpi4py.util.pkl5": [[16, "module-mpi4py.util.pkl5", false]], "mpi4py.util.pool": [[17, "module-mpi4py.util.pool", false]], "mpi4py.util.sync": [[18, "module-mpi4py.util.sync", false]], "mpi4py_build_backend": [[5, "envvar-MPI4PY_BUILD_BACKEND", false], [5, "index-0", false], [5, "index-1", false], [5, "index-10", false], [5, "index-11", false]], "mpi4py_build_configure": [[5, "envvar-MPI4PY_BUILD_CONFIGURE", false], [5, "index-6", false]], "mpi4py_build_mpicc": [[5, "envvar-MPI4PY_BUILD_MPICC", false], [5, "index-3", false], [5, "index-7", false]], "mpi4py_build_mpicfg": [[5, "envvar-MPI4PY_BUILD_MPICFG", false], [5, "index-5", false], [5, "index-9", false]], "mpi4py_build_mpild": [[5, "envvar-MPI4PY_BUILD_MPILD", false], [5, "index-4", false], [5, "index-8", false]], "mpi4py_futures_backoff": [[11, "envvar-MPI4PY_FUTURES_BACKOFF", false], [11, "index-2", false], [11, "index-5", false]], "mpi4py_futures_max_workers": [[11, "envvar-MPI4PY_FUTURES_MAX_WORKERS", false], [11, "index-0", false], [11, "index-3", false], [11, "index-7", false]], "mpi4py_futures_use_pkl5": [[11, "envvar-MPI4PY_FUTURES_USE_PKL5", false], [11, "index-1", false], [11, "index-4", false]], "mpi4py_pickle_protocol": [[8, "envvar-MPI4PY_PICKLE_PROTOCOL", false], [382, "index-0", false]], "mpi4py_pickle_threshold": [[8, "envvar-MPI4PY_PICKLE_THRESHOLD", false]], "mpi4py_rc_errors": [[8, "envvar-MPI4PY_RC_ERRORS", false], [8, "index-7", false]], "mpi4py_rc_fast_reduce": [[8, "envvar-MPI4PY_RC_FAST_REDUCE", false], [8, "index-4", false]], "mpi4py_rc_finalize": [[8, "envvar-MPI4PY_RC_FINALIZE", false], [8, "index-3", false]], "mpi4py_rc_initialize": [[8, "envvar-MPI4PY_RC_INITIALIZE", false], [8, "index-0", false]], "mpi4py_rc_irecv_bufsz": [[8, "envvar-MPI4PY_RC_IRECV_BUFSZ", false], [8, "index-6", false]], "mpi4py_rc_recv_mprobe": [[8, "envvar-MPI4PY_RC_RECV_MPROBE", false], [8, "index-5", false]], "mpi4py_rc_thread_level": [[8, "envvar-MPI4PY_RC_THREAD_LEVEL", false], [8, "index-2", false]], "mpi4py_rc_threads": [[8, "envvar-MPI4PY_RC_THREADS", false], [8, "index-1", false]], "mpicc": [[2, "index-1", false], [2, "index-4", false], [5, "envvar-MPICC", false]], "mpicfg": [[2, "index-0", false], [5, "envvar-MPICFG", false]], "mpicommexecutor (class in mpi4py.futures)": [[11, "mpi4py.futures.MPICommExecutor", false]], "mpiexec_universe_size": [[11, "index-6", false]], "mpild": [[2, "index-2", false], [5, "envvar-MPILD", false]], "mpipoolexecutor (class in mpi4py.futures)": [[11, "mpi4py.futures.MPIPoolExecutor", false]], "mprobe() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Mprobe", false], [88, "mpi4py.MPI.Comm.mprobe", false]], "mprobe() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.mprobe", false]], "mutex (class in mpi4py.util.sync)": [[18, "mpi4py.util.sync.Mutex", false]], "name (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.name", false]], "name (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.name", false]], "name (mpi4py.mpi.win attribute)": [[375, "mpi4py.MPI.Win.name", false]], "nbytes (mpi4py.mpi.buffer attribute)": [[378, "mpi4py.MPI.buffer.nbytes", false]], "ndim (mpi4py.mpi.cartcomm attribute)": [[86, "mpi4py.MPI.Cartcomm.ndim", false]], "nedges (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.nedges", false]], "neighbor_allgather() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_allgather", false], [342, "mpi4py.MPI.Topocomm.neighbor_allgather", false]], "neighbor_allgather_init() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_allgather_init", false]], "neighbor_allgatherv() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_allgatherv", false]], "neighbor_allgatherv_init() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_allgatherv_init", false]], "neighbor_alltoall() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_alltoall", false], [342, "mpi4py.MPI.Topocomm.neighbor_alltoall", false]], "neighbor_alltoall_init() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_alltoall_init", false]], "neighbor_alltoallv() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_alltoallv", false]], "neighbor_alltoallv_init() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_alltoallv_init", false]], "neighbor_alltoallw() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_alltoallw", false]], "neighbor_alltoallw_init() (mpi4py.mpi.topocomm method)": [[342, "mpi4py.MPI.Topocomm.Neighbor_alltoallw_init", false]], "neighbors (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.neighbors", false]], "next() (mpi4py.util.sync.counter method)": [[18, "mpi4py.util.sync.Counter.next", false]], "nneighbors (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.nneighbors", false]], "nnodes (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.nnodes", false]], "no_op (in module mpi4py.mpi)": [[283, "mpi4py.MPI.NO_OP", false]], "notify() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.notify", false]], "notify_all() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.notify_all", false]], "num_workers (mpi4py.futures.mpipoolexecutor attribute)": [[11, "mpi4py.futures.MPIPoolExecutor.num_workers", false]], "obj (mpi4py.mpi.buffer attribute)": [[378, "mpi4py.MPI.buffer.obj", false]], "offset (in module mpi4py.mpi)": [[284, "mpi4py.MPI.OFFSET", false]], "offset (in module mpi4py.typing)": [[13, "mpi4py.typing.Offset", false]], "op (class in mpi4py.mpi)": [[289, "mpi4py.MPI.Op", false]], "op_null (in module mpi4py.mpi)": [[285, "mpi4py.MPI.OP_NULL", false]], "open() (mpi4py.mpi.file class method)": [[190, "mpi4py.MPI.File.Open", false]], "open_port() (in module mpi4py.mpi)": [[290, "mpi4py.MPI.Open_port", false]], "order_c (in module mpi4py.mpi)": [[286, "mpi4py.MPI.ORDER_C", false]], "order_f (in module mpi4py.mpi)": [[287, "mpi4py.MPI.ORDER_F", false]], "order_fortran (in module mpi4py.mpi)": [[288, "mpi4py.MPI.ORDER_FORTRAN", false]], "outdegree (mpi4py.mpi.topocomm attribute)": [[342, "mpi4py.MPI.Topocomm.outdegree", false]], "outedges (mpi4py.mpi.topocomm attribute)": [[342, "mpi4py.MPI.Topocomm.outedges", false]], "pack() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Pack", false]], "pack_external() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Pack_external", false]], "pack_external_size() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Pack_external_size", false]], "pack_size() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Pack_size", false]], "packed (in module mpi4py.mpi)": [[291, "mpi4py.MPI.PACKED", false]], "parrived() (mpi4py.mpi.prequest method)": [[296, "mpi4py.MPI.Prequest.Parrived", false]], "path": [[2, "index-3", false], [5, "index-2", false]], "pcontrol() (in module mpi4py.mpi)": [[294, "mpi4py.MPI.Pcontrol", false]], "pep 574": [[16, "index-0", false]], "periods (mpi4py.mpi.cartcomm attribute)": [[86, "mpi4py.MPI.Cartcomm.periods", false]], "pickle (class in mpi4py.mpi)": [[295, "mpi4py.MPI.Pickle", false]], "pickle (in module mpi4py.mpi)": [[381, "mpi4py.MPI.pickle", false]], "pool (class in mpi4py.util.pool)": [[17, "mpi4py.util.pool.Pool", false]], "pop() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.pop", false]], "popitem() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.popitem", false]], "post() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Post", false]], "pready() (mpi4py.mpi.prequest method)": [[296, "mpi4py.MPI.Prequest.Pready", false]], "pready_list() (mpi4py.mpi.prequest method)": [[296, "mpi4py.MPI.Prequest.Pready_list", false]], "pready_range() (mpi4py.mpi.prequest method)": [[296, "mpi4py.MPI.Prequest.Pready_range", false]], "preallocate() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Preallocate", false]], "precv_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Precv_init", false]], "prequest (class in mpi4py.mpi)": [[296, "mpi4py.MPI.Prequest", false]], "probe() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Probe", false], [88, "mpi4py.MPI.Comm.probe", false]], "probe() (mpi4py.mpi.message class method)": [[282, "mpi4py.MPI.Message.Probe", false], [282, "mpi4py.MPI.Message.probe", false]], "probe() (mpi4py.util.pkl5.message class method)": [[16, "mpi4py.util.pkl5.Message.probe", false]], "proc_null (in module mpi4py.mpi)": [[292, "mpi4py.MPI.PROC_NULL", false]], "prod (in module mpi4py.mpi)": [[293, "mpi4py.MPI.PROD", false]], "profile() (in module mpi4py)": [[8, "mpi4py.profile", false]], "protocol (mpi4py.mpi.pickle attribute)": [[295, "mpi4py.MPI.Pickle.PROTOCOL", false]], "psend_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Psend_init", false]], "publish_name() (in module mpi4py.mpi)": [[297, "mpi4py.MPI.Publish_name", false]], "put() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Put", false]], "py2f() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.py2f", false]], "py2f() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.py2f", false]], "py2f() (mpi4py.mpi.errhandler method)": [[174, "mpi4py.MPI.Errhandler.py2f", false]], "py2f() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.py2f", false]], "py2f() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.py2f", false]], "py2f() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.py2f", false]], "py2f() (mpi4py.mpi.message method)": [[282, "mpi4py.MPI.Message.py2f", false]], "py2f() (mpi4py.mpi.op method)": [[289, "mpi4py.MPI.Op.py2f", false]], "py2f() (mpi4py.mpi.request method)": [[311, "mpi4py.MPI.Request.py2f", false]], "py2f() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.py2f", false]], "py2f() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.py2f", false]], "py2f() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.py2f", false]], "python enhancement proposals": [[16, "index-0", false]], "query_thread() (in module mpi4py.mpi)": [[298, "mpi4py.MPI.Query_thread", false]], "raccumulate() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Raccumulate", false]], "range_excl() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Range_excl", false]], "range_incl() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Range_incl", false]], "rank (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.rank", false]], "rank (mpi4py.mpi.group attribute)": [[206, "mpi4py.MPI.Group.rank", false]], "read() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read", false]], "read_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_all", false]], "read_all_begin() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_all_begin", false]], "read_all_end() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_all_end", false]], "read_at() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_at", false]], "read_at_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_at_all", false]], "read_at_all_begin() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_at_all_begin", false]], "read_at_all_end() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_at_all_end", false]], "read_ordered() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_ordered", false]], "read_ordered_begin() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_ordered_begin", false]], "read_ordered_end() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_ordered_end", false]], "read_shared() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Read_shared", false]], "readonly (mpi4py.mpi.buffer attribute)": [[378, "mpi4py.MPI.buffer.readonly", false]], "ready() (mpi4py.util.pool.asyncresult method)": [[17, "mpi4py.util.pool.AsyncResult.ready", false]], "real (in module mpi4py.mpi)": [[299, "mpi4py.MPI.REAL", false]], "real16 (in module mpi4py.mpi)": [[300, "mpi4py.MPI.REAL16", false]], "real2 (in module mpi4py.mpi)": [[301, "mpi4py.MPI.REAL2", false]], "real4 (in module mpi4py.mpi)": [[302, "mpi4py.MPI.REAL4", false]], "real8 (in module mpi4py.mpi)": [[303, "mpi4py.MPI.REAL8", false]], "recv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Recv", false], [88, "mpi4py.MPI.Comm.recv", false]], "recv() (mpi4py.mpi.message method)": [[282, "mpi4py.MPI.Message.Recv", false], [282, "mpi4py.MPI.Message.recv", false]], "recv() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.recv", false]], "recv() (mpi4py.util.pkl5.message method)": [[16, "mpi4py.util.pkl5.Message.recv", false]], "recv_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Recv_init", false]], "recv_mprobe (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.recv_mprobe", false]], "reduce() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Reduce", false], [88, "mpi4py.MPI.Comm.reduce", false]], "reduce_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Reduce_init", false]], "reduce_local() (mpi4py.mpi.op method)": [[289, "mpi4py.MPI.Op.Reduce_local", false]], "reduce_scatter() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Reduce_scatter", false]], "reduce_scatter_block() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Reduce_scatter_block", false]], "reduce_scatter_block_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Reduce_scatter_block_init", false]], "reduce_scatter_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Reduce_scatter_init", false]], "register_datarep() (in module mpi4py.mpi)": [[307, "mpi4py.MPI.Register_datarep", false]], "release() (mpi4py.mpi.buffer method)": [[378, "mpi4py.MPI.buffer.release", false]], "release() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.release", false]], "release() (mpi4py.util.sync.mutex method)": [[18, "mpi4py.util.sync.Mutex.release", false]], "release() (mpi4py.util.sync.semaphore method)": [[18, "mpi4py.util.sync.Semaphore.release", false]], "remote_group (mpi4py.mpi.intercomm attribute)": [[229, "mpi4py.MPI.Intercomm.remote_group", false]], "remote_size (mpi4py.mpi.intercomm attribute)": [[229, "mpi4py.MPI.Intercomm.remote_size", false]], "remove_error_class() (in module mpi4py.mpi)": [[308, "mpi4py.MPI.Remove_error_class", false]], "remove_error_code() (in module mpi4py.mpi)": [[309, "mpi4py.MPI.Remove_error_code", false]], "remove_error_string() (in module mpi4py.mpi)": [[310, "mpi4py.MPI.Remove_error_string", false]], "replace (in module mpi4py.mpi)": [[304, "mpi4py.MPI.REPLACE", false]], "request (class in mpi4py.mpi)": [[311, "mpi4py.MPI.Request", false]], "request (class in mpi4py.util.pkl5)": [[16, "mpi4py.util.pkl5.Request", false]], "request_null (in module mpi4py.mpi)": [[305, "mpi4py.MPI.REQUEST_NULL", false]], "revoke() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Revoke", false]], "rget() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Rget", false]], "rget_accumulate() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Rget_accumulate", false]], "root (in module mpi4py.mpi)": [[306, "mpi4py.MPI.ROOT", false]], "rput() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Rput", false]], "rsend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Rsend", false]], "rsend_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Rsend_init", false]], "s (in module mpi4py.typing)": [[13, "mpi4py.typing.S", false]], "scan() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Scan", false], [230, "mpi4py.MPI.Intracomm.scan", false]], "scan_init() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Scan_init", false]], "scatter() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Scatter", false], [88, "mpi4py.MPI.Comm.scatter", false]], "scatter() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.scatter", false]], "scatter_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Scatter_init", false]], "scatterv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Scatterv", false]], "scatterv_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Scatterv_init", false]], "seek() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Seek", false]], "seek_cur (in module mpi4py.mpi)": [[312, "mpi4py.MPI.SEEK_CUR", false]], "seek_end (in module mpi4py.mpi)": [[313, "mpi4py.MPI.SEEK_END", false]], "seek_set (in module mpi4py.mpi)": [[314, "mpi4py.MPI.SEEK_SET", false]], "seek_shared() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Seek_shared", false]], "semaphore (class in mpi4py.util.sync)": [[18, "mpi4py.util.sync.Semaphore", false]], "send() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Send", false], [88, "mpi4py.MPI.Comm.send", false]], "send() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.send", false]], "send_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Send_init", false]], "sendrecv() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Sendrecv", false], [88, "mpi4py.MPI.Comm.sendrecv", false]], "sendrecv() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.sendrecv", false]], "sendrecv_replace() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Sendrecv_replace", false]], "sequential (class in mpi4py.util.sync)": [[18, "mpi4py.util.sync.Sequential", false]], "session (class in mpi4py.mpi)": [[331, "mpi4py.MPI.Session", false]], "session_null (in module mpi4py.mpi)": [[315, "mpi4py.MPI.SESSION_NULL", false]], "set() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.Set", false]], "set_atomicity() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Set_atomicity", false]], "set_attr() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Set_attr", false]], "set_attr() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Set_attr", false]], "set_attr() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Set_attr", false]], "set_cancelled() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Set_cancelled", false]], "set_elements() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Set_elements", false]], "set_errhandler() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Set_errhandler", false]], "set_errhandler() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Set_errhandler", false]], "set_errhandler() (mpi4py.mpi.session method)": [[331, "mpi4py.MPI.Session.Set_errhandler", false]], "set_errhandler() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Set_errhandler", false]], "set_error() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Set_error", false]], "set_info() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Set_info", false]], "set_info() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Set_info", false]], "set_info() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Set_info", false]], "set_name() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Set_name", false]], "set_name() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Set_name", false]], "set_name() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Set_name", false]], "set_size() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Set_size", false]], "set_source() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Set_source", false]], "set_tag() (mpi4py.mpi.status method)": [[332, "mpi4py.MPI.Status.Set_tag", false]], "set_view() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Set_view", false]], "shared_query() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Shared_query", false]], "shift() (mpi4py.mpi.cartcomm method)": [[86, "mpi4py.MPI.Cartcomm.Shift", false]], "short (in module mpi4py.mpi)": [[316, "mpi4py.MPI.SHORT", false]], "short_int (in module mpi4py.mpi)": [[317, "mpi4py.MPI.SHORT_INT", false]], "shrink() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Shrink", false]], "shutdown() (mpi4py.futures.mpipoolexecutor method)": [[11, "mpi4py.futures.MPIPoolExecutor.shutdown", false]], "signed_char (in module mpi4py.mpi)": [[318, "mpi4py.MPI.SIGNED_CHAR", false]], "signed_int (in module mpi4py.mpi)": [[319, "mpi4py.MPI.SIGNED_INT", false]], "signed_long (in module mpi4py.mpi)": [[320, "mpi4py.MPI.SIGNED_LONG", false]], "signed_long_long (in module mpi4py.mpi)": [[321, "mpi4py.MPI.SIGNED_LONG_LONG", false]], "signed_short (in module mpi4py.mpi)": [[322, "mpi4py.MPI.SIGNED_SHORT", false]], "similar (in module mpi4py.mpi)": [[323, "mpi4py.MPI.SIMILAR", false]], "sint16_t (in module mpi4py.mpi)": [[324, "mpi4py.MPI.SINT16_T", false]], "sint32_t (in module mpi4py.mpi)": [[325, "mpi4py.MPI.SINT32_T", false]], "sint64_t (in module mpi4py.mpi)": [[326, "mpi4py.MPI.SINT64_T", false]], "sint8_t (in module mpi4py.mpi)": [[327, "mpi4py.MPI.SINT8_T", false]], "size (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.size", false]], "size (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.size", false]], "size (mpi4py.mpi.file attribute)": [[190, "mpi4py.MPI.File.size", false]], "size (mpi4py.mpi.group attribute)": [[206, "mpi4py.MPI.Group.size", false]], "source (mpi4py.mpi.status attribute)": [[332, "mpi4py.MPI.Status.source", false]], "spawn() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Spawn", false]], "spawn_multiple() (mpi4py.mpi.intracomm method)": [[230, "mpi4py.MPI.Intracomm.Spawn_multiple", false]], "split() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Split", false]], "split_type() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Split_type", false]], "ssend() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ssend", false], [88, "mpi4py.MPI.Comm.ssend", false]], "ssend() (mpi4py.util.pkl5.comm method)": [[16, "mpi4py.util.pkl5.Comm.ssend", false]], "ssend_init() (mpi4py.mpi.comm method)": [[88, "mpi4py.MPI.Comm.Ssend_init", false]], "starmap() (mpi4py.futures.mpipoolexecutor method)": [[11, "mpi4py.futures.MPIPoolExecutor.starmap", false]], "starmap() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.starmap", false]], "starmap_async() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.starmap_async", false]], "start() (mpi4py.mpi.grequest class method)": [[205, "mpi4py.MPI.Grequest.Start", false]], "start() (mpi4py.mpi.prequest method)": [[296, "mpi4py.MPI.Prequest.Start", false]], "start() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Start", false]], "startall() (mpi4py.mpi.prequest class method)": [[296, "mpi4py.MPI.Prequest.Startall", false]], "status (class in mpi4py.mpi)": [[332, "mpi4py.MPI.Status", false]], "sub() (mpi4py.mpi.cartcomm method)": [[86, "mpi4py.MPI.Cartcomm.Sub", false]], "submit() (mpi4py.futures.mpipoolexecutor method)": [[11, "mpi4py.futures.MPIPoolExecutor.submit", false]], "subversion (in module mpi4py.mpi)": [[328, "mpi4py.MPI.SUBVERSION", false]], "success (in module mpi4py.mpi)": [[329, "mpi4py.MPI.SUCCESS", false]], "successful() (mpi4py.util.pool.asyncresult method)": [[17, "mpi4py.util.pool.AsyncResult.successful", false]], "sum (in module mpi4py.mpi)": [[330, "mpi4py.MPI.SUM", false]], "supportsbuffer (in module mpi4py.typing)": [[13, "mpi4py.typing.SupportsBuffer", false]], "supportscai (in module mpi4py.typing)": [[13, "mpi4py.typing.SupportsCAI", false]], "supportsdlpack (in module mpi4py.typing)": [[13, "mpi4py.typing.SupportsDLPack", false]], "sync() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Sync", false]], "sync() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Sync", false]], "t (in module mpi4py.typing)": [[13, "mpi4py.typing.T", false]], "tag (mpi4py.mpi.status attribute)": [[332, "mpi4py.MPI.Status.tag", false]], "tag_ub (in module mpi4py.mpi)": [[333, "mpi4py.MPI.TAG_UB", false]], "targetspec (in module mpi4py.typing)": [[13, "mpi4py.typing.TargetSpec", false]], "terminate() (mpi4py.util.pool.pool method)": [[17, "mpi4py.util.pool.Pool.terminate", false]], "test() (mpi4py.mpi.request method)": [[311, "mpi4py.MPI.Request.Test", false], [311, "mpi4py.MPI.Request.test", false]], "test() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Test", false]], "test() (mpi4py.util.pkl5.request method)": [[16, "mpi4py.util.pkl5.Request.test", false]], "testall() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Testall", false], [311, "mpi4py.MPI.Request.testall", false]], "testall() (mpi4py.util.pkl5.request class method)": [[16, "mpi4py.util.pkl5.Request.testall", false]], "testany() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Testany", false], [311, "mpi4py.MPI.Request.testany", false]], "testsome() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Testsome", false], [311, "mpi4py.MPI.Request.testsome", false]], "thread_funneled (in module mpi4py.mpi)": [[334, "mpi4py.MPI.THREAD_FUNNELED", false]], "thread_level (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.thread_level", false]], "thread_multiple (in module mpi4py.mpi)": [[335, "mpi4py.MPI.THREAD_MULTIPLE", false]], "thread_serialized (in module mpi4py.mpi)": [[336, "mpi4py.MPI.THREAD_SERIALIZED", false]], "thread_single (in module mpi4py.mpi)": [[337, "mpi4py.MPI.THREAD_SINGLE", false]], "threadpool (class in mpi4py.util.pool)": [[17, "mpi4py.util.pool.ThreadPool", false]], "threads (mpi4py.mpi4py.rc attribute)": [[8, "mpi4py.mpi4py.rc.threads", false]], "threshold (mpi4py.mpi.pickle attribute)": [[295, "mpi4py.MPI.Pickle.THRESHOLD", false]], "to_numpy_dtype() (in module mpi4py.util.dtlib)": [[15, "mpi4py.util.dtlib.to_numpy_dtype", false]], "tobytes() (mpi4py.mpi.buffer method)": [[378, "mpi4py.MPI.buffer.tobytes", false]], "tocode() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.tocode", false]], "tomemory() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.tomemory", false]], "topo (mpi4py.mpi.cartcomm attribute)": [[86, "mpi4py.MPI.Cartcomm.topo", false]], "topo (mpi4py.mpi.graphcomm attribute)": [[204, "mpi4py.MPI.Graphcomm.topo", false]], "topocomm (class in mpi4py.mpi)": [[342, "mpi4py.MPI.Topocomm", false]], "topology (mpi4py.mpi.comm attribute)": [[88, "mpi4py.MPI.Comm.topology", false]], "toreadonly() (mpi4py.mpi.buffer method)": [[378, "mpi4py.MPI.buffer.toreadonly", false]], "translate_ranks() (mpi4py.mpi.group method)": [[206, "mpi4py.MPI.Group.Translate_ranks", false]], "true_extent (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.true_extent", false]], "true_lb (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.true_lb", false]], "true_ub (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.true_ub", false]], "twoint (in module mpi4py.mpi)": [[338, "mpi4py.MPI.TWOINT", false]], "typechar (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.typechar", false]], "typeclass_complex (in module mpi4py.mpi)": [[339, "mpi4py.MPI.TYPECLASS_COMPLEX", false]], "typeclass_integer (in module mpi4py.mpi)": [[340, "mpi4py.MPI.TYPECLASS_INTEGER", false]], "typeclass_real (in module mpi4py.mpi)": [[341, "mpi4py.MPI.TYPECLASS_REAL", false]], "typespec (in module mpi4py.typing)": [[13, "mpi4py.typing.TypeSpec", false]], "typestr (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.typestr", false]], "u (in module mpi4py.typing)": [[13, "mpi4py.typing.U", false]], "ub (mpi4py.mpi.datatype attribute)": [[102, "mpi4py.MPI.Datatype.ub", false]], "uint16_t (in module mpi4py.mpi)": [[343, "mpi4py.MPI.UINT16_T", false]], "uint32_t (in module mpi4py.mpi)": [[344, "mpi4py.MPI.UINT32_T", false]], "uint64_t (in module mpi4py.mpi)": [[345, "mpi4py.MPI.UINT64_T", false]], "uint8_t (in module mpi4py.mpi)": [[346, "mpi4py.MPI.UINT8_T", false]], "undefined (in module mpi4py.mpi)": [[347, "mpi4py.MPI.UNDEFINED", false]], "unequal (in module mpi4py.mpi)": [[348, "mpi4py.MPI.UNEQUAL", false]], "union() (mpi4py.mpi.group class method)": [[206, "mpi4py.MPI.Group.Union", false]], "universe_size (in module mpi4py.mpi)": [[349, "mpi4py.MPI.UNIVERSE_SIZE", false]], "unlock() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Unlock", false]], "unlock_all() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Unlock_all", false]], "unpack() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Unpack", false]], "unpack_external() (mpi4py.mpi.datatype method)": [[102, "mpi4py.MPI.Datatype.Unpack_external", false]], "unpublish_name() (in module mpi4py.mpi)": [[357, "mpi4py.MPI.Unpublish_name", false]], "unsigned (in module mpi4py.mpi)": [[350, "mpi4py.MPI.UNSIGNED", false]], "unsigned_char (in module mpi4py.mpi)": [[351, "mpi4py.MPI.UNSIGNED_CHAR", false]], "unsigned_int (in module mpi4py.mpi)": [[352, "mpi4py.MPI.UNSIGNED_INT", false]], "unsigned_long (in module mpi4py.mpi)": [[353, "mpi4py.MPI.UNSIGNED_LONG", false]], "unsigned_long_long (in module mpi4py.mpi)": [[354, "mpi4py.MPI.UNSIGNED_LONG_LONG", false]], "unsigned_short (in module mpi4py.mpi)": [[355, "mpi4py.MPI.UNSIGNED_SHORT", false]], "unweighted (in module mpi4py.mpi)": [[356, "mpi4py.MPI.UNWEIGHTED", false]], "update() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.update", false]], "v (in module mpi4py.typing)": [[13, "mpi4py.typing.V", false]], "values() (mpi4py.mpi.info method)": [[226, "mpi4py.MPI.Info.values", false]], "version (in module mpi4py.mpi)": [[358, "mpi4py.MPI.VERSION", false]], "wait() (mpi4py.mpi.request method)": [[311, "mpi4py.MPI.Request.Wait", false], [311, "mpi4py.MPI.Request.wait", false]], "wait() (mpi4py.mpi.win method)": [[375, "mpi4py.MPI.Win.Wait", false]], "wait() (mpi4py.util.pkl5.request method)": [[16, "mpi4py.util.pkl5.Request.wait", false]], "wait() (mpi4py.util.pool.asyncresult method)": [[17, "mpi4py.util.pool.AsyncResult.wait", false]], "wait() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.wait", false]], "wait_for() (mpi4py.util.sync.condition method)": [[18, "mpi4py.util.sync.Condition.wait_for", false]], "waitall() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Waitall", false], [311, "mpi4py.MPI.Request.waitall", false]], "waitall() (mpi4py.util.pkl5.request class method)": [[16, "mpi4py.util.pkl5.Request.waitall", false]], "waitany() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Waitany", false], [311, "mpi4py.MPI.Request.waitany", false]], "waitsome() (mpi4py.mpi.request class method)": [[311, "mpi4py.MPI.Request.Waitsome", false], [311, "mpi4py.MPI.Request.waitsome", false]], "wchar (in module mpi4py.mpi)": [[359, "mpi4py.MPI.WCHAR", false]], "weights_empty (in module mpi4py.mpi)": [[360, "mpi4py.MPI.WEIGHTS_EMPTY", false]], "win (class in mpi4py.mpi)": [[375, "mpi4py.MPI.Win", false]], "win_base (in module mpi4py.mpi)": [[361, "mpi4py.MPI.WIN_BASE", false]], "win_create_flavor (in module mpi4py.mpi)": [[362, "mpi4py.MPI.WIN_CREATE_FLAVOR", false]], "win_disp_unit (in module mpi4py.mpi)": [[363, "mpi4py.MPI.WIN_DISP_UNIT", false]], "win_flavor (in module mpi4py.mpi)": [[364, "mpi4py.MPI.WIN_FLAVOR", false]], "win_flavor_allocate (in module mpi4py.mpi)": [[365, "mpi4py.MPI.WIN_FLAVOR_ALLOCATE", false]], "win_flavor_create (in module mpi4py.mpi)": [[366, "mpi4py.MPI.WIN_FLAVOR_CREATE", false]], "win_flavor_dynamic (in module mpi4py.mpi)": [[367, "mpi4py.MPI.WIN_FLAVOR_DYNAMIC", false]], "win_flavor_shared (in module mpi4py.mpi)": [[368, "mpi4py.MPI.WIN_FLAVOR_SHARED", false]], "win_model (in module mpi4py.mpi)": [[369, "mpi4py.MPI.WIN_MODEL", false]], "win_null (in module mpi4py.mpi)": [[370, "mpi4py.MPI.WIN_NULL", false]], "win_separate (in module mpi4py.mpi)": [[371, "mpi4py.MPI.WIN_SEPARATE", false]], "win_size (in module mpi4py.mpi)": [[372, "mpi4py.MPI.WIN_SIZE", false]], "win_unified (in module mpi4py.mpi)": [[373, "mpi4py.MPI.WIN_UNIFIED", false]], "write() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write", false]], "write_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_all", false]], "write_all_begin() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_all_begin", false]], "write_all_end() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_all_end", false]], "write_at() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_at", false]], "write_at_all() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_at_all", false]], "write_at_all_begin() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_at_all_begin", false]], "write_at_all_end() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_at_all_end", false]], "write_ordered() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_ordered", false]], "write_ordered_begin() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_ordered_begin", false]], "write_ordered_end() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_ordered_end", false]], "write_shared() (mpi4py.mpi.file method)": [[190, "mpi4py.MPI.File.Write_shared", false]], "wtick() (in module mpi4py.mpi)": [[376, "mpi4py.MPI.Wtick", false]], "wtime() (in module mpi4py.mpi)": [[377, "mpi4py.MPI.Wtime", false]], "wtime_is_global (in module mpi4py.mpi)": [[374, "mpi4py.MPI.WTIME_IS_GLOBAL", false]]}, "objects": {"": [[8, 0, 0, "-", "mpi4py"], [2, 7, 1, "cmdoption-configure", "--configure"], [2, 7, 1, "cmdoption-mpi", "--mpi"], [2, 7, 1, "cmdoption-mpicc", "--mpicc"], [2, 7, 1, "cmdoption-mpild", "--mpild"], [12, 7, 1, "cmdoption-c", "-c"], [12, 7, 1, "cmdoption-m", "-m"], [5, 8, 1, "-", "MPI4PY_BUILD_BACKEND"], [5, 8, 1, "-", "MPI4PY_BUILD_CONFIGURE"], [5, 8, 1, "-", "MPI4PY_BUILD_MPICC"], [5, 8, 1, "-", "MPI4PY_BUILD_MPICFG"], [5, 8, 1, "-", "MPI4PY_BUILD_MPILD"], [11, 8, 1, "-", "MPI4PY_FUTURES_BACKOFF"], [11, 8, 1, "-", "MPI4PY_FUTURES_MAX_WORKERS"], [11, 8, 1, "-", "MPI4PY_FUTURES_USE_PKL5"], [8, 8, 1, "-", "MPI4PY_PICKLE_PROTOCOL"], [8, 8, 1, "-", "MPI4PY_PICKLE_THRESHOLD"], [8, 8, 1, "-", "MPI4PY_RC_ERRORS"], [8, 8, 1, "-", "MPI4PY_RC_FAST_REDUCE"], [8, 8, 1, "-", "MPI4PY_RC_FINALIZE"], [8, 8, 1, "-", "MPI4PY_RC_INITIALIZE"], [8, 8, 1, "-", "MPI4PY_RC_IRECV_BUFSZ"], [8, 8, 1, "-", "MPI4PY_RC_RECV_MPROBE"], [8, 8, 1, "-", "MPI4PY_RC_THREADS"], [8, 8, 1, "-", "MPI4PY_RC_THREAD_LEVEL"], [5, 8, 1, "-", "MPICC"], [5, 8, 1, "-", "MPICFG"], [5, 8, 1, "-", "MPILD"]], "mpi4py": [[21, 0, 0, "-", "MPI"], [10, 0, 0, "-", "bench"], [11, 0, 0, "-", "futures"], [8, 2, 1, "", "get_config"], [8, 2, 1, "", "get_include"], [8, 2, 1, "", "profile"], [12, 0, 0, "-", "run"], [13, 0, 0, "-", "typing"], [14, 0, 0, "-", "util"]], "mpi4py.MPI": [[22, 1, 1, "", "AINT"], [23, 1, 1, "", "ANY_SOURCE"], [24, 1, 1, "", "ANY_TAG"], [25, 1, 1, "", "APPNUM"], [26, 2, 1, "", "Add_error_class"], [27, 2, 1, "", "Add_error_code"], [28, 2, 1, "", "Add_error_string"], [29, 2, 1, "", "Aint_add"], [30, 2, 1, "", "Aint_diff"], [31, 2, 1, "", "Alloc_mem"], [32, 2, 1, "", "Attach_buffer"], [33, 1, 1, "", "BAND"], [34, 1, 1, "", "BOOL"], [35, 1, 1, "", "BOR"], [36, 1, 1, "", "BOTTOM"], [37, 1, 1, "", "BSEND_OVERHEAD"], [38, 1, 1, "", "BUFFER_AUTOMATIC"], [39, 1, 1, "", "BXOR"], [40, 1, 1, "", "BYTE"], [41, 3, 1, "", "BottomType"], [42, 3, 1, "", "BufferAutomaticType"], [43, 1, 1, "", "CART"], [44, 1, 1, "", "CHAR"], [45, 1, 1, "", "CHARACTER"], [46, 1, 1, "", "COMBINER_CONTIGUOUS"], [47, 1, 1, "", "COMBINER_DARRAY"], [48, 1, 1, "", "COMBINER_DUP"], [49, 1, 1, "", "COMBINER_F90_COMPLEX"], [50, 1, 1, "", "COMBINER_F90_INTEGER"], [51, 1, 1, "", "COMBINER_F90_REAL"], [52, 1, 1, "", "COMBINER_HINDEXED"], [53, 1, 1, "", "COMBINER_HINDEXED_BLOCK"], [54, 1, 1, "", "COMBINER_HVECTOR"], [55, 1, 1, "", "COMBINER_INDEXED"], [56, 1, 1, "", "COMBINER_INDEXED_BLOCK"], [57, 1, 1, "", "COMBINER_NAMED"], [58, 1, 1, "", "COMBINER_RESIZED"], [59, 1, 1, "", "COMBINER_STRUCT"], [60, 1, 1, "", "COMBINER_SUBARRAY"], [61, 1, 1, "", "COMBINER_VALUE_INDEX"], [62, 1, 1, "", "COMBINER_VECTOR"], [63, 1, 1, "", "COMM_NULL"], [64, 1, 1, "", "COMM_SELF"], [65, 1, 1, "", "COMM_TYPE_HW_GUIDED"], [66, 1, 1, "", "COMM_TYPE_HW_UNGUIDED"], [67, 1, 1, "", "COMM_TYPE_RESOURCE_GUIDED"], [68, 1, 1, "", "COMM_TYPE_SHARED"], [69, 1, 1, "", "COMM_WORLD"], [70, 1, 1, "", "COMPLEX"], [71, 1, 1, "", "COMPLEX16"], [72, 1, 1, "", "COMPLEX32"], [73, 1, 1, "", "COMPLEX4"], [74, 1, 1, "", "COMPLEX8"], [75, 1, 1, "", "CONGRUENT"], [76, 1, 1, "", "COUNT"], [77, 1, 1, "", "CXX_BOOL"], [78, 1, 1, "", "CXX_DOUBLE_COMPLEX"], [79, 1, 1, "", "CXX_FLOAT_COMPLEX"], [80, 1, 1, "", "CXX_LONG_DOUBLE_COMPLEX"], [81, 1, 1, "", "C_BOOL"], [82, 1, 1, "", "C_COMPLEX"], [83, 1, 1, "", "C_DOUBLE_COMPLEX"], [84, 1, 1, "", "C_FLOAT_COMPLEX"], [85, 1, 1, "", "C_LONG_DOUBLE_COMPLEX"], [86, 3, 1, "", "Cartcomm"], [87, 2, 1, "", "Close_port"], [88, 3, 1, "", "Comm"], [89, 2, 1, "", "Compute_dims"], [90, 1, 1, "", "DATATYPE_NULL"], [91, 1, 1, "", "DISPLACEMENT_CURRENT"], [92, 1, 1, "", "DISP_CUR"], [93, 1, 1, "", "DISTRIBUTE_BLOCK"], [94, 1, 1, "", "DISTRIBUTE_CYCLIC"], [95, 1, 1, "", "DISTRIBUTE_DFLT_DARG"], [96, 1, 1, "", "DISTRIBUTE_NONE"], [97, 1, 1, "", "DIST_GRAPH"], [98, 1, 1, "", "DOUBLE"], [99, 1, 1, "", "DOUBLE_COMPLEX"], [100, 1, 1, "", "DOUBLE_INT"], [101, 1, 1, "", "DOUBLE_PRECISION"], [102, 3, 1, "", "Datatype"], [103, 2, 1, "", "Detach_buffer"], [104, 3, 1, "", "Distgraphcomm"], [105, 1, 1, "", "ERRHANDLER_NULL"], [106, 1, 1, "", "ERRORS_ABORT"], [107, 1, 1, "", "ERRORS_ARE_FATAL"], [108, 1, 1, "", "ERRORS_RETURN"], [109, 1, 1, "", "ERR_ACCESS"], [110, 1, 1, "", "ERR_AMODE"], [111, 1, 1, "", "ERR_ARG"], [112, 1, 1, "", "ERR_ASSERT"], [113, 1, 1, "", "ERR_BAD_FILE"], [114, 1, 1, "", "ERR_BASE"], [115, 1, 1, "", "ERR_BUFFER"], [116, 1, 1, "", "ERR_COMM"], [117, 1, 1, "", "ERR_CONVERSION"], [118, 1, 1, "", "ERR_COUNT"], [119, 1, 1, "", "ERR_DIMS"], [120, 1, 1, "", "ERR_DISP"], [121, 1, 1, "", "ERR_DUP_DATAREP"], [122, 1, 1, "", "ERR_ERRHANDLER"], [123, 1, 1, "", "ERR_FILE"], [124, 1, 1, "", "ERR_FILE_EXISTS"], [125, 1, 1, "", "ERR_FILE_IN_USE"], [126, 1, 1, "", "ERR_GROUP"], [127, 1, 1, "", "ERR_INFO"], [128, 1, 1, "", "ERR_INFO_KEY"], [129, 1, 1, "", "ERR_INFO_NOKEY"], [130, 1, 1, "", "ERR_INFO_VALUE"], [131, 1, 1, "", "ERR_INTERN"], [132, 1, 1, "", "ERR_IN_STATUS"], [133, 1, 1, "", "ERR_IO"], [134, 1, 1, "", "ERR_KEYVAL"], [135, 1, 1, "", "ERR_LASTCODE"], [136, 1, 1, "", "ERR_LOCKTYPE"], [137, 1, 1, "", "ERR_NAME"], [138, 1, 1, "", "ERR_NOT_SAME"], [139, 1, 1, "", "ERR_NO_MEM"], [140, 1, 1, "", "ERR_NO_SPACE"], [141, 1, 1, "", "ERR_NO_SUCH_FILE"], [142, 1, 1, "", "ERR_OP"], [143, 1, 1, "", "ERR_OTHER"], [144, 1, 1, "", "ERR_PENDING"], [145, 1, 1, "", "ERR_PORT"], [146, 1, 1, "", "ERR_PROC_ABORTED"], [147, 1, 1, "", "ERR_PROC_FAILED"], [148, 1, 1, "", "ERR_PROC_FAILED_PENDING"], [149, 1, 1, "", "ERR_QUOTA"], [150, 1, 1, "", "ERR_RANK"], [151, 1, 1, "", "ERR_READ_ONLY"], [152, 1, 1, "", "ERR_REQUEST"], [153, 1, 1, "", "ERR_REVOKED"], [154, 1, 1, "", "ERR_RMA_ATTACH"], [155, 1, 1, "", "ERR_RMA_CONFLICT"], [156, 1, 1, "", "ERR_RMA_FLAVOR"], [157, 1, 1, "", "ERR_RMA_RANGE"], [158, 1, 1, "", "ERR_RMA_SHARED"], [159, 1, 1, "", "ERR_RMA_SYNC"], [160, 1, 1, "", "ERR_ROOT"], [161, 1, 1, "", "ERR_SERVICE"], [162, 1, 1, "", "ERR_SESSION"], [163, 1, 1, "", "ERR_SIZE"], [164, 1, 1, "", "ERR_SPAWN"], [165, 1, 1, "", "ERR_TAG"], [166, 1, 1, "", "ERR_TOPOLOGY"], [167, 1, 1, "", "ERR_TRUNCATE"], [168, 1, 1, "", "ERR_TYPE"], [169, 1, 1, "", "ERR_UNKNOWN"], [170, 1, 1, "", "ERR_UNSUPPORTED_DATAREP"], [171, 1, 1, "", "ERR_UNSUPPORTED_OPERATION"], [172, 1, 1, "", "ERR_VALUE_TOO_LARGE"], [173, 1, 1, "", "ERR_WIN"], [174, 3, 1, "", "Errhandler"], [175, 6, 1, "", "Exception"], [176, 1, 1, "", "FILE_NULL"], [177, 1, 1, "", "FLOAT"], [178, 1, 1, "", "FLOAT_INT"], [179, 1, 1, "", "F_BOOL"], [180, 1, 1, "", "F_COMPLEX"], [181, 1, 1, "", "F_DOUBLE"], [182, 1, 1, "", "F_DOUBLE_COMPLEX"], [183, 1, 1, "", "F_ERROR"], [184, 1, 1, "", "F_FLOAT"], [185, 1, 1, "", "F_FLOAT_COMPLEX"], [186, 1, 1, "", "F_INT"], [187, 1, 1, "", "F_SOURCE"], [188, 1, 1, "", "F_STATUS_SIZE"], [189, 1, 1, "", "F_TAG"], [190, 3, 1, "", "File"], [191, 2, 1, "", "Finalize"], [192, 2, 1, "", "Flush_buffer"], [193, 2, 1, "", "Free_mem"], [194, 1, 1, "", "GRAPH"], [195, 1, 1, "", "GROUP_EMPTY"], [196, 1, 1, "", "GROUP_NULL"], [197, 2, 1, "", "Get_address"], [198, 2, 1, "", "Get_error_class"], [199, 2, 1, "", "Get_error_string"], [200, 2, 1, "", "Get_hw_resource_info"], [201, 2, 1, "", "Get_library_version"], [202, 2, 1, "", "Get_processor_name"], [203, 2, 1, "", "Get_version"], [204, 3, 1, "", "Graphcomm"], [205, 3, 1, "", "Grequest"], [206, 3, 1, "", "Group"], [207, 1, 1, "", "IDENT"], [208, 1, 1, "", "INFO_ENV"], [209, 1, 1, "", "INFO_NULL"], [210, 1, 1, "", "INT"], [211, 1, 1, "", "INT16_T"], [212, 1, 1, "", "INT32_T"], [213, 1, 1, "", "INT64_T"], [214, 1, 1, "", "INT8_T"], [215, 1, 1, "", "INTEGER"], [216, 1, 1, "", "INTEGER1"], [217, 1, 1, "", "INTEGER16"], [218, 1, 1, "", "INTEGER2"], [219, 1, 1, "", "INTEGER4"], [220, 1, 1, "", "INTEGER8"], [221, 1, 1, "", "INT_INT"], [222, 1, 1, "", "IN_PLACE"], [223, 1, 1, "", "IO"], [224, 2, 1, "", "Iflush_buffer"], [225, 3, 1, "", "InPlaceType"], [226, 3, 1, "", "Info"], [227, 2, 1, "", "Init"], [228, 2, 1, "", "Init_thread"], [229, 3, 1, "", "Intercomm"], [230, 3, 1, "", "Intracomm"], [231, 2, 1, "", "Is_finalized"], [232, 2, 1, "", "Is_initialized"], [233, 2, 1, "", "Is_thread_main"], [234, 1, 1, "", "KEYVAL_INVALID"], [235, 1, 1, "", "LAND"], [236, 1, 1, "", "LASTUSEDCODE"], [237, 1, 1, "", "LOCK_EXCLUSIVE"], [238, 1, 1, "", "LOCK_SHARED"], [239, 1, 1, "", "LOGICAL"], [240, 1, 1, "", "LOGICAL1"], [241, 1, 1, "", "LOGICAL2"], [242, 1, 1, "", "LOGICAL4"], [243, 1, 1, "", "LOGICAL8"], [244, 1, 1, "", "LONG"], [245, 1, 1, "", "LONG_DOUBLE"], [246, 1, 1, "", "LONG_DOUBLE_INT"], [247, 1, 1, "", "LONG_INT"], [248, 1, 1, "", "LONG_LONG"], [249, 1, 1, "", "LOR"], [250, 1, 1, "", "LXOR"], [251, 2, 1, "", "Lookup_name"], [252, 1, 1, "", "MAX"], [253, 1, 1, "", "MAXLOC"], [254, 1, 1, "", "MAX_DATAREP_STRING"], [255, 1, 1, "", "MAX_ERROR_STRING"], [256, 1, 1, "", "MAX_INFO_KEY"], [257, 1, 1, "", "MAX_INFO_VAL"], [258, 1, 1, "", "MAX_LIBRARY_VERSION_STRING"], [259, 1, 1, "", "MAX_OBJECT_NAME"], [260, 1, 1, "", "MAX_PORT_NAME"], [261, 1, 1, "", "MAX_PROCESSOR_NAME"], [262, 1, 1, "", "MAX_PSET_NAME_LEN"], [263, 1, 1, "", "MAX_STRINGTAG_LEN"], [264, 1, 1, "", "MESSAGE_NO_PROC"], [265, 1, 1, "", "MESSAGE_NULL"], [266, 1, 1, "", "MIN"], [267, 1, 1, "", "MINLOC"], [268, 1, 1, "", "MODE_APPEND"], [269, 1, 1, "", "MODE_CREATE"], [270, 1, 1, "", "MODE_DELETE_ON_CLOSE"], [271, 1, 1, "", "MODE_EXCL"], [272, 1, 1, "", "MODE_NOCHECK"], [273, 1, 1, "", "MODE_NOPRECEDE"], [274, 1, 1, "", "MODE_NOPUT"], [275, 1, 1, "", "MODE_NOSTORE"], [276, 1, 1, "", "MODE_NOSUCCEED"], [277, 1, 1, "", "MODE_RDONLY"], [278, 1, 1, "", "MODE_RDWR"], [279, 1, 1, "", "MODE_SEQUENTIAL"], [280, 1, 1, "", "MODE_UNIQUE_OPEN"], [281, 1, 1, "", "MODE_WRONLY"], [282, 3, 1, "", "Message"], [283, 1, 1, "", "NO_OP"], [284, 1, 1, "", "OFFSET"], [285, 1, 1, "", "OP_NULL"], [286, 1, 1, "", "ORDER_C"], [287, 1, 1, "", "ORDER_F"], [288, 1, 1, "", "ORDER_FORTRAN"], [289, 3, 1, "", "Op"], [290, 2, 1, "", "Open_port"], [291, 1, 1, "", "PACKED"], [292, 1, 1, "", "PROC_NULL"], [293, 1, 1, "", "PROD"], [294, 2, 1, "", "Pcontrol"], [295, 3, 1, "", "Pickle"], [296, 3, 1, "", "Prequest"], [297, 2, 1, "", "Publish_name"], [298, 2, 1, "", "Query_thread"], [299, 1, 1, "", "REAL"], [300, 1, 1, "", "REAL16"], [301, 1, 1, "", "REAL2"], [302, 1, 1, "", "REAL4"], [303, 1, 1, "", "REAL8"], [304, 1, 1, "", "REPLACE"], [305, 1, 1, "", "REQUEST_NULL"], [306, 1, 1, "", "ROOT"], [307, 2, 1, "", "Register_datarep"], [308, 2, 1, "", "Remove_error_class"], [309, 2, 1, "", "Remove_error_code"], [310, 2, 1, "", "Remove_error_string"], [311, 3, 1, "", "Request"], [312, 1, 1, "", "SEEK_CUR"], [313, 1, 1, "", "SEEK_END"], [314, 1, 1, "", "SEEK_SET"], [315, 1, 1, "", "SESSION_NULL"], [316, 1, 1, "", "SHORT"], [317, 1, 1, "", "SHORT_INT"], [318, 1, 1, "", "SIGNED_CHAR"], [319, 1, 1, "", "SIGNED_INT"], [320, 1, 1, "", "SIGNED_LONG"], [321, 1, 1, "", "SIGNED_LONG_LONG"], [322, 1, 1, "", "SIGNED_SHORT"], [323, 1, 1, "", "SIMILAR"], [324, 1, 1, "", "SINT16_T"], [325, 1, 1, "", "SINT32_T"], [326, 1, 1, "", "SINT64_T"], [327, 1, 1, "", "SINT8_T"], [328, 1, 1, "", "SUBVERSION"], [329, 1, 1, "", "SUCCESS"], [330, 1, 1, "", "SUM"], [331, 3, 1, "", "Session"], [332, 3, 1, "", "Status"], [333, 1, 1, "", "TAG_UB"], [334, 1, 1, "", "THREAD_FUNNELED"], [335, 1, 1, "", "THREAD_MULTIPLE"], [336, 1, 1, "", "THREAD_SERIALIZED"], [337, 1, 1, "", "THREAD_SINGLE"], [338, 1, 1, "", "TWOINT"], [339, 1, 1, "", "TYPECLASS_COMPLEX"], [340, 1, 1, "", "TYPECLASS_INTEGER"], [341, 1, 1, "", "TYPECLASS_REAL"], [342, 3, 1, "", "Topocomm"], [343, 1, 1, "", "UINT16_T"], [344, 1, 1, "", "UINT32_T"], [345, 1, 1, "", "UINT64_T"], [346, 1, 1, "", "UINT8_T"], [347, 1, 1, "", "UNDEFINED"], [348, 1, 1, "", "UNEQUAL"], [349, 1, 1, "", "UNIVERSE_SIZE"], [350, 1, 1, "", "UNSIGNED"], [351, 1, 1, "", "UNSIGNED_CHAR"], [352, 1, 1, "", "UNSIGNED_INT"], [353, 1, 1, "", "UNSIGNED_LONG"], [354, 1, 1, "", "UNSIGNED_LONG_LONG"], [355, 1, 1, "", "UNSIGNED_SHORT"], [356, 1, 1, "", "UNWEIGHTED"], [357, 2, 1, "", "Unpublish_name"], [358, 1, 1, "", "VERSION"], [359, 1, 1, "", "WCHAR"], [360, 1, 1, "", "WEIGHTS_EMPTY"], [361, 1, 1, "", "WIN_BASE"], [362, 1, 1, "", "WIN_CREATE_FLAVOR"], [363, 1, 1, "", "WIN_DISP_UNIT"], [364, 1, 1, "", "WIN_FLAVOR"], [365, 1, 1, "", "WIN_FLAVOR_ALLOCATE"], [366, 1, 1, "", "WIN_FLAVOR_CREATE"], [367, 1, 1, "", "WIN_FLAVOR_DYNAMIC"], [368, 1, 1, "", "WIN_FLAVOR_SHARED"], [369, 1, 1, "", "WIN_MODEL"], [370, 1, 1, "", "WIN_NULL"], [371, 1, 1, "", "WIN_SEPARATE"], [372, 1, 1, "", "WIN_SIZE"], [373, 1, 1, "", "WIN_UNIFIED"], [374, 1, 1, "", "WTIME_IS_GLOBAL"], [375, 3, 1, "", "Win"], [376, 2, 1, "", "Wtick"], [377, 2, 1, "", "Wtime"], [378, 3, 1, "", "buffer"], [379, 2, 1, "", "get_vendor"], [380, 5, 1, "", "memory"], [381, 1, 1, "", "pickle"]], "mpi4py.MPI.BottomType": [[41, 4, 1, "", "__new__"]], "mpi4py.MPI.BufferAutomaticType": [[42, 4, 1, "", "__new__"]], "mpi4py.MPI.Cartcomm": [[86, 4, 1, "", "Get_cart_rank"], [86, 4, 1, "", "Get_coords"], [86, 4, 1, "", "Get_dim"], [86, 4, 1, "", "Get_topo"], [86, 4, 1, "", "Shift"], [86, 4, 1, "", "Sub"], [86, 4, 1, "", "__new__"], [86, 5, 1, "", "coords"], [86, 5, 1, "", "dim"], [86, 5, 1, "", "dims"], [86, 5, 1, "", "ndim"], [86, 5, 1, "", "periods"], [86, 5, 1, "", "topo"]], "mpi4py.MPI.Comm": [[88, 4, 1, "", "Abort"], [88, 4, 1, "", "Ack_failed"], [88, 4, 1, "", "Agree"], [88, 4, 1, "", "Allgather"], [88, 4, 1, "", "Allgather_init"], [88, 4, 1, "", "Allgatherv"], [88, 4, 1, "", "Allgatherv_init"], [88, 4, 1, "", "Allreduce"], [88, 4, 1, "", "Allreduce_init"], [88, 4, 1, "", "Alltoall"], [88, 4, 1, "", "Alltoall_init"], [88, 4, 1, "", "Alltoallv"], [88, 4, 1, "", "Alltoallv_init"], [88, 4, 1, "", "Alltoallw"], [88, 4, 1, "", "Alltoallw_init"], [88, 4, 1, "", "Attach_buffer"], [88, 4, 1, "", "Barrier"], [88, 4, 1, "", "Barrier_init"], [88, 4, 1, "", "Bcast"], [88, 4, 1, "", "Bcast_init"], [88, 4, 1, "", "Bsend"], [88, 4, 1, "", "Bsend_init"], [88, 4, 1, "", "Call_errhandler"], [88, 4, 1, "", "Clone"], [88, 4, 1, "", "Compare"], [88, 4, 1, "", "Create"], [88, 4, 1, "", "Create_errhandler"], [88, 4, 1, "", "Create_keyval"], [88, 4, 1, "", "Delete_attr"], [88, 4, 1, "", "Detach_buffer"], [88, 4, 1, "", "Disconnect"], [88, 4, 1, "", "Dup"], [88, 4, 1, "", "Dup_with_info"], [88, 4, 1, "", "Flush_buffer"], [88, 4, 1, "", "Free"], [88, 4, 1, "", "Free_keyval"], [88, 4, 1, "", "Gather"], [88, 4, 1, "", "Gather_init"], [88, 4, 1, "", "Gatherv"], [88, 4, 1, "", "Gatherv_init"], [88, 4, 1, "", "Get_attr"], [88, 4, 1, "", "Get_errhandler"], [88, 4, 1, "", "Get_failed"], [88, 4, 1, "", "Get_group"], [88, 4, 1, "", "Get_info"], [88, 4, 1, "", "Get_name"], [88, 4, 1, "", "Get_parent"], [88, 4, 1, "", "Get_rank"], [88, 4, 1, "", "Get_size"], [88, 4, 1, "", "Get_topology"], [88, 4, 1, "", "Iagree"], [88, 4, 1, "", "Iallgather"], [88, 4, 1, "", "Iallgatherv"], [88, 4, 1, "", "Iallreduce"], [88, 4, 1, "", "Ialltoall"], [88, 4, 1, "", "Ialltoallv"], [88, 4, 1, "", "Ialltoallw"], [88, 4, 1, "", "Ibarrier"], [88, 4, 1, "", "Ibcast"], [88, 4, 1, "", "Ibsend"], [88, 4, 1, "", "Idup"], [88, 4, 1, "", "Idup_with_info"], [88, 4, 1, "", "Iflush_buffer"], [88, 4, 1, "", "Igather"], [88, 4, 1, "", "Igatherv"], [88, 4, 1, "", "Improbe"], [88, 4, 1, "", "Iprobe"], [88, 4, 1, "", "Irecv"], [88, 4, 1, "", "Ireduce"], [88, 4, 1, "", "Ireduce_scatter"], [88, 4, 1, "", "Ireduce_scatter_block"], [88, 4, 1, "", "Irsend"], [88, 4, 1, "", "Is_inter"], [88, 4, 1, "", "Is_intra"], [88, 4, 1, "", "Is_revoked"], [88, 4, 1, "", "Iscatter"], [88, 4, 1, "", "Iscatterv"], [88, 4, 1, "", "Isend"], [88, 4, 1, "", "Isendrecv"], [88, 4, 1, "", "Isendrecv_replace"], [88, 4, 1, "", "Ishrink"], [88, 4, 1, "", "Issend"], [88, 4, 1, "", "Join"], [88, 4, 1, "", "Mprobe"], [88, 4, 1, "", "Precv_init"], [88, 4, 1, "", "Probe"], [88, 4, 1, "", "Psend_init"], [88, 4, 1, "", "Recv"], [88, 4, 1, "", "Recv_init"], [88, 4, 1, "", "Reduce"], [88, 4, 1, "", "Reduce_init"], [88, 4, 1, "", "Reduce_scatter"], [88, 4, 1, "", "Reduce_scatter_block"], [88, 4, 1, "", "Reduce_scatter_block_init"], [88, 4, 1, "", "Reduce_scatter_init"], [88, 4, 1, "", "Revoke"], [88, 4, 1, "", "Rsend"], [88, 4, 1, "", "Rsend_init"], [88, 4, 1, "", "Scatter"], [88, 4, 1, "", "Scatter_init"], [88, 4, 1, "", "Scatterv"], [88, 4, 1, "", "Scatterv_init"], [88, 4, 1, "", "Send"], [88, 4, 1, "", "Send_init"], [88, 4, 1, "", "Sendrecv"], [88, 4, 1, "", "Sendrecv_replace"], [88, 4, 1, "", "Set_attr"], [88, 4, 1, "", "Set_errhandler"], [88, 4, 1, "", "Set_info"], [88, 4, 1, "", "Set_name"], [88, 4, 1, "", "Shrink"], [88, 4, 1, "", "Split"], [88, 4, 1, "", "Split_type"], [88, 4, 1, "", "Ssend"], [88, 4, 1, "", "Ssend_init"], [88, 4, 1, "", "__new__"], [88, 4, 1, "", "allgather"], [88, 4, 1, "", "allreduce"], [88, 4, 1, "", "alltoall"], [88, 4, 1, "", "barrier"], [88, 4, 1, "", "bcast"], [88, 4, 1, "", "bsend"], [88, 4, 1, "", "f2py"], [88, 4, 1, "", "free"], [88, 4, 1, "", "fromhandle"], [88, 4, 1, "", "gather"], [88, 5, 1, "", "group"], [88, 5, 1, "", "handle"], [88, 4, 1, "", "ibsend"], [88, 4, 1, "", "improbe"], [88, 5, 1, "", "info"], [88, 4, 1, "", "iprobe"], [88, 4, 1, "", "irecv"], [88, 5, 1, "", "is_inter"], [88, 5, 1, "", "is_intra"], [88, 5, 1, "", "is_topo"], [88, 4, 1, "", "isend"], [88, 4, 1, "", "issend"], [88, 4, 1, "", "mprobe"], [88, 5, 1, "", "name"], [88, 4, 1, "", "probe"], [88, 4, 1, "", "py2f"], [88, 5, 1, "", "rank"], [88, 4, 1, "", "recv"], [88, 4, 1, "", "reduce"], [88, 4, 1, "", "scatter"], [88, 4, 1, "", "send"], [88, 4, 1, "", "sendrecv"], [88, 5, 1, "", "size"], [88, 4, 1, "", "ssend"], [88, 5, 1, "", "topology"]], "mpi4py.MPI.Datatype": [[102, 4, 1, "", "Commit"], [102, 4, 1, "", "Create_contiguous"], [102, 4, 1, "", "Create_darray"], [102, 4, 1, "", "Create_f90_complex"], [102, 4, 1, "", "Create_f90_integer"], [102, 4, 1, "", "Create_f90_real"], [102, 4, 1, "", "Create_hindexed"], [102, 4, 1, "", "Create_hindexed_block"], [102, 4, 1, "", "Create_hvector"], [102, 4, 1, "", "Create_indexed"], [102, 4, 1, "", "Create_indexed_block"], [102, 4, 1, "", "Create_keyval"], [102, 4, 1, "", "Create_resized"], [102, 4, 1, "", "Create_struct"], [102, 4, 1, "", "Create_subarray"], [102, 4, 1, "", "Create_vector"], [102, 4, 1, "", "Delete_attr"], [102, 4, 1, "", "Dup"], [102, 4, 1, "", "Free"], [102, 4, 1, "", "Free_keyval"], [102, 4, 1, "", "Get_attr"], [102, 4, 1, "", "Get_contents"], [102, 4, 1, "", "Get_envelope"], [102, 4, 1, "", "Get_extent"], [102, 4, 1, "", "Get_name"], [102, 4, 1, "", "Get_size"], [102, 4, 1, "", "Get_true_extent"], [102, 4, 1, "", "Get_value_index"], [102, 4, 1, "", "Match_size"], [102, 4, 1, "", "Pack"], [102, 4, 1, "", "Pack_external"], [102, 4, 1, "", "Pack_external_size"], [102, 4, 1, "", "Pack_size"], [102, 4, 1, "", "Set_attr"], [102, 4, 1, "", "Set_name"], [102, 4, 1, "", "Unpack"], [102, 4, 1, "", "Unpack_external"], [102, 4, 1, "", "__new__"], [102, 5, 1, "", "combiner"], [102, 5, 1, "", "contents"], [102, 4, 1, "", "decode"], [102, 5, 1, "", "envelope"], [102, 5, 1, "", "extent"], [102, 4, 1, "", "f2py"], [102, 4, 1, "", "free"], [102, 4, 1, "", "fromcode"], [102, 4, 1, "", "fromhandle"], [102, 5, 1, "", "handle"], [102, 5, 1, "", "is_named"], [102, 5, 1, "", "is_predefined"], [102, 5, 1, "", "lb"], [102, 5, 1, "", "name"], [102, 4, 1, "", "py2f"], [102, 5, 1, "", "size"], [102, 4, 1, "", "tocode"], [102, 5, 1, "", "true_extent"], [102, 5, 1, "", "true_lb"], [102, 5, 1, "", "true_ub"], [102, 5, 1, "", "typechar"], [102, 5, 1, "", "typestr"], [102, 5, 1, "", "ub"]], "mpi4py.MPI.Distgraphcomm": [[104, 4, 1, "", "Get_dist_neighbors"], [104, 4, 1, "", "Get_dist_neighbors_count"], [104, 4, 1, "", "__new__"]], "mpi4py.MPI.Errhandler": [[174, 4, 1, "", "Free"], [174, 4, 1, "", "__new__"], [174, 4, 1, "", "f2py"], [174, 4, 1, "", "free"], [174, 4, 1, "", "fromhandle"], [174, 5, 1, "", "handle"], [174, 4, 1, "", "py2f"]], "mpi4py.MPI.Exception": [[175, 4, 1, "", "Get_error_class"], [175, 4, 1, "", "Get_error_code"], [175, 4, 1, "", "Get_error_string"], [175, 4, 1, "", "__new__"], [175, 5, 1, "", "error_class"], [175, 5, 1, "", "error_code"], [175, 5, 1, "", "error_string"]], "mpi4py.MPI.File": [[190, 4, 1, "", "Call_errhandler"], [190, 4, 1, "", "Close"], [190, 4, 1, "", "Create_errhandler"], [190, 4, 1, "", "Delete"], [190, 4, 1, "", "Get_amode"], [190, 4, 1, "", "Get_atomicity"], [190, 4, 1, "", "Get_byte_offset"], [190, 4, 1, "", "Get_errhandler"], [190, 4, 1, "", "Get_group"], [190, 4, 1, "", "Get_info"], [190, 4, 1, "", "Get_position"], [190, 4, 1, "", "Get_position_shared"], [190, 4, 1, "", "Get_size"], [190, 4, 1, "", "Get_type_extent"], [190, 4, 1, "", "Get_view"], [190, 4, 1, "", "Iread"], [190, 4, 1, "", "Iread_all"], [190, 4, 1, "", "Iread_at"], [190, 4, 1, "", "Iread_at_all"], [190, 4, 1, "", "Iread_shared"], [190, 4, 1, "", "Iwrite"], [190, 4, 1, "", "Iwrite_all"], [190, 4, 1, "", "Iwrite_at"], [190, 4, 1, "", "Iwrite_at_all"], [190, 4, 1, "", "Iwrite_shared"], [190, 4, 1, "", "Open"], [190, 4, 1, "", "Preallocate"], [190, 4, 1, "", "Read"], [190, 4, 1, "", "Read_all"], [190, 4, 1, "", "Read_all_begin"], [190, 4, 1, "", "Read_all_end"], [190, 4, 1, "", "Read_at"], [190, 4, 1, "", "Read_at_all"], [190, 4, 1, "", "Read_at_all_begin"], [190, 4, 1, "", "Read_at_all_end"], [190, 4, 1, "", "Read_ordered"], [190, 4, 1, "", "Read_ordered_begin"], [190, 4, 1, "", "Read_ordered_end"], [190, 4, 1, "", "Read_shared"], [190, 4, 1, "", "Seek"], [190, 4, 1, "", "Seek_shared"], [190, 4, 1, "", "Set_atomicity"], [190, 4, 1, "", "Set_errhandler"], [190, 4, 1, "", "Set_info"], [190, 4, 1, "", "Set_size"], [190, 4, 1, "", "Set_view"], [190, 4, 1, "", "Sync"], [190, 4, 1, "", "Write"], [190, 4, 1, "", "Write_all"], [190, 4, 1, "", "Write_all_begin"], [190, 4, 1, "", "Write_all_end"], [190, 4, 1, "", "Write_at"], [190, 4, 1, "", "Write_at_all"], [190, 4, 1, "", "Write_at_all_begin"], [190, 4, 1, "", "Write_at_all_end"], [190, 4, 1, "", "Write_ordered"], [190, 4, 1, "", "Write_ordered_begin"], [190, 4, 1, "", "Write_ordered_end"], [190, 4, 1, "", "Write_shared"], [190, 4, 1, "", "__new__"], [190, 5, 1, "", "amode"], [190, 5, 1, "", "atomicity"], [190, 4, 1, "", "f2py"], [190, 4, 1, "", "free"], [190, 4, 1, "", "fromhandle"], [190, 5, 1, "", "group"], [190, 5, 1, "", "group_rank"], [190, 5, 1, "", "group_size"], [190, 5, 1, "", "handle"], [190, 5, 1, "", "info"], [190, 4, 1, "", "py2f"], [190, 5, 1, "", "size"]], "mpi4py.MPI.Graphcomm": [[204, 4, 1, "", "Get_dims"], [204, 4, 1, "", "Get_neighbors"], [204, 4, 1, "", "Get_neighbors_count"], [204, 4, 1, "", "Get_topo"], [204, 4, 1, "", "__new__"], [204, 5, 1, "", "dims"], [204, 5, 1, "", "edges"], [204, 5, 1, "", "index"], [204, 5, 1, "", "nedges"], [204, 5, 1, "", "neighbors"], [204, 5, 1, "", "nneighbors"], [204, 5, 1, "", "nnodes"], [204, 5, 1, "", "topo"]], "mpi4py.MPI.Grequest": [[205, 4, 1, "", "Complete"], [205, 4, 1, "", "Start"], [205, 4, 1, "", "__new__"], [205, 4, 1, "", "complete"]], "mpi4py.MPI.Group": [[206, 4, 1, "", "Compare"], [206, 4, 1, "", "Create_from_session_pset"], [206, 4, 1, "", "Difference"], [206, 4, 1, "", "Dup"], [206, 4, 1, "", "Excl"], [206, 4, 1, "", "Free"], [206, 4, 1, "", "Get_rank"], [206, 4, 1, "", "Get_size"], [206, 4, 1, "", "Incl"], [206, 4, 1, "", "Intersection"], [206, 4, 1, "", "Range_excl"], [206, 4, 1, "", "Range_incl"], [206, 4, 1, "", "Translate_ranks"], [206, 4, 1, "", "Union"], [206, 4, 1, "", "__new__"], [206, 4, 1, "", "f2py"], [206, 4, 1, "", "free"], [206, 4, 1, "", "fromhandle"], [206, 5, 1, "", "handle"], [206, 4, 1, "", "py2f"], [206, 5, 1, "", "rank"], [206, 5, 1, "", "size"]], "mpi4py.MPI.InPlaceType": [[225, 4, 1, "", "__new__"]], "mpi4py.MPI.Info": [[226, 4, 1, "", "Create"], [226, 4, 1, "", "Create_env"], [226, 4, 1, "", "Delete"], [226, 4, 1, "", "Dup"], [226, 4, 1, "", "Free"], [226, 4, 1, "", "Get"], [226, 4, 1, "", "Get_nkeys"], [226, 4, 1, "", "Get_nthkey"], [226, 4, 1, "", "Set"], [226, 4, 1, "", "__new__"], [226, 4, 1, "", "clear"], [226, 4, 1, "", "copy"], [226, 4, 1, "", "f2py"], [226, 4, 1, "", "free"], [226, 4, 1, "", "fromhandle"], [226, 4, 1, "", "get"], [226, 5, 1, "", "handle"], [226, 4, 1, "", "items"], [226, 4, 1, "", "keys"], [226, 4, 1, "", "pop"], [226, 4, 1, "", "popitem"], [226, 4, 1, "", "py2f"], [226, 4, 1, "", "update"], [226, 4, 1, "", "values"]], "mpi4py.MPI.Intercomm": [[229, 4, 1, "", "Create_from_groups"], [229, 4, 1, "", "Get_remote_group"], [229, 4, 1, "", "Get_remote_size"], [229, 4, 1, "", "Merge"], [229, 4, 1, "", "__new__"], [229, 5, 1, "", "remote_group"], [229, 5, 1, "", "remote_size"]], "mpi4py.MPI.Intracomm": [[230, 4, 1, "", "Accept"], [230, 4, 1, "", "Cart_map"], [230, 4, 1, "", "Connect"], [230, 4, 1, "", "Create_cart"], [230, 4, 1, "", "Create_dist_graph"], [230, 4, 1, "", "Create_dist_graph_adjacent"], [230, 4, 1, "", "Create_from_group"], [230, 4, 1, "", "Create_graph"], [230, 4, 1, "", "Create_group"], [230, 4, 1, "", "Create_intercomm"], [230, 4, 1, "", "Exscan"], [230, 4, 1, "", "Exscan_init"], [230, 4, 1, "", "Graph_map"], [230, 4, 1, "", "Iexscan"], [230, 4, 1, "", "Iscan"], [230, 4, 1, "", "Scan"], [230, 4, 1, "", "Scan_init"], [230, 4, 1, "", "Spawn"], [230, 4, 1, "", "Spawn_multiple"], [230, 4, 1, "", "__new__"], [230, 4, 1, "", "exscan"], [230, 4, 1, "", "scan"]], "mpi4py.MPI.Message": [[282, 4, 1, "", "Iprobe"], [282, 4, 1, "", "Irecv"], [282, 4, 1, "", "Probe"], [282, 4, 1, "", "Recv"], [282, 4, 1, "", "__new__"], [282, 4, 1, "", "f2py"], [282, 4, 1, "", "free"], [282, 4, 1, "", "fromhandle"], [282, 5, 1, "", "handle"], [282, 4, 1, "", "iprobe"], [282, 4, 1, "", "irecv"], [282, 4, 1, "", "probe"], [282, 4, 1, "", "py2f"], [282, 4, 1, "", "recv"]], "mpi4py.MPI.Op": [[289, 4, 1, "", "Create"], [289, 4, 1, "", "Free"], [289, 4, 1, "", "Is_commutative"], [289, 4, 1, "", "Reduce_local"], [289, 4, 1, "", "__new__"], [289, 4, 1, "", "f2py"], [289, 4, 1, "", "free"], [289, 4, 1, "", "fromhandle"], [289, 5, 1, "", "handle"], [289, 5, 1, "", "is_commutative"], [289, 5, 1, "", "is_predefined"], [289, 4, 1, "", "py2f"]], "mpi4py.MPI.Pickle": [[295, 5, 1, "", "PROTOCOL"], [295, 5, 1, "", "THRESHOLD"], [295, 4, 1, "", "__new__"], [295, 4, 1, "", "dumps"], [295, 4, 1, "", "dumps_oob"], [295, 4, 1, "", "loads"], [295, 4, 1, "", "loads_oob"]], "mpi4py.MPI.Prequest": [[296, 4, 1, "", "Parrived"], [296, 4, 1, "", "Pready"], [296, 4, 1, "", "Pready_list"], [296, 4, 1, "", "Pready_range"], [296, 4, 1, "", "Start"], [296, 4, 1, "", "Startall"], [296, 4, 1, "", "__new__"]], "mpi4py.MPI.Request": [[311, 4, 1, "", "Cancel"], [311, 4, 1, "", "Free"], [311, 4, 1, "", "Get_status"], [311, 4, 1, "", "Get_status_all"], [311, 4, 1, "", "Get_status_any"], [311, 4, 1, "", "Get_status_some"], [311, 4, 1, "", "Test"], [311, 4, 1, "", "Testall"], [311, 4, 1, "", "Testany"], [311, 4, 1, "", "Testsome"], [311, 4, 1, "", "Wait"], [311, 4, 1, "", "Waitall"], [311, 4, 1, "", "Waitany"], [311, 4, 1, "", "Waitsome"], [311, 4, 1, "", "__new__"], [311, 4, 1, "", "cancel"], [311, 4, 1, "", "f2py"], [311, 4, 1, "", "free"], [311, 4, 1, "", "fromhandle"], [311, 4, 1, "", "get_status"], [311, 4, 1, "", "get_status_all"], [311, 4, 1, "", "get_status_any"], [311, 4, 1, "", "get_status_some"], [311, 5, 1, "", "handle"], [311, 4, 1, "", "py2f"], [311, 4, 1, "", "test"], [311, 4, 1, "", "testall"], [311, 4, 1, "", "testany"], [311, 4, 1, "", "testsome"], [311, 4, 1, "", "wait"], [311, 4, 1, "", "waitall"], [311, 4, 1, "", "waitany"], [311, 4, 1, "", "waitsome"]], "mpi4py.MPI.Session": [[331, 4, 1, "", "Attach_buffer"], [331, 4, 1, "", "Call_errhandler"], [331, 4, 1, "", "Create_errhandler"], [331, 4, 1, "", "Create_group"], [331, 4, 1, "", "Detach_buffer"], [331, 4, 1, "", "Finalize"], [331, 4, 1, "", "Flush_buffer"], [331, 4, 1, "", "Get_errhandler"], [331, 4, 1, "", "Get_info"], [331, 4, 1, "", "Get_nth_pset"], [331, 4, 1, "", "Get_num_psets"], [331, 4, 1, "", "Get_pset_info"], [331, 4, 1, "", "Iflush_buffer"], [331, 4, 1, "", "Init"], [331, 4, 1, "", "Set_errhandler"], [331, 4, 1, "", "__new__"], [331, 4, 1, "", "f2py"], [331, 4, 1, "", "free"], [331, 4, 1, "", "fromhandle"], [331, 5, 1, "", "handle"], [331, 4, 1, "", "py2f"]], "mpi4py.MPI.Status": [[332, 4, 1, "", "Get_count"], [332, 4, 1, "", "Get_elements"], [332, 4, 1, "", "Get_error"], [332, 4, 1, "", "Get_source"], [332, 4, 1, "", "Get_tag"], [332, 4, 1, "", "Is_cancelled"], [332, 4, 1, "", "Set_cancelled"], [332, 4, 1, "", "Set_elements"], [332, 4, 1, "", "Set_error"], [332, 4, 1, "", "Set_source"], [332, 4, 1, "", "Set_tag"], [332, 4, 1, "", "__new__"], [332, 5, 1, "", "cancelled"], [332, 5, 1, "", "count"], [332, 5, 1, "", "error"], [332, 4, 1, "", "f2py"], [332, 4, 1, "", "py2f"], [332, 5, 1, "", "source"], [332, 5, 1, "", "tag"]], "mpi4py.MPI.Topocomm": [[342, 4, 1, "", "Ineighbor_allgather"], [342, 4, 1, "", "Ineighbor_allgatherv"], [342, 4, 1, "", "Ineighbor_alltoall"], [342, 4, 1, "", "Ineighbor_alltoallv"], [342, 4, 1, "", "Ineighbor_alltoallw"], [342, 4, 1, "", "Neighbor_allgather"], [342, 4, 1, "", "Neighbor_allgather_init"], [342, 4, 1, "", "Neighbor_allgatherv"], [342, 4, 1, "", "Neighbor_allgatherv_init"], [342, 4, 1, "", "Neighbor_alltoall"], [342, 4, 1, "", "Neighbor_alltoall_init"], [342, 4, 1, "", "Neighbor_alltoallv"], [342, 4, 1, "", "Neighbor_alltoallv_init"], [342, 4, 1, "", "Neighbor_alltoallw"], [342, 4, 1, "", "Neighbor_alltoallw_init"], [342, 4, 1, "", "__new__"], [342, 5, 1, "", "degrees"], [342, 5, 1, "", "indegree"], [342, 5, 1, "", "inedges"], [342, 5, 1, "", "inoutedges"], [342, 4, 1, "", "neighbor_allgather"], [342, 4, 1, "", "neighbor_alltoall"], [342, 5, 1, "", "outdegree"], [342, 5, 1, "", "outedges"]], "mpi4py.MPI.Win": [[375, 4, 1, "", "Accumulate"], [375, 4, 1, "", "Allocate"], [375, 4, 1, "", "Allocate_shared"], [375, 4, 1, "", "Attach"], [375, 4, 1, "", "Call_errhandler"], [375, 4, 1, "", "Compare_and_swap"], [375, 4, 1, "", "Complete"], [375, 4, 1, "", "Create"], [375, 4, 1, "", "Create_dynamic"], [375, 4, 1, "", "Create_errhandler"], [375, 4, 1, "", "Create_keyval"], [375, 4, 1, "", "Delete_attr"], [375, 4, 1, "", "Detach"], [375, 4, 1, "", "Fence"], [375, 4, 1, "", "Fetch_and_op"], [375, 4, 1, "", "Flush"], [375, 4, 1, "", "Flush_all"], [375, 4, 1, "", "Flush_local"], [375, 4, 1, "", "Flush_local_all"], [375, 4, 1, "", "Free"], [375, 4, 1, "", "Free_keyval"], [375, 4, 1, "", "Get"], [375, 4, 1, "", "Get_accumulate"], [375, 4, 1, "", "Get_attr"], [375, 4, 1, "", "Get_errhandler"], [375, 4, 1, "", "Get_group"], [375, 4, 1, "", "Get_info"], [375, 4, 1, "", "Get_name"], [375, 4, 1, "", "Lock"], [375, 4, 1, "", "Lock_all"], [375, 4, 1, "", "Post"], [375, 4, 1, "", "Put"], [375, 4, 1, "", "Raccumulate"], [375, 4, 1, "", "Rget"], [375, 4, 1, "", "Rget_accumulate"], [375, 4, 1, "", "Rput"], [375, 4, 1, "", "Set_attr"], [375, 4, 1, "", "Set_errhandler"], [375, 4, 1, "", "Set_info"], [375, 4, 1, "", "Set_name"], [375, 4, 1, "", "Shared_query"], [375, 4, 1, "", "Start"], [375, 4, 1, "", "Sync"], [375, 4, 1, "", "Test"], [375, 4, 1, "", "Unlock"], [375, 4, 1, "", "Unlock_all"], [375, 4, 1, "", "Wait"], [375, 4, 1, "", "__new__"], [375, 5, 1, "", "attrs"], [375, 4, 1, "", "f2py"], [375, 5, 1, "", "flavor"], [375, 4, 1, "", "free"], [375, 4, 1, "", "fromhandle"], [375, 5, 1, "", "group"], [375, 5, 1, "", "group_rank"], [375, 5, 1, "", "group_size"], [375, 5, 1, "", "handle"], [375, 5, 1, "", "info"], [375, 5, 1, "", "model"], [375, 5, 1, "", "name"], [375, 4, 1, "", "py2f"], [375, 4, 1, "", "tomemory"]], "mpi4py.MPI.buffer": [[378, 4, 1, "", "__new__"], [378, 5, 1, "", "address"], [378, 4, 1, "", "allocate"], [378, 4, 1, "", "cast"], [378, 5, 1, "", "format"], [378, 4, 1, "", "fromaddress"], [378, 4, 1, "", "frombuffer"], [378, 5, 1, "", "itemsize"], [378, 5, 1, "", "nbytes"], [378, 5, 1, "", "obj"], [378, 5, 1, "", "readonly"], [378, 4, 1, "", "release"], [378, 4, 1, "", "tobytes"], [378, 4, 1, "", "toreadonly"]], "mpi4py.futures": [[11, 3, 1, "", "MPICommExecutor"], [11, 3, 1, "", "MPIPoolExecutor"], [11, 2, 1, "", "collect"], [11, 2, 1, "", "compose"], [11, 2, 1, "", "get_comm_workers"]], "mpi4py.futures.MPIPoolExecutor": [[11, 4, 1, "", "bootup"], [11, 4, 1, "", "map"], [11, 5, 1, "", "num_workers"], [11, 4, 1, "", "shutdown"], [11, 4, 1, "", "starmap"], [11, 4, 1, "", "submit"]], "mpi4py.mpi4py": [[8, 1, 1, "", "rc"]], "mpi4py.mpi4py.rc": [[8, 5, 1, "", "errors"], [8, 5, 1, "", "fast_reduce"], [8, 5, 1, "", "finalize"], [8, 5, 1, "", "initialize"], [8, 5, 1, "", "irecv_bufsz"], [8, 5, 1, "", "recv_mprobe"], [8, 5, 1, "", "thread_level"], [8, 5, 1, "", "threads"]], "mpi4py.typing": [[13, 1, 1, "", "Aint"], [13, 1, 1, "", "Bottom"], [13, 1, 1, "", "BufSpec"], [13, 1, 1, "", "BufSpecB"], [13, 1, 1, "", "BufSpecV"], [13, 1, 1, "", "BufSpecW"], [13, 1, 1, "", "Buffer"], [13, 1, 1, "", "Count"], [13, 1, 1, "", "Displ"], [13, 1, 1, "", "InPlace"], [13, 1, 1, "", "Offset"], [13, 1, 1, "", "S"], [13, 1, 1, "", "SupportsBuffer"], [13, 1, 1, "", "SupportsCAI"], [13, 1, 1, "", "SupportsDLPack"], [13, 1, 1, "", "T"], [13, 1, 1, "", "TargetSpec"], [13, 1, 1, "", "TypeSpec"], [13, 1, 1, "", "U"], [13, 1, 1, "", "V"]], "mpi4py.util": [[15, 0, 0, "-", "dtlib"], [16, 0, 0, "-", "pkl5"], [17, 0, 0, "-", "pool"], [18, 0, 0, "-", "sync"]], "mpi4py.util.dtlib": [[15, 2, 1, "", "from_numpy_dtype"], [15, 2, 1, "", "to_numpy_dtype"]], "mpi4py.util.pkl5": [[16, 3, 1, "", "Comm"], [16, 3, 1, "", "Intercomm"], [16, 3, 1, "", "Intracomm"], [16, 3, 1, "", "Message"], [16, 3, 1, "", "Request"]], "mpi4py.util.pkl5.Comm": [[16, 4, 1, "", "allgather"], [16, 4, 1, "", "alltoall"], [16, 4, 1, "", "bcast"], [16, 4, 1, "", "bsend"], [16, 4, 1, "", "gather"], [16, 4, 1, "", "ibsend"], [16, 4, 1, "", "improbe"], [16, 4, 1, "", "irecv"], [16, 4, 1, "", "isend"], [16, 4, 1, "", "issend"], [16, 4, 1, "", "mprobe"], [16, 4, 1, "", "recv"], [16, 4, 1, "", "scatter"], [16, 4, 1, "", "send"], [16, 4, 1, "", "sendrecv"], [16, 4, 1, "", "ssend"]], "mpi4py.util.pkl5.Message": [[16, 4, 1, "", "free"], [16, 4, 1, "", "iprobe"], [16, 4, 1, "", "irecv"], [16, 4, 1, "", "probe"], [16, 4, 1, "", "recv"]], "mpi4py.util.pkl5.Request": [[16, 4, 1, "", "Free"], [16, 4, 1, "", "cancel"], [16, 4, 1, "", "free"], [16, 4, 1, "", "get_status"], [16, 4, 1, "", "get_status_all"], [16, 4, 1, "", "test"], [16, 4, 1, "", "testall"], [16, 4, 1, "", "wait"], [16, 4, 1, "", "waitall"]], "mpi4py.util.pool": [[17, 3, 1, "", "ApplyResult"], [17, 3, 1, "", "AsyncResult"], [17, 3, 1, "", "MapResult"], [17, 3, 1, "", "Pool"], [17, 3, 1, "", "ThreadPool"]], "mpi4py.util.pool.AsyncResult": [[17, 4, 1, "", "get"], [17, 4, 1, "", "ready"], [17, 4, 1, "", "successful"], [17, 4, 1, "", "wait"]], "mpi4py.util.pool.Pool": [[17, 4, 1, "", "__init__"], [17, 4, 1, "", "apply"], [17, 4, 1, "", "apply_async"], [17, 4, 1, "", "close"], [17, 4, 1, "", "imap"], [17, 4, 1, "", "imap_unordered"], [17, 4, 1, "", "istarmap"], [17, 4, 1, "", "istarmap_unordered"], [17, 4, 1, "", "join"], [17, 4, 1, "", "map"], [17, 4, 1, "", "map_async"], [17, 4, 1, "", "starmap"], [17, 4, 1, "", "starmap_async"], [17, 4, 1, "", "terminate"]], "mpi4py.util.sync": [[18, 3, 1, "", "Condition"], [18, 3, 1, "", "Counter"], [18, 3, 1, "", "Mutex"], [18, 3, 1, "", "Semaphore"], [18, 3, 1, "", "Sequential"]], "mpi4py.util.sync.Condition": [[18, 4, 1, "", "__enter__"], [18, 4, 1, "", "__exit__"], [18, 4, 1, "", "__init__"], [18, 4, 1, "", "acquire"], [18, 4, 1, "", "free"], [18, 4, 1, "", "locked"], [18, 4, 1, "", "notify"], [18, 4, 1, "", "notify_all"], [18, 4, 1, "", "release"], [18, 4, 1, "", "wait"], [18, 4, 1, "", "wait_for"]], "mpi4py.util.sync.Counter": [[18, 4, 1, "", "__init__"], [18, 4, 1, "", "__iter__"], [18, 4, 1, "", "__next__"], [18, 4, 1, "", "free"], [18, 4, 1, "", "next"]], "mpi4py.util.sync.Mutex": [[18, 4, 1, "", "__enter__"], [18, 4, 1, "", "__exit__"], [18, 4, 1, "", "__init__"], [18, 4, 1, "", "acquire"], [18, 4, 1, "", "count"], [18, 4, 1, "", "free"], [18, 4, 1, "", "locked"], [18, 4, 1, "", "release"]], "mpi4py.util.sync.Semaphore": [[18, 4, 1, "", "__enter__"], [18, 4, 1, "", "__exit__"], [18, 4, 1, "", "__init__"], [18, 4, 1, "", "acquire"], [18, 4, 1, "", "free"], [18, 4, 1, "", "release"]], "mpi4py.util.sync.Sequential": [[18, 4, 1, "", "__enter__"], [18, 4, 1, "", "__exit__"], [18, 4, 1, "", "__init__"], [18, 4, 1, "", "begin"], [18, 4, 1, "", "end"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "data", "Python data"], "2": ["py", "function", "Python function"], "3": ["py", "class", "Python class"], "4": ["py", "method", "Python method"], "5": ["py", "attribute", "Python attribute"], "6": ["py", "exception", "Python exception"], "7": ["std", "cmdoption", "program option"], "8": ["std", "envvar", "environment variable"]}, "objtypes": {"0": "py:module", "1": "py:data", "2": "py:function", "3": "py:class", "4": "py:method", "5": "py:attribute", "6": "py:exception", "7": "std:cmdoption", "8": "std:envvar"}, "terms": {"": [0, 1, 3, 5, 6, 11, 13, 17, 19, 382], "0": [2, 3, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 88, 190, 230, 375, 382], "001": 11, "00361614": 2, "005": 1, "010": 1, "013": 1, "03": 1, "04": 1, "06": 11, "07": 11, "086e": 11, "09": 1, "1": [2, 6, 8, 11, 12, 14, 15, 16, 17, 18, 19, 230, 375, 382], "10": [1, 2, 3, 11, 18, 382], "100": 382, "1000": 382, "1016": 1, "1024": 16, "103727": 18, "103729": 18, "1048576": 2, "11": 382, "1108": 1, "1109": [1, 11], "1115": 1, "1124": 1, "1139": 1, "1145": [3, 18], "11th": 6, "12": [1, 6], "1234": 11, "128": 11, "13": [3, 382], "130": 18, "131": 18, "14": 382, "1415929714812316": 11, "1415977398528137": 11, "159": 6, "16": [0, 11], "16f": 11, "17": 11, "179e": 11, "19": 0, "1991": 18, "1994": 6, "1996": 6, "1997": 6, "1998": 6, "2": [1, 2, 4, 6, 8, 11, 16, 18, 19, 382], "2004": 6, "2005": 1, "2007": 1, "2008": 1, "2011": 1, "2014": 18, "2021": 1, "2022": [1, 11], "2023": [1, 3, 11], "2024": [4, 7], "21": [6, 18], "22": 6, "23": 1, "24": 0, "255": 11, "256": 11, "262144": 8, "28": 4, "29": 6, "299": 6, "2nd": 6, "3": [2, 6, 8, 10, 11, 12, 13, 14, 15, 16, 18, 379, 382], "30": 19, "3083216": 1, "3118": [0, 382], "32": [0, 11], "321": 11, "3225481": [1, 11], "32768": 8, "34": [1, 11], "35": 6, "36": [0, 3], "3615318": 3, "3615319": 3, "3e": 11, "3j": 382, "4": [1, 2, 3, 6, 8, 11, 13, 16, 17, 18, 382], "416": 6, "42": [11, 12, 16, 382], "440": 0, "47": 1, "480": 11, "5": [1, 2, 8, 11, 16, 382], "508": 3, "512": 11, "54": 1, "574": 16, "6": [2, 6], "611": [1, 11], "622": [1, 11], "640": 11, "65": [1, 11, 18], "655": 1, "662": 1, "68": 1, "6th": 6, "7": [18, 382], "72": 382, "751": 3, "77": 382, "789": 6, "8": [0, 6, 8, 11, 16], "828": 6, "9": [1, 11, 18], "90": 382, "9780262527637": 18, "A": [1, 2, 6, 7, 17, 18, 19, 88, 382], "AND": 7, "AS": 7, "As": [0, 5, 6, 11, 12, 19], "At": [3, 11, 12, 19], "BE": 7, "BUT": 7, "BY": 7, "By": [8, 11], "FOR": 7, "For": [0, 5, 6, 8, 11, 16, 382], "IF": 7, "IN": 7, "If": [0, 1, 2, 3, 5, 11, 17, 18, 19, 382], "In": [0, 3, 5, 6, 11, 12, 13, 18, 19, 382], "It": [0, 3, 4, 6, 19, 382], "Its": [5, 6, 19], "NO": 7, "NOT": 7, "OF": 7, "ON": 7, "OR": 7, "On": [5, 19], "One": [4, 9], "SUCH": 7, "Such": 3, "THE": 7, "TO": 7, "The": [0, 2, 3, 5, 6, 8, 11, 12, 14, 15, 16, 17, 18, 19, 88, 382], "There": [6, 19], "These": [0, 3, 11, 12, 19], "To": [0, 2, 3, 5, 8, 11, 12, 19], "With": [11, 18], "_": 11, "__cuda_array_interface__": [0, 382], "__dlpack__": 382, "__dlpack_device__": 382, "__enter__": 18, "__exit__": 18, "__init__": [17, 18], "__iter__": 18, "__main__": [11, 12], "__name__": 11, "__new__": [41, 42, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 225, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378], "__next__": [11, 18], "__version__": 3, "__worker__": 11, "_max_work": 0, "_xoption": 11, "ab": 11, "abc": 382, "abi": [3, 5], "abl": [5, 19], "abort": [0, 8, 11, 12, 88], "about": [0, 2, 5, 8, 11, 200, 379], "abov": [2, 5, 7], "absolut": [3, 30, 190], "abstract": [6, 11], "academ": [1, 11], "accept": [0, 2, 3, 8, 11, 19, 230], "access": [0, 11, 19, 31, 88, 190, 229, 375, 382], "accommod": 382, "accord": 102, "accumul": [19, 375], "achiev": [6, 19], "ack_fail": 88, "acknowledg": [1, 11, 88], "acm": 18, "acquir": 18, "acquisit": 18, "across": 19, "action": 3, "activ": [0, 5, 19], "actual": [0, 11, 18, 19], "ad": [6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "adapt": 3, "add": [0, 2, 3, 13, 18, 26, 27], "addit": [0, 2, 3, 8, 11, 16, 17, 19], "addition": [5, 6, 11, 12, 16, 19], "addr1": 30, "addr2": 30, "address": [3, 9, 13, 19, 29, 30, 197, 290, 375, 378], "adjac": 104, "advanc": [1, 18], "advantag": [5, 6, 11, 19], "advertis": 5, "advic": 11, "advis": 7, "advwatr": 1, "affect": 5, "affili": 3, "afford": 6, "after": [0, 1, 2, 3, 6, 11, 19, 375], "afterward": [5, 11], "against": [0, 2, 8, 11, 19, 382], "agre": [19, 88], "agreement": 88, "aim": 3, "aint": 13, "albeit": 11, "algorithm": [0, 6, 18, 19], "alia": [0, 5, 13, 380], "alias": [0, 5, 13], "align": 0, "alik": 3, "all": [0, 2, 5, 6, 11, 16, 17, 18, 19, 88, 190, 192, 311, 331, 342, 375, 382], "allclos": 382, "allevi": [0, 11, 12, 19], "allgath": [16, 18, 19, 88, 382], "allgather_init": 88, "allgatherv": [19, 88], "allgatherv_init": 88, "alloc": [9, 11, 12, 31, 193, 375, 378, 382], "alloc_mem": 193, "allocate_shar": 375, "allow": [0, 3, 4, 6, 8, 11, 12, 16, 17, 18, 19, 88], "allreduc": [11, 19, 88, 382], "allreduce_init": 88, "alltoal": [16, 19, 88, 382], "alltoall_init": 88, "alltoallv": [19, 88], "alltoallv_init": 88, "alltoallw": [0, 19, 88], "alltoallw_init": 88, "almost": 19, "alreadi": [11, 18, 19], "also": [0, 2, 5, 6, 11, 12, 19], "alter": [3, 8], "altern": [0, 2, 3, 5, 11, 12, 19], "although": [11, 19], "alwai": [18, 19], "am": [2, 382], "amod": [190, 382], "among": [6, 18, 19], "amount": [19, 88, 102], "an": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 17, 18, 19, 26, 27, 28, 88, 102, 103, 174, 198, 226, 229, 290, 308, 309, 331, 375, 377, 382], "anaconda": 3, "ancient": 0, "ancillari": 9, "andrea": 0, "andrew": 6, "angskun": 6, "ani": [0, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 19, 33, 35, 39, 88, 102, 205, 230, 235, 249, 250, 252, 253, 266, 267, 282, 283, 285, 293, 295, 304, 311, 330, 342, 375, 382], "annoi": 0, "annot": 0, "anoth": [11, 18, 19, 206], "answer": 11, "anthoni": 6, "any_sourc": [0, 16, 88, 282], "any_tag": [0, 16, 88, 282], "anyth": 0, "api": [0, 3, 12, 19, 382], "append": 11, "appli": [3, 17, 19, 289], "applic": [3, 4, 6, 11, 19, 230], "apply_async": 17, "applyresult": 17, "approach": [3, 6, 11, 16, 19], "appropri": [3, 8, 16, 19], "approx": 11, "approxim": [11, 17], "apt": 5, "ar": [0, 3, 5, 6, 7, 8, 11, 12, 17, 18, 19, 102, 382], "arang": 382, "arbitrari": 17, "arch": 5, "archflag": 0, "architectur": [6, 19], "area": 6, "arg": [11, 12, 17, 88, 102, 174, 190, 205, 206, 226, 230, 282, 289, 311, 331, 332, 375, 382], "argument": [0, 11, 13, 17, 19, 102, 382], "argv": 11, "aris": [3, 7], "around": [5, 17, 19], "arrai": [0, 4, 6, 11, 13, 18, 102], "arriv": [12, 17, 88], "articl": 11, "as_complet": 11, "ascii": 19, "aseeri": [1, 11], "ask": [0, 3, 5], "assert": [0, 11, 12, 16, 18, 375, 382], "assign": [11, 19, 382], "associ": [0, 6, 11, 19, 28, 88, 102, 190, 226, 229, 310, 332, 375], "assum": [0, 3, 12], "asynchron": [0, 1, 11, 17, 19], "asyncresult": 17, "atexit": 12, "atom": [18, 190, 375], "attach": [0, 5, 19, 32, 88, 103, 331, 375], "attach_buff": [88, 331], "attempt": [0, 11], "attitud": 11, "attr": 375, "attribut": [0, 4, 6, 8, 19, 21, 86, 88, 102, 174, 175, 190, 204, 206, 226, 229, 282, 289, 295, 311, 331, 332, 342, 375, 378, 382], "attrval": [88, 102, 375], "author": [0, 4, 382], "autom": 5, "automat": [0, 8, 11, 12, 19, 382], "autonom": 19, "auxiliari": 9, "avail": [0, 2, 5, 6, 11, 16, 17, 19, 331, 382], "avoid": [0, 3, 11, 19, 382], "awar": [0, 2, 3, 4, 5, 11], "b": [3, 11, 382], "back": [11, 19], "backend": [0, 3, 4, 11], "backoff": 11, "backport": 16, "backward": 0, "balanc": 89, "band": [8, 11, 16, 295], "bandwidth": 6, "barrett": 6, "barrier": [11, 19, 88, 382], "barrier_init": 88, "base": [0, 1, 2, 5, 8, 11, 12, 16, 17, 18, 19, 29, 41, 42, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 225, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378, 382], "baseexcept": 17, "basic": [0, 6, 19, 332, 382], "batch": 11, "batteri": 12, "bcast": [0, 16, 19, 88, 382], "bcast_init": 88, "beazlei": 6, "beazley97": 6, "becaus": 6, "becom": [3, 6, 8], "been": [0, 1, 3, 11, 19, 88, 192, 232, 331], "befor": [0, 6, 11, 12, 18, 382], "begin": [18, 19, 375], "begun": 375, "behavior": [0, 3, 8, 11, 12, 19], "being": [5, 17, 19], "below": [0, 11, 18], "bench": [0, 2, 4], "benchmark": 0, "benefit": 11, "beowulf": 6, "besid": [5, 11], "besnard": 3, "better": [0, 17], "between": [0, 6, 15, 17, 19, 30], "beyond": 5, "bin": [0, 382], "binari": [0, 3, 5, 6, 7, 11, 19], "bind": [4, 6, 8, 19], "binomi": 0, "block": [12, 13, 16, 17, 18, 88, 102, 192, 282, 311, 331, 382], "blocklength": 102, "book": [18, 382], "bool": [8, 16, 17, 18, 86, 88, 102, 190, 229, 230, 231, 232, 233, 289, 296, 311, 332, 375, 378], "boolean": [0, 8, 11, 18], "bootup": 11, "borrow": 6, "bosilca": 6, "both": [0, 11, 19], "bothersom": 3, "bottom": [0, 13, 41, 197, 375], "bottomtyp": [13, 36], "bound": [11, 18, 102], "boundari": 19, "boundedsemaphor": 18, "break": 3, "brew": 5, "brian": 6, "bristol": 3, "brito": 3, "broadcast": [4, 16, 19, 88, 382], "broke": 0, "broken": 0, "brokenexecutor": 11, "brown": 3, "bsd": 0, "bsend": [0, 16, 88], "bsend_init": 88, "bsp": 6, "budapest": 6, "buf": [0, 16, 32, 88, 190, 282, 331, 378, 382], "buffer": [0, 4, 8, 11, 13, 16, 19, 31, 32, 88, 103, 192, 193, 197, 224, 289, 295, 307, 331, 375, 380, 382], "buffer_automat": 42, "bufferautomatictyp": 38, "bufspec": [13, 88, 102, 190, 230, 282, 289, 342, 375], "bufspecb": [13, 88, 342], "bufspecv": [13, 88, 342], "bufspecw": [13, 88, 342], "bug": [0, 3], "build": [0, 3, 4, 8, 19], "build_src": 0, "built": [0, 2, 5, 6, 19, 382], "builtin": [0, 4], "bulk": 6, "burn": 12, "busi": 7, "byrn": 3, "byte": [0, 2, 4, 8, 19, 102, 190, 295, 332, 378, 382], "bytearrai": 11, "c": [0, 2, 4, 5, 6, 7, 8, 11, 12, 19, 382], "c99": [0, 382], "ca": 6, "cach": [0, 5], "cai": [0, 13, 19], "call": [0, 6, 11, 12, 17, 18, 19, 88, 102, 174, 190, 200, 202, 206, 226, 232, 233, 289, 311, 331, 375, 377, 382], "call_errhandl": [88, 190, 331, 375], "callabl": [11, 17, 18, 88, 102, 190, 205, 230, 289, 307, 331, 375], "callback": [17, 332], "caller": 19, "can": [0, 2, 3, 5, 6, 8, 11, 12, 16, 17, 19, 88, 382], "cancel": [0, 11, 16, 19, 311, 332], "cancel_fn": 205, "cancel_futur": 11, "candid": 6, "cannot": [11, 16, 19, 382], "capabl": [3, 6, 19], "care": 19, "cart_map": [0, 230], "cartcomm": [0, 19, 230], "cartesian": [19, 86, 102, 230], "case": [0, 3, 6, 8, 11, 12, 16, 19, 88, 382], "cast": 378, "castain": 6, "categori": 17, "caus": [0, 3, 7, 19, 190], "cc": 5, "certain": 16, "certainli": 19, "cf": 11, "cfg": [2, 5, 8], "chang": [3, 4, 6, 8, 11, 19, 382], "chapter": 18, "charact": 102, "charg": 6, "chdir": 11, "check": [0, 2, 5, 11], "checker": 0, "child": [11, 19, 382], "choic": [5, 8], "chop": 11, "chope": 17, "chosen": 5, "chunk": [11, 17], "chunksiz": [11, 17], "cimport": 0, "circul": 3, "circular": 18, "citat": [0, 4], "cite": [1, 11], "cl": [41, 42, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 225, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378], "clash": 19, "class": [0, 4, 6, 11, 13, 16, 17, 18, 19, 21, 26, 27, 28, 41, 42, 86, 88, 102, 104, 174, 175, 190, 198, 199, 204, 205, 206, 225, 226, 229, 230, 282, 289, 295, 296, 308, 310, 311, 331, 332, 342, 375, 378], "classic": 11, "classmethod": [16, 88, 102, 174, 190, 205, 206, 226, 229, 230, 282, 289, 296, 311, 331, 332, 375], "claus": [0, 12], "clean": 12, "cleanup": [0, 88], "clear": [0, 3, 17, 226, 378], "client": [19, 382], "clone": [2, 19, 88], "close": [3, 6, 8, 17, 18, 19, 87, 190, 382], "close_port": 19, "cluster": [4, 6], "cma": 5, "cmake": 5, "cmd": [11, 12], "code": [0, 5, 6, 7, 8, 11, 12, 18, 19, 27, 28, 102, 175, 198, 199, 309, 310], "collect": [0, 4, 5, 6, 11, 14, 16, 190, 296], "color": 88, "com": [3, 4, 5], "combin": [19, 88, 102], "come": 19, "comm": [0, 11, 16, 18, 19, 63, 86, 102, 104, 190, 204, 229, 230, 282, 342, 375, 382], "comm_self": [0, 11, 18, 19, 375, 382], "comm_world": [0, 11, 12, 16, 18, 19, 382], "command": [0, 2, 4, 5, 230, 382], "commit": [102, 382], "commod": 6, "common": [12, 19, 88], "commonli": 19, "commun": [0, 2, 4, 5, 6, 8, 9, 11, 12, 16, 18, 88, 229, 230, 296, 311, 375], "commut": 289, "compani": [0, 3], "companion": 0, "compar": [0, 11, 19, 88, 206, 375], "compare_and_swap": 375, "compat": [0, 5, 6], "compil": [0, 2, 5, 6, 8, 19, 382], "complet": [0, 5, 6, 11, 16, 17, 19, 190, 205, 231, 296, 311, 375, 382], "complex": [0, 11, 19, 102, 382], "compliant": [0, 19, 382], "complic": [11, 19], "compos": 11, "composit": 102, "comprehens": [2, 382], "comput": [0, 1, 6, 8, 18, 19, 382], "compute_pi": 11, "concept": 6, "concret": 11, "concurr": [0, 11], "conda": 4, "condit": [7, 382], "conf": 0, "confer": 6, "config": 0, "configpars": 8, "configur": [0, 2, 4, 5], "confus": [0, 3], "conjunct": [6, 19], "connect": [6, 11, 19, 88, 230, 290], "consecut": 18, "consent": 0, "consequenti": 7, "consid": [2, 3, 12, 17], "consist": 19, "constant": [0, 2, 5, 11, 23, 24, 25, 36, 37, 38, 43, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 75, 91, 92, 93, 94, 95, 96, 97, 102, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 183, 187, 188, 189, 194, 207, 222, 223, 234, 236, 237, 238, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 286, 287, 288, 292, 306, 312, 313, 314, 323, 328, 329, 333, 334, 335, 336, 337, 339, 340, 341, 347, 348, 349, 356, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 371, 372, 373, 374, 382], "constrain": 5, "construct": [19, 382], "constructor": [0, 17], "consum": 6, "consumpt": 11, "contact": [4, 19], "contain": [5, 8, 11, 12, 19], "content": [0, 12, 102, 226], "context": [0, 11, 17, 18, 19, 88, 190, 331, 375], "contig": 382, "contigu": [0, 19, 102, 382], "continu": [0, 11], "contract": 7, "contribut": [3, 382], "contributor": [0, 3, 7], "control": [8, 11, 19, 294], "controversi": 12, "conveni": [0, 3, 5, 12, 19, 102, 382], "convers": 19, "convert": [15, 198], "cooper": 19, "coord": 86, "coordin": [11, 19, 86, 89], "copi": [16, 19, 226, 375], "copy_fn": [88, 102, 375], "copyright": 7, "core": [0, 6, 11], "correct": 5, "correspond": [5, 8, 11], "corrupt": 0, "cosimo": 1, "cost": 16, "count": [0, 13, 16, 18, 88, 102, 332, 382], "cours": [3, 382], "cover": [3, 382], "coverag": 5, "cp": 382, "cpi": [11, 382], "cpu": [11, 16], "craft": 5, "creat": [0, 11, 19, 88, 102, 174, 190, 205, 206, 226, 229, 230, 282, 289, 311, 331, 375], "create_cart": [19, 230], "create_contigu": 102, "create_darrai": 102, "create_dist_graph": 230, "create_dist_graph_adjac": 230, "create_dynam": 375, "create_env": 226, "create_errhandl": [0, 19, 88, 190, 331, 375], "create_f90_complex": 102, "create_f90_integ": 102, "create_f90_r": 102, "create_from_group": [229, 230], "create_from_session_pset": 206, "create_graph": [19, 230], "create_group": [0, 19, 230, 331], "create_hindex": 102, "create_hindexed_block": 102, "create_hvector": 102, "create_index": 102, "create_indexed_block": 102, "create_intercomm": [19, 230], "create_keyv": [88, 102, 375], "create_res": [0, 102], "create_struct": 102, "create_subarrai": 102, "create_vector": [102, 382], "creation": [5, 18, 19], "critic": [6, 18], "cross": [5, 11], "crummei": 18, "cuda": [0, 5, 13, 19, 382], "cupi": [2, 19, 382], "current": [0, 3, 11, 18, 19, 88, 190, 226, 331, 375], "custom": [0, 2, 5, 16, 19], "customiz": 6, "cython": [0, 2, 6], "d": [1, 11, 382], "dalcin": [1, 3, 4, 7, 11], "dalcinl": 4, "damag": 7, "daniel": 6, "darg": 102, "data": [0, 4, 6, 7, 11, 13, 16, 86, 88, 102, 289, 295, 307, 375, 378, 382], "datafil": 382, "datarep": [102, 190, 307], "datatyp": [0, 13, 15, 19, 22, 34, 40, 44, 45, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 90, 98, 99, 100, 101, 177, 178, 179, 180, 181, 182, 184, 185, 186, 190, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 284, 289, 291, 299, 300, 301, 302, 303, 307, 316, 317, 318, 319, 320, 321, 322, 324, 325, 326, 327, 332, 338, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 359, 382], "date": [4, 5], "david": 6, "deadlock": [0, 4, 11, 88], "deal": 11, "dealloc": 0, "dealt": 12, "debian": 5, "debug": 6, "decid": 11, "declar": [0, 6], "decod": [0, 102], "decrement": 18, "dedic": 19, "deem": 3, "def": [11, 382], "default": [0, 2, 5, 8, 11, 12, 18, 19, 226, 382], "defin": [0, 3, 6, 8, 11, 18, 19, 205, 226, 289, 307, 382], "definit": [0, 6, 11], "degre": [6, 230, 342], "deinompi": 0, "deleg": 5, "delet": [19, 88, 102, 190, 226, 375], "delete_attr": [88, 102, 375], "delete_fn": [88, 102, 375], "demand": 6, "demo": 2, "departur": 12, "depend": [3, 19, 88], "deploy": 5, "deprec": 0, "deriv": [5, 7, 11], "describ": [5, 19], "deseri": 295, "design": [6, 8, 19], "desir": 11, "dest": [0, 12, 16, 88, 382], "destin": [0, 88, 230], "destruct": [0, 16, 311], "destweight": 230, "detach": [0, 375], "detach_buff": [88, 331], "detect": 11, "determin": [3, 11, 19, 102, 230], "dev": 5, "develop": [0, 1, 3, 4, 5, 6, 382], "devic": [19, 190], "dict": [8, 11, 102, 205], "dictionari": [0, 8, 382], "did": 19, "differ": [2, 5, 11, 18, 19, 30, 88, 206, 382], "difficult": 3, "dim": [86, 89, 204, 230], "dimens": 86, "dimension": 86, "dir": 5, "direct": [7, 19, 86, 89, 382], "directli": [0, 6, 11, 19, 382], "directori": [2, 5, 8, 11, 12], "disabl": [0, 5], "disclaim": 7, "disconnect": [19, 88, 382], "discov": 19, "discoveri": [0, 382], "discuss": [0, 3, 11, 19], "disjoint": [11, 19], "disk": [11, 19], "disp": [29, 86, 190], "disp_unit": [375, 382], "dispatch": 19, "displ": [0, 13, 382], "displac": [13, 29, 88, 102, 382], "displai": 0, "distgraphcomm": [19, 230], "distinct": 0, "distrib": 102, "distribut": [0, 1, 2, 3, 5, 6, 7, 11, 89, 102, 104, 230], "distributor": [0, 8], "distutil": [0, 5, 8], "dl": 0, "dlopen": 0, "dlpack": [0, 13, 19], "dnf": 5, "do": [3, 5, 8, 11, 16, 19, 282], "docstr": 0, "document": [0, 2, 3, 5, 7, 8, 11, 12, 13, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378], "doe": [0, 5, 6, 17, 382], "doi": [1, 3, 11, 18], "domin": 6, "done": [0, 11], "dongarra": 6, "doss": 6, "dot": 382, "doubl": [0, 382], "doubt": 3, "down": 17, "downstream": 8, "drain": 12, "drive": 6, "drop": [0, 17], "dst": 16, "dtlib": [0, 4, 14, 382], "dtype": [15, 16, 382], "dtypelik": 15, "due": 11, "dump": [11, 295], "dumps_oob": 295, "dup": [19, 88, 102, 206, 226], "dup_with_info": 88, "duplic": [0, 88, 102, 206, 226], "dure": [5, 11], "dx": 11, "dy": 11, "dynam": [0, 2, 4, 6, 9, 11, 12], "e": [0, 2, 3, 4, 6, 11, 12, 19, 382], "each": [11, 17, 18, 19, 88, 378], "eagerli": 11, "eas": 0, "easi": 6, "easiest": [2, 11], "easili": [6, 11], "ecosystem": 3, "edg": [204, 230], "edgar": 6, "edit": [2, 6], "edu": 18, "effect": [0, 6, 8, 12, 19], "effici": [4, 6, 16, 17, 19], "effort": 3, "eijkhout": 382, "eilif": 0, "either": [2, 5, 11, 12, 18, 19, 382], "elabor": 19, "elaps": 377, "eleg": 6, "element": [17, 332, 378, 382], "elementari": 19, "elia": 1, "elif": [12, 382], "ellipsi": 378, "els": [11, 382], "embarrassingli": 11, "embed": 3, "emit": [0, 11], "emploi": 0, "empti": [0, 5, 8, 382], "empty_lik": 382, "enabl": [0, 2, 5, 6, 19], "encapsul": 6, "encod": 8, "encourag": 6, "end": [0, 3, 8, 18, 19, 382], "endors": 7, "energi": 11, "engag": 3, "engin": [1, 6, 382], "enhanc": 0, "enlighten": 0, "enough": [0, 6], "enrich": 6, "ensur": [11, 12, 19, 382], "enter": [12, 18], "entir": [11, 382], "entri": [0, 102], "env": [2, 11, 382], "envelop": 102, "environ": [0, 2, 4, 5, 11, 12, 19, 88, 191, 226, 227, 228, 382], "environment": 4, "epel": 5, "epoch": 375, "equal": 11, "equival": [0, 11, 17, 88], "errcod": 230, "errhandl": [88, 105, 106, 107, 108, 190, 229, 230, 331, 375], "errhandler_fn": [88, 190, 331, 375], "error": [0, 6, 8, 9, 11, 12, 26, 27, 28, 88, 174, 175, 190, 198, 199, 308, 309, 310, 331, 332, 375], "error_callback": 17, "error_class": 175, "error_cod": 175, "error_str": 175, "errorclass": [27, 308], "errorcod": [28, 88, 190, 198, 199, 309, 310, 331, 375], "errors_are_fat": [12, 19], "errors_return": [0, 12, 19], "especi": 19, "establish": [18, 19], "etc": [0, 19], "etyp": 190, "eurompi": 3, "european": 6, "evalu": 18, "even": [3, 7, 11, 12, 19], "event": [0, 7], "eventu": [0, 11], "ever": [5, 6, 11, 19], "everi": 11, "evolv": 6, "ew": [6, 18], "ex": 0, "exactli": 11, "exampl": [2, 4, 5, 8, 382], "exc": 18, "exce": 18, "excel": 6, "except": [0, 3, 4, 8, 11, 17, 19, 21], "excepthook": 11, "exchang": 19, "excl": 206, "exclud": 206, "exclus": 230, "execut": [0, 1, 2, 5, 6, 8, 11, 12, 19, 88, 191, 227, 228, 382], "executor": 11, "exemplari": 7, "exercis": 382, "exhaust": [2, 5], "exist": [0, 3, 11, 19, 88, 103, 206, 226, 331], "exit": [8, 11, 12, 17, 18, 88], "expect": [0, 3, 19, 382], "expens": [11, 16], "experiment": [0, 3, 5, 19], "explain": 11, "explicit": [17, 19, 190], "explicitli": [0, 11, 382], "exploit": [4, 6, 8], "export": [0, 19], "expos": [0, 3, 4, 5, 8, 17, 19, 378], "exposur": 375, "express": [0, 7, 19], "exscan": [19, 230], "exscan_init": 230, "extend": [0, 3, 6, 11], "extens": [0, 1, 5, 6, 8, 19], "extension_nam": 8, "extent": [0, 102, 190, 382], "extent_fn": 307, "extern": [0, 3, 5, 6, 19], "external32": 102, "external_": 5, "extra": [16, 19], "extract": 88, "extrem": 12, "f": 11, "f2py": [4, 88, 102, 174, 190, 206, 226, 282, 289, 311, 331, 332, 375], "f90": [0, 382], "f90exec": 382, "face": 6, "facil": [11, 12, 19], "facilit": 19, "fact": 1, "factor": 88, "factori": 19, "fagg": 6, "fail": [11, 88], "failur": [0, 11, 88], "fair": [0, 4, 18], "fairli": [0, 19], "faith": 3, "fallback": 11, "fals": [0, 8, 11, 18, 88, 102, 229, 230, 289, 375, 378], "fang": 1, "fast": [0, 6, 19, 382], "fast_reduc": [0, 8], "fatal": 8, "favor": [11, 12], "fcomm": 382, "fd": 88, "featur": [0, 5, 8, 11, 12, 18, 19], "februari": 18, "fedora": 5, "feed": 6, "feedback": 0, "feel": [3, 6], "fenc": [19, 375], "fetch": [18, 375], "fetch_and_op": 375, "fft": 3, "fh": 382, "file": [0, 2, 5, 6, 8, 11, 12, 19, 176, 382], "filenam": 190, "filesystem": 12, "filetyp": [190, 382], "fill": 382, "final": [0, 8, 9, 11, 12, 19, 231, 331], "find": [0, 18, 19, 102], "findmpi": 5, "fine": 0, "finest": 8, "finger": 11, "finish": [11, 18], "finit": 19, "first": [0, 3, 5, 11, 19, 226], "fist": 0, "fit": [0, 7], "five": 2, "fix": 0, "flag": [11, 12, 88, 190, 332], "flavor": 375, "flexibl": [6, 19], "float": [0, 11, 17, 376, 377, 382], "float64": 382, "flush": [0, 88, 224, 331, 375], "flush_al": 375, "flush_buff": [88, 331], "flush_loc": 375, "flush_local_al": 375, "focu": [5, 19], "follow": [0, 2, 3, 5, 7, 8, 11, 12, 19], "footprint": [16, 19], "forc": [0, 11, 12], "forg": 5, "form": [6, 7, 230], "format": [11, 19, 378, 382], "former": [0, 382], "forth": 11, "fortran": [0, 6, 8, 19, 382], "fortun": [6, 19], "forum": [3, 6], "found": [2, 6], "four": 5, "fourier": 19, "frac": 11, "fragment": 0, "framework": [2, 5], "free": [0, 11, 16, 18, 19, 88, 102, 174, 190, 193, 206, 226, 282, 289, 311, 331, 375, 382], "free_fn": 205, "free_keyv": [88, 102, 375], "freed": 11, "freeli": 6, "from": [0, 2, 5, 6, 7, 8, 11, 12, 16, 17, 18, 19, 88, 102, 174, 190, 206, 226, 229, 230, 282, 289, 295, 308, 309, 310, 311, 331, 375, 378, 382], "from_numpy_dtyp": 15, "fromaddress": 378, "frombuff": [378, 382], "fromcod": [0, 102], "fromhandl": [0, 88, 102, 174, 190, 206, 226, 282, 289, 311, 331, 375], "full": [2, 5, 6, 16], "fulli": [19, 382], "func": [11, 17], "function": [0, 2, 3, 4, 6, 11, 12, 13, 19, 21, 88, 289, 332, 382], "fundament": 19, "funnel": 8, "further": 19, "furthermor": [11, 19], "futur": [0, 1, 4, 5, 17, 19], "g": [0, 2, 3, 4, 11, 12, 19, 382], "gabriel": 6, "gadeschi": 3, "gain": 19, "gather": [4, 6, 11, 16, 19, 88, 342, 382], "gather_init": 88, "gatherv": [19, 88, 382], "gatherv_init": 88, "gener": [0, 2, 6, 13, 19, 88, 102, 204, 205, 332, 342, 382], "genet": 6, "georg": 6, "get": [0, 5, 11, 17, 19, 88, 102, 190, 197, 226, 331, 332, 375, 382], "get_accumul": 375, "get_amod": 190, "get_atom": 190, "get_attr": [0, 19, 88, 102, 375], "get_byte_offset": 190, "get_cart_rank": 86, "get_comm_work": 11, "get_config": [0, 8], "get_cont": 102, "get_coord": 86, "get_count": 332, "get_current_stream": 382, "get_dim": [86, 204], "get_dist_neighbor": 104, "get_dist_neighbors_count": 104, "get_el": 332, "get_envelop": 102, "get_errhandl": [19, 88, 190, 331, 375], "get_error": 332, "get_error_class": 175, "get_error_cod": 175, "get_error_str": 175, "get_ext": 102, "get_fail": 88, "get_group": [19, 88, 190, 375], "get_includ": 8, "get_info": [88, 190, 331, 375], "get_nam": [88, 102, 375], "get_neighbor": 204, "get_neighbors_count": 204, "get_nkei": 226, "get_nth_pset": 331, "get_nthkei": 226, "get_num_pset": 331, "get_par": [19, 88, 382], "get_posit": 190, "get_position_shar": 190, "get_processor_nam": 19, "get_pset_info": 331, "get_rank": [0, 11, 12, 16, 19, 88, 206, 382], "get_remote_group": 229, "get_remote_s": 229, "get_siz": [0, 11, 12, 16, 19, 88, 102, 190, 206, 382], "get_sourc": [16, 332], "get_statu": [0, 16, 311], "get_status_al": [16, 311], "get_status_ani": 311, "get_status_som": 311, "get_tag": [16, 332], "get_topo": [86, 204], "get_topologi": 88, "get_true_ext": 102, "get_type_ext": 190, "get_value_index": 102, "get_vers": 19, "get_view": [19, 190], "gib": 16, "gil": [0, 11], "gilstat": 0, "git": [2, 5], "github": [3, 5], "given": [11, 199, 251, 296], "global": [0, 11, 19], "gmail": 4, "goal": 6, "good": [3, 6, 7], "govern": 19, "gpu": [0, 2, 4], "gracefulli": 11, "graham": 6, "grain": 0, "grant": 3, "graph": [0, 104, 204, 230], "graph_map": [0, 230], "graphcomm": [0, 19, 230], "graphic": 6, "grid": [19, 102], "gropp": [6, 18], "ground": 19, "group": [0, 6, 11, 18, 19, 88, 190, 195, 196, 229, 230, 290, 331, 375], "group1": 206, "group2": 206, "group_rank": [190, 375], "group_siz": [190, 375], "grow": 5, "gsize": 102, "guarante": [0, 88], "guidelin": [0, 4], "h": [3, 5, 6, 11, 382], "ha": [0, 2, 5, 6, 8, 11, 17, 19, 88, 231, 232, 375], "hack": 0, "had": 0, "half": 19, "hammond": 3, "hand": 3, "handl": [0, 5, 6, 8, 9, 11, 12, 16, 18, 88, 102, 174, 190, 206, 226, 282, 289, 311, 331, 375], "handler": [0, 11, 12, 19, 88, 174, 190, 205, 296, 311, 331, 375], "happen": 11, "hardwar": [0, 3, 6, 19, 200], "harm": [3, 11], "have": [0, 2, 3, 5, 11, 19, 88, 192, 331, 382], "header": [5, 6, 8], "held": 18, "hello": [2, 382], "helloworld": [2, 382], "help": 12, "henc": 382, "here": [8, 17], "heterogen": 19, "hierarchi": 6, "high": [5, 6, 11, 19, 229], "higher": [6, 8, 17], "highest": 382, "highest_protocol": [8, 382], "highli": [11, 12, 19], "highlight": 11, "hinsen": 6, "hinsen97": 6, "hint": [13, 88, 190, 331, 375], "hlr": 382, "hoefler": 18, "hold": [0, 11, 18], "holder": 7, "homebrew": 5, "honor": [0, 11], "hood": 382, "hook": 12, "hope": [3, 11], "host": [0, 5, 11, 19], "hour": 12, "how": [3, 11], "howev": [0, 5, 6, 7, 8, 11, 12, 16, 18, 19], "hp": 0, "hpc": [0, 5], "html": 382, "http": [1, 3, 5, 11, 18], "hungari": 6, "hurt": 16, "huss": 6, "hydra": 11, "i": [0, 2, 3, 4, 5, 7, 8, 11, 12, 16, 17, 18, 19, 88, 102, 190, 205, 289, 378, 382], "i4": 16, "iagre": 88, "iallgath": 88, "iallgatherv": 88, "iallreduc": 88, "ialltoal": 88, "ialltoallv": 88, "ialltoallw": 88, "ian": 0, "ibarri": 88, "ibcast": 88, "ibsend": [16, 88], "idea": 6, "ideal": 6, "identifi": [0, 3, 19], "idiom": 11, "idl": [6, 11], "idup": 88, "idup_with_info": 88, "ieee": [1, 11], "ierr": [175, 382], "iexscan": 230, "iflush_buff": [88, 331], "igath": 88, "igatherv": 88, "ignor": [0, 11], "imag": [5, 6, 11, 19], "imap": 17, "imap_unord": 17, "immedi": 11, "impact": 0, "impi": 5, "impi_rt": 5, "implement": [0, 2, 3, 5, 6, 11, 12, 17, 18, 88, 332, 379, 382], "impli": [7, 19], "implicit": 382, "implicitli": 19, "implor": 3, "impolit": 12, "import": [0, 5, 8, 11, 12, 16, 18, 19, 382], "impos": 19, "improb": [16, 88], "improv": [1, 11], "in_plac": 225, "inbuf": [102, 289], "inc": 6, "incid": 3, "incident": 7, "incl": 206, "includ": [0, 2, 3, 5, 6, 7, 8, 19, 206, 382], "include_dir": [2, 8], "inclus": [19, 230], "incom": [11, 342], "incompat": [0, 6], "incomplet": 6, "inconsequenti": 0, "incr": 18, "increas": [11, 16, 19], "increment": 18, "inde": 19, "indegre": 342, "independ": [11, 19], "index": [0, 3, 4, 5, 102, 204, 230], "indic": [88, 231, 232, 233], "indirect": 7, "individu": [19, 190], "inedg": 342, "ineighbor_allgath": 342, "ineighbor_allgatherv": 342, "ineighbor_alltoal": 342, "ineighbor_alltoallv": 342, "ineighbor_alltoallw": 342, "infam": 16, "infer": 382, "infinit": 11, "influenc": 6, "info": [0, 11, 18, 31, 88, 190, 200, 208, 209, 229, 230, 251, 290, 297, 331, 342, 357, 375], "info_nul": [0, 18, 31, 88, 190, 229, 230, 251, 290, 297, 331, 342, 357, 375], "inform": [0, 2, 3, 5, 8, 11, 86, 104, 200, 204, 379], "inherit": [0, 19], "ini": [5, 8], "init": [0, 8, 19, 232, 233, 331], "init_thread": [19, 233], "initarg": [11, 17], "initi": [0, 8, 9, 11, 12, 17, 18, 227, 228, 296, 311], "inner": 19, "inoutbuf": 289, "inoutedg": 342, "inplac": [2, 13, 88, 230], "inplacetyp": [13, 222], "input": [0, 4, 6, 9, 11, 12, 102, 190], "inquiri": 9, "insensit": [8, 11], "insid": 3, "inspect": 11, "inspir": 18, "instal": [0, 3, 4, 12, 16, 88, 190, 331, 375], "instanc": [0, 11, 17, 19, 230, 382], "instead": [0, 11, 19], "instruct": 5, "int": [8, 11, 16, 17, 18, 23, 24, 25, 26, 27, 28, 29, 30, 31, 37, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 75, 86, 88, 89, 91, 92, 93, 94, 95, 96, 97, 102, 104, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 183, 187, 188, 189, 190, 194, 197, 198, 199, 203, 204, 206, 207, 223, 225, 226, 228, 229, 230, 234, 236, 237, 238, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 286, 287, 288, 289, 292, 294, 296, 298, 306, 307, 308, 309, 310, 311, 312, 313, 314, 323, 328, 329, 331, 332, 333, 334, 335, 336, 337, 339, 340, 341, 347, 348, 349, 356, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 371, 372, 373, 374, 375, 378, 379, 382], "int_": 11, "integ": [0, 11, 17, 19, 102, 379, 382], "integr": [0, 6, 11, 13, 19, 382], "intel": 5, "intellig": 19, "intend": [17, 19], "inter": [11, 229], "interact": [6, 11], "interchang": [0, 13], "intercomm": [16, 19, 88, 230], "intercommun": [11, 16, 19, 88, 229, 230], "interconnect": 88, "interfac": [0, 3, 4, 6, 8, 11, 12, 13, 17, 18, 19, 21, 382], "intern": [0, 6, 18, 382], "internet": 6, "interoper": [0, 19], "interplai": 12, "interpret": [0, 2, 6, 8, 11, 12, 19], "interprocess": 11, "interrupt": 7, "intersect": [14, 19, 206], "interv": 11, "intra": 11, "intracomm": [0, 11, 16, 18, 19, 64, 69, 190, 229, 342, 375], "intracommun": [11, 16, 18, 19, 86, 88, 104, 204, 229, 230, 342], "intric": 5, "introduc": [11, 16], "introduct": 4, "intuit": [6, 19], "invari": 13, "invoc": [11, 88], "invok": [11, 12], "involv": [0, 3, 11, 16, 19, 382], "io": 4, "iprob": [0, 16, 88, 282], "iread": 190, "iread_al": 190, "iread_at": 190, "iread_at_al": 190, "iread_shar": 190, "irecv": [0, 8, 16, 19, 88, 282, 382], "irecv_bufsz": 8, "ireduc": 88, "ireduce_scatt": 88, "ireduce_scatter_block": 88, "irremedi": 12, "irsend": 88, "is_cancel": 332, "is_commut": 289, "is_fin": 19, "is_initi": 19, "is_int": [19, 88], "is_intra": [19, 88], "is_nam": 102, "is_predefin": [102, 289], "is_revok": 88, "is_topo": 88, "iscan": 230, "iscatt": 88, "iscatterv": 88, "isend": [16, 19, 88, 382], "isendrecv": 88, "isendrecv_replac": 88, "ishrink": 88, "isn": 11, "issend": [16, 88], "issu": [0, 2, 3, 6, 11, 12, 17, 19], "istarmap": 17, "istarmap_unord": 17, "item": [19, 226], "item_count": 382, "items": [378, 382], "iter": [11, 17, 18, 226, 295], "itertool": [11, 17, 18], "its": [0, 2, 5, 6, 7, 8, 11, 12, 18, 19], "itself": 6, "iwrit": 190, "iwrite_al": 190, "iwrite_at": 190, "iwrite_at_al": 190, "iwrite_shar": 190, "j": [1, 3, 6, 11], "jack": 6, "jeffrei": 6, "job": 11, "john": 18, "join": [17, 88], "jose": 6, "journal": [1, 6], "jpdc": 1, "jul": 4, "julia_lin": 11, "just": [12, 19], "k": 11, "kambadur": 6, "keep": [0, 5], "kei": [0, 11, 88, 102, 226, 375], "key": [1, 11], "key1": 382, "key2": 382, "keyval": [88, 102, 375], "keyword": [11, 17], "kind": [3, 6, 11, 19], "kler": 1, "kloeckner": 0, "know": 3, "known": [6, 19, 26, 308, 309], "konrad": 6, "kwarg": [11, 17, 205], "kwd": [17, 226], "l": [1, 2, 3, 6, 11, 18], "lack": [5, 11], "lai": 0, "langmor": 0, "languag": [6, 8, 19], "laptop": 12, "larg": [0, 6, 11, 16, 19, 382], "larger": 19, "last": [0, 6, 88], "latenc": [11, 16, 19], "latest": 5, "launch": [2, 11], "layer": 6, "layout": 19, "lb": [0, 102], "lead": [1, 6, 8, 11, 12], "learn": [3, 6, 19], "least": 382, "lederman": 6, "left": 11, "legaci": [0, 5, 11], "len": [11, 382], "length": 19, "lenient": 19, "less": 11, "let": 2, "letter": 382, "level": [0, 2, 5, 6, 8, 11, 17, 19, 294, 298, 332], "liabil": 7, "liabl": 7, "lib": 2, "libmpi": 0, "libmpich": 5, "librari": [0, 2, 3, 5, 6, 8, 11, 12, 16, 17, 19, 201, 298, 382], "library_dir": 2, "licenc": 0, "licens": [0, 4], "lightweight": 0, "like": [0, 2, 3, 5, 6, 11, 13, 15, 16, 17, 19, 378, 382], "limit": [6, 7, 11, 16, 19, 382], "line": [0, 2, 3, 4, 5, 6], "link": [0, 2, 5], "linker": [2, 5], "linux": 4, "lisandro": [4, 7], "list": [0, 2, 5, 7, 11, 13, 16, 17, 18, 19, 86, 88, 89, 102, 104, 204, 206, 226, 230, 295, 296, 311, 332, 342, 378, 382], "liter": [18, 88, 311, 375], "live": 11, "ll": 3, "load": [0, 5, 8, 19, 295], "loads_oob": 295, "local": [0, 2, 11, 19, 289, 375, 382], "local_group": 229, "local_lead": [229, 230], "localhost": [2, 11], "locat": [0, 2, 3, 5, 8, 12, 197], "lock": [0, 11, 18, 19, 375, 382], "lock_al": 375, "lock_exclus": [0, 375], "lock_typ": [0, 375], "log": 0, "logic": [0, 11, 86], "lomdahl": 6, "long": [11, 382], "longer": [0, 19], "look": [0, 5, 6, 382], "lookup": 251, "lookup_nam": 19, "loop": [2, 19], "loss": 7, "low": 19, "lower": [11, 19, 86, 102], "lowercas": [0, 382], "lumsdain": 6, "lusk": [6, 18], "m": [0, 1, 2, 3, 5, 6, 11, 12, 16, 18, 382], "mac": 0, "machin": 19, "maco": 4, "macro": 5, "made": [3, 11, 19], "mai": [0, 3, 5, 7, 8, 11, 12, 88, 382], "main": [0, 2, 3, 6, 8, 11], "maintain": [3, 6], "major": [5, 6, 379], "make": [0, 3, 6, 11, 230], "makefil": 0, "manag": [4, 5, 6, 9, 11, 18], "mandatori": [0, 11], "mani": [0, 5, 6, 11, 19], "manipul": [6, 9], "manual": 8, "map": [0, 11, 17, 226], "map_async": 17, "mapresult": 17, "mark": [6, 296], "marshal": 19, "master": [5, 11, 382], "match": [0, 8, 16, 19, 88, 102, 282, 382], "match_siz": 102, "materi": [7, 382], "math": 11, "mathwork": 6, "matlab": 6, "matrix": 382, "matvec": 382, "max": [16, 19], "max_work": 11, "maxim": 19, "maximum": [0, 11, 18, 19], "maxloc": 0, "maxproc": [230, 382], "maxtasksperchild": 17, "mc": 18, "mcse": 1, "me": 0, "mean": [3, 11], "meanwhil": [11, 12], "measur": [0, 102, 190], "mechan": [0, 3, 11, 12, 19, 88], "meet": 6, "mellor": 18, "mem": [193, 382], "member": [19, 206], "memori": [0, 5, 6, 9, 16, 18, 19, 31, 102, 193, 197, 375, 382], "memoryview": [0, 4, 378], "mention": 6, "merchant": 7, "merg": [19, 229], "meson": 0, "messag": [0, 4, 6, 8, 12, 16, 18, 19, 21, 31, 88, 102, 192, 224, 264, 265, 331, 332, 382], "met": 7, "metadata": 0, "method": [0, 11, 13, 16, 19, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378, 382], "michael": 18, "micro": 379, "microsoft": [0, 5], "midpoint": 11, "min": 16, "mind": [0, 11], "minim": [3, 6], "minimum": [3, 19], "minloc": 0, "minor": [0, 3, 5, 379], "miscellan": [0, 4, 14], "miscellanea": 9, "mismatch": [0, 88], "miss": [0, 2, 5], "mistak": 88, "mit": [6, 18], "mitig": 0, "mitpress": 18, "mod": [11, 12], "mode": [2, 11, 16, 18, 19, 32, 88, 190, 331], "mode_cr": 382, "mode_rdonli": 190, "mode_wronli": 382, "model": [0, 6, 11, 19, 375], "modern": [0, 6, 11, 18], "modif": 7, "modifi": [0, 2, 3, 6, 375], "modul": [0, 3, 5, 6, 8, 11, 12, 13, 15, 16, 17, 18, 19, 382], "modular": 6, "molecular": 6, "more": [0, 6, 11, 12, 16, 17, 18, 19], "moreov": [11, 382], "most": [0, 2, 6, 11, 382], "motiv": [0, 19], "move": 0, "movement": 19, "mpe": 0, "mpi": [0, 1, 2, 3, 5, 8, 11, 12, 13, 14, 15, 16, 17, 18], "mpi4pi": [0, 1, 2, 3, 4, 5, 19, 382], "mpi4py_": 0, "mpi4py_build_backend": 5, "mpi4py_build_configur": 5, "mpi4py_build_mpicc": 5, "mpi4py_build_mpicfg": 5, "mpi4py_build_mpild": 5, "mpi4py_futures_": 0, "mpi4py_futures_backoff": 11, "mpi4py_futures_max_work": 11, "mpi4py_futures_use_pkl5": 11, "mpi4py_pickle_protocol": [8, 382], "mpi4py_pickle_threshold": [0, 8], "mpi4py_rc_error": 8, "mpi4py_rc_fast_reduc": 8, "mpi4py_rc_fin": 8, "mpi4py_rc_initi": 8, "mpi4py_rc_irecv_bufsz": 8, "mpi4py_rc_recv_mprob": 8, "mpi4py_rc_thread": 8, "mpi4py_rc_thread_level": 8, "mpi4py_typemap": 382, "mpi_": 0, "mpi_abort": 12, "mpi_c": 0, "mpi_comm": 382, "mpi_comm_rank": 382, "mpi_comm_s": 382, "mpi_comm_self": 0, "mpi_comm_spawn": 11, "mpi_comm_world": [0, 12], "mpi_fin": [12, 19], "mpi_info": 11, "mpi_init": [0, 19], "mpi_init_thread": [0, 12, 19], "mpi_subvers": 5, "mpi_thread_multipl": 0, "mpi_vers": 5, "mpi_xxx_nul": 0, "mpicc": [2, 5], "mpicfg": [2, 5], "mpich": [2, 3, 5, 6, 11], "mpich2": 0, "mpicommexecutor": 4, "mpidistutil": 0, "mpiexec": [0, 2, 11, 12, 382], "mpiexec_universe_s": 11, "mpif90": 382, "mpild": [2, 5], "mpipoolexecutor": [0, 4, 17], "mprobe": [0, 16, 88], "msmpi": 5, "much": 19, "muller": 0, "multi": 5, "multicor": 11, "multidimension": [19, 102], "multipl": [0, 3, 4, 6, 8, 11, 16, 19, 230], "multiprocess": [0, 17], "multiprocessor": 18, "must": [0, 5, 7, 8, 11, 12, 19, 382], "mutex": 18, "mvapich": 19, "mycompani": 3, "n": [0, 2, 6, 11, 12, 18, 226, 331, 382], "name": [0, 2, 3, 5, 7, 8, 11, 12, 19, 88, 102, 202, 251, 297, 331, 357, 375, 379, 382], "namespac": [0, 3, 11], "nativ": [0, 190, 382], "natur": 6, "nbyte": [378, 382], "ndim": 86, "necessarili": [16, 19], "nedg": 204, "need": [0, 2, 3, 8, 11, 19, 102], "neglig": [7, 19], "neighbor": [204, 342], "neighbor_allgath": 342, "neighbor_allgather_init": 342, "neighbor_allgatherv": 342, "neighbor_allgatherv_init": 342, "neighbor_alltoal": 342, "neighbor_alltoall_init": 342, "neighbor_alltoallv": 342, "neighbor_alltoallv_init": 342, "neighbor_alltoallw": 342, "neighbor_alltoallw_init": 342, "neighborhood": 0, "neither": 7, "nep": 3, "network": 19, "never": [12, 18], "new": [0, 2, 3, 6, 11, 17, 19, 88, 102, 190, 206, 226, 230, 331, 375, 378], "newer": 5, "next": [5, 6, 11, 18, 19], "nightmar": 6, "nneighbor": 204, "nnode": [89, 204], "node": 204, "non": [0, 5, 12, 16, 18, 19, 88, 311, 382], "nonblock": [0, 16, 88, 190, 224, 282, 331, 342], "noncollect": 19, "noncontig": 382, "none": [0, 8, 11, 12, 13, 16, 17, 18, 28, 32, 86, 87, 88, 102, 103, 104, 174, 190, 191, 192, 193, 204, 205, 206, 226, 227, 229, 230, 282, 289, 294, 295, 296, 297, 307, 308, 309, 310, 311, 331, 332, 342, 357, 375, 378, 382], "nopython": [88, 102, 375], "nor": [7, 11], "noreturn": 88, "note": [5, 11, 19, 382], "noth": [16, 282], "notic": [7, 11], "notif": 18, "notifi": [18, 205], "notify_al": 18, "novemb": 18, "now": [0, 6], "np": [16, 382], "np_dtype": 382, "null": [0, 88, 102, 174, 190, 206, 226, 289, 311, 331, 375], "num_to_ack": 88, "num_work": 11, "numba": 19, "number": [3, 5, 6, 11, 13, 17, 18, 19, 86, 88, 102, 203, 204, 206, 226, 229, 331, 332, 342, 379], "numer": [6, 11, 19], "numpi": [0, 2, 3, 4, 6, 8, 11, 15, 16, 382], "numproc": [11, 12], "o": [0, 5, 11, 190, 382], "obj": [0, 16, 88, 205, 295, 378], "object": [0, 4, 6, 8, 11, 13, 15, 16, 17, 22, 33, 34, 35, 39, 40, 44, 45, 63, 64, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 90, 98, 99, 100, 101, 102, 105, 106, 107, 108, 174, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 190, 195, 196, 206, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 226, 235, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 264, 265, 266, 267, 282, 283, 284, 285, 289, 291, 293, 295, 299, 300, 301, 302, 303, 304, 305, 311, 315, 316, 317, 318, 319, 320, 321, 322, 324, 325, 326, 327, 330, 331, 332, 338, 343, 344, 345, 346, 350, 351, 352, 353, 354, 355, 359, 370, 375, 378, 381, 382], "obtain": [0, 19, 200, 201, 202, 203], "obviou": 5, "occasion": [3, 5], "occupi": [19, 102], "occur": 19, "octav": 6, "octob": 6, "od": 6, "offer": [12, 17], "offlin": 5, "offset": [13, 16, 19, 190, 382], "often": [3, 19], "old": [0, 2], "older": [0, 5], "onc": [3, 5, 11, 12, 18], "one": [0, 5, 6, 11, 18, 19, 88, 375, 382], "ones": 5, "onli": [0, 3, 6, 11, 19, 332, 378, 382], "onlin": [5, 382], "oompi": 6, "op": [0, 33, 35, 39, 88, 230, 235, 249, 250, 252, 253, 266, 267, 283, 285, 293, 304, 330, 375, 382], "open": [0, 2, 5, 6, 11, 12, 19, 190, 382], "open_port": 19, "openmp": 382, "openmpi": [3, 5, 6], "oper": [0, 9, 11, 18, 19, 88, 289, 296, 311, 375, 382], "opt": 2, "optim": [3, 6, 19, 230], "option": [2, 4, 6, 11], "order": [0, 2, 11, 17, 19, 102, 378], "order_c": 102, "org": [1, 3, 11, 18, 229, 230], "orient": [4, 6, 8, 19], "origin": [11, 19, 375], "other": [0, 5, 6, 7, 11, 12, 17, 18, 19, 88], "otherwis": [0, 7, 11, 18, 19], "otto": 6, "our": [3, 11], "out": [0, 7, 8, 11, 16, 295], "outbuf": 102, "outdegre": 342, "outedg": 342, "outgo": 342, "outlin": 5, "output": [4, 6, 9, 11], "outsid": [0, 3], "outstand": 375, "over": [6, 19], "overcom": 16, "overhead": [16, 19], "overlap": 19, "overload": 0, "overrid": [8, 12, 19], "overridden": 0, "overview": 4, "own": [2, 3, 18], "p": [1, 11, 102, 382], "p5": 11, "pack": [0, 19, 102], "pack_extern": 102, "pack_external_s": 102, "pack_siz": 102, "packag": [0, 2, 3, 4, 5, 6, 8, 11, 14, 17, 19], "page": [6, 18], "pair": [0, 11, 19, 88, 102, 226], "paper": [3, 18], "paradigm": [6, 19], "parallel": [0, 1, 4, 6, 8, 18, 88, 382], "paramet": [8, 11, 15, 16, 17, 18, 27, 28, 29, 30, 31, 32, 33, 35, 39, 86, 87, 88, 89, 102, 104, 174, 175, 190, 193, 197, 198, 199, 204, 205, 206, 226, 228, 229, 230, 235, 249, 250, 251, 252, 253, 266, 267, 282, 283, 285, 289, 290, 293, 294, 295, 296, 297, 304, 307, 308, 309, 310, 311, 330, 331, 332, 342, 357, 375, 378, 382], "parametr": 0, "parent": [11, 19, 88, 382], "parriv": 296, "pars": [0, 8], "part": [3, 5, 6, 19, 382], "parti": 12, "partial": [0, 5, 11, 296], "particular": [3, 7, 11, 19], "particularli": 19, "partit": [0, 11, 19, 88, 296], "partition_high": 296, "partition_low": 296, "pass": [0, 2, 4, 6, 8, 11, 12, 17, 18, 19, 21, 31, 382], "passiv": 19, "past": 6, "patch": [0, 3], "path": [0, 2, 5, 8, 11, 12], "pathlik": 190, "pattern": [0, 11, 19], "paz": 1, "pc": 6, "pdf": 382, "peer_comm": 230, "pend": [11, 17], "pep": [0, 16, 382], "per": [11, 19, 89], "perfectli": 3, "perform": [1, 2, 5, 6, 11, 12, 16, 19, 375, 382], "perhap": 8, "period": [86, 230], "perl": 6, "permiss": 7, "permit": [6, 7], "persist": [0, 88, 230, 296, 342], "peter": 6, "pgm": 11, "phase": [11, 19], "phrase": 3, "physic": [6, 19], "pi": 382, "pi_parti": 11, "pickl": [0, 8, 11, 16, 19, 382], "picklabl": [4, 6, 11], "pickle5": [11, 16], "pip": [0, 2, 4, 16], "pkl5": [0, 4, 11, 14], "place": [2, 13], "placement": 230, "plai": [0, 4], "platform": [0, 5, 6, 200], "pleas": [1, 3, 5, 11], "plot": 6, "point": [0, 2, 4, 11, 16, 18], "pointer": [19, 190], "polici": [0, 8], "pool": [0, 4, 11, 14], "pop": 226, "popitem": 226, "popular": [6, 11], "port": [6, 19, 87, 251], "port_nam": [0, 87, 230, 297, 357], "portabl": [6, 8, 19, 102], "pose": 11, "posit": [11, 17, 19, 102, 190], "posix": [0, 19], "possibl": [6, 7, 19], "possibli": 2, "post": [19, 375], "pow": 11, "power": 6, "prabhanjan": 6, "practic": [6, 382], "pre": 11, "preadi": 296, "pready_list": 296, "pready_rang": 296, "prealloc": 190, "preciou": 12, "precis": [0, 11, 382], "preclud": 19, "precv_init": 88, "predefin": [0, 5, 19, 88, 102, 206, 226, 289], "predic": 18, "prefer": [2, 5], "preliminari": 0, "prequest": [19, 88, 230, 342], "prerequisit": 4, "present": 6, "press": [6, 18], "prevent": [0, 3, 5, 11, 17, 88], "previou": [0, 3, 16, 18, 190], "previous": [0, 5, 11, 19, 311], "primari": [0, 19], "primit": 19, "print": [3, 11, 12, 88, 102, 375, 382], "printf": 382, "prior": 7, "priori": 19, "privat": 375, "probe": [0, 8, 16, 88, 282], "problem": [3, 12], "problemat": 3, "proce": [11, 12], "proceed": 6, "process": [0, 2, 4, 6, 8, 9, 11, 12, 17, 18, 86, 88, 89, 102, 190, 204, 206, 229, 230, 290, 331, 375], "processor": [4, 6, 8, 11, 19, 200, 202, 377, 382], "procur": 7, "prod": 19, "produc": [11, 18], "product": [5, 7, 382], "profil": [8, 294], "profit": 7, "program": [6, 8, 11, 12, 19, 382], "programfil": 0, "programmat": 8, "progress": 11, "project": [0, 1, 3, 4, 11], "promot": [0, 7], "prompt": 382, "prone": 6, "proper": 11, "properli": 2, "properti": 0, "propos": 3, "protect": [11, 19], "protocol": [8, 13, 16, 19, 295, 382], "proven": 6, "provid": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 18, 19, 32, 88, 298, 331, 382], "proxi": 0, "psend_init": 88, "pset_nam": [206, 331], "psize": 102, "public": [0, 1, 11, 375], "publish": [0, 3, 19, 297], "publish_nam": [0, 19], "pure": 0, "purpos": [0, 6, 7], "push": 17, "put": [19, 375, 382], "pvm": 6, "pxd": 0, "py": [0, 2, 11, 12, 16, 18, 382], "py2f": [88, 102, 174, 190, 206, 226, 282, 289, 311, 331, 332, 375, 382], "py_atexit": [12, 19], "pyarrow": 19, "pyfil": [11, 12], "pympi": 6, "pypar": 6, "pypi": [0, 3, 5, 16], "pytest": 2, "python": [0, 1, 2, 3, 8, 11, 12, 13, 14, 16, 17, 88, 295], "python3": 5, "python_arg": 11, "python_ex": 11, "pytorch": 19, "p\u00e9rach": 3, "qualiti": [6, 11], "queri": [0, 11, 18, 19, 289, 332, 375], "query_fn": 205, "queue": 18, "quickli": [2, 6], "quit": [11, 12], "r": [1, 102], "rabenseifn": 382, "raccumul": 375, "race": 382, "rais": [11, 12, 16, 17, 18, 19], "rajeev": 18, "ralph": 6, "random": [11, 19], "rang": [11, 13, 18, 19, 206, 296, 382], "range_excl": 206, "range_incl": 206, "rank": [0, 11, 12, 16, 18, 19, 86, 88, 102, 190, 204, 206, 375, 382], "rapid": 6, "rather": [6, 11, 19], "rc": [0, 8], "reach": [12, 18], "read": [3, 8, 11, 12, 19, 190, 375, 378, 382], "read_al": 190, "read_all_begin": 190, "read_all_end": 190, "read_at": 190, "read_at_al": 190, "read_at_all_begin": 190, "read_at_all_end": 190, "read_fn": 307, "read_ord": 190, "read_ordered_begin": 190, "read_ordered_end": 190, "read_shar": 190, "readi": [5, 11, 17, 88, 296, 382], "readonli": [0, 378], "real": [0, 102, 382], "realli": [0, 6, 19], "realloc": 19, "reason": 382, "rebuild": [0, 2, 6], "recal": 11, "receiv": [0, 4, 8, 11, 16, 18, 19, 88, 282, 296, 382], "recent": 5, "recip": 5, "recommend": [5, 11, 19], "recompil": [0, 6], "recov": 12, "recurs": [11, 18], "recv": [0, 12, 16, 19, 88, 282, 382], "recv_init": [19, 88], "recv_mprob": 8, "recvbuf": [16, 88, 230, 342, 382], "recvcount": 88, "recvobj": 0, "recvtag": [16, 88], "redistribut": 7, "reduc": [0, 3, 11, 19, 88, 382], "reduce_init": 88, "reduce_loc": [0, 289], "reduce_scatt": [19, 88], "reduce_scatter_block": 88, "reduce_scatter_block_init": 88, "reduce_scatter_init": 88, "reduct": [0, 8, 11, 19, 289], "redundantli": 0, "ref": 6, "refactor": 11, "refer": [0, 4, 6, 12], "refrain": 0, "regard": 19, "regardless": 11, "regener": 0, "region": [19, 375], "regist": [6, 12, 19, 307], "register_datarep": 0, "regular": 88, "reimplement": 16, "reinstal": 5, "rel": [5, 19, 190], "relat": [0, 4, 11, 19], "releas": [3, 5, 6, 8, 16, 18, 19, 378], "relev": [2, 5, 19], "reli": [2, 5, 19], "reliabl": 16, "remain": 11, "remain_dim": 86, "rememb": 5, "remot": [17, 19, 31, 229, 375], "remote_group": 229, "remote_lead": [229, 230], "remote_s": 229, "remov": [0, 5, 88, 103, 226, 308, 309, 310, 331], "renam": 0, "reorder": 230, "repeatedli": [19, 382], "replac": [0, 17], "report": [0, 3], "repositori": 5, "repres": 11, "represent": [0, 19, 102, 307], "reproduc": 7, "republish": 3, "req": 382, "request": [0, 5, 8, 16, 19, 88, 190, 205, 224, 230, 282, 296, 305, 331, 332, 342, 375, 382], "requir": [0, 3, 5, 6, 8, 11, 19, 228], "rerais": 17, "research": 6, "resembl": [4, 6, 12], "resolut": 376, "resort": 88, "resourc": [0, 1, 6, 11, 12, 18, 19], "respect": [8, 11, 19, 382], "rest": 6, "restor": 19, "restrict": 3, "result": [11, 17, 18, 88, 375], "resulthook": 11, "retain": 7, "retriev": [0, 11, 19, 88, 102, 226, 375], "return": [0, 8, 11, 15, 16, 17, 18, 19, 26, 27, 28, 29, 30, 31, 32, 33, 35, 39, 41, 42, 86, 87, 88, 89, 102, 103, 104, 174, 175, 190, 191, 192, 193, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 235, 249, 250, 251, 252, 253, 266, 267, 282, 283, 285, 289, 290, 293, 294, 295, 296, 297, 298, 304, 307, 308, 309, 310, 311, 330, 331, 332, 342, 357, 375, 376, 377, 378, 379, 382], "reus": [0, 3, 5, 6, 19], "revok": 88, "revolv": 19, "rget": 375, "rget_accumul": 375, "rhel": 5, "richard": 6, "right": 11, "ringtest": 2, "rlock": 18, "rma": [0, 4, 18, 19, 375], "rmsg": 16, "robj": 16, "rogowski": [1, 11], "rolf": 382, "room": 0, "root": [0, 11, 16, 18, 88, 230, 382], "routin": [0, 2, 5, 6, 8, 11, 15, 19, 382], "row": 382, "rput": 375, "rreq": 16, "rsend": 88, "rsend_init": 88, "rt": 5, "rubi": 6, "rule": [0, 11, 19], "run": [0, 2, 4, 5, 6, 11, 19], "runpi": [11, 12], "runtim": [0, 4, 5, 11, 382], "runtime_library_dir": 2, "runtimeerror": [11, 16, 18, 19, 175], "runtimewarn": 11, "safe": [0, 11, 19], "safeti": 0, "sahai": 6, "same": [11, 19], "san": 6, "sanction": 3, "save": 16, "sayhello": 382, "scalabl": [0, 18, 19], "scale": 6, "scan": [0, 19, 230], "scan_init": 230, "scanlin": 11, "scatter": [0, 4, 16, 19, 88, 382], "scatter_init": 88, "scatterv": [19, 88, 382], "scatterv_init": 88, "scenario": [5, 19], "schedul": 11, "scheme": 19, "schnetter": 3, "schuchart": 3, "scienc": [1, 6, 382], "scientif": [6, 8], "scikit": 0, "scilab": 6, "scipi": 6, "scott": 18, "script": [2, 4, 5, 6, 11, 12], "search": [2, 5, 8, 11, 12], "second": [2, 11, 17], "section": [0, 2, 3, 5, 8, 18, 19], "see": [2, 3, 5, 11, 16, 19, 332, 382], "seek": 190, "seek_set": 190, "seek_shar": 190, "seem": 3, "segfault": 0, "segment": [19, 375], "seldom": 11, "select": [5, 19], "self": [0, 18, 41, 42, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 225, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378, 382], "semant": [0, 6, 8, 18, 19], "send": [0, 4, 11, 12, 16, 18, 19, 32, 88, 331, 382], "send_init": [19, 88], "sendbuf": [88, 230, 342, 382], "sendobj": [0, 16, 88, 230, 342], "sendrecv": [16, 19, 86, 88], "sendrecv_replac": 88, "sendtag": [16, 88], "sent": 382, "separ": [5, 11, 17], "septemb": [3, 6], "sequenc": [8, 11, 13, 16, 86, 88, 89, 102, 206, 226, 230, 296, 311, 382], "sequenti": [11, 19], "seri": [0, 11], "serial": [0, 8, 11, 19, 295], "serv": 11, "server": [19, 382], "servic": [7, 11, 19, 251, 297, 357], "service_nam": [0, 251, 297, 357], "session": [0, 206, 315], "set": [0, 2, 3, 5, 17, 18, 19, 88, 102, 190, 206, 226, 331, 332, 375, 382], "set_atom": 190, "set_attr": [88, 102, 375], "set_cancel": 332, "set_el": 332, "set_errhandl": [19, 88, 190, 331, 375], "set_error": 332, "set_info": [88, 190, 375], "set_nam": [88, 102, 375], "set_siz": 190, "set_sourc": 332, "set_tag": 332, "set_view": [19, 190, 382], "setup": [0, 2], "setuptool": [0, 2], "sever": [11, 19, 88], "shall": 7, "shape": [378, 382], "share": [0, 2, 3, 11, 18, 19, 190], "shared_queri": 375, "shell": 0, "shift": 86, "short": 11, "shorter": 5, "should": [2, 8, 11, 12, 18, 19, 332], "show": 382, "shrink": 88, "shutdown": [0, 11], "sicortex": 0, "side": [0, 4, 6, 9, 11, 18, 375], "sign": [0, 382], "signal": [0, 6, 11, 18], "signatur": 0, "signific": [1, 11], "significantli": [11, 19], "silent": 19, "similar": [6, 11], "similarli": [5, 19], "simpl": [0, 6, 11, 12, 19], "simplest": 6, "simpli": [0, 2, 382], "simplifi": [0, 6], "simul": 6, "simultan": 19, "sinc": [3, 6, 8, 16], "singl": [0, 6, 8, 11, 16, 19, 230, 382], "site": [0, 3], "situat": [6, 88], "size": [0, 8, 11, 13, 16, 17, 18, 31, 88, 102, 190, 206, 229, 375, 378, 382], "skjellum": 6, "sleep": 11, "slide": 382, "slurm": 0, "small": [6, 16], "smp": 6, "snippet": 12, "snir": 6, "sobj": 16, "socket": 88, "softwar": [2, 5, 6, 7, 19], "solut": 382, "solver": 6, "some": [0, 2, 5, 6, 11, 18, 19, 311], "sometim": 3, "somewhat": 18, "soon": 11, "sort": 18, "sourc": [0, 2, 5, 6, 7, 12, 16, 88, 230, 282, 332, 382], "sourceweight": 230, "space": [102, 190], "spawn": [11, 19, 230, 382], "spawn_multipl": [0, 230], "special": [0, 2, 5, 6, 7, 19], "specif": [0, 3, 4, 5, 6, 7, 8, 11, 13, 19, 88, 382], "specifi": [0, 2, 5, 8, 11, 17, 19, 102, 382], "speed": [0, 6, 382], "spell": 0, "sphinx": 2, "spin": [2, 11], "spinlock": 18, "split": [11, 19, 88, 190], "split_typ": 88, "spmd": 11, "squyr": 6, "src": 16, "sreq": 16, "ssend": [0, 16, 88], "ssend_init": 88, "stack": 5, "standalon": 5, "standard": [0, 3, 4, 5, 6, 8, 11, 12, 13, 16, 17, 19, 88, 203, 382], "starmap": [11, 17], "starmap_async": 17, "start": [2, 6, 11, 13, 18, 19, 102, 190, 205, 296, 375, 382], "startal": 296, "starv": 11, "state": [0, 12, 332], "statement": [0, 11], "static": [19, 41, 42, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 225, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378], "statu": [0, 1, 12, 16, 88, 190, 282, 311], "status": [16, 311], "std1": 6, "std2": 6, "stdin": [11, 12], "step": [11, 16, 18], "steve": 6, "steven": 6, "still": [0, 11], "stop": 17, "storag": [19, 190], "store": [12, 19, 88, 102, 226, 375], "storti": 1, "str": [8, 13, 17, 18, 28, 87, 88, 102, 175, 190, 199, 201, 202, 205, 206, 226, 229, 230, 251, 290, 297, 307, 331, 357, 375, 378, 379], "straightforward": 5, "stream": [16, 19, 295], "strict": 7, "stride": [19, 102], "string": [0, 5, 8, 11, 12, 19, 28, 102, 175, 199, 201, 310, 378, 379], "stringtag": [229, 230], "strongli": 6, "struct": 102, "structur": [6, 19], "stub": 0, "studi": [6, 382], "style": [5, 8, 19], "sub": 86, "subarrai": 102, "subclass": [11, 16, 19], "subcommand": 2, "subject": [0, 19], "submiss": 11, "submit": [11, 17], "submodul": 3, "subroutin": 382, "subset": 2, "subsiz": 102, "substant": 3, "substitut": 7, "subvers": 19, "success": [5, 11, 17, 175], "sudo": 5, "suffici": 382, "suggest": [3, 11], "suit": 6, "suitabl": 6, "sum": [19, 29, 88, 230, 375, 382], "sum_": 11, "summar": [0, 11], "summari": [8, 13, 86, 88, 102, 104, 174, 175, 190, 204, 205, 206, 226, 229, 230, 282, 289, 295, 296, 311, 331, 332, 342, 375, 378], "supercomput": [4, 6, 11, 12], "supplement": 19, "support": [0, 2, 3, 4, 5, 6, 8, 11, 16, 17, 298, 382], "supportsbuff": 13, "supportscai": 13, "supportsdlpack": 13, "suspend": 11, "swap": 375, "swig": [0, 4, 6], "switch": [8, 11], "sy": [11, 12, 382], "symbol": [0, 5], "sync": [0, 4, 14, 190, 375], "synchron": [0, 6, 11, 16, 18, 19, 88, 375, 382], "synchronis": 0, "syntax": [6, 8, 19], "system": [1, 2, 3, 5, 6, 8, 11, 18, 19], "t": [11, 13, 17, 18, 382], "tacc": 382, "tag": [0, 3, 12, 16, 18, 19, 88, 230, 282, 332, 382], "tag_ub": 0, "take": [11, 19], "talk": 3, "tarbal": 5, "target": [0, 11, 13, 19, 375, 382], "target_disp": 375, "target_rank": [375, 382], "targetspec": [13, 375], "task": [0, 1, 2, 4, 5, 6, 17], "tcl": 6, "team": 11, "tediou": 12, "tell": 11, "termin": [11, 12, 17, 88, 191], "test": [0, 4, 16, 18, 19, 88, 282, 296, 311, 332, 375, 382], "testal": [16, 311], "testani": 311, "testsom": [0, 311], "th": [226, 331], "thakur": 18, "than": [0, 6, 11, 16, 17, 18], "thank": 0, "thara": 6, "thei": [0, 3, 5, 11, 18, 19, 382], "them": [11, 17, 19, 382], "theori": [7, 11], "therefor": [5, 19], "thi": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 16, 17, 18, 19, 88, 102, 206, 233, 332, 375, 382], "thin": 17, "third": 12, "thirti": 19, "those": [6, 206], "thread": [0, 8, 11, 17, 18, 233, 298], "thread_funnel": 11, "thread_level": 8, "thread_multipl": [11, 228], "thread_seri": 11, "thread_singl": 11, "threadpool": 17, "threadpoolexecutor": 11, "three": 19, "threshold": [8, 295], "through": [0, 11, 19], "throughput": 11, "thu": [0, 11, 12, 16, 19, 382], "time": [0, 2, 3, 5, 6, 8, 11, 12, 377, 382], "timeout": [11, 17], "timeouterror": [11, 17], "timer": 9, "timothi": 6, "tk": 6, "to_numpy_dtyp": [15, 382], "tobyt": 378, "tocod": [0, 102], "todai": 6, "togeth": 6, "tomemori": [0, 375], "took": 18, "tool": [2, 5, 6], "toolkit": [5, 6], "top": [2, 5, 6, 8, 19, 332], "topo": [86, 204], "topocomm": [86, 104, 204], "topologi": [0, 6, 19, 86, 88, 104, 204, 230, 342], "toreadonli": 378, "torsten": 18, "tort": 7, "total": [3, 19], "tpd": [1, 11], "traceback": [0, 12], "track": 18, "trademark": 6, "tradit": [11, 16, 19], "tradition": 6, "transact": [1, 11, 18], "transfer": [19, 190], "transform": 19, "translat": [0, 12, 19, 86, 206], "translate_rank": [0, 206], "transmiss": 19, "transmit": [88, 192, 331, 382], "transmitt": 19, "tree": [0, 8], "trigger": [0, 5], "troublesom": 3, "true": [0, 8, 11, 18, 19, 88, 102, 311, 375], "true_ext": 102, "true_lb": 102, "true_ub": 102, "try": [12, 18, 382], "tupl": [0, 11, 13, 16, 17, 19, 86, 88, 102, 104, 190, 203, 204, 205, 206, 226, 295, 311, 375, 378, 379, 382], "turn": 19, "tutori": [4, 19], "tweak": [0, 3], "two": [5, 11, 12, 19, 88, 206], "type": [0, 2, 4, 6, 8, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 382], "typechar": [0, 102], "typeclass": 102, "typecod": [0, 18], "typemap": 0, "typespec": 13, "typestr": [0, 102], "typevar": 13, "typic": [3, 6, 18, 19], "typo": 0, "u": [3, 13], "uam": 18, "ub": [0, 102], "ubuntu": 5, "ucx": 5, "uintptr_t": 0, "uk": 3, "ulfm": 0, "ultim": 3, "unaccept": [3, 19], "unaffili": 0, "unattend": 12, "unavoid": 19, "unbound": 18, "uncondition": 11, "under": [0, 3, 5, 8, 11, 382], "underli": [18, 19, 378, 379, 382], "understand": 3, "unfortun": [0, 12], "unhandl": [0, 11, 12], "union": [19, 206], "uniqu": 19, "unit": [2, 190], "unittest": 2, "univers": 11, "unlock": [19, 375, 382], "unlock_al": 375, "unnatur": 11, "unord": 11, "unpack": [19, 102], "unpack_extern": 102, "unpickl": [11, 16, 19, 295], "unpublish": 357, "unpublish_nam": [0, 19], "unrecover": 88, "unsign": [0, 382], "until": [11, 17, 18, 19, 88, 192, 331], "up": [5, 6, 11, 12, 18, 19], "upcom": 0, "updat": [0, 1, 5, 11, 19, 190, 226], "upon": [11, 19], "upper": [102, 382], "uppercas": 0, "us": [0, 1, 2, 3, 4, 6, 7, 8, 11, 12, 13, 16, 17, 18, 19, 88, 102, 190, 290, 332, 375, 382], "usag": [5, 11, 19], "use_pkl5": 11, "user": [0, 3, 5, 6, 8, 11, 19, 32, 88, 205, 289, 307, 331, 382], "userwarn": 17, "usiz": 11, "usr": [2, 382], "usual": [3, 6, 11], "utf": 8, "util": [0, 4, 9, 382], "v": 13, "v10": 0, "v60": 0, "valid": 0, "valu": [0, 8, 11, 17, 18, 19, 88, 102, 190, 226, 375, 382], "valueerror": [11, 17, 18], "variabl": [0, 2, 4, 5, 6, 11, 382], "variant": [0, 19], "varieti": [6, 8], "variou": [0, 13, 88], "vector": [13, 19, 88, 102, 342, 382], "vendor": [5, 6, 11], "vendor_mpi": [2, 3], "veri": [3, 6, 11, 382], "version": [0, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 88, 201, 203, 295, 378, 379, 382], "via": [2, 5, 11, 19], "victor": 382, "view": [19, 190], "virtual": 19, "vishal": 6, "visibl": 19, "void": 382, "volum": 6, "w": [6, 11], "wa": [0, 19, 332], "wai": [0, 2, 7, 11, 12, 382], "wait": [0, 11, 12, 16, 17, 18, 19, 311, 375, 382], "wait_for": 18, "waital": [16, 311], "waitani": 311, "waitsom": [0, 311], "wake": 18, "walker": 6, "want": 5, "warn": [0, 11, 17], "warnopt": 11, "warranti": 7, "wast": 3, "water": 1, "wb": 11, "wchar": 0, "wdir": 11, "we": [3, 6, 11, 19], "weak": 0, "weight": 230, "welcom": 382, "well": [0, 4, 5, 6, 11, 19, 382], "were": [0, 6, 11], "what": [3, 4], "wheel": [0, 3, 5], "when": [0, 3, 5, 8, 11, 12, 17, 18, 19, 88, 332], "whenc": 190, "where": [5, 11, 19, 88, 382], "whether": [3, 7, 8, 11, 17, 18, 19, 88, 231, 232, 233, 375], "which": [0, 3, 6, 8, 11, 12, 16, 17, 18, 19, 88, 382], "while": [0, 3, 5, 11, 19], "who": 3, "whole": [6, 11, 12], "wide": [5, 6, 8, 19], "widespread": 6, "william": [6, 18], "willing": 11, "win": [0, 19, 370, 382], "win_siz": 382, "window": [0, 4, 19, 375, 382], "wish": 3, "within": [0, 2, 5, 8, 11, 12, 13, 14, 16, 17, 18, 19, 382], "without": [0, 6, 7, 12, 17, 19], "woken": 18, "won": 11, "woodal": 6, "work": [0, 2, 3, 5, 6, 11, 19], "workaround": 0, "worker": [0, 11, 17, 382], "workload": 11, "workstat": [4, 6], "world": [0, 2, 19, 382], "world_rank": 0, "world_siz": 0, "would": [3, 6, 11], "wrap": [4, 6], "wrapper": [0, 2, 5, 16, 17], "write": [2, 3, 6, 8, 11, 19, 190, 375, 382], "write_al": [190, 382], "write_all_begin": 190, "write_all_end": 190, "write_at": 190, "write_at_al": [190, 382], "write_at_all_begin": 190, "write_at_all_end": 190, "write_fn": 307, "write_ord": 190, "write_ordered_begin": 190, "write_ordered_end": 190, "write_shar": 190, "written": [6, 7, 19], "wtick": 19, "wtime": [19, 376], "x": [0, 5, 11, 33, 35, 39, 235, 249, 250, 252, 253, 266, 267, 283, 285, 293, 304, 330, 382], "x0": 11, "x1": 11, "xg": 382, "xpmem": 5, "xyz": 382, "y": [0, 1, 5, 11, 33, 35, 39, 235, 249, 250, 252, 253, 266, 267, 283, 285, 293, 304, 330, 382], "y0": 11, "y1": 11, "yaml": [8, 11], "year": [1, 6], "yet": [11, 18], "yield": 11, "you": [0, 2, 3, 5, 11, 19, 382], "your": [2, 3, 5, 8, 11, 12, 382], "z": 11, "zero": [12, 16, 18, 19, 382], "zerodivisionerror": 12, "zhou": 3, "zip": 11, "zipfil": [11, 12]}, "titles": ["CHANGES", "Citation", "Development", "Guidelines", "MPI for Python", "Installation", "Introduction", "LICENSE", "mpi4py", "mpi4py.MPI", "mpi4py.bench", "mpi4py.futures", "mpi4py.run", "mpi4py.typing", "mpi4py.util", "mpi4py.util.dtlib", "mpi4py.util.pkl5", "mpi4py.util.pool", "mpi4py.util.sync", "Overview", "Reference", "mpi4py.MPI", "mpi4py.MPI.AINT", "mpi4py.MPI.ANY_SOURCE", "mpi4py.MPI.ANY_TAG", "mpi4py.MPI.APPNUM", "mpi4py.MPI.Add_error_class", "mpi4py.MPI.Add_error_code", "mpi4py.MPI.Add_error_string", "mpi4py.MPI.Aint_add", "mpi4py.MPI.Aint_diff", "mpi4py.MPI.Alloc_mem", "mpi4py.MPI.Attach_buffer", "mpi4py.MPI.BAND", "mpi4py.MPI.BOOL", "mpi4py.MPI.BOR", "mpi4py.MPI.BOTTOM", "mpi4py.MPI.BSEND_OVERHEAD", "mpi4py.MPI.BUFFER_AUTOMATIC", "mpi4py.MPI.BXOR", "mpi4py.MPI.BYTE", "mpi4py.MPI.BottomType", "mpi4py.MPI.BufferAutomaticType", "mpi4py.MPI.CART", "mpi4py.MPI.CHAR", "mpi4py.MPI.CHARACTER", "mpi4py.MPI.COMBINER_CONTIGUOUS", "mpi4py.MPI.COMBINER_DARRAY", "mpi4py.MPI.COMBINER_DUP", "mpi4py.MPI.COMBINER_F90_COMPLEX", "mpi4py.MPI.COMBINER_F90_INTEGER", "mpi4py.MPI.COMBINER_F90_REAL", "mpi4py.MPI.COMBINER_HINDEXED", "mpi4py.MPI.COMBINER_HINDEXED_BLOCK", "mpi4py.MPI.COMBINER_HVECTOR", "mpi4py.MPI.COMBINER_INDEXED", "mpi4py.MPI.COMBINER_INDEXED_BLOCK", "mpi4py.MPI.COMBINER_NAMED", "mpi4py.MPI.COMBINER_RESIZED", "mpi4py.MPI.COMBINER_STRUCT", "mpi4py.MPI.COMBINER_SUBARRAY", "mpi4py.MPI.COMBINER_VALUE_INDEX", "mpi4py.MPI.COMBINER_VECTOR", "mpi4py.MPI.COMM_NULL", "mpi4py.MPI.COMM_SELF", "mpi4py.MPI.COMM_TYPE_HW_GUIDED", "mpi4py.MPI.COMM_TYPE_HW_UNGUIDED", "mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED", "mpi4py.MPI.COMM_TYPE_SHARED", "mpi4py.MPI.COMM_WORLD", "mpi4py.MPI.COMPLEX", "mpi4py.MPI.COMPLEX16", "mpi4py.MPI.COMPLEX32", "mpi4py.MPI.COMPLEX4", "mpi4py.MPI.COMPLEX8", "mpi4py.MPI.CONGRUENT", "mpi4py.MPI.COUNT", "mpi4py.MPI.CXX_BOOL", "mpi4py.MPI.CXX_DOUBLE_COMPLEX", "mpi4py.MPI.CXX_FLOAT_COMPLEX", "mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX", "mpi4py.MPI.C_BOOL", "mpi4py.MPI.C_COMPLEX", "mpi4py.MPI.C_DOUBLE_COMPLEX", "mpi4py.MPI.C_FLOAT_COMPLEX", "mpi4py.MPI.C_LONG_DOUBLE_COMPLEX", "mpi4py.MPI.Cartcomm", "mpi4py.MPI.Close_port", "mpi4py.MPI.Comm", "mpi4py.MPI.Compute_dims", "mpi4py.MPI.DATATYPE_NULL", "mpi4py.MPI.DISPLACEMENT_CURRENT", "mpi4py.MPI.DISP_CUR", "mpi4py.MPI.DISTRIBUTE_BLOCK", "mpi4py.MPI.DISTRIBUTE_CYCLIC", "mpi4py.MPI.DISTRIBUTE_DFLT_DARG", "mpi4py.MPI.DISTRIBUTE_NONE", "mpi4py.MPI.DIST_GRAPH", "mpi4py.MPI.DOUBLE", "mpi4py.MPI.DOUBLE_COMPLEX", "mpi4py.MPI.DOUBLE_INT", "mpi4py.MPI.DOUBLE_PRECISION", "mpi4py.MPI.Datatype", "mpi4py.MPI.Detach_buffer", "mpi4py.MPI.Distgraphcomm", "mpi4py.MPI.ERRHANDLER_NULL", "mpi4py.MPI.ERRORS_ABORT", "mpi4py.MPI.ERRORS_ARE_FATAL", "mpi4py.MPI.ERRORS_RETURN", "mpi4py.MPI.ERR_ACCESS", "mpi4py.MPI.ERR_AMODE", "mpi4py.MPI.ERR_ARG", "mpi4py.MPI.ERR_ASSERT", "mpi4py.MPI.ERR_BAD_FILE", "mpi4py.MPI.ERR_BASE", "mpi4py.MPI.ERR_BUFFER", "mpi4py.MPI.ERR_COMM", "mpi4py.MPI.ERR_CONVERSION", "mpi4py.MPI.ERR_COUNT", "mpi4py.MPI.ERR_DIMS", "mpi4py.MPI.ERR_DISP", "mpi4py.MPI.ERR_DUP_DATAREP", "mpi4py.MPI.ERR_ERRHANDLER", "mpi4py.MPI.ERR_FILE", "mpi4py.MPI.ERR_FILE_EXISTS", "mpi4py.MPI.ERR_FILE_IN_USE", "mpi4py.MPI.ERR_GROUP", "mpi4py.MPI.ERR_INFO", "mpi4py.MPI.ERR_INFO_KEY", "mpi4py.MPI.ERR_INFO_NOKEY", "mpi4py.MPI.ERR_INFO_VALUE", "mpi4py.MPI.ERR_INTERN", "mpi4py.MPI.ERR_IN_STATUS", "mpi4py.MPI.ERR_IO", "mpi4py.MPI.ERR_KEYVAL", "mpi4py.MPI.ERR_LASTCODE", "mpi4py.MPI.ERR_LOCKTYPE", "mpi4py.MPI.ERR_NAME", "mpi4py.MPI.ERR_NOT_SAME", "mpi4py.MPI.ERR_NO_MEM", "mpi4py.MPI.ERR_NO_SPACE", "mpi4py.MPI.ERR_NO_SUCH_FILE", "mpi4py.MPI.ERR_OP", "mpi4py.MPI.ERR_OTHER", "mpi4py.MPI.ERR_PENDING", "mpi4py.MPI.ERR_PORT", "mpi4py.MPI.ERR_PROC_ABORTED", "mpi4py.MPI.ERR_PROC_FAILED", "mpi4py.MPI.ERR_PROC_FAILED_PENDING", "mpi4py.MPI.ERR_QUOTA", "mpi4py.MPI.ERR_RANK", "mpi4py.MPI.ERR_READ_ONLY", "mpi4py.MPI.ERR_REQUEST", "mpi4py.MPI.ERR_REVOKED", "mpi4py.MPI.ERR_RMA_ATTACH", "mpi4py.MPI.ERR_RMA_CONFLICT", "mpi4py.MPI.ERR_RMA_FLAVOR", "mpi4py.MPI.ERR_RMA_RANGE", "mpi4py.MPI.ERR_RMA_SHARED", "mpi4py.MPI.ERR_RMA_SYNC", "mpi4py.MPI.ERR_ROOT", "mpi4py.MPI.ERR_SERVICE", "mpi4py.MPI.ERR_SESSION", "mpi4py.MPI.ERR_SIZE", "mpi4py.MPI.ERR_SPAWN", "mpi4py.MPI.ERR_TAG", "mpi4py.MPI.ERR_TOPOLOGY", "mpi4py.MPI.ERR_TRUNCATE", "mpi4py.MPI.ERR_TYPE", "mpi4py.MPI.ERR_UNKNOWN", "mpi4py.MPI.ERR_UNSUPPORTED_DATAREP", "mpi4py.MPI.ERR_UNSUPPORTED_OPERATION", "mpi4py.MPI.ERR_VALUE_TOO_LARGE", "mpi4py.MPI.ERR_WIN", "mpi4py.MPI.Errhandler", "mpi4py.MPI.Exception", "mpi4py.MPI.FILE_NULL", "mpi4py.MPI.FLOAT", "mpi4py.MPI.FLOAT_INT", "mpi4py.MPI.F_BOOL", "mpi4py.MPI.F_COMPLEX", "mpi4py.MPI.F_DOUBLE", "mpi4py.MPI.F_DOUBLE_COMPLEX", "mpi4py.MPI.F_ERROR", "mpi4py.MPI.F_FLOAT", "mpi4py.MPI.F_FLOAT_COMPLEX", "mpi4py.MPI.F_INT", "mpi4py.MPI.F_SOURCE", "mpi4py.MPI.F_STATUS_SIZE", "mpi4py.MPI.F_TAG", "mpi4py.MPI.File", "mpi4py.MPI.Finalize", "mpi4py.MPI.Flush_buffer", "mpi4py.MPI.Free_mem", "mpi4py.MPI.GRAPH", "mpi4py.MPI.GROUP_EMPTY", "mpi4py.MPI.GROUP_NULL", "mpi4py.MPI.Get_address", "mpi4py.MPI.Get_error_class", "mpi4py.MPI.Get_error_string", "mpi4py.MPI.Get_hw_resource_info", "mpi4py.MPI.Get_library_version", "mpi4py.MPI.Get_processor_name", "mpi4py.MPI.Get_version", "mpi4py.MPI.Graphcomm", "mpi4py.MPI.Grequest", "mpi4py.MPI.Group", "mpi4py.MPI.IDENT", "mpi4py.MPI.INFO_ENV", "mpi4py.MPI.INFO_NULL", "mpi4py.MPI.INT", "mpi4py.MPI.INT16_T", "mpi4py.MPI.INT32_T", "mpi4py.MPI.INT64_T", "mpi4py.MPI.INT8_T", "mpi4py.MPI.INTEGER", "mpi4py.MPI.INTEGER1", "mpi4py.MPI.INTEGER16", "mpi4py.MPI.INTEGER2", "mpi4py.MPI.INTEGER4", "mpi4py.MPI.INTEGER8", "mpi4py.MPI.INT_INT", "mpi4py.MPI.IN_PLACE", "mpi4py.MPI.IO", "mpi4py.MPI.Iflush_buffer", "mpi4py.MPI.InPlaceType", "mpi4py.MPI.Info", "mpi4py.MPI.Init", "mpi4py.MPI.Init_thread", "mpi4py.MPI.Intercomm", "mpi4py.MPI.Intracomm", "mpi4py.MPI.Is_finalized", "mpi4py.MPI.Is_initialized", "mpi4py.MPI.Is_thread_main", "mpi4py.MPI.KEYVAL_INVALID", "mpi4py.MPI.LAND", "mpi4py.MPI.LASTUSEDCODE", "mpi4py.MPI.LOCK_EXCLUSIVE", "mpi4py.MPI.LOCK_SHARED", "mpi4py.MPI.LOGICAL", "mpi4py.MPI.LOGICAL1", "mpi4py.MPI.LOGICAL2", "mpi4py.MPI.LOGICAL4", "mpi4py.MPI.LOGICAL8", "mpi4py.MPI.LONG", "mpi4py.MPI.LONG_DOUBLE", "mpi4py.MPI.LONG_DOUBLE_INT", "mpi4py.MPI.LONG_INT", "mpi4py.MPI.LONG_LONG", "mpi4py.MPI.LOR", "mpi4py.MPI.LXOR", "mpi4py.MPI.Lookup_name", "mpi4py.MPI.MAX", "mpi4py.MPI.MAXLOC", "mpi4py.MPI.MAX_DATAREP_STRING", "mpi4py.MPI.MAX_ERROR_STRING", "mpi4py.MPI.MAX_INFO_KEY", "mpi4py.MPI.MAX_INFO_VAL", "mpi4py.MPI.MAX_LIBRARY_VERSION_STRING", "mpi4py.MPI.MAX_OBJECT_NAME", "mpi4py.MPI.MAX_PORT_NAME", "mpi4py.MPI.MAX_PROCESSOR_NAME", "mpi4py.MPI.MAX_PSET_NAME_LEN", "mpi4py.MPI.MAX_STRINGTAG_LEN", "mpi4py.MPI.MESSAGE_NO_PROC", "mpi4py.MPI.MESSAGE_NULL", "mpi4py.MPI.MIN", "mpi4py.MPI.MINLOC", "mpi4py.MPI.MODE_APPEND", "mpi4py.MPI.MODE_CREATE", "mpi4py.MPI.MODE_DELETE_ON_CLOSE", "mpi4py.MPI.MODE_EXCL", "mpi4py.MPI.MODE_NOCHECK", "mpi4py.MPI.MODE_NOPRECEDE", "mpi4py.MPI.MODE_NOPUT", "mpi4py.MPI.MODE_NOSTORE", "mpi4py.MPI.MODE_NOSUCCEED", "mpi4py.MPI.MODE_RDONLY", "mpi4py.MPI.MODE_RDWR", "mpi4py.MPI.MODE_SEQUENTIAL", "mpi4py.MPI.MODE_UNIQUE_OPEN", "mpi4py.MPI.MODE_WRONLY", "mpi4py.MPI.Message", "mpi4py.MPI.NO_OP", "mpi4py.MPI.OFFSET", "mpi4py.MPI.OP_NULL", "mpi4py.MPI.ORDER_C", "mpi4py.MPI.ORDER_F", "mpi4py.MPI.ORDER_FORTRAN", "mpi4py.MPI.Op", "mpi4py.MPI.Open_port", "mpi4py.MPI.PACKED", "mpi4py.MPI.PROC_NULL", "mpi4py.MPI.PROD", "mpi4py.MPI.Pcontrol", "mpi4py.MPI.Pickle", "mpi4py.MPI.Prequest", "mpi4py.MPI.Publish_name", "mpi4py.MPI.Query_thread", "mpi4py.MPI.REAL", "mpi4py.MPI.REAL16", "mpi4py.MPI.REAL2", "mpi4py.MPI.REAL4", "mpi4py.MPI.REAL8", "mpi4py.MPI.REPLACE", "mpi4py.MPI.REQUEST_NULL", "mpi4py.MPI.ROOT", "mpi4py.MPI.Register_datarep", "mpi4py.MPI.Remove_error_class", "mpi4py.MPI.Remove_error_code", "mpi4py.MPI.Remove_error_string", "mpi4py.MPI.Request", "mpi4py.MPI.SEEK_CUR", "mpi4py.MPI.SEEK_END", "mpi4py.MPI.SEEK_SET", "mpi4py.MPI.SESSION_NULL", "mpi4py.MPI.SHORT", "mpi4py.MPI.SHORT_INT", "mpi4py.MPI.SIGNED_CHAR", "mpi4py.MPI.SIGNED_INT", "mpi4py.MPI.SIGNED_LONG", "mpi4py.MPI.SIGNED_LONG_LONG", "mpi4py.MPI.SIGNED_SHORT", "mpi4py.MPI.SIMILAR", "mpi4py.MPI.SINT16_T", "mpi4py.MPI.SINT32_T", "mpi4py.MPI.SINT64_T", "mpi4py.MPI.SINT8_T", "mpi4py.MPI.SUBVERSION", "mpi4py.MPI.SUCCESS", "mpi4py.MPI.SUM", "mpi4py.MPI.Session", "mpi4py.MPI.Status", "mpi4py.MPI.TAG_UB", "mpi4py.MPI.THREAD_FUNNELED", "mpi4py.MPI.THREAD_MULTIPLE", "mpi4py.MPI.THREAD_SERIALIZED", "mpi4py.MPI.THREAD_SINGLE", "mpi4py.MPI.TWOINT", "mpi4py.MPI.TYPECLASS_COMPLEX", "mpi4py.MPI.TYPECLASS_INTEGER", "mpi4py.MPI.TYPECLASS_REAL", "mpi4py.MPI.Topocomm", "mpi4py.MPI.UINT16_T", "mpi4py.MPI.UINT32_T", "mpi4py.MPI.UINT64_T", "mpi4py.MPI.UINT8_T", "mpi4py.MPI.UNDEFINED", "mpi4py.MPI.UNEQUAL", "mpi4py.MPI.UNIVERSE_SIZE", "mpi4py.MPI.UNSIGNED", "mpi4py.MPI.UNSIGNED_CHAR", "mpi4py.MPI.UNSIGNED_INT", "mpi4py.MPI.UNSIGNED_LONG", "mpi4py.MPI.UNSIGNED_LONG_LONG", "mpi4py.MPI.UNSIGNED_SHORT", "mpi4py.MPI.UNWEIGHTED", "mpi4py.MPI.Unpublish_name", "mpi4py.MPI.VERSION", "mpi4py.MPI.WCHAR", "mpi4py.MPI.WEIGHTS_EMPTY", "mpi4py.MPI.WIN_BASE", "mpi4py.MPI.WIN_CREATE_FLAVOR", "mpi4py.MPI.WIN_DISP_UNIT", "mpi4py.MPI.WIN_FLAVOR", "mpi4py.MPI.WIN_FLAVOR_ALLOCATE", "mpi4py.MPI.WIN_FLAVOR_CREATE", "mpi4py.MPI.WIN_FLAVOR_DYNAMIC", "mpi4py.MPI.WIN_FLAVOR_SHARED", "mpi4py.MPI.WIN_MODEL", "mpi4py.MPI.WIN_NULL", "mpi4py.MPI.WIN_SEPARATE", "mpi4py.MPI.WIN_SIZE", "mpi4py.MPI.WIN_UNIFIED", "mpi4py.MPI.WTIME_IS_GLOBAL", "mpi4py.MPI.Win", "mpi4py.MPI.Wtick", "mpi4py.MPI.Wtime", "mpi4py.MPI.buffer", "mpi4py.MPI.get_vendor", "mpi4py.MPI.memory", "mpi4py.MPI.pickle", "Tutorial"], "titleterms": {"0": 0, "01": 0, "02": 0, "03": 0, "04": 0, "06": 0, "07": 0, "08": 0, "09": 0, "1": 0, "10": 0, "11": 0, "12": 0, "13": 0, "14": 0, "15": 0, "18": 0, "2": 0, "20": 0, "2009": 0, "2010": 0, "2012": 0, "2013": 0, "2015": 0, "2017": 0, "2019": 0, "2021": 0, "2022": 0, "2023": 0, "2024": 0, "25": 0, "26": 0, "28": 0, "29": 0, "3": 0, "4": 0, "5": 0, "6": 0, "One": [19, 382], "abstract": 4, "add_error_class": 26, "add_error_cod": 27, "add_error_str": 28, "aint": 22, "aint_add": 29, "aint_diff": 30, "alloc_mem": 31, "any_sourc": 23, "any_tag": 24, "appnum": 25, "arrai": [19, 382], "attach_buff": 32, "attribut": 9, "awar": [19, 382], "backend": 5, "band": 33, "bench": 10, "block": 19, "bool": 34, "bor": 35, "bottom": 36, "bottomtyp": 41, "bsend_overhead": 37, "buffer": 378, "buffer_automat": 38, "bufferautomatictyp": 42, "build": [2, 5], "bxor": 39, "byte": 40, "c_bool": 81, "c_complex": 82, "c_double_complex": 83, "c_float_complex": 84, "c_long_double_complex": 85, "cart": 43, "cartcomm": 86, "chang": 0, "char": 44, "charact": 45, "citat": [1, 11], "class": 9, "close_port": 87, "collect": [19, 382], "combiner_contigu": 46, "combiner_darrai": 47, "combiner_dup": 48, "combiner_f90_complex": 49, "combiner_f90_integ": 50, "combiner_f90_r": 51, "combiner_hindex": 52, "combiner_hindexed_block": 53, "combiner_hvector": 54, "combiner_index": 55, "combiner_indexed_block": 56, "combiner_nam": 57, "combiner_res": 58, "combiner_struct": 59, "combiner_subarrai": 60, "combiner_value_index": 61, "combiner_vector": 62, "comm": 88, "comm_nul": 63, "comm_self": 64, "comm_type_hw_guid": 65, "comm_type_hw_unguid": 66, "comm_type_resource_guid": 67, "comm_type_shar": 68, "comm_world": 69, "command": [11, 12], "commun": [19, 382], "complex": 70, "complex16": 71, "complex32": 72, "complex4": 73, "complex8": 74, "comput": 11, "compute_dim": 89, "conda": 5, "condit": 18, "configur": 8, "congruent": 75, "content": 4, "core": 5, "count": 76, "counter": 18, "cxx_bool": 77, "cxx_double_complex": 78, "cxx_float_complex": 79, "cxx_long_double_complex": 80, "data": 19, "datatyp": 102, "datatype_nul": 90, "deadlock": 12, "detach_buff": 103, "develop": 2, "disp_cur": 92, "displacement_curr": 91, "dist_graph": 97, "distgraphcomm": 104, "distribute_block": 93, "distribute_cycl": 94, "distribute_dflt_darg": 95, "distribute_non": 96, "doubl": 98, "double_complex": 99, "double_int": 100, "double_precis": 101, "dtlib": 15, "dynam": [19, 382], "environ": 8, "environment": 19, "err_access": 109, "err_amod": 110, "err_arg": 111, "err_assert": 112, "err_bad_fil": 113, "err_bas": 114, "err_buff": 115, "err_comm": 116, "err_convers": 117, "err_count": 118, "err_dim": 119, "err_disp": 120, "err_dup_datarep": 121, "err_errhandl": 122, "err_fil": 123, "err_file_exist": 124, "err_file_in_us": 125, "err_group": 126, "err_in_statu": 132, "err_info": 127, "err_info_kei": 128, "err_info_nokei": 129, "err_info_valu": 130, "err_intern": 131, "err_io": 133, "err_keyv": 134, "err_lastcod": 135, "err_locktyp": 136, "err_nam": 137, "err_no_mem": 139, "err_no_spac": 140, "err_no_such_fil": 141, "err_not_sam": 138, "err_op": 142, "err_oth": 143, "err_pend": 144, "err_port": 145, "err_proc_abort": 146, "err_proc_fail": 147, "err_proc_failed_pend": 148, "err_quota": 149, "err_rank": 150, "err_read_onli": 151, "err_request": 152, "err_revok": 153, "err_rma_attach": 154, "err_rma_conflict": 155, "err_rma_flavor": 156, "err_rma_rang": 157, "err_rma_shar": 158, "err_rma_sync": 159, "err_root": 160, "err_servic": 161, "err_sess": 162, "err_siz": 163, "err_spawn": 164, "err_tag": 165, "err_topologi": 166, "err_trunc": 167, "err_typ": 168, "err_unknown": 169, "err_unsupported_datarep": 170, "err_unsupported_oper": 171, "err_value_too_larg": 172, "err_win": 173, "errhandl": 174, "errhandler_nul": 105, "error": 19, "errors_abort": 106, "errors_are_fat": 107, "errors_return": 108, "exampl": [11, 16, 18], "except": [12, 175], "exclus": 18, "execut": 18, "exit": 19, "f2py": 382, "f_bool": 179, "f_complex": 180, "f_doubl": 181, "f_double_complex": 182, "f_error": 183, "f_float": 184, "f_float_complex": 185, "f_int": 186, "f_sourc": 187, "f_status_s": 188, "f_tag": 189, "fair": 3, "file": 190, "file_nul": 176, "final": 191, "float": 177, "float_int": 178, "flush_buff": 192, "free_mem": 193, "function": [8, 9], "futur": 11, "get_address": 197, "get_error_class": 198, "get_error_str": 199, "get_hw_resource_info": 200, "get_library_vers": 201, "get_processor_nam": 202, "get_vendor": 379, "get_vers": 203, "global": 18, "gpu": [19, 382], "graph": 194, "graphcomm": 204, "grequest": 205, "group": 206, "group_empti": 195, "group_nul": 196, "guidelin": 3, "handl": 19, "i": 6, "ident": 207, "iflush_buff": 224, "implement": 19, "in_plac": 222, "info": 226, "info_env": 208, "info_nul": 209, "inform": 19, "init": 227, "init_thread": 228, "initi": 19, "inplacetyp": 225, "input": [19, 382], "instal": [2, 5], "int": 210, "int16_t": 211, "int32_t": 212, "int64_t": 213, "int8_t": 214, "int_int": 221, "integ": 215, "integer1": 216, "integer16": 217, "integer2": 218, "integer4": 219, "integer8": 220, "intercomm": 229, "intracomm": 230, "introduct": 6, "io": [223, 382], "is_fin": 231, "is_initi": 232, "is_thread_main": 233, "julia": 11, "keyval_invalid": 234, "land": 235, "lastusedcod": 236, "licens": 7, "line": [11, 12], "linux": 5, "lock_exclus": 237, "lock_shar": 238, "logic": 239, "logical1": 240, "logical2": 241, "logical4": 242, "logical8": 243, "long": 244, "long_doubl": 245, "long_double_int": 246, "long_int": 247, "long_long": 248, "lookup_nam": 251, "lor": 249, "lxor": 250, "maco": 5, "manag": [19, 382], "max": 252, "max_datarep_str": 254, "max_error_str": 255, "max_info_kei": 256, "max_info_v": 257, "max_library_version_str": 258, "max_object_nam": 259, "max_port_nam": 260, "max_processor_nam": 261, "max_pset_name_len": 262, "max_stringtag_len": 263, "maxloc": 253, "memori": 380, "meson": 5, "messag": 282, "message_no_proc": 264, "message_nul": 265, "min": 266, "minloc": 267, "miscellan": 8, "mode_append": 268, "mode_cr": 269, "mode_delete_on_clos": 270, "mode_excl": 271, "mode_nocheck": 272, "mode_nopreced": 273, "mode_noput": 274, "mode_nostor": 275, "mode_nosucce": 276, "mode_rdonli": 277, "mode_rdwr": 278, "mode_sequenti": 279, "mode_unique_open": 280, "mode_wronli": 281, "motiv": 3, "mpi": [4, 6, 9, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382], "mpi4pi": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381], "mpicommexecutor": 11, "mpipoolexecutor": 11, "mutual": 18, "no_op": 283, "nonblock": 19, "object": [18, 19], "offset": 284, "op": 289, "op_nul": 285, "open_port": 290, "option": 8, "order_c": 286, "order_f": 287, "order_fortran": 288, "output": [19, 382], "overview": 19, "pack": 291, "parallel": [11, 19], "pcontrol": 294, "persist": 19, "pi": 11, "pickl": [295, 381], "pip": 5, "pkl5": 16, "plai": 3, "point": [19, 382], "pool": 17, "prequest": 296, "prerequisit": 2, "proc_nul": 292, "process": [19, 382], "prod": 293, "project": 6, "publish_nam": 297, "python": [4, 5, 6, 19, 382], "query_thread": 298, "real": 299, "real16": 300, "real2": 301, "real4": 302, "real8": 303, "refer": 20, "register_datarep": 307, "relat": 6, "releas": 0, "remove_error_class": 308, "remove_error_cod": 309, "remove_error_str": 310, "replac": 304, "request": 311, "request_nul": 305, "rma": 382, "root": 306, "rule": 3, "run": [12, 382], "runtim": 8, "scikit": 5, "scope": 3, "script": 382, "seek_cur": 312, "seek_end": 313, "seek_set": 314, "semaphor": 18, "sequenti": 18, "session": 331, "session_nul": 315, "set": 11, "setuptool": 5, "short": 316, "short_int": 317, "side": [19, 382], "signed_char": 318, "signed_int": 319, "signed_long": 320, "signed_long_long": 321, "signed_short": 322, "similar": 323, "sint16_t": 324, "sint32_t": 325, "sint64_t": 326, "sint8_t": 327, "statu": 332, "subvers": 328, "success": 329, "sum": 330, "summari": 3, "support": 19, "swig": 382, "sync": 18, "tag_ub": 333, "task": 11, "test": 2, "thread_funnel": 334, "thread_multipl": 335, "thread_seri": 336, "thread_singl": 337, "timer": 19, "topocomm": 342, "tutori": 382, "twoint": 338, "type": 13, "typeclass_complex": 339, "typeclass_integ": 340, "typeclass_r": 341, "uint16_t": 343, "uint32_t": 344, "uint64_t": 345, "uint8_t": 346, "undefin": 347, "unequ": 348, "universe_s": 349, "unpublish_nam": 357, "unsign": 350, "unsigned_char": 351, "unsigned_int": 352, "unsigned_long": 353, "unsigned_long_long": 354, "unsigned_short": 355, "unweight": 356, "us": 5, "util": [11, 14, 15, 16, 17, 18], "variabl": [8, 18], "version": 358, "wchar": 359, "weights_empti": 360, "what": 6, "win": 375, "win_bas": 361, "win_create_flavor": 362, "win_disp_unit": 363, "win_flavor": 364, "win_flavor_alloc": 365, "win_flavor_cr": 366, "win_flavor_dynam": 367, "win_flavor_shar": 368, "win_model": 369, "win_nul": 370, "win_separ": 371, "win_siz": 372, "win_unifi": 373, "window": 5, "wrap": 382, "wtick": 376, "wtime": 377, "wtime_is_glob": 374}}) \ No newline at end of file diff --git a/4.0.0/html/tutorial.html b/4.0.0/html/tutorial.html new file mode 100644 index 0000000..82d7750 --- /dev/null +++ b/4.0.0/html/tutorial.html @@ -0,0 +1,675 @@ + + + + + + + + Tutorial — MPI for Python 4.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Tutorial

+
+

Warning

+

Under construction. Contributions very welcome!

+
+
+

Tip

+

Rolf Rabenseifner at HLRS developed a comprehensive +MPI-3.1/4.0 course with slides and a large set of exercises +including solutions. This material is available online for self-study. The slides and exercises show the C, +Fortran, and Python (mpi4py) interfaces. For performance reasons, +most Python exercises use NumPy arrays and communication routines +involving buffer-like objects.

+
+
+

Tip

+

Victor Eijkhout at TACC authored the book Parallel +Programming for Science and Engineering. This book is available +online in PDF and HTML formats. The +book covers parallel programming with MPI and OpenMP in C/C++ and +Fortran, and MPI in Python using mpi4py.

+
+

MPI for Python supports convenient, pickle-based communication of +generic Python object as well as fast, near C-speed, direct array data +communication of buffer-provider objects (e.g., NumPy arrays).

+
    +
  • Communication of generic Python objects

    +

    You have to use methods with all-lowercase names, like +Comm.send, Comm.recv, Comm.bcast, Comm.scatter, +Comm.gather . An object to be sent is passed as a parameter to the +communication call, and the received object is simply the return +value.

    +

    The Comm.isend and Comm.irecv methods return Request +instances; completion of these methods can be managed using the +Request.test and Request.wait methods.

    +

    The Comm.recv and Comm.irecv methods may be passed a buffer +object that can be repeatedly used to receive messages avoiding +internal memory allocation. This buffer must be sufficiently large +to accommodate the transmitted messages; hence, any buffer passed to +Comm.recv or Comm.irecv must be at least as long as the +pickled data transmitted to the receiver.

    +

    Collective calls like Comm.scatter, Comm.gather, +Comm.allgather, Comm.alltoall expect a single value or a +sequence of Comm.size elements at the root or all process. They +return a single value, a list of Comm.size elements, or None.

    +
    +

    Note

    +

    MPI for Python uses the highest protocol version available in the Python runtime (see the +HIGHEST_PROTOCOL constant in the pickle +module). The default protocol can be changed at import time by +setting the MPI4PY_PICKLE_PROTOCOL environment +variable, or at runtime by assigning a different value to the +PROTOCOL attribute of the +pickle object within the MPI +module.

    +
    +
  • +
  • Communication of buffer-like objects

    +

    You have to use method names starting with an upper-case letter, +like Comm.Send, Comm.Recv, Comm.Bcast, Comm.Scatter, +Comm.Gather.

    +

    In general, buffer arguments to these calls must be explicitly +specified by using a 2/3-list/tuple like [data, MPI.DOUBLE], or +[data, count, MPI.DOUBLE] (the former one uses the byte-size of +data and the extent of the MPI datatype to define count).

    +

    For vector collectives communication operations like +Comm.Scatterv and Comm.Gatherv, buffer arguments are +specified as [data, count, displ, datatype], where count and +displ are sequences of integral values.

    +

    Automatic MPI datatype discovery for NumPy/GPU arrays and PEP-3118 +buffers is supported, but limited to basic C types (all C/C99-native +signed/unsigned integral types and single/double precision +real/complex floating types) and availability of matching datatypes +in the underlying MPI implementation. In this case, the +buffer-provider object can be passed directly as a buffer argument, +the count and MPI datatype will be inferred.

    +

    If mpi4py is built against a GPU-aware MPI implementation, GPU +arrays can be passed to upper-case methods as long as they have +either the __dlpack__ and __dlpack_device__ methods or the +__cuda_array_interface__ attribute that are compliant with the +respective standard specifications. Moreover, only C-contiguous or +Fortran-contiguous GPU arrays are supported. It is important to note +that GPU buffers must be fully ready before any MPI routines operate +on them to avoid race conditions. This can be ensured by using the +synchronization API of your array library. mpi4py does not have +access to any GPU-specific functionality and thus cannot perform +this operation automatically for users.

    +
  • +
+
+

Running Python scripts with MPI

+

Most MPI programs can be run with the command mpiexec. In +practice, running Python programs looks like:

+
$ mpiexec -n 4 python script.py
+
+
+

to run the program with 4 processors.

+
+
+

Point-to-Point Communication

+
    +
  • Python objects (pickle under the hood):

    +
    from mpi4py import MPI
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +if rank == 0:
    +    data = {'a': 7, 'b': 3.14}
    +    comm.send(data, dest=1, tag=11)
    +elif rank == 1:
    +    data = comm.recv(source=0, tag=11)
    +
    +
    +
  • +
  • Python objects with non-blocking communication:

    +
    from mpi4py import MPI
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +if rank == 0:
    +    data = {'a': 7, 'b': 3.14}
    +    req = comm.isend(data, dest=1, tag=11)
    +    req.wait()
    +elif rank == 1:
    +    req = comm.irecv(source=0, tag=11)
    +    data = req.wait()
    +
    +
    +
  • +
  • NumPy arrays (the fast way!):

    +
    from mpi4py import MPI
    +import numpy
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +# passing MPI datatypes explicitly
    +if rank == 0:
    +    data = numpy.arange(1000, dtype='i')
    +    comm.Send([data, MPI.INT], dest=1, tag=77)
    +elif rank == 1:
    +    data = numpy.empty(1000, dtype='i')
    +    comm.Recv([data, MPI.INT], source=0, tag=77)
    +
    +# automatic MPI datatype discovery
    +if rank == 0:
    +    data = numpy.arange(100, dtype=numpy.float64)
    +    comm.Send(data, dest=1, tag=13)
    +elif rank == 1:
    +    data = numpy.empty(100, dtype=numpy.float64)
    +    comm.Recv(data, source=0, tag=13)
    +
    +
    +
  • +
+
+
+

Collective Communication

+
    +
  • Broadcasting a Python dictionary:

    +
    from mpi4py import MPI
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +if rank == 0:
    +    data = {'key1' : [7, 2.72, 2+3j],
    +            'key2' : ( 'abc', 'xyz')}
    +else:
    +    data = None
    +data = comm.bcast(data, root=0)
    +
    +
    +
  • +
  • Scattering Python objects:

    +
    from mpi4py import MPI
    +
    +comm = MPI.COMM_WORLD
    +size = comm.Get_size()
    +rank = comm.Get_rank()
    +
    +if rank == 0:
    +    data = [(i+1)**2 for i in range(size)]
    +else:
    +    data = None
    +data = comm.scatter(data, root=0)
    +assert data == (rank+1)**2
    +
    +
    +
  • +
  • Gathering Python objects:

    +
    from mpi4py import MPI
    +
    +comm = MPI.COMM_WORLD
    +size = comm.Get_size()
    +rank = comm.Get_rank()
    +
    +data = (rank+1)**2
    +data = comm.gather(data, root=0)
    +if rank == 0:
    +    for i in range(size):
    +        assert data[i] == (i+1)**2
    +else:
    +    assert data is None
    +
    +
    +
  • +
  • Broadcasting a NumPy array:

    +
    from mpi4py import MPI
    +import numpy as np
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +if rank == 0:
    +    data = np.arange(100, dtype='i')
    +else:
    +    data = np.empty(100, dtype='i')
    +comm.Bcast(data, root=0)
    +for i in range(100):
    +    assert data[i] == i
    +
    +
    +
  • +
  • Scattering NumPy arrays:

    +
    from mpi4py import MPI
    +import numpy as np
    +
    +comm = MPI.COMM_WORLD
    +size = comm.Get_size()
    +rank = comm.Get_rank()
    +
    +sendbuf = None
    +if rank == 0:
    +    sendbuf = np.empty([size, 100], dtype='i')
    +    sendbuf.T[:,:] = range(size)
    +recvbuf = np.empty(100, dtype='i')
    +comm.Scatter(sendbuf, recvbuf, root=0)
    +assert np.allclose(recvbuf, rank)
    +
    +
    +
  • +
  • Gathering NumPy arrays:

    +
    from mpi4py import MPI
    +import numpy as np
    +
    +comm = MPI.COMM_WORLD
    +size = comm.Get_size()
    +rank = comm.Get_rank()
    +
    +sendbuf = np.zeros(100, dtype='i') + rank
    +recvbuf = None
    +if rank == 0:
    +    recvbuf = np.empty([size, 100], dtype='i')
    +comm.Gather(sendbuf, recvbuf, root=0)
    +if rank == 0:
    +    for i in range(size):
    +        assert np.allclose(recvbuf[i,:], i)
    +
    +
    +
  • +
  • Parallel matrix-vector product:

    +
    from mpi4py import MPI
    +import numpy
    +
    +def matvec(comm, A, x):
    +    m = A.shape[0] # local rows
    +    p = comm.Get_size()
    +    xg = numpy.zeros(m*p, dtype='d')
    +    comm.Allgather([x,  MPI.DOUBLE],
    +                   [xg, MPI.DOUBLE])
    +    y = numpy.dot(A, xg)
    +    return y
    +
    +
    +
  • +
+
+
+

Input/Output (MPI-IO)

+
    +
  • Collective I/O with NumPy arrays:

    +
    from mpi4py import MPI
    +import numpy as np
    +
    +amode = MPI.MODE_WRONLY|MPI.MODE_CREATE
    +comm = MPI.COMM_WORLD
    +fh = MPI.File.Open(comm, "./datafile.contig", amode)
    +
    +buffer = np.empty(10, dtype=np.int)
    +buffer[:] = comm.Get_rank()
    +
    +offset = comm.Get_rank()*buffer.nbytes
    +fh.Write_at_all(offset, buffer)
    +
    +fh.Close()
    +
    +
    +
  • +
  • Non-contiguous Collective I/O with NumPy arrays and datatypes:

    +
    from mpi4py import MPI
    +import numpy as np
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +size = comm.Get_size()
    +
    +amode = MPI.MODE_WRONLY|MPI.MODE_CREATE
    +fh = MPI.File.Open(comm, "./datafile.noncontig", amode)
    +
    +item_count = 10
    +
    +buffer = np.empty(item_count, dtype='i')
    +buffer[:] = rank
    +
    +filetype = MPI.INT.Create_vector(item_count, 1, size)
    +filetype.Commit()
    +
    +displacement = MPI.INT.Get_size()*rank
    +fh.Set_view(displacement, filetype=filetype)
    +
    +fh.Write_all(buffer)
    +filetype.Free()
    +fh.Close()
    +
    +
    +
  • +
+
+
+

Dynamic Process Management

+
    +
  • Compute Pi - Master (or parent, or client) side:

    +
    #!/usr/bin/env python
    +from mpi4py import MPI
    +import numpy
    +import sys
    +
    +comm = MPI.COMM_SELF.Spawn(sys.executable,
    +                           args=['cpi.py'],
    +                           maxprocs=5)
    +
    +N = numpy.array(100, 'i')
    +comm.Bcast([N, MPI.INT], root=MPI.ROOT)
    +PI = numpy.array(0.0, 'd')
    +comm.Reduce(None, [PI, MPI.DOUBLE],
    +            op=MPI.SUM, root=MPI.ROOT)
    +print(PI)
    +
    +comm.Disconnect()
    +
    +
    +
  • +
  • Compute Pi - Worker (or child, or server) side:

    +
    #!/usr/bin/env python
    +from mpi4py import MPI
    +import numpy
    +
    +comm = MPI.Comm.Get_parent()
    +size = comm.Get_size()
    +rank = comm.Get_rank()
    +
    +N = numpy.array(0, dtype='i')
    +comm.Bcast([N, MPI.INT], root=0)
    +h = 1.0 / N; s = 0.0
    +for i in range(rank, N, size):
    +    x = h * (i + 0.5)
    +    s += 4.0 / (1.0 + x**2)
    +PI = numpy.array(s * h, dtype='d')
    +comm.Reduce([PI, MPI.DOUBLE], None,
    +            op=MPI.SUM, root=0)
    +
    +comm.Disconnect()
    +
    +
    +
  • +
+
+
+

GPU-aware MPI + Python GPU arrays

+
    +
  • Reduce-to-all CuPy arrays:

    +
    from mpi4py import MPI
    +import cupy as cp
    +
    +comm = MPI.COMM_WORLD
    +size = comm.Get_size()
    +rank = comm.Get_rank()
    +
    +sendbuf = cp.arange(10, dtype='i')
    +recvbuf = cp.empty_like(sendbuf)
    +cp.cuda.get_current_stream().synchronize()
    +comm.Allreduce(sendbuf, recvbuf)
    +
    +assert cp.allclose(recvbuf, sendbuf*size)
    +
    +
    +
  • +
+
+
+

One-Sided Communication (RMA)

+
    +
  • Read from (write to) the entire RMA window:

    +
    import numpy as np
    +from mpi4py import MPI
    +from mpi4py.util import dtlib
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +datatype = MPI.FLOAT
    +np_dtype = dtlib.to_numpy_dtype(datatype)
    +itemsize = datatype.Get_size()
    +
    +N = 10
    +win_size = N * itemsize if rank == 0 else 0
    +win = MPI.Win.Allocate(win_size, comm=comm)
    +
    +buf = np.empty(N, dtype=np_dtype)
    +if rank == 0:
    +    buf.fill(42)
    +    win.Lock(rank=0)
    +    win.Put(buf, target_rank=0)
    +    win.Unlock(rank=0)
    +    comm.Barrier()
    +else:
    +    comm.Barrier()
    +    win.Lock(rank=0)
    +    win.Get(buf, target_rank=0)
    +    win.Unlock(rank=0)
    +    assert np.all(buf == 42)
    +
    +
    +
  • +
  • Accessing a part of the RMA window using the target argument, +which is defined as (offset, count, datatype):

    +
    import numpy as np
    +from mpi4py import MPI
    +from mpi4py.util import dtlib
    +
    +comm = MPI.COMM_WORLD
    +rank = comm.Get_rank()
    +
    +datatype = MPI.FLOAT
    +np_dtype = dtlib.to_numpy_dtype(datatype)
    +itemsize = datatype.Get_size()
    +
    +N = comm.Get_size() + 1
    +win_size = N * itemsize if rank == 0 else 0
    +win = MPI.Win.Allocate(
    +    size=win_size,
    +    disp_unit=itemsize,
    +    comm=comm,
    +)
    +if rank == 0:
    +    mem = np.frombuffer(win, dtype=np_dtype)
    +    mem[:] = np.arange(len(mem), dtype=np_dtype)
    +comm.Barrier()
    +
    +buf = np.zeros(3, dtype=np_dtype)
    +target = (rank, 2, datatype)
    +win.Lock(rank=0)
    +win.Get(buf, target_rank=0, target=target)
    +win.Unlock(rank=0)
    +assert np.all(buf == [rank, rank+1, 0])
    +
    +
    +
  • +
+
+
+

Wrapping with SWIG

+
    +
  • C source:

    +
    /* file: helloworld.c */
    +void sayhello(MPI_Comm comm)
    +{
    +  int size, rank;
    +  MPI_Comm_size(comm, &size);
    +  MPI_Comm_rank(comm, &rank);
    +  printf("Hello, World! "
    +         "I am process %d of %d.\n",
    +         rank, size);
    +}
    +
    +
    +
  • +
  • SWIG interface file:

    +
    // file: helloworld.i
    +%module helloworld
    +%{
    +#include <mpi.h>
    +#include "helloworld.c"
    +}%
    +
    +%include mpi4py/mpi4py.i
    +%mpi4py_typemap(Comm, MPI_Comm);
    +void sayhello(MPI_Comm comm);
    +
    +
    +
  • +
  • Try it in the Python prompt:

    +
    >>> from mpi4py import MPI
    +>>> import helloworld
    +>>> helloworld.sayhello(MPI.COMM_WORLD)
    +Hello, World! I am process 0 of 1.
    +
    +
    +
  • +
+
+
+

Wrapping with F2Py

+
    +
  • Fortran 90 source:

    +
    ! file: helloworld.f90
    +subroutine sayhello(comm)
    +  use mpi
    +  implicit none
    +  integer :: comm, rank, size, ierr
    +  call MPI_Comm_size(comm, size, ierr)
    +  call MPI_Comm_rank(comm, rank, ierr)
    +  print *, 'Hello, World! I am process ',rank,' of ',size,'.'
    +end subroutine sayhello
    +
    +
    +
  • +
  • Compiling example using f2py

    +
    $ f2py -c --f90exec=mpif90 helloworld.f90 -m helloworld
    +
    +
    +
  • +
  • Try it in the Python prompt:

    +
    >>> from mpi4py import MPI
    +>>> import helloworld
    +>>> fcomm = MPI.COMM_WORLD.py2f()
    +>>> helloworld.sayhello(fcomm)
    +Hello, World! I am process 0 of 1.
    +
    +
    +
  • +
+
+
+ + +
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/4.0.0/index.html b/4.0.0/index.html new file mode 100644 index 0000000..e894df2 --- /dev/null +++ b/4.0.0/index.html @@ -0,0 +1,687 @@ + + + + + + + +MPI for Python + + + + +
+

MPI for Python

+
+
Author:
+

Lisandro Dalcin

+
Contact:
+
dalcinl@gmail.com
+
+
+

Online Documentation

+

Hosted at Read the Docs [https://mpi4py.readthedocs.io/]:

+ +

Hosted at GitHub [https://mpi4py.github.io/]:

+ +
+
+

Discussion and Support

+

Hosted at Google Groups:

+ +

Hosted at GitHub:

+ +
+
+

Downloads and Development

+

Hosted at GitHub:

+ +
+
+

Citation

+ +
+
+

Acknowledgments

+

This project was partially supported by the +Advanced Algorithm and Numerical Simulations Laboratory (AANSLab), +Division of Computer, Electrical, and +Mathematical Sciences & Engineering (CEMSE), +King Abdullah University of Science and Technology (KAUST).

+
+
+ + diff --git a/4.0.0/index.rst b/4.0.0/index.rst new file mode 100644 index 0000000..7ef3c94 --- /dev/null +++ b/4.0.0/index.rst @@ -0,0 +1,75 @@ +============== +MPI for Python +============== + +:Author: Lisandro Dalcin +:Contact: dalcinl@gmail.com + + +Online Documentation +-------------------- + +Hosted at *Read the Docs* [https://mpi4py.readthedocs.io/]: + ++ `Stable `_: |rtd-stable| ++ `Latest `_: |rtd-latest| + +.. |rtd-stable| image:: https://readthedocs.org/projects/mpi4py/badge/?version=stable + :target: `rtd-stable`_ +.. _rtd-stable: https://mpi4py.readthedocs.io/en/stable/ + +.. |rtd-latest| image:: https://readthedocs.org/projects/mpi4py/badge/?version=latest + :target: `rtd-latest`_ +.. _rtd-latest: https://mpi4py.readthedocs.io/en/latest + +Hosted at *GitHub* [https://mpi4py.github.io/]: + ++ `User Manual (HTML)`_ (generated with Sphinx_). ++ `User Manual (PDF)`_ (generated with Sphinx_). ++ `Reference Guide`_ (generated with Sphinx_). + +.. _User Manual (HTML): html/index.html +.. _User Manual (PDF): mpi4py.pdf +.. _Reference Guide: html/reference/index.html + +.. _Sphinx: https://www.sphinx-doc.org/ + + +Discussion and Support +---------------------- + +Hosted at Google Groups: + ++ Group Page: https://groups.google.com/g/mpi4py ++ Mailing List: mpi4py@googlegroups.com + +Hosted at GitHub: + +* Discussions: https://github.com/mpi4py/mpi4py/discussions + + +Downloads and Development +------------------------- + +Hosted at GitHub: + ++ Project Site: https://github.com/mpi4py/mpi4py ++ Source Releases: https://github.com/mpi4py/mpi4py/releases ++ Issue Tracker: https://github.com/mpi4py/mpi4py/issues ++ Git Repository: https://github.com/mpi4py/mpi4py.git + + +Citation +-------- + +.. include:: ../CITATION.rst + + +Acknowledgments +--------------- + +This project was partially supported by the +Advanced Algorithm and Numerical Simulations Laboratory (AANSLab), +Division of Computer, Electrical, and +Mathematical Sciences & Engineering (CEMSE), +King Abdullah University of Science and Technology (KAUST). diff --git a/4.0.0/mpi4py.3 b/4.0.0/mpi4py.3 new file mode 100644 index 0000000..c15e3ae --- /dev/null +++ b/4.0.0/mpi4py.3 @@ -0,0 +1,26327 @@ +.\" Man page generated from reStructuredText. +. +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.TH "MPI4PY" "3" "Jul 28, 2024" "4.0" "MPI for Python" +.SH NAME +mpi4py \- MPI for Python +.INDENT 0.0 +.TP +.B Author +Lisandro Dalcin +.TP +.B Contact +\X'tty: link mailto:dalcinl@gmail.com'\fI\%dalcinl@gmail.com\fP\X'tty: link' +.TP +.B Date +Jul 28, 2024 +.UNINDENT +.SS Abstract +.sp +\fIMPI for Python\fP provides Python bindings for the \fIMessage Passing +Interface\fP (MPI) standard, allowing Python applications to exploit +multiple processors on workstations, clusters and supercomputers. +.sp +This package builds on the MPI specification and provides an object +oriented interface resembling the MPI\-2 C++ bindings. It supports +point\-to\-point (sends, receives) and collective (broadcasts, +scatters, gathers) communication of any \fIpicklable\fP Python object, +as well as efficient communication of Python objects exposing the +Python buffer interface (e.g. NumPy arrays and builtin +bytes/array/memoryview objects). +.SH INTRODUCTION +.sp +Over the last years, high performance computing has become an +affordable resource to many more researchers in the scientific +community than ever before. The conjunction of quality open source +software and commodity hardware strongly influenced the now widespread +popularity of \X'tty: link https://www.beowulf.org/'\fI\%Beowulf\fP\X'tty: link' class clusters and cluster of workstations. +.sp +Among many parallel computational models, message\-passing has proven +to be an effective one. This paradigm is specially suited for (but +not limited to) distributed memory architectures and is used in +today\(aqs most demanding scientific and engineering application related +to modeling, simulation, design, and signal processing. However, +portable message\-passing parallel programming used to be a nightmare +in the past because of the many incompatible options developers were +faced to. Fortunately, this situation definitely changed after the +MPI Forum released its standard specification. +.sp +High performance computing is traditionally associated with software +development using compiled languages. However, in typical applications +programs, only a small part of the code is time\-critical enough to +require the efficiency of compiled languages. The rest of the code is +generally related to memory management, error handling, input/output, +and user interaction, and those are usually the most error prone and +time\-consuming lines of code to write and debug in the whole +development process. Interpreted high\-level languages can be really +advantageous for this kind of tasks. +.sp +For implementing general\-purpose numerical computations, MATLAB [1] +is the dominant interpreted programming language. In the open source +side, Octave and Scilab are well known, freely distributed software +packages providing compatibility with the MATLAB language. In this +work, we present MPI for Python, a new package enabling applications +to exploit multiple processors using standard MPI \(dqlook and feel\(dq in +Python scripts. +.IP [1] 5 +MATLAB is a registered trademark of The MathWorks, Inc. +.SS What is MPI? +.sp +\X'tty: link https://www.mpi-forum.org/'\fI\%MPI\fP\X'tty: link', \fI\%[mpi\-using]\fP \fI\%[mpi\-ref]\fP the \fIMessage Passing Interface\fP, is a +standardized and portable message\-passing system designed to function +on a wide variety of parallel computers. The standard defines the +syntax and semantics of library routines and allows users to write +portable programs in the main scientific programming languages +(Fortran, C, or C++). +.sp +Since its release, the MPI specification \fI\%[mpi\-std1]\fP \fI\%[mpi\-std2]\fP has +become the leading standard for message\-passing libraries for parallel +computers. Implementations are available from vendors of +high\-performance computers and from well known open source projects +like \X'tty: link https://www.mpich.org/'\fI\%MPICH\fP\X'tty: link' \fI\%[mpi\-mpich]\fP and \X'tty: link https://www.open-mpi.org/'\fI\%Open MPI\fP\X'tty: link' \fI\%[mpi\-openmpi]\fP\&. +.SS What is Python? +.sp +\X'tty: link https://www.python.org/'\fI\%Python\fP\X'tty: link' is a modern, easy to learn, powerful programming language. It +has efficient high\-level data structures and a simple but effective +approach to object\-oriented programming with dynamic typing and +dynamic binding. It supports modules and packages, which encourages +program modularity and code reuse. Python\(aqs elegant syntax, together +with its interpreted nature, make it an ideal language for scripting +and rapid application development in many areas on most platforms. +.sp +The Python interpreter and the extensive standard library are +available in source or binary form without charge for all major +platforms, and can be freely distributed. It is easily extended with +new functions and data types implemented in C or C++. Python is also +suitable as an extension language for customizable applications. +.sp +Python is an ideal candidate for writing the higher\-level parts of +large\-scale scientific applications \fI\%[Hinsen97]\fP and driving +simulations in parallel architectures \fI\%[Beazley97]\fP like clusters of +PC\(aqs or SMP\(aqs. Python codes are quickly developed, easily maintained, +and can achieve a high degree of integration with other libraries +written in compiled languages. +.SS Related Projects +.sp +As this work started and evolved, some ideas were borrowed from well +known MPI and Python related open source projects from the Internet. +.INDENT 0.0 +.IP \(bu 2 +\X'tty: link https://web.archive.org/web/20100614170656/http://www.osl.iu.edu/research/oompi/overview.php'\fI\%OOMPI\fP\X'tty: link' +.INDENT 2.0 +.IP \(bu 2 +It has no relation with Python, but is an excellent object +oriented approach to MPI. +.IP \(bu 2 +It is a C++ class library specification layered on top of the C +bindings that encapsulates MPI into a functional class hierarchy. +.IP \(bu 2 +It provides a flexible and intuitive interface by adding some +abstractions, like \fIPorts\fP and \fIMessages\fP, which enrich and +simplify the syntax. +.UNINDENT +.IP \(bu 2 +\X'tty: link https://github.com/daleroberts/pypar'\fI\%Pypar\fP\X'tty: link' +.INDENT 2.0 +.IP \(bu 2 +Its interface is rather minimal. There is no support for +communicators or process topologies. +.IP \(bu 2 +It does not require the Python interpreter to be modified or +recompiled, but does not permit interactive parallel runs. +.IP \(bu 2 +General (\fIpicklable\fP) Python objects of any type can be +communicated. There is good support for numeric arrays, +practically full MPI bandwidth can be achieved. +.UNINDENT +.IP \(bu 2 +\X'tty: link https://sourceforge.net/projects/pympi/'\fI\%pyMPI\fP\X'tty: link' +.INDENT 2.0 +.IP \(bu 2 +It rebuilds the Python interpreter providing a built\-in module +for message passing. It does permit interactive parallel runs, +which are useful for learning and debugging. +.IP \(bu 2 +It provides an interface suitable for basic parallel programming. +There is not full support for defining new communicators or process +topologies. +.IP \(bu 2 +General (picklable) Python objects can be messaged between +processors. There is not support for numeric arrays. +.UNINDENT +.IP \(bu 2 +\X'tty: link http://dirac.cnrs-orleans.fr/ScientificPython.html'\fI\%Scientific Python\fP\X'tty: link' +.INDENT 2.0 +.IP \(bu 2 +It provides a collection of Python modules that are +useful for scientific computing. +.IP \(bu 2 +There is an interface to MPI and BSP (\fIBulk Synchronous Parallel +programming\fP). +.IP \(bu 2 +The interface is simple but incomplete and does not resemble +the MPI specification. There is support for numeric arrays. +.UNINDENT +.UNINDENT +.sp +Additionally, we would like to mention some available tools for +scientific computing and software development with Python. +.INDENT 0.0 +.IP \(bu 2 +\X'tty: link https://numpy.org/'\fI\%NumPy\fP\X'tty: link' is a package that provides array manipulation and +computational capabilities similar to those found in IDL, MATLAB, or +Octave. Using NumPy, it is possible to write many efficient +numerical data processing applications directly in Python without +using any C, C++ or Fortran code. +.IP \(bu 2 +\X'tty: link https://scipy.org/'\fI\%SciPy\fP\X'tty: link' is an open source library of scientific tools for Python, +gathering a variety of high level science and engineering modules +together as a single package. It includes modules for graphics and +plotting, optimization, integration, special functions, signal and +image processing, genetic algorithms, ODE solvers, and others. +.IP \(bu 2 +\X'tty: link https://cython.org/'\fI\%Cython\fP\X'tty: link' is a language that makes writing C extensions for the +Python language as easy as Python itself. The Cython language is +very close to the Python language, but Cython additionally supports +calling C functions and declaring C types on variables and class +attributes. This allows the compiler to generate very efficient C +code from Cython code. This makes Cython the ideal language for +wrapping for external C libraries, and for fast C modules that speed +up the execution of Python code. +.IP \(bu 2 +\X'tty: link https://www.swig.org/'\fI\%SWIG\fP\X'tty: link' is a software development tool that connects programs +written in C and C++ with a variety of high\-level programming +languages like Perl, Tcl/Tk, Ruby and Python. Issuing header files +to SWIG is the simplest approach to interfacing C/C++ libraries from +a Python module. +.UNINDENT +.IP [mpi-std1] 5 +MPI Forum. MPI: A Message Passing Interface Standard. +International Journal of Supercomputer Applications, volume 8, +number 3\-4, pages 159\-416, 1994. +.IP [mpi-std2] 5 +MPI Forum. MPI: A Message Passing Interface Standard. +High Performance Computing Applications, volume 12, number 1\-2, +pages 1\-299, 1998. +.IP [mpi-using] 5 +William Gropp, Ewing Lusk, and Anthony Skjellum. Using +MPI: portable parallel programming with the message\-passing +interface. MIT Press, 1994. +.IP [mpi-ref] 5 +Mark Snir, Steve Otto, Steven Huss\-Lederman, David +Walker, and Jack Dongarra. MPI \- The Complete Reference, volume 1, +The MPI Core. MIT Press, 2nd. edition, 1998. +.IP [mpi-mpich] 5 +W. Gropp, E. Lusk, N. Doss, and A. Skjellum. A +high\-performance, portable implementation of the MPI message +passing interface standard. Parallel Computing, 22(6):789\-828, +September 1996. +.IP [mpi-openmpi] 5 +Edgar Gabriel, Graham E. Fagg, George Bosilca, Thara +Angskun, Jack J. Dongarra, Jeffrey M. Squyres, Vishal Sahay, +Prabhanjan Kambadur, Brian Barrett, Andrew Lumsdaine, Ralph +H. Castain, David J. Daniel, Richard L. Graham, and Timothy +S. Woodall. Open MPI: Goals, Concept, and Design of a Next +Generation MPI Implementation. In Proceedings, 11th European +PVM/MPI Users\(aq Group Meeting, Budapest, Hungary, September 2004. +.IP [Hinsen97] 5 +Konrad Hinsen. The Molecular Modelling Toolkit: a case +study of a large scientific application in Python. In Proceedings +of the 6th International Python Conference, pages 29\-35, San Jose, +Ca., October 1997. +.IP [Beazley97] 5 +David M. Beazley and Peter S. Lomdahl. Feeding a +large\-scale physics application to Python. In Proceedings of the +6th International Python Conference, pages 21\-29, San Jose, Ca., +October 1997. +.SH OVERVIEW +.sp +MPI for Python provides an object oriented approach to message passing +which grounds on the standard MPI\-2 C++ bindings. The interface was +designed with focus in translating MPI syntax and semantics of +standard MPI\-2 bindings for C++ to Python. Any user of the standard +C/C++ MPI bindings should be able to use this module without need of +learning a new interface. +.SS Communicating Python Objects and Array Data +.sp +The Python standard library supports different mechanisms for data +persistence. Many of them rely on disk storage, but \fIpickling\fP and +\fImarshaling\fP can also work with memory buffers. +.sp +The \X'tty: link https://docs.python.org/3/library/pickle.html#module-pickle'\fI\%pickle\fP\X'tty: link' modules provide user\-extensible facilities to +serialize general Python objects using ASCII or binary formats. The +\X'tty: link https://docs.python.org/3/library/marshal.html#module-marshal'\fI\%marshal\fP\X'tty: link' module provides facilities to serialize built\-in Python +objects using a binary format specific to Python, but independent of +machine architecture issues. +.sp +\fIMPI for Python\fP can communicate any built\-in or user\-defined Python +object taking advantage of the features provided by the \X'tty: link https://docs.python.org/3/library/pickle.html#module-pickle'\fI\%pickle\fP\X'tty: link' +module. These facilities will be routinely used to build binary +representations of objects to communicate (at sending processes), and +restoring them back (at receiving processes). +.sp +Although simple and general, the serialization approach (i.e., +\fIpickling\fP and \fIunpickling\fP) previously discussed imposes important +overheads in memory as well as processor usage, especially in the +scenario of objects with large memory footprints being +communicated. Pickling general Python objects, ranging from primitive +or container built\-in types to user\-defined classes, necessarily +requires computer resources. Processing is also needed for +dispatching the appropriate serialization method (that depends on the +type of the object) and doing the actual packing. Additional memory is +always needed, and if its total amount is not known \fIa priori\fP, many +reallocations can occur. Indeed, in the case of large numeric arrays, +this is certainly unacceptable and precludes communication of objects +occupying half or more of the available memory resources. +.sp +\fIMPI for Python\fP supports direct communication of any object exporting +the single\-segment buffer interface. This interface is a standard +Python mechanism provided by some types (e.g., strings and numeric +arrays), allowing access in the C side to a contiguous memory buffer +(i.e., address and length) containing the relevant data. This feature, +in conjunction with the capability of constructing user\-defined MPI +datatypes describing complicated memory layouts, enables the +implementation of many algorithms involving multidimensional numeric +arrays (e.g., image processing, fast Fourier transforms, finite +difference schemes on structured Cartesian grids) directly in Python, +with negligible overhead, and almost as fast as compiled Fortran, C, +or C++ codes. +.SS Communicators +.sp +In \fIMPI for Python\fP, \fI\%Comm\fP is the base class of communicators. The +\fI\%Intracomm\fP and \fI\%Intercomm\fP classes are subclasses of the \fI\%Comm\fP +class. The \fI\%Comm.Is_inter\fP method (and \fI\%Comm.Is_intra\fP, provided for +convenience but not part of the MPI specification) is defined for +communicator objects and can be used to determine the particular +communicator class. +.sp +The two predefined intracommunicator instances are available: +\fI\%COMM_SELF\fP and \fI\%COMM_WORLD\fP\&. From them, new communicators can be +created as needed. +.sp +The number of processes in a communicator and the calling process rank +can be respectively obtained with methods \fI\%Comm.Get_size\fP and +\fI\%Comm.Get_rank\fP\&. The associated process group can be retrieved from a +communicator by calling the \fI\%Comm.Get_group\fP method, which returns an +instance of the \fI\%Group\fP class. Set operations with \fI\%Group\fP objects +like like \fI\%Group.Union\fP, \fI\%Group.Intersection\fP and \fI\%Group.Difference\fP +are fully supported, as well as the creation of new communicators from +these groups using \fI\%Comm.Create\fP and \fI\%Intracomm.Create_group\fP\&. +.sp +New communicator instances can be obtained with the \fI\%Comm.Clone\fP, +\fI\%Comm.Dup\fP and \fI\%Comm.Split\fP methods, as well methods +\fI\%Intracomm.Create_intercomm\fP and \fI\%Intercomm.Merge\fP\&. +.sp +Virtual topologies (\fI\%Cartcomm\fP, \fI\%Graphcomm\fP and \fI\%Distgraphcomm\fP +classes, which are specializations of the \fI\%Intracomm\fP class) are fully +supported. New instances can be obtained from intracommunicator +instances with factory methods \fI\%Intracomm.Create_cart\fP and +\fI\%Intracomm.Create_graph\fP\&. +.SS Point\-to\-Point Communications +.sp +Point to point communication is a fundamental capability of message +passing systems. This mechanism enables the transmission of data +between a pair of processes, one side sending, the other receiving. +.sp +MPI provides a set of \fIsend\fP and \fIreceive\fP functions allowing the +communication of \fItyped\fP data with an associated \fItag\fP\&. The type +information enables the conversion of data representation from one +architecture to another in the case of heterogeneous computing +environments; additionally, it allows the representation of +non\-contiguous data layouts and user\-defined datatypes, thus avoiding +the overhead of (otherwise unavoidable) packing/unpacking +operations. The tag information allows selectivity of messages at the +receiving end. +.SS Blocking Communications +.sp +MPI provides basic send and receive functions that are \fIblocking\fP\&. +These functions block the caller until the data buffers involved in +the communication can be safely reused by the application program. +.sp +In \fIMPI for Python\fP, the \fI\%Comm.Send\fP, \fI\%Comm.Recv\fP and \fI\%Comm.Sendrecv\fP +methods of communicator objects provide support for blocking +point\-to\-point communications within \fI\%Intracomm\fP and \fI\%Intercomm\fP +instances. These methods can communicate memory buffers. The variants +\fI\%Comm.send\fP, \fI\%Comm.recv\fP and \fI\%Comm.sendrecv\fP can communicate general +Python objects. +.SS Nonblocking Communications +.sp +On many systems, performance can be significantly increased by +overlapping communication and computation. This is particularly true +on systems where communication can be executed autonomously by an +intelligent, dedicated communication controller. +.sp +MPI provides \fInonblocking\fP send and receive functions. They allow the +possible overlap of communication and computation. Non\-blocking +communication always come in two parts: posting functions, which begin +the requested operation; and test\-for\-completion functions, which +allow to discover whether the requested operation has completed. +.sp +In \fIMPI for Python\fP, the \fI\%Comm.Isend\fP and \fI\%Comm.Irecv\fP methods +initiate send and receive operations, respectively. These methods +return a \fI\%Request\fP instance, uniquely identifying the started +operation. Its completion can be managed using the \fI\%Request.Test\fP, +\fI\%Request.Wait\fP and \fI\%Request.Cancel\fP methods. The management of +\fI\%Request\fP objects and associated memory buffers involved in +communication requires a careful, rather low\-level coordination. Users +must ensure that objects exposing their memory buffers are not +accessed at the Python level while they are involved in nonblocking +message\-passing operations. +.SS Persistent Communications +.sp +Often a communication with the same argument list is repeatedly +executed within an inner loop. In such cases, communication can be +further optimized by using persistent communication, a particular case +of nonblocking communication allowing the reduction of the overhead +between processes and communication controllers. Furthermore , this +kind of optimization can also alleviate the extra call overheads +associated to interpreted, dynamic languages like Python. +.sp +In \fIMPI for Python\fP, the \fI\%Comm.Send_init\fP and \fI\%Comm.Recv_init\fP methods +create persistent requests for a send and receive operation, +respectively. These methods return an instance of the \fI\%Prequest\fP +class, a subclass of the \fI\%Request\fP class. The actual communication can +be effectively started using the \fI\%Prequest.Start\fP method, and its +completion can be managed as previously described. +.SS Collective Communications +.sp +Collective communications allow the transmittal of data between +multiple processes of a group simultaneously. The syntax and semantics +of collective functions is consistent with point\-to\-point +communication. Collective functions communicate \fItyped\fP data, but +messages are not paired with an associated \fItag\fP; selectivity of +messages is implied in the calling order. Additionally, collective +functions come in blocking versions only. +.sp +The more commonly used collective communication operations are the +following. +.INDENT 0.0 +.IP \(bu 2 +Barrier synchronization across all group members. +.IP \(bu 2 +Global communication functions +.INDENT 2.0 +.IP \(bu 2 +Broadcast data from one member to all members of a group. +.IP \(bu 2 +Gather data from all members to one member of a group. +.IP \(bu 2 +Scatter data from one member to all members of a group. +.UNINDENT +.IP \(bu 2 +Global reduction operations such as sum, maximum, minimum, etc. +.UNINDENT +.sp +In \fIMPI for Python\fP, the \fI\%Comm.Bcast\fP, \fI\%Comm.Scatter\fP, \fI\%Comm.Gather\fP, +\fI\%Comm.Allgather\fP, \fI\%Comm.Alltoall\fP methods provide support for +collective communications of memory buffers. The lower\-case variants +\fI\%Comm.bcast\fP, \fI\%Comm.scatter\fP, \fI\%Comm.gather\fP, \fI\%Comm.allgather\fP and +\fI\%Comm.alltoall\fP can communicate general Python objects. The vector +variants (which can communicate different amounts of data to each +process) \fI\%Comm.Scatterv\fP, \fI\%Comm.Gatherv\fP, \fI\%Comm.Allgatherv\fP, +\fI\%Comm.Alltoallv\fP and \fI\%Comm.Alltoallw\fP are also supported, they can +only communicate objects exposing memory buffers. +.sp +Global reduction operations on memory buffers are accessible through +the \fI\%Comm.Reduce\fP, \fI\%Comm.Reduce_scatter\fP, \fI\%Comm.Allreduce\fP, +\fI\%Intracomm.Scan\fP and \fI\%Intracomm.Exscan\fP methods. The lower\-case +variants \fI\%Comm.reduce\fP, \fI\%Comm.allreduce\fP, \fI\%Intracomm.scan\fP and +\fI\%Intracomm.exscan\fP can communicate general Python objects; however, +the actual required reduction computations are performed sequentially +at some process. All the predefined (i.e., \fI\%SUM\fP, \fI\%PROD\fP, \fI\%MAX\fP, etc.) +reduction operations can be applied. +.SS Support for GPU\-aware MPI +.sp +Several MPI implementations, including Open MPI and MVAPICH, support +passing GPU pointers to MPI calls to avoid explicit data movement +between host and device. On the Python side, support for handling GPU +arrays have been implemented in many libraries related GPU computation +such as \X'tty: link https://cupy.dev/'\fI\%CuPy\fP\X'tty: link', \X'tty: link https://numba.pydata.org/'\fI\%Numba\fP\X'tty: link', \X'tty: link https://pytorch.org/'\fI\%PyTorch\fP\X'tty: link', and \X'tty: link https://arrow.apache.org/docs/python/'\fI\%PyArrow\fP\X'tty: link'\&. To maximize +interoperability across library boundaries, two kinds of zero\-copy +data exchange protocols have been defined and agreed upon: \X'tty: link https://dmlc.github.io/dlpack/latest/python_spec.html#python-spec'\fI\%DLPack\fP\X'tty: link' and \X'tty: link https://numba.readthedocs.io/en/stable/cuda/cuda_array_interface.html#cuda-array-interface'\fI\%CUDA Array Interface (CAI)\fP\X'tty: link'\&. +.sp +\fIMPI for Python\fP provides an experimental support for GPU\-aware MPI. +This feature requires: +.INDENT 0.0 +.IP 1. 3 +mpi4py is built against a GPU\-aware MPI library. +.IP 2. 3 +The Python GPU arrays are compliant with either of the protocols. +.UNINDENT +.sp +See the \fI\%Tutorial\fP section for further information. We note that +.INDENT 0.0 +.IP \(bu 2 +Whether or not a MPI call can work for GPU arrays depends on the +underlying MPI implementation, not on mpi4py. +.IP \(bu 2 +This support is currently experimental and subject to change in the +future. +.UNINDENT +.SS Dynamic Process Management +.sp +In the context of the MPI\-1 specification, a parallel application is +static; that is, no processes can be added to or deleted from a +running application after it has been started. Fortunately, this +limitation was addressed in MPI\-2. The new specification added a +process management model providing a basic interface between an +application and external resources and process managers. +.sp +This MPI\-2 extension can be really useful, especially for sequential +applications built on top of parallel modules, or parallel +applications with a client/server model. The MPI\-2 process model +provides a mechanism to create new processes and establish +communication between them and the existing MPI application. It also +provides mechanisms to establish communication between two existing +MPI applications, even when one did not \fIstart\fP the other. +.sp +In \fIMPI for Python\fP, new independent process groups can be created by +calling the \fI\%Intracomm.Spawn\fP method within an intracommunicator. +This call returns a new intercommunicator (i.e., an \fI\%Intercomm\fP +instance) at the parent process group. The child process group can +retrieve the matching intercommunicator by calling the +\fI\%Comm.Get_parent\fP class method. At each side, the new +intercommunicator can be used to perform point to point and collective +communications between the parent and child groups of processes. +.sp +Alternatively, disjoint groups of processes can establish +communication using a client/server approach. Any server application +must first call the \fI\%Open_port\fP function to open a \fIport\fP and the +\fI\%Publish_name\fP function to publish a provided \fIservice\fP, and next call +the \fI\%Intracomm.Accept\fP method. Any client applications can first find +a published \fIservice\fP by calling the \fI\%Lookup_name\fP function, which +returns the \fIport\fP where a server can be contacted; and next call the +\fI\%Intracomm.Connect\fP method. Both \fI\%Intracomm.Accept\fP and +\fI\%Intracomm.Connect\fP methods return an \fI\%Intercomm\fP instance. When +connection between client/server processes is no longer needed, all of +them must cooperatively call the \fI\%Comm.Disconnect\fP +method. Additionally, server applications should release resources by +calling the \fI\%Unpublish_name\fP and \fI\%Close_port\fP functions. +.SS One\-Sided Communications +.sp +One\-sided communications (also called \fIRemote Memory Access\fP, \fIRMA\fP) +supplements the traditional two\-sided, send/receive based MPI +communication model with a one\-sided, put/get based +interface. One\-sided communication that can take advantage of the +capabilities of highly specialized network hardware. Additionally, +this extension lowers latency and software overhead in applications +written using a shared\-memory\-like paradigm. +.sp +The MPI specification revolves around the use of objects called +\fIwindows\fP; they intuitively specify regions of a process\(aqs memory that +have been made available for remote read and write operations. The +published memory blocks can be accessed through three functions for +put (remote send), get (remote write), and accumulate (remote update +or reduction) data items. A much larger number of functions support +different synchronization styles; the semantics of these +synchronization operations are fairly complex. +.sp +In \fIMPI for Python\fP, one\-sided operations are available by using +instances of the \fI\%Win\fP class. New window objects are created by +calling the \fI\%Win.Create\fP method at all processes within a communicator +and specifying a memory buffer . When a window instance is no longer +needed, the \fI\%Win.Free\fP method should be called. +.sp +The three one\-sided MPI operations for remote write, read and +reduction are available through calling the methods \fI\%Win.Put\fP, +\fI\%Win.Get\fP, and \fI\%Win.Accumulate\fP respectively within a \fI\%Win\fP instance. +These methods need an integer rank identifying the target process and +an integer offset relative the base address of the remote memory block +being accessed. +.sp +The one\-sided operations read, write, and reduction are implicitly +nonblocking, and must be synchronized by using two primary modes. +Active target synchronization requires the origin process to call the +\fI\%Win.Start\fP and \fI\%Win.Complete\fP methods at the origin process, and +target process cooperates by calling the \fI\%Win.Post\fP and \fI\%Win.Wait\fP +methods. There is also a collective variant provided by the +\fI\%Win.Fence\fP method. Passive target synchronization is more lenient, +only the origin process calls the \fI\%Win.Lock\fP and \fI\%Win.Unlock\fP +methods. Locks are used to protect remote accesses to the locked +remote window and to protect local load/store accesses to a locked +local window. +.SS Parallel Input/Output +.sp +The POSIX standard provides a model of a widely portable file +system. However, the optimization needed for parallel input/output +cannot be achieved with this generic interface. In order to ensure +efficiency and scalability, the underlying parallel input/output +system must provide a high\-level interface supporting partitioning of +file data among processes and a collective interface supporting +complete transfers of global data structures between process memories +and files. Additionally, further efficiencies can be gained via +support for asynchronous input/output, strided accesses to data, and +control over physical file layout on storage devices. This scenario +motivated the inclusion in the MPI\-2 standard of a custom interface in +order to support more elaborated parallel input/output operations. +.sp +The MPI specification for parallel input/output revolves around the +use objects called \fIfiles\fP\&. As defined by MPI, files are not just +contiguous byte streams. Instead, they are regarded as ordered +collections of \fItyped\fP data items. MPI supports sequential or random +access to any integral set of these items. Furthermore, files are +opened collectively by a group of processes. +.sp +The common patterns for accessing a shared file (broadcast, scatter, +gather, reduction) is expressed by using user\-defined datatypes. +Compared to the communication patterns of point\-to\-point and +collective communications, this approach has the advantage of added +flexibility and expressiveness. Data access operations (read and +write) are defined for different kinds of positioning (using explicit +offsets, individual file pointers, and shared file pointers), +coordination (non\-collective and collective), and synchronism +(blocking, nonblocking, and split collective with begin/end phases). +.sp +In \fIMPI for Python\fP, all MPI input/output operations are performed +through instances of the \fI\%File\fP class. File handles are obtained by +calling the \fI\%File.Open\fP method at all processes within a communicator +and providing a file name and the intended access mode. After use, +they must be closed by calling the \fI\%File.Close\fP method. Files even +can be deleted by calling method \fI\%File.Delete\fP\&. +.sp +After creation, files are typically associated with a per\-process +\fIview\fP\&. The view defines the current set of data visible and +accessible from an open file as an ordered set of elementary +datatypes. This data layout can be set and queried with the +\fI\%File.Set_view\fP and \fI\%File.Get_view\fP methods respectively. +.sp +Actual input/output operations are achieved by many methods combining +read and write calls with different behavior regarding positioning, +coordination, and synchronism. Summing up, \fIMPI for Python\fP provides +the thirty (30) methods defined in MPI\-2 for reading from or writing +to files using explicit offsets or file pointers (individual or +shared), in blocking or nonblocking and collective or noncollective +versions. +.SS Environmental Management +.SS Initialization and Exit +.sp +Module functions \fI\%Init\fP or \fI\%Init_thread\fP and \fI\%Finalize\fP provide MPI +initialization and finalization respectively. Module functions +\fI\%Is_initialized\fP and \fI\%Is_finalized\fP provide the respective tests for +initialization and finalization. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +\fBMPI_Init()\fP or \fBMPI_Init_thread()\fP is actually called +when you import the \fI\%MPI\fP module from the +\fI\%mpi4py\fP package, but only if MPI is not already +initialized. In such case, calling \fI\%Init\fP or \fI\%Init_thread\fP from +Python is expected to generate an MPI error, and in turn an +exception will be raised. +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +\fBMPI_Finalize()\fP is registered (by using Python C/API +function \X'tty: link https://docs.python.org/3/c-api/sys.html#c.Py_AtExit'\fI\%Py_AtExit()\fP\X'tty: link') for being automatically called when +Python processes exit, but only if \fI\%mpi4py\fP actually +initialized MPI. Therefore, there is no need to call \fI\%Finalize\fP +from Python to ensure MPI finalization. +.UNINDENT +.UNINDENT +.SS Implementation Information +.INDENT 0.0 +.IP \(bu 2 +The MPI version number can be retrieved from module function +\fI\%Get_version\fP\&. It returns a two\-integer tuple \fB(version, +subversion)\fP\&. +.IP \(bu 2 +The \fI\%Get_processor_name\fP function can be used to access the +processor name. +.IP \(bu 2 +The values of predefined attributes attached to the world +communicator can be obtained by calling the \fI\%Comm.Get_attr\fP method +within the \fI\%COMM_WORLD\fP instance. +.UNINDENT +.SS Timers +.sp +MPI timer functionalities are available through the \fI\%Wtime\fP and +\fI\%Wtick\fP functions. +.SS Error Handling +.sp +In order to facilitate handle sharing with other Python modules +interfacing MPI\-based parallel libraries, the predefined MPI error +handlers \fI\%ERRORS_RETURN\fP and \fI\%ERRORS_ARE_FATAL\fP can be assigned to and +retrieved from communicators using methods \fI\%Comm.Set_errhandler\fP and +\fI\%Comm.Get_errhandler\fP, and similarly for windows and files. New custom +error handlers can be created with \fI\%Comm.Create_errhandler\fP\&. +.sp +When the predefined error handler \fI\%ERRORS_RETURN\fP is set, errors +returned from MPI calls within Python code will raise an instance of +the exception class \fI\%Exception\fP, which is a subclass of the standard +Python exception \X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeError'\fI\%RuntimeError\fP\X'tty: link'\&. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +After import, mpi4py overrides the default MPI rules governing +inheritance of error handlers. The \fI\%ERRORS_RETURN\fP error handler is +set in the predefined \fI\%COMM_SELF\fP and \fI\%COMM_WORLD\fP communicators, +as well as any new \fI\%Comm\fP, \fI\%Win\fP, or \fI\%File\fP instance created +through mpi4py. If you ever pass such handles to C/C++/Fortran +library code, it is recommended to set the \fI\%ERRORS_ARE_FATAL\fP error +handler on them to ensure MPI errors do not pass silently. +.UNINDENT +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +Importing with \fBfrom mpi4py.MPI import *\fP will cause a name +clashing with the standard Python \X'tty: link https://docs.python.org/3/library/exceptions.html#Exception'\fI\%Exception\fP\X'tty: link' base class. +.UNINDENT +.UNINDENT +.SH TUTORIAL +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +Under construction. Contributions very welcome! +.UNINDENT +.UNINDENT +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +\X'tty: link https://www.hlrs.de/people/rolf-rabenseifner'\fI\%Rolf Rabenseifner\fP\X'tty: link' at \X'tty: link https://www.hlrs.de/'\fI\%HLRS\fP\X'tty: link' developed a comprehensive +MPI\-3.1/4.0 course with slides and a large set of exercises +including solutions. This material is \X'tty: link https://www.hlrs.de/training/self-study-materials/mpi-course-material'\fI\%available online\fP\X'tty: link' for self\-study. The slides and exercises show the C, +Fortran, and Python (mpi4py) interfaces. For performance reasons, +most Python exercises use NumPy arrays and communication routines +involving buffer\-like objects. +.UNINDENT +.UNINDENT +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +\X'tty: link https://tacc.utexas.edu/about/staff-directory/victor-eijkhout'\fI\%Victor Eijkhout\fP\X'tty: link' at \X'tty: link https://tacc.utexas.edu/'\fI\%TACC\fP\X'tty: link' authored the book \fIParallel +Programming for Science and Engineering\fP\&. This book is \X'tty: link https://theartofhpc.com/pcse.html'\fI\%available +online\fP\X'tty: link' in PDF and \X'tty: link https://theartofhpc.com/pcse/index.html'\fI\%HTML\fP\X'tty: link' formats. The +book covers parallel programming with MPI and OpenMP in C/C++ and +Fortran, and MPI in Python using mpi4py. +.UNINDENT +.UNINDENT +.sp +\fIMPI for Python\fP supports convenient, \fIpickle\fP\-based communication of +generic Python object as well as fast, near C\-speed, direct array data +communication of buffer\-provider objects (e.g., NumPy arrays). +.INDENT 0.0 +.IP \(bu 2 +Communication of generic Python objects +.sp +You have to use methods with \fBall\-lowercase\fP names, like +\fI\%Comm.send\fP, \fI\%Comm.recv\fP, \fI\%Comm.bcast\fP, \fI\%Comm.scatter\fP, +\fI\%Comm.gather\fP . An object to be sent is passed as a parameter to the +communication call, and the received object is simply the return +value. +.sp +The \fI\%Comm.isend\fP and \fI\%Comm.irecv\fP methods return \fI\%Request\fP +instances; completion of these methods can be managed using the +\fI\%Request.test\fP and \fI\%Request.wait\fP methods. +.sp +The \fI\%Comm.recv\fP and \fI\%Comm.irecv\fP methods may be passed a buffer +object that can be repeatedly used to receive messages avoiding +internal memory allocation. This buffer must be sufficiently large +to accommodate the transmitted messages; hence, any buffer passed to +\fI\%Comm.recv\fP or \fI\%Comm.irecv\fP must be at least as long as the +\fIpickled\fP data transmitted to the receiver. +.sp +Collective calls like \fI\%Comm.scatter\fP, \fI\%Comm.gather\fP, +\fI\%Comm.allgather\fP, \fI\%Comm.alltoall\fP expect a single value or a +sequence of \fI\%Comm.size\fP elements at the root or all process. They +return a single value, a list of \fI\%Comm.size\fP elements, or \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\&. +.sp +\fBNOTE:\fP +.INDENT 2.0 +.INDENT 3.5 +\fIMPI for Python\fP uses the \fBhighest\fP \X'tty: link https://docs.python.org/3/library/pickle.html#pickle-protocols'\fI\%protocol version\fP\X'tty: link' available in the Python runtime (see the +\X'tty: link https://docs.python.org/3/library/pickle.html#pickle.HIGHEST_PROTOCOL'\fI\%HIGHEST_PROTOCOL\fP\X'tty: link' constant in the \X'tty: link https://docs.python.org/3/library/pickle.html#module-pickle'\fI\%pickle\fP\X'tty: link' +module). The default protocol can be changed at import time by +setting the \fI\%MPI4PY_PICKLE_PROTOCOL\fP environment +variable, or at runtime by assigning a different value to the +\fI\%PROTOCOL\fP attribute of the +\fI\%pickle\fP object within the \fI\%MPI\fP +module. +.UNINDENT +.UNINDENT +.IP \(bu 2 +Communication of buffer\-like objects +.sp +You have to use method names starting with an \fBupper\-case\fP letter, +like \fI\%Comm.Send\fP, \fI\%Comm.Recv\fP, \fI\%Comm.Bcast\fP, \fI\%Comm.Scatter\fP, +\fI\%Comm.Gather\fP\&. +.sp +In general, buffer arguments to these calls must be explicitly +specified by using a 2/3\-list/tuple like \fB[data, MPI.DOUBLE]\fP, or +\fB[data, count, MPI.DOUBLE]\fP (the former one uses the byte\-size of +\fBdata\fP and the extent of the MPI datatype to define \fBcount\fP). +.sp +For vector collectives communication operations like +\fI\%Comm.Scatterv\fP and \fI\%Comm.Gatherv\fP, buffer arguments are +specified as \fB[data, count, displ, datatype]\fP, where \fBcount\fP and +\fBdispl\fP are sequences of integral values. +.sp +Automatic MPI datatype discovery for NumPy/GPU arrays and PEP\-3118 +buffers is supported, but limited to basic C types (all C/C99\-native +signed/unsigned integral types and single/double precision +real/complex floating types) and availability of matching datatypes +in the underlying MPI implementation. In this case, the +buffer\-provider object can be passed directly as a buffer argument, +the count and MPI datatype will be inferred. +.sp +If mpi4py is built against a GPU\-aware MPI implementation, GPU +arrays can be passed to upper\-case methods as long as they have +either the \fB__dlpack__\fP and \fB__dlpack_device__\fP methods or the +\fB__cuda_array_interface__\fP attribute that are compliant with the +respective standard specifications. Moreover, only C\-contiguous or +Fortran\-contiguous GPU arrays are supported. It is important to note +that GPU buffers must be fully ready before any MPI routines operate +on them to avoid race conditions. This can be ensured by using the +synchronization API of your array library. mpi4py does not have +access to any GPU\-specific functionality and thus cannot perform +this operation automatically for users. +.UNINDENT +.SS Running Python scripts with MPI +.sp +Most MPI programs can be run with the command \fBmpiexec\fP\&. In +practice, running Python programs looks like: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 4 python script.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +to run the program with 4 processors. +.SS Point\-to\-Point Communication +.INDENT 0.0 +.IP \(bu 2 +Python objects (\X'tty: link https://docs.python.org/3/library/pickle.html#module-pickle'\fI\%pickle\fP\X'tty: link' under the hood): +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +if rank == 0: + data = {\(aqa\(aq: 7, \(aqb\(aq: 3.14} + comm.send(data, dest=1, tag=11) +elif rank == 1: + data = comm.recv(source=0, tag=11) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Python objects with non\-blocking communication: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +if rank == 0: + data = {\(aqa\(aq: 7, \(aqb\(aq: 3.14} + req = comm.isend(data, dest=1, tag=11) + req.wait() +elif rank == 1: + req = comm.irecv(source=0, tag=11) + data = req.wait() +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +NumPy arrays (the fast way!): +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +# passing MPI datatypes explicitly +if rank == 0: + data = numpy.arange(1000, dtype=\(aqi\(aq) + comm.Send([data, MPI.INT], dest=1, tag=77) +elif rank == 1: + data = numpy.empty(1000, dtype=\(aqi\(aq) + comm.Recv([data, MPI.INT], source=0, tag=77) + +# automatic MPI datatype discovery +if rank == 0: + data = numpy.arange(100, dtype=numpy.float64) + comm.Send(data, dest=1, tag=13) +elif rank == 1: + data = numpy.empty(100, dtype=numpy.float64) + comm.Recv(data, source=0, tag=13) +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS Collective Communication +.INDENT 0.0 +.IP \(bu 2 +Broadcasting a Python dictionary: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +if rank == 0: + data = {\(aqkey1\(aq : [7, 2.72, 2+3j], + \(aqkey2\(aq : ( \(aqabc\(aq, \(aqxyz\(aq)} +else: + data = None +data = comm.bcast(data, root=0) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Scattering Python objects: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI + +comm = MPI.COMM_WORLD +size = comm.Get_size() +rank = comm.Get_rank() + +if rank == 0: + data = [(i+1)**2 for i in range(size)] +else: + data = None +data = comm.scatter(data, root=0) +assert data == (rank+1)**2 +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Gathering Python objects: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI + +comm = MPI.COMM_WORLD +size = comm.Get_size() +rank = comm.Get_rank() + +data = (rank+1)**2 +data = comm.gather(data, root=0) +if rank == 0: + for i in range(size): + assert data[i] == (i+1)**2 +else: + assert data is None +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Broadcasting a NumPy array: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy as np + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +if rank == 0: + data = np.arange(100, dtype=\(aqi\(aq) +else: + data = np.empty(100, dtype=\(aqi\(aq) +comm.Bcast(data, root=0) +for i in range(100): + assert data[i] == i +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Scattering NumPy arrays: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy as np + +comm = MPI.COMM_WORLD +size = comm.Get_size() +rank = comm.Get_rank() + +sendbuf = None +if rank == 0: + sendbuf = np.empty([size, 100], dtype=\(aqi\(aq) + sendbuf.T[:,:] = range(size) +recvbuf = np.empty(100, dtype=\(aqi\(aq) +comm.Scatter(sendbuf, recvbuf, root=0) +assert np.allclose(recvbuf, rank) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Gathering NumPy arrays: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy as np + +comm = MPI.COMM_WORLD +size = comm.Get_size() +rank = comm.Get_rank() + +sendbuf = np.zeros(100, dtype=\(aqi\(aq) + rank +recvbuf = None +if rank == 0: + recvbuf = np.empty([size, 100], dtype=\(aqi\(aq) +comm.Gather(sendbuf, recvbuf, root=0) +if rank == 0: + for i in range(size): + assert np.allclose(recvbuf[i,:], i) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Parallel matrix\-vector product: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy + +def matvec(comm, A, x): + m = A.shape[0] # local rows + p = comm.Get_size() + xg = numpy.zeros(m*p, dtype=\(aqd\(aq) + comm.Allgather([x, MPI.DOUBLE], + [xg, MPI.DOUBLE]) + y = numpy.dot(A, xg) + return y +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS Input/Output (MPI\-IO) +.INDENT 0.0 +.IP \(bu 2 +Collective I/O with NumPy arrays: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy as np + +amode = MPI.MODE_WRONLY|MPI.MODE_CREATE +comm = MPI.COMM_WORLD +fh = MPI.File.Open(comm, \(dq./datafile.contig\(dq, amode) + +buffer = np.empty(10, dtype=np.int) +buffer[:] = comm.Get_rank() + +offset = comm.Get_rank()*buffer.nbytes +fh.Write_at_all(offset, buffer) + +fh.Close() +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Non\-contiguous Collective I/O with NumPy arrays and datatypes: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import numpy as np + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() +size = comm.Get_size() + +amode = MPI.MODE_WRONLY|MPI.MODE_CREATE +fh = MPI.File.Open(comm, \(dq./datafile.noncontig\(dq, amode) + +item_count = 10 + +buffer = np.empty(item_count, dtype=\(aqi\(aq) +buffer[:] = rank + +filetype = MPI.INT.Create_vector(item_count, 1, size) +filetype.Commit() + +displacement = MPI.INT.Get_size()*rank +fh.Set_view(displacement, filetype=filetype) + +fh.Write_all(buffer) +filetype.Free() +fh.Close() +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS Dynamic Process Management +.INDENT 0.0 +.IP \(bu 2 +Compute Pi \- Master (or parent, or client) side: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +#!/usr/bin/env python +from mpi4py import MPI +import numpy +import sys + +comm = MPI.COMM_SELF.Spawn(sys.executable, + args=[\(aqcpi.py\(aq], + maxprocs=5) + +N = numpy.array(100, \(aqi\(aq) +comm.Bcast([N, MPI.INT], root=MPI.ROOT) +PI = numpy.array(0.0, \(aqd\(aq) +comm.Reduce(None, [PI, MPI.DOUBLE], + op=MPI.SUM, root=MPI.ROOT) +print(PI) + +comm.Disconnect() +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Compute Pi \- Worker (or child, or server) side: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +#!/usr/bin/env python +from mpi4py import MPI +import numpy + +comm = MPI.Comm.Get_parent() +size = comm.Get_size() +rank = comm.Get_rank() + +N = numpy.array(0, dtype=\(aqi\(aq) +comm.Bcast([N, MPI.INT], root=0) +h = 1.0 / N; s = 0.0 +for i in range(rank, N, size): + x = h * (i + 0.5) + s += 4.0 / (1.0 + x**2) +PI = numpy.array(s * h, dtype=\(aqd\(aq) +comm.Reduce([PI, MPI.DOUBLE], None, + op=MPI.SUM, root=0) + +comm.Disconnect() +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS GPU\-aware MPI + Python GPU arrays +.INDENT 0.0 +.IP \(bu 2 +Reduce\-to\-all CuPy arrays: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +import cupy as cp + +comm = MPI.COMM_WORLD +size = comm.Get_size() +rank = comm.Get_rank() + +sendbuf = cp.arange(10, dtype=\(aqi\(aq) +recvbuf = cp.empty_like(sendbuf) +cp.cuda.get_current_stream().synchronize() +comm.Allreduce(sendbuf, recvbuf) + +assert cp.allclose(recvbuf, sendbuf*size) +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS One\-Sided Communication (RMA) +.INDENT 0.0 +.IP \(bu 2 +Read from (write to) the entire RMA window: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +import numpy as np +from mpi4py import MPI +from mpi4py.util import dtlib + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +datatype = MPI.FLOAT +np_dtype = dtlib.to_numpy_dtype(datatype) +itemsize = datatype.Get_size() + +N = 10 +win_size = N * itemsize if rank == 0 else 0 +win = MPI.Win.Allocate(win_size, comm=comm) + +buf = np.empty(N, dtype=np_dtype) +if rank == 0: + buf.fill(42) + win.Lock(rank=0) + win.Put(buf, target_rank=0) + win.Unlock(rank=0) + comm.Barrier() +else: + comm.Barrier() + win.Lock(rank=0) + win.Get(buf, target_rank=0) + win.Unlock(rank=0) + assert np.all(buf == 42) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Accessing a part of the RMA window using the \fBtarget\fP argument, +which is defined as \fB(offset, count, datatype)\fP: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +import numpy as np +from mpi4py import MPI +from mpi4py.util import dtlib + +comm = MPI.COMM_WORLD +rank = comm.Get_rank() + +datatype = MPI.FLOAT +np_dtype = dtlib.to_numpy_dtype(datatype) +itemsize = datatype.Get_size() + +N = comm.Get_size() + 1 +win_size = N * itemsize if rank == 0 else 0 +win = MPI.Win.Allocate( + size=win_size, + disp_unit=itemsize, + comm=comm, +) +if rank == 0: + mem = np.frombuffer(win, dtype=np_dtype) + mem[:] = np.arange(len(mem), dtype=np_dtype) +comm.Barrier() + +buf = np.zeros(3, dtype=np_dtype) +target = (rank, 2, datatype) +win.Lock(rank=0) +win.Get(buf, target_rank=0, target=target) +win.Unlock(rank=0) +assert np.all(buf == [rank, rank+1, 0]) +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS Wrapping with SWIG +.INDENT 0.0 +.IP \(bu 2 +C source: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +/* file: helloworld.c */ +void sayhello(MPI_Comm comm) +{ + int size, rank; + MPI_Comm_size(comm, &size); + MPI_Comm_rank(comm, &rank); + printf(\(dqHello, World! \(dq + \(dqI am process %d of %d.\en\(dq, + rank, size); +} +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +SWIG interface file: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +// file: helloworld.i +%module helloworld +%{ +#include +#include \(dqhelloworld.c\(dq +}% + +%include mpi4py/mpi4py.i +%mpi4py_typemap(Comm, MPI_Comm); +void sayhello(MPI_Comm comm); +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Try it in the Python prompt: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +>>> from mpi4py import MPI +>>> import helloworld +>>> helloworld.sayhello(MPI.COMM_WORLD) +Hello, World! I am process 0 of 1. +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SS Wrapping with F2Py +.INDENT 0.0 +.IP \(bu 2 +Fortran 90 source: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +! file: helloworld.f90 +subroutine sayhello(comm) + use mpi + implicit none + integer :: comm, rank, size, ierr + call MPI_Comm_size(comm, size, ierr) + call MPI_Comm_rank(comm, rank, ierr) + print *, \(aqHello, World! I am process \(aq,rank,\(aq of \(aq,size,\(aq.\(aq +end subroutine sayhello +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Compiling example using f2py +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ f2py \-c \-\-f90exec=mpif90 helloworld.f90 \-m helloworld +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Try it in the Python prompt: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +>>> from mpi4py import MPI +>>> import helloworld +>>> fcomm = MPI.COMM_WORLD.py2f() +>>> helloworld.sayhello(fcomm) +Hello, World! I am process 0 of 1. +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.SH MPI4PY +.sp +The \fBMPI for Python\fP package. +.sp +The \fIMessage Passing Interface\fP (MPI) is a standardized and portable +message\-passing system designed to function on a wide variety of +parallel computers. The MPI standard defines the syntax and semantics +of library routines and allows users to write portable programs in the +main scientific programming languages (Fortran, C, or C++). Since its +release, the MPI specification has become the leading standard for +message\-passing libraries for parallel computers. +.sp +\fIMPI for Python\fP provides MPI bindings for the Python programming +language, allowing any Python program to exploit multiple processors. +This package build on the MPI specification and provides an object +oriented interface which closely follows MPI\-2 C++ bindings. +.SS Runtime configuration options +.INDENT 0.0 +.TP +.B mpi4py.rc +This object has attributes exposing runtime configuration options that +become effective at import time of the \fI\%MPI\fP module. +.UNINDENT +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%initialize\fP +T} T{ +Automatic MPI initialization at import +T} +_ +T{ +\fI\%threads\fP +T} T{ +Request initialization with thread support +T} +_ +T{ +\fI\%thread_level\fP +T} T{ +Level of thread support to request +T} +_ +T{ +\fI\%finalize\fP +T} T{ +Automatic MPI finalization at exit +T} +_ +T{ +\fI\%fast_reduce\fP +T} T{ +Use tree\-based reductions for objects +T} +_ +T{ +\fI\%recv_mprobe\fP +T} T{ +Use matched probes to receive objects +T} +_ +T{ +\fI\%irecv_bufsz\fP +T} T{ +Default buffer size in bytes for \fI\%irecv()\fP +T} +_ +T{ +\fI\%errors\fP +T} T{ +Error handling policy +T} +_ +.TE +.sp +Attributes Documentation +.INDENT 0.0 +.TP +.B mpi4py.rc.initialize +Automatic MPI initialization at import. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_INITIALIZE\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.threads +Request initialization with thread support. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_THREADS\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.thread_level +Level of thread support to request. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.TP +.B Default +\fB\(dqmultiple\(dq\fP +.TP +.B Choices +\fB\(dqmultiple\(dq\fP, \fB\(dqserialized\(dq\fP, \fB\(dqfunneled\(dq\fP, \fB\(dqsingle\(dq\fP +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_THREAD_LEVEL\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.finalize +Automatic MPI finalization at exit. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' or \X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_FINALIZE\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.fast_reduce +Use tree\-based reductions for objects. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_FAST_REDUCE\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.recv_mprobe +Use matched probes to receive objects. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_RECV_MPROBE\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.irecv_bufsz +Default buffer size in bytes for \fI\%irecv()\fP\&. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.TP +.B Default +\fB32768\fP +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_IRECV_BUFSZ\fP +.UNINDENT +.UNINDENT +.sp +Added in version 4.0.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.rc.errors +Error handling policy. +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.TP +.B Default +\fB\(dqexception\(dq\fP +.TP +.B Choices +\fB\(dqexception\(dq\fP, \fB\(dqdefault\(dq\fP, \fB\(dqabort\(dq\fP, \fB\(dqfatal\(dq\fP +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%MPI4PY_RC_ERRORS\fP +.UNINDENT +.UNINDENT +.UNINDENT +.sp +Example +.sp +MPI for Python features automatic initialization and finalization of the MPI +execution environment. By using the \fI\%mpi4py.rc\fP object, MPI initialization and +finalization can be handled programmatically: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +import mpi4py +mpi4py.rc.initialize = False # do not initialize MPI automatically +mpi4py.rc.finalize = False # do not finalize MPI automatically + +from mpi4py import MPI # import the \(aqMPI\(aq module + +MPI.Init() # manual initialization of the MPI environment +\&... # your finest code here ... +MPI.Finalize() # manual finalization of the MPI environment +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Environment variables +.sp +The following environment variables override the corresponding attributes of +the \fI\%mpi4py.rc\fP and \fI\%MPI.pickle\fP objects at import time of the +\fI\%MPI\fP module. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +For variables of boolean type, accepted values are \fB0\fP and \fB1\fP +(interpreted as \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' and \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', respectively), and strings +specifying a \X'tty: link https://yaml.org/type/bool.html'\fI\%YAML boolean\fP\X'tty: link' value (case\-insensitive). +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_INITIALIZE +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +Whether to automatically initialize MPI at import time of the +\fI\%mpi4py.MPI\fP module. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.initialize\fP +.UNINDENT +.UNINDENT +.sp +Added in version 4.0.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_FINALIZE +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.TP +.B Choices +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' +.UNINDENT +.sp +Whether to automatically finalize MPI at exit time of the Python process. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.finalize\fP +.UNINDENT +.UNINDENT +.sp +Added in version 4.0.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_THREADS +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +Whether to initialize MPI with thread support. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.threads\fP +.UNINDENT +.UNINDENT +.sp +Added in version 3.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_THREAD_LEVEL +.INDENT 7.0 +.TP +.B Default +\fB\(dqmultiple\(dq\fP +.TP +.B Choices +\fB\(dqsingle\(dq\fP, \fB\(dqfunneled\(dq\fP, +\fB\(dqserialized\(dq\fP, \fB\(dqmultiple\(dq\fP +.UNINDENT +.sp +The level of required thread support. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.thread_level\fP +.UNINDENT +.UNINDENT +.sp +Added in version 3.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_FAST_REDUCE +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +Whether to use tree\-based reductions for objects. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.fast_reduce\fP +.UNINDENT +.UNINDENT +.sp +Added in version 3.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_RECV_MPROBE +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +Whether to use matched probes to receive objects. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.recv_mprobe\fP +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_IRECV_BUFSZ +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' +.UNINDENT +.sp +Default buffer size in bytes for \fI\%irecv()\fP\&. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.irecv_bufsz\fP +.UNINDENT +.UNINDENT +.sp +Added in version 4.0.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_RC_ERRORS +.INDENT 7.0 +.TP +.B Default +\fB\(dqexception\(dq\fP +.TP +.B Choices +\fB\(dqexception\(dq\fP, \fB\(dqdefault\(dq\fP, \fB\(dqabort\(dq\fP, \fB\(dqfatal\(dq\fP +.UNINDENT +.sp +Controls default MPI error handling policy. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%mpi4py.rc.errors\fP +.UNINDENT +.UNINDENT +.sp +Added in version 3.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_PICKLE_PROTOCOL +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.TP +.B Default +\X'tty: link https://docs.python.org/3/library/pickle.html#pickle.HIGHEST_PROTOCOL'\fI\%pickle.HIGHEST_PROTOCOL\fP\X'tty: link' +.UNINDENT +.sp +Controls the default pickle protocol to use when communicating Python +objects. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%PROTOCOL\fP attribute of the +\fI\%MPI.pickle\fP object within the \fI\%MPI\fP module. +.UNINDENT +.UNINDENT +.sp +Added in version 3.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_PICKLE_THRESHOLD +.INDENT 7.0 +.TP +.B Type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.TP +.B Default +\fB262144\fP +.UNINDENT +.sp +Controls the default buffer size threshold for switching from in\-band to +out\-of\-band buffer handling when using pickle protocol version 5 or higher. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%THRESHOLD\fP attribute of the +\fI\%MPI.pickle\fP object within the \fI\%MPI\fP module. +.UNINDENT +.UNINDENT +.sp +Added in version 3.1.2. + +.UNINDENT +.SS Miscellaneous functions +.INDENT 0.0 +.TP +.B mpi4py.profile(name, *, path=None) +Support for the MPI profiling interface. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBname\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') \-\- Name of the profiler library to load. +.IP \(bu 2 +\fBpath\fP (\X'tty: link https://docs.python.org/3/glossary.html#term-sequence'\fI\%sequence\fP\X'tty: link' of \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \fIoptional\fP) \-\- Additional paths to search for the profiler. +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.get_include() +Return the directory in the package that contains header files. +.sp +Extension modules that need to compile against mpi4py should use +this function to locate the appropriate include directory. Using +Python distutils (or perhaps NumPy distutils): +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +import mpi4py +Extension(\(aqextension_name\(aq, ... + include_dirs=[..., mpi4py.get_include()]) +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.get_config() +Return a dictionary with information about MPI. +.sp +Changed in version 4.0.0: By default, this function returns an empty dictionary. However, +downstream packagers and distributors may alter such behavior. +To that end, MPI information must be provided under an \fBmpi\fP +section within a UTF\-8 encoded INI\-style configuration file +\fBmpi.cfg\fP located at the top\-level package directory. +The configuration file is read and parsed using the +\X'tty: link https://docs.python.org/3/library/configparser.html#module-configparser'\fI\%configparser\fP\X'tty: link' module. + +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#dict'\fI\%dict\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.SH MPI4PY.MPI +.SS Classes +.sp +Ancillary +.TS +center; +|l|l|. +_ +T{ +\fI\%Datatype\fP +T} T{ +Datatype object. +T} +_ +T{ +\fI\%Status\fP +T} T{ +Status object. +T} +_ +T{ +\fI\%Request\fP +T} T{ +Request handler. +T} +_ +T{ +\fI\%Prequest\fP +T} T{ +Persistent request handler. +T} +_ +T{ +\fI\%Grequest\fP +T} T{ +Generalized request handler. +T} +_ +T{ +\fI\%Op\fP +T} T{ +Reduction operation. +T} +_ +T{ +\fI\%Group\fP +T} T{ +Group of processes. +T} +_ +T{ +\fI\%Info\fP +T} T{ +Info object. +T} +_ +T{ +\fI\%Session\fP +T} T{ +Session context. +T} +_ +.TE +.sp +Communication +.TS +center; +|l|l|. +_ +T{ +\fI\%Comm\fP +T} T{ +Communication context. +T} +_ +T{ +\fI\%Intracomm\fP +T} T{ +Intracommunicator. +T} +_ +T{ +\fI\%Topocomm\fP +T} T{ +Topology intracommunicator. +T} +_ +T{ +\fI\%Cartcomm\fP +T} T{ +Cartesian topology intracommunicator. +T} +_ +T{ +\fI\%Graphcomm\fP +T} T{ +General graph topology intracommunicator. +T} +_ +T{ +\fI\%Distgraphcomm\fP +T} T{ +Distributed graph topology intracommunicator. +T} +_ +T{ +\fI\%Intercomm\fP +T} T{ +Intercommunicator. +T} +_ +T{ +\fI\%Message\fP +T} T{ +Matched message. +T} +_ +.TE +.sp +One\-sided operations +.TS +center; +|l|l|. +_ +T{ +\fI\%Win\fP +T} T{ +Remote memory access context. +T} +_ +.TE +.sp +Input/Output +.TS +center; +|l|l|. +_ +T{ +\fI\%File\fP +T} T{ +File I/O context. +T} +_ +.TE +.sp +Error handling +.TS +center; +|l|l|. +_ +T{ +\fI\%Errhandler\fP +T} T{ +Error handler. +T} +_ +T{ +\fI\%Exception\fP +T} T{ +Exception class. +T} +_ +.TE +.sp +Auxiliary +.TS +center; +|l|l|. +_ +T{ +\fI\%Pickle\fP +T} T{ +Pickle/unpickle Python objects. +T} +_ +T{ +\fI\%buffer\fP +T} T{ +Buffer. +T} +_ +.TE +.SS Functions +.sp +Version inquiry +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_version\fP() +T} T{ +Obtain the version number of the MPI standard. +T} +_ +T{ +\fI\%Get_library_version\fP() +T} T{ +Obtain the version string of the MPI library. +T} +_ +.TE +.sp +Initialization and finalization +.TS +center; +|l|l|. +_ +T{ +\fI\%Init\fP() +T} T{ +Initialize the MPI execution environment. +T} +_ +T{ +\fI\%Init_thread\fP([required]) +T} T{ +Initialize the MPI execution environment. +T} +_ +T{ +\fI\%Finalize\fP() +T} T{ +Terminate the MPI execution environment. +T} +_ +T{ +\fI\%Is_initialized\fP() +T} T{ +Indicate whether \fI\%Init\fP has been called. +T} +_ +T{ +\fI\%Is_finalized\fP() +T} T{ +Indicate whether \fI\%Finalize\fP has completed. +T} +_ +T{ +\fI\%Query_thread\fP() +T} T{ +Return the level of thread support provided by the MPI library. +T} +_ +T{ +\fI\%Is_thread_main\fP() +T} T{ +Indicate whether this thread called \fI\%Init\fP or \fI\%Init_thread\fP\&. +T} +_ +.TE +.sp +Memory allocation +.TS +center; +|l|l|. +_ +T{ +\fI\%Alloc_mem\fP(size[, info]) +T} T{ +Allocate memory for message passing and remote memory access. +T} +_ +T{ +\fI\%Free_mem\fP(mem) +T} T{ +Free memory allocated with \fI\%Alloc_mem\fP\&. +T} +_ +.TE +.sp +Address manipulation +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_address\fP(location) +T} T{ +Get the address of a location in memory. +T} +_ +T{ +\fI\%Aint_add\fP(base, disp) +T} T{ +Return the sum of base address and displacement. +T} +_ +T{ +\fI\%Aint_diff\fP(addr1, addr2) +T} T{ +Return the difference between absolute addresses. +T} +_ +.TE +.sp +Timer +.TS +center; +|l|l|. +_ +T{ +\fI\%Wtick\fP() +T} T{ +Return the resolution of \fI\%Wtime\fP\&. +T} +_ +T{ +\fI\%Wtime\fP() +T} T{ +Return an elapsed time on the calling processor. +T} +_ +.TE +.sp +Error handling +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_error_class\fP(errorcode) +T} T{ +Convert an \fIerror code\fP into an \fIerror class\fP\&. +T} +_ +T{ +\fI\%Get_error_string\fP(errorcode) +T} T{ +Return the \fIerror string\fP for a given \fIerror class\fP or \fIerror code\fP\&. +T} +_ +T{ +\fI\%Add_error_class\fP() +T} T{ +Add an \fIerror class\fP to the known error classes. +T} +_ +T{ +\fI\%Add_error_code\fP(errorclass) +T} T{ +Add an \fIerror code\fP to an \fIerror class\fP\&. +T} +_ +T{ +\fI\%Add_error_string\fP(errorcode, string) +T} T{ +Associate an \fIerror string\fP with an \fIerror class\fP or \fIerror code\fP\&. +T} +_ +T{ +\fI\%Remove_error_class\fP(errorclass) +T} T{ +Remove an \fIerror class\fP from the known error classes. +T} +_ +T{ +\fI\%Remove_error_code\fP(errorcode) +T} T{ +Remove an \fIerror code\fP from the known error codes. +T} +_ +T{ +\fI\%Remove_error_string\fP(errorcode) +T} T{ +Remove \fIerror string\fP association from \fIerror class\fP or \fIerror code\fP\&. +T} +_ +.TE +.sp +Dynamic process management +.TS +center; +|l|l|. +_ +T{ +\fI\%Open_port\fP([info]) +T} T{ +Return an address used to connect group of processes. +T} +_ +T{ +\fI\%Close_port\fP(port_name) +T} T{ +Close a port. +T} +_ +T{ +\fI\%Publish_name\fP(service_name, port_name[, info]) +T} T{ +Publish a service name. +T} +_ +T{ +\fI\%Unpublish_name\fP(service_name, port_name[, info]) +T} T{ +Unpublish a service name. +T} +_ +T{ +\fI\%Lookup_name\fP(service_name[, info]) +T} T{ +Lookup a port name given a service name. +T} +_ +.TE +.sp +Miscellanea +.TS +center; +|l|l|. +_ +T{ +\fI\%Attach_buffer\fP(buf) +T} T{ +Attach a user\-provided buffer for sending in buffered mode. +T} +_ +T{ +\fI\%Detach_buffer\fP() +T} T{ +Remove an existing attached buffer. +T} +_ +T{ +\fI\%Flush_buffer\fP() +T} T{ +Block until all buffered messages have been transmitted. +T} +_ +T{ +\fI\%Iflush_buffer\fP() +T} T{ +Nonblocking flush for buffered messages. +T} +_ +T{ +\fI\%Compute_dims\fP(nnodes, dims) +T} T{ +Return a balanced distribution of processes per coordinate direction. +T} +_ +T{ +\fI\%Get_processor_name\fP() +T} T{ +Obtain the name of the calling processor. +T} +_ +T{ +\fI\%Register_datarep\fP(datarep, read_fn, write_fn, ...) +T} T{ +Register user\-defined data representations. +T} +_ +T{ +\fI\%Pcontrol\fP(level) +T} T{ +Control profiling. +T} +_ +.TE +.sp +Utilities +.TS +center; +|l|l|. +_ +T{ +\fI\%get_vendor\fP() +T} T{ +Information about the underlying MPI implementation. +T} +_ +.TE +.SS Attributes +.TS +center; +|l|l|. +_ +T{ +\fI\%UNDEFINED\fP +T} T{ +Constant \fBUNDEFINED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ANY_SOURCE\fP +T} T{ +Constant \fBANY_SOURCE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ANY_TAG\fP +T} T{ +Constant \fBANY_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%PROC_NULL\fP +T} T{ +Constant \fBPROC_NULL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ROOT\fP +T} T{ +Constant \fBROOT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%BOTTOM\fP +T} T{ +Constant \fBBOTTOM\fP of type \fI\%BottomType\fP +T} +_ +T{ +\fI\%IN_PLACE\fP +T} T{ +Constant \fBIN_PLACE\fP of type \fI\%InPlaceType\fP +T} +_ +T{ +\fI\%BUFFER_AUTOMATIC\fP +T} T{ +Constant \fBBUFFER_AUTOMATIC\fP of type \fI\%BufferAutomaticType\fP +T} +_ +T{ +\fI\%KEYVAL_INVALID\fP +T} T{ +Constant \fBKEYVAL_INVALID\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TAG_UB\fP +T} T{ +Constant \fBTAG_UB\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%IO\fP +T} T{ +Constant \fBIO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WTIME_IS_GLOBAL\fP +T} T{ +Constant \fBWTIME_IS_GLOBAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%UNIVERSE_SIZE\fP +T} T{ +Constant \fBUNIVERSE_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%APPNUM\fP +T} T{ +Constant \fBAPPNUM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%LASTUSEDCODE\fP +T} T{ +Constant \fBLASTUSEDCODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_BASE\fP +T} T{ +Constant \fBWIN_BASE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_SIZE\fP +T} T{ +Constant \fBWIN_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_DISP_UNIT\fP +T} T{ +Constant \fBWIN_DISP_UNIT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_CREATE_FLAVOR\fP +T} T{ +Constant \fBWIN_CREATE_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR\fP +T} T{ +Constant \fBWIN_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_MODEL\fP +T} T{ +Constant \fBWIN_MODEL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SUCCESS\fP +T} T{ +Constant \fBSUCCESS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_LASTCODE\fP +T} T{ +Constant \fBERR_LASTCODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_COMM\fP +T} T{ +Constant \fBERR_COMM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_GROUP\fP +T} T{ +Constant \fBERR_GROUP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TYPE\fP +T} T{ +Constant \fBERR_TYPE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_REQUEST\fP +T} T{ +Constant \fBERR_REQUEST\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_OP\fP +T} T{ +Constant \fBERR_OP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ERRHANDLER\fP +T} T{ +Constant \fBERR_ERRHANDLER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_BUFFER\fP +T} T{ +Constant \fBERR_BUFFER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_COUNT\fP +T} T{ +Constant \fBERR_COUNT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TAG\fP +T} T{ +Constant \fBERR_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RANK\fP +T} T{ +Constant \fBERR_RANK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ROOT\fP +T} T{ +Constant \fBERR_ROOT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TRUNCATE\fP +T} T{ +Constant \fBERR_TRUNCATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_IN_STATUS\fP +T} T{ +Constant \fBERR_IN_STATUS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PENDING\fP +T} T{ +Constant \fBERR_PENDING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TOPOLOGY\fP +T} T{ +Constant \fBERR_TOPOLOGY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_DIMS\fP +T} T{ +Constant \fBERR_DIMS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ARG\fP +T} T{ +Constant \fBERR_ARG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_OTHER\fP +T} T{ +Constant \fBERR_OTHER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_UNKNOWN\fP +T} T{ +Constant \fBERR_UNKNOWN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INTERN\fP +T} T{ +Constant \fBERR_INTERN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO\fP +T} T{ +Constant \fBERR_INFO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_FILE\fP +T} T{ +Constant \fBERR_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_WIN\fP +T} T{ +Constant \fBERR_WIN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_KEYVAL\fP +T} T{ +Constant \fBERR_KEYVAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO_KEY\fP +T} T{ +Constant \fBERR_INFO_KEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO_VALUE\fP +T} T{ +Constant \fBERR_INFO_VALUE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO_NOKEY\fP +T} T{ +Constant \fBERR_INFO_NOKEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ACCESS\fP +T} T{ +Constant \fBERR_ACCESS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_AMODE\fP +T} T{ +Constant \fBERR_AMODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_BAD_FILE\fP +T} T{ +Constant \fBERR_BAD_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_FILE_EXISTS\fP +T} T{ +Constant \fBERR_FILE_EXISTS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_FILE_IN_USE\fP +T} T{ +Constant \fBERR_FILE_IN_USE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NO_SPACE\fP +T} T{ +Constant \fBERR_NO_SPACE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NO_SUCH_FILE\fP +T} T{ +Constant \fBERR_NO_SUCH_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_IO\fP +T} T{ +Constant \fBERR_IO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_READ_ONLY\fP +T} T{ +Constant \fBERR_READ_ONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_CONVERSION\fP +T} T{ +Constant \fBERR_CONVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_DUP_DATAREP\fP +T} T{ +Constant \fBERR_DUP_DATAREP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_UNSUPPORTED_DATAREP\fP +T} T{ +Constant \fBERR_UNSUPPORTED_DATAREP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_UNSUPPORTED_OPERATION\fP +T} T{ +Constant \fBERR_UNSUPPORTED_OPERATION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NAME\fP +T} T{ +Constant \fBERR_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NO_MEM\fP +T} T{ +Constant \fBERR_NO_MEM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NOT_SAME\fP +T} T{ +Constant \fBERR_NOT_SAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PORT\fP +T} T{ +Constant \fBERR_PORT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_QUOTA\fP +T} T{ +Constant \fBERR_QUOTA\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SERVICE\fP +T} T{ +Constant \fBERR_SERVICE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SPAWN\fP +T} T{ +Constant \fBERR_SPAWN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_BASE\fP +T} T{ +Constant \fBERR_BASE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SIZE\fP +T} T{ +Constant \fBERR_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_DISP\fP +T} T{ +Constant \fBERR_DISP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ASSERT\fP +T} T{ +Constant \fBERR_ASSERT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_LOCKTYPE\fP +T} T{ +Constant \fBERR_LOCKTYPE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_CONFLICT\fP +T} T{ +Constant \fBERR_RMA_CONFLICT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_SYNC\fP +T} T{ +Constant \fBERR_RMA_SYNC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_RANGE\fP +T} T{ +Constant \fBERR_RMA_RANGE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_ATTACH\fP +T} T{ +Constant \fBERR_RMA_ATTACH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_SHARED\fP +T} T{ +Constant \fBERR_RMA_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_FLAVOR\fP +T} T{ +Constant \fBERR_RMA_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ORDER_C\fP +T} T{ +Constant \fBORDER_C\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ORDER_F\fP +T} T{ +Constant \fBORDER_F\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ORDER_FORTRAN\fP +T} T{ +Constant \fBORDER_FORTRAN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TYPECLASS_INTEGER\fP +T} T{ +Constant \fBTYPECLASS_INTEGER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TYPECLASS_REAL\fP +T} T{ +Constant \fBTYPECLASS_REAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TYPECLASS_COMPLEX\fP +T} T{ +Constant \fBTYPECLASS_COMPLEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_NONE\fP +T} T{ +Constant \fBDISTRIBUTE_NONE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_BLOCK\fP +T} T{ +Constant \fBDISTRIBUTE_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_CYCLIC\fP +T} T{ +Constant \fBDISTRIBUTE_CYCLIC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_DFLT_DARG\fP +T} T{ +Constant \fBDISTRIBUTE_DFLT_DARG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_NAMED\fP +T} T{ +Constant \fBCOMBINER_NAMED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_DUP\fP +T} T{ +Constant \fBCOMBINER_DUP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_CONTIGUOUS\fP +T} T{ +Constant \fBCOMBINER_CONTIGUOUS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_VECTOR\fP +T} T{ +Constant \fBCOMBINER_VECTOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_HVECTOR\fP +T} T{ +Constant \fBCOMBINER_HVECTOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_INDEXED\fP +T} T{ +Constant \fBCOMBINER_INDEXED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_HINDEXED\fP +T} T{ +Constant \fBCOMBINER_HINDEXED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_INDEXED_BLOCK\fP +T} T{ +Constant \fBCOMBINER_INDEXED_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_HINDEXED_BLOCK\fP +T} T{ +Constant \fBCOMBINER_HINDEXED_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_STRUCT\fP +T} T{ +Constant \fBCOMBINER_STRUCT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_SUBARRAY\fP +T} T{ +Constant \fBCOMBINER_SUBARRAY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_DARRAY\fP +T} T{ +Constant \fBCOMBINER_DARRAY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_RESIZED\fP +T} T{ +Constant \fBCOMBINER_RESIZED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_VALUE_INDEX\fP +T} T{ +Constant \fBCOMBINER_VALUE_INDEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_F90_REAL\fP +T} T{ +Constant \fBCOMBINER_F90_REAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_F90_COMPLEX\fP +T} T{ +Constant \fBCOMBINER_F90_COMPLEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_F90_INTEGER\fP +T} T{ +Constant \fBCOMBINER_F90_INTEGER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%IDENT\fP +T} T{ +Constant \fBIDENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%CONGRUENT\fP +T} T{ +Constant \fBCONGRUENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SIMILAR\fP +T} T{ +Constant \fBSIMILAR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%UNEQUAL\fP +T} T{ +Constant \fBUNEQUAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%CART\fP +T} T{ +Constant \fBCART\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%GRAPH\fP +T} T{ +Constant \fBGRAPH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DIST_GRAPH\fP +T} T{ +Constant \fBDIST_GRAPH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%UNWEIGHTED\fP +T} T{ +Constant \fBUNWEIGHTED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WEIGHTS_EMPTY\fP +T} T{ +Constant \fBWEIGHTS_EMPTY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMM_TYPE_SHARED\fP +T} T{ +Constant \fBCOMM_TYPE_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%BSEND_OVERHEAD\fP +T} T{ +Constant \fBBSEND_OVERHEAD\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_CREATE\fP +T} T{ +Constant \fBWIN_FLAVOR_CREATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_ALLOCATE\fP +T} T{ +Constant \fBWIN_FLAVOR_ALLOCATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_DYNAMIC\fP +T} T{ +Constant \fBWIN_FLAVOR_DYNAMIC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_SHARED\fP +T} T{ +Constant \fBWIN_FLAVOR_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_SEPARATE\fP +T} T{ +Constant \fBWIN_SEPARATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_UNIFIED\fP +T} T{ +Constant \fBWIN_UNIFIED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOCHECK\fP +T} T{ +Constant \fBMODE_NOCHECK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOSTORE\fP +T} T{ +Constant \fBMODE_NOSTORE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOPUT\fP +T} T{ +Constant \fBMODE_NOPUT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOPRECEDE\fP +T} T{ +Constant \fBMODE_NOPRECEDE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOSUCCEED\fP +T} T{ +Constant \fBMODE_NOSUCCEED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%LOCK_EXCLUSIVE\fP +T} T{ +Constant \fBLOCK_EXCLUSIVE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%LOCK_SHARED\fP +T} T{ +Constant \fBLOCK_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_RDONLY\fP +T} T{ +Constant \fBMODE_RDONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_WRONLY\fP +T} T{ +Constant \fBMODE_WRONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_RDWR\fP +T} T{ +Constant \fBMODE_RDWR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_CREATE\fP +T} T{ +Constant \fBMODE_CREATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_EXCL\fP +T} T{ +Constant \fBMODE_EXCL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_DELETE_ON_CLOSE\fP +T} T{ +Constant \fBMODE_DELETE_ON_CLOSE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_UNIQUE_OPEN\fP +T} T{ +Constant \fBMODE_UNIQUE_OPEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_SEQUENTIAL\fP +T} T{ +Constant \fBMODE_SEQUENTIAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_APPEND\fP +T} T{ +Constant \fBMODE_APPEND\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SEEK_SET\fP +T} T{ +Constant \fBSEEK_SET\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SEEK_CUR\fP +T} T{ +Constant \fBSEEK_CUR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SEEK_END\fP +T} T{ +Constant \fBSEEK_END\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISPLACEMENT_CURRENT\fP +T} T{ +Constant \fBDISPLACEMENT_CURRENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISP_CUR\fP +T} T{ +Constant \fBDISP_CUR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_SINGLE\fP +T} T{ +Constant \fBTHREAD_SINGLE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_FUNNELED\fP +T} T{ +Constant \fBTHREAD_FUNNELED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_SERIALIZED\fP +T} T{ +Constant \fBTHREAD_SERIALIZED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_MULTIPLE\fP +T} T{ +Constant \fBTHREAD_MULTIPLE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%VERSION\fP +T} T{ +Constant \fBVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SUBVERSION\fP +T} T{ +Constant \fBSUBVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_PROCESSOR_NAME\fP +T} T{ +Constant \fBMAX_PROCESSOR_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_ERROR_STRING\fP +T} T{ +Constant \fBMAX_ERROR_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_PORT_NAME\fP +T} T{ +Constant \fBMAX_PORT_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_INFO_KEY\fP +T} T{ +Constant \fBMAX_INFO_KEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_INFO_VAL\fP +T} T{ +Constant \fBMAX_INFO_VAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_OBJECT_NAME\fP +T} T{ +Constant \fBMAX_OBJECT_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_DATAREP_STRING\fP +T} T{ +Constant \fBMAX_DATAREP_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_LIBRARY_VERSION_STRING\fP +T} T{ +Constant \fBMAX_LIBRARY_VERSION_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DATATYPE_NULL\fP +T} T{ +Object \fBDATATYPE_NULL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%PACKED\fP +T} T{ +Object \fBPACKED\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%BYTE\fP +T} T{ +Object \fBBYTE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%AINT\fP +T} T{ +Object \fBAINT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%OFFSET\fP +T} T{ +Object \fBOFFSET\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COUNT\fP +T} T{ +Object \fBCOUNT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CHAR\fP +T} T{ +Object \fBCHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%WCHAR\fP +T} T{ +Object \fBWCHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_CHAR\fP +T} T{ +Object \fBSIGNED_CHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SHORT\fP +T} T{ +Object \fBSHORT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT\fP +T} T{ +Object \fBINT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG\fP +T} T{ +Object \fBLONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_LONG\fP +T} T{ +Object \fBLONG_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_CHAR\fP +T} T{ +Object \fBUNSIGNED_CHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_SHORT\fP +T} T{ +Object \fBUNSIGNED_SHORT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED\fP +T} T{ +Object \fBUNSIGNED\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_LONG\fP +T} T{ +Object \fBUNSIGNED_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_LONG_LONG\fP +T} T{ +Object \fBUNSIGNED_LONG_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%FLOAT\fP +T} T{ +Object \fBFLOAT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE\fP +T} T{ +Object \fBDOUBLE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_DOUBLE\fP +T} T{ +Object \fBLONG_DOUBLE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_BOOL\fP +T} T{ +Object \fBC_BOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT8_T\fP +T} T{ +Object \fBINT8_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT16_T\fP +T} T{ +Object \fBINT16_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT32_T\fP +T} T{ +Object \fBINT32_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT64_T\fP +T} T{ +Object \fBINT64_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT8_T\fP +T} T{ +Object \fBUINT8_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT16_T\fP +T} T{ +Object \fBUINT16_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT32_T\fP +T} T{ +Object \fBUINT32_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT64_T\fP +T} T{ +Object \fBUINT64_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_COMPLEX\fP +T} T{ +Object \fBC_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_FLOAT_COMPLEX\fP +T} T{ +Object \fBC_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_DOUBLE_COMPLEX\fP +T} T{ +Object \fBC_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_LONG_DOUBLE_COMPLEX\fP +T} T{ +Object \fBC_LONG_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_BOOL\fP +T} T{ +Object \fBCXX_BOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_FLOAT_COMPLEX\fP +T} T{ +Object \fBCXX_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_DOUBLE_COMPLEX\fP +T} T{ +Object \fBCXX_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_LONG_DOUBLE_COMPLEX\fP +T} T{ +Object \fBCXX_LONG_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SHORT_INT\fP +T} T{ +Object \fBSHORT_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT_INT\fP +T} T{ +Object \fBINT_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%TWOINT\fP +T} T{ +Object \fBTWOINT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_INT\fP +T} T{ +Object \fBLONG_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%FLOAT_INT\fP +T} T{ +Object \fBFLOAT_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE_INT\fP +T} T{ +Object \fBDOUBLE_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_DOUBLE_INT\fP +T} T{ +Object \fBLONG_DOUBLE_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CHARACTER\fP +T} T{ +Object \fBCHARACTER\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL\fP +T} T{ +Object \fBLOGICAL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER\fP +T} T{ +Object \fBINTEGER\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL\fP +T} T{ +Object \fBREAL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE_PRECISION\fP +T} T{ +Object \fBDOUBLE_PRECISION\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX\fP +T} T{ +Object \fBCOMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE_COMPLEX\fP +T} T{ +Object \fBDOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL1\fP +T} T{ +Object \fBLOGICAL1\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL2\fP +T} T{ +Object \fBLOGICAL2\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL4\fP +T} T{ +Object \fBLOGICAL4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL8\fP +T} T{ +Object \fBLOGICAL8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER1\fP +T} T{ +Object \fBINTEGER1\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER2\fP +T} T{ +Object \fBINTEGER2\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER4\fP +T} T{ +Object \fBINTEGER4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER8\fP +T} T{ +Object \fBINTEGER8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER16\fP +T} T{ +Object \fBINTEGER16\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL2\fP +T} T{ +Object \fBREAL2\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL4\fP +T} T{ +Object \fBREAL4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL8\fP +T} T{ +Object \fBREAL8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL16\fP +T} T{ +Object \fBREAL16\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX4\fP +T} T{ +Object \fBCOMPLEX4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX8\fP +T} T{ +Object \fBCOMPLEX8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX16\fP +T} T{ +Object \fBCOMPLEX16\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX32\fP +T} T{ +Object \fBCOMPLEX32\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_INT\fP +T} T{ +Object \fBUNSIGNED_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_SHORT\fP +T} T{ +Object \fBSIGNED_SHORT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_INT\fP +T} T{ +Object \fBSIGNED_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_LONG\fP +T} T{ +Object \fBSIGNED_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_LONG_LONG\fP +T} T{ +Object \fBSIGNED_LONG_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%BOOL\fP +T} T{ +Object \fBBOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT8_T\fP +T} T{ +Object \fBSINT8_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT16_T\fP +T} T{ +Object \fBSINT16_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT32_T\fP +T} T{ +Object \fBSINT32_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT64_T\fP +T} T{ +Object \fBSINT64_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_BOOL\fP +T} T{ +Object \fBF_BOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_INT\fP +T} T{ +Object \fBF_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_FLOAT\fP +T} T{ +Object \fBF_FLOAT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_DOUBLE\fP +T} T{ +Object \fBF_DOUBLE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_COMPLEX\fP +T} T{ +Object \fBF_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_FLOAT_COMPLEX\fP +T} T{ +Object \fBF_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_DOUBLE_COMPLEX\fP +T} T{ +Object \fBF_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REQUEST_NULL\fP +T} T{ +Object \fBREQUEST_NULL\fP of type \fI\%Request\fP +T} +_ +T{ +\fI\%MESSAGE_NULL\fP +T} T{ +Object \fBMESSAGE_NULL\fP of type \fI\%Message\fP +T} +_ +T{ +\fI\%MESSAGE_NO_PROC\fP +T} T{ +Object \fBMESSAGE_NO_PROC\fP of type \fI\%Message\fP +T} +_ +T{ +\fI\%OP_NULL\fP +T} T{ +Object \fBOP_NULL\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MAX\fP +T} T{ +Object \fBMAX\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MIN\fP +T} T{ +Object \fBMIN\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%SUM\fP +T} T{ +Object \fBSUM\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%PROD\fP +T} T{ +Object \fBPROD\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%LAND\fP +T} T{ +Object \fBLAND\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%BAND\fP +T} T{ +Object \fBBAND\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%LOR\fP +T} T{ +Object \fBLOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%BOR\fP +T} T{ +Object \fBBOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%LXOR\fP +T} T{ +Object \fBLXOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%BXOR\fP +T} T{ +Object \fBBXOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MAXLOC\fP +T} T{ +Object \fBMAXLOC\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MINLOC\fP +T} T{ +Object \fBMINLOC\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%REPLACE\fP +T} T{ +Object \fBREPLACE\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%NO_OP\fP +T} T{ +Object \fBNO_OP\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%GROUP_NULL\fP +T} T{ +Object \fBGROUP_NULL\fP of type \fI\%Group\fP +T} +_ +T{ +\fI\%GROUP_EMPTY\fP +T} T{ +Object \fBGROUP_EMPTY\fP of type \fI\%Group\fP +T} +_ +T{ +\fI\%INFO_NULL\fP +T} T{ +Object \fBINFO_NULL\fP of type \fI\%Info\fP +T} +_ +T{ +\fI\%INFO_ENV\fP +T} T{ +Object \fBINFO_ENV\fP of type \fI\%Info\fP +T} +_ +T{ +\fI\%ERRHANDLER_NULL\fP +T} T{ +Object \fBERRHANDLER_NULL\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%ERRORS_RETURN\fP +T} T{ +Object \fBERRORS_RETURN\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%ERRORS_ARE_FATAL\fP +T} T{ +Object \fBERRORS_ARE_FATAL\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%COMM_NULL\fP +T} T{ +Object \fBCOMM_NULL\fP of type \fI\%Comm\fP +T} +_ +T{ +\fI\%COMM_SELF\fP +T} T{ +Object \fBCOMM_SELF\fP of type \fI\%Intracomm\fP +T} +_ +T{ +\fI\%COMM_WORLD\fP +T} T{ +Object \fBCOMM_WORLD\fP of type \fI\%Intracomm\fP +T} +_ +T{ +\fI\%WIN_NULL\fP +T} T{ +Object \fBWIN_NULL\fP of type \fI\%Win\fP +T} +_ +T{ +\fI\%FILE_NULL\fP +T} T{ +Object \fBFILE_NULL\fP of type \fI\%File\fP +T} +_ +T{ +\fI\%pickle\fP +T} T{ +Object \fBpickle\fP of type \fI\%Pickle\fP +T} +_ +.TE +.SH MPI4PY.TYPING +.sp +Added in version 4.0.0. + +.sp +This module provides \X'tty: link https://docs.python.org/3/glossary.html#term-type-alias'\fI\%type aliases\fP\X'tty: link' used to add +\X'tty: link https://docs.python.org/3/glossary.html#term-type-hint'\fI\%type hints\fP\X'tty: link' to the various functions and methods +within the \fI\%MPI\fP module. +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.TP +.B Module \X'tty: link https://docs.python.org/3/library/typing.html#module-typing'\fI\%typing\fP\X'tty: link' +Documentation of the \X'tty: link https://docs.python.org/3/library/typing.html#module-typing'\fI\%typing\fP\X'tty: link' standard module. +.UNINDENT +.UNINDENT +.UNINDENT +.sp +Types Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%SupportsBuffer\fP +T} T{ +Python buffer protocol. +T} +_ +T{ +\fI\%SupportsDLPack\fP +T} T{ +DLPack data interchange protocol. +T} +_ +T{ +\fI\%SupportsCAI\fP +T} T{ +CUDA Array Interface (CAI) protocol. +T} +_ +T{ +\fI\%Buffer\fP +T} T{ +Buffer\-like object. +T} +_ +T{ +\fI\%Bottom\fP +T} T{ +Start of the address range. +T} +_ +T{ +\fI\%InPlace\fP +T} T{ +In\-place buffer argument. +T} +_ +T{ +\fI\%Aint\fP +T} T{ +Address\-sized integral type. +T} +_ +T{ +\fI\%Count\fP +T} T{ +Integral type for counts. +T} +_ +T{ +\fI\%Displ\fP +T} T{ +Integral type for displacements. +T} +_ +T{ +\fI\%Offset\fP +T} T{ +Integral type for offsets. +T} +_ +T{ +\fI\%TypeSpec\fP +T} T{ +Datatype specification. +T} +_ +T{ +\fI\%BufSpec\fP +T} T{ +Buffer specification. +T} +_ +T{ +\fI\%BufSpecB\fP +T} T{ +Buffer specification (block). +T} +_ +T{ +\fI\%BufSpecV\fP +T} T{ +Buffer specification (vector). +T} +_ +T{ +\fI\%BufSpecW\fP +T} T{ +Buffer specification (generalized). +T} +_ +T{ +\fI\%TargetSpec\fP +T} T{ +Target specification. +T} +_ +.TE +.sp +Types Documentation +.INDENT 0.0 +.TP +.B mpi4py.typing.SupportsBuffer = +Python buffer protocol. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\X'tty: link https://docs.python.org/3/c-api/buffer.html#bufferobjects'\fI\%Buffer Protocol\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.SupportsDLPack = +DLPack data interchange protocol. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\X'tty: link https://dmlc.github.io/dlpack/latest/python_spec.html#python-spec'\fI\%Python Specification for DLPack\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.SupportsCAI = +CUDA Array Interface (CAI) protocol. +.sp +\fBSEE ALSO:\fP +.INDENT 7.0 +.INDENT 3.5 +\X'tty: link https://numba.readthedocs.io/en/stable/cuda/cuda_array_interface.html#cuda-array-interface'\fI\%CUDA Array Interface (Version 3)\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.Buffer +Buffer\-like object. +.sp +alias of \fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.Bottom +Start of the address range. +.sp +alias of \fI\%BottomType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.InPlace +In\-place buffer argument. +.sp +alias of \fI\%InPlaceType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.Aint = +Address\-sized integral type. +.sp +alias of \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%numbers.Integral\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.Count = +Integral type for counts. +.sp +alias of \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%numbers.Integral\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.Displ = +Integral type for displacements. +.sp +alias of \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%numbers.Integral\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.Offset = +Integral type for offsets. +.sp +alias of \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%numbers.Integral\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.TypeSpec +Datatype specification. +.sp +alias of \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.BufSpec +Buffer specification. +.INDENT 7.0 +.IP \(bu 2 +\fI\%Buffer\fP +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%Count\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%Count\fP, \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Bottom\fP, \fI\%Count\fP, \fI\%Datatype\fP] +.UNINDENT +.sp +alias of \fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link', \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%BottomType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link', \fI\%Datatype\fP] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.List'\fI\%List\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.BufSpecB +Buffer specification (block). +.INDENT 7.0 +.IP \(bu 2 +\fI\%Buffer\fP +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%Count\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%Count\fP, \fI\%TypeSpec\fP] +.UNINDENT +.sp +alias of \fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link', \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.List'\fI\%List\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.BufSpecV +Buffer specification (vector). +.INDENT 7.0 +.IP \(bu 2 +\fI\%Buffer\fP +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Sequence[\fI\%Count\fP]] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Tuple[Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP]]] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Sequence[\fI\%Count\fP], \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Tuple[Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP]], \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP], \fI\%TypeSpec\fP] +.IP \(bu 2 +Tuple[\fI\%Bottom\fP, Tuple[Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP]], \fI\%Datatype\fP] +.IP \(bu 2 +Tuple[\fI\%Bottom\fP, Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP], \fI\%Datatype\fP] +.UNINDENT +.sp +alias of \fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link']] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link']]] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link']], \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%BottomType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link']], \fI\%Datatype\fP] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%BottomType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \fI\%Datatype\fP] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.List'\fI\%List\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.BufSpecW +Buffer specification (generalized). +.INDENT 7.0 +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Sequence[\fI\%Datatype\fP]] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Tuple[Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP]], Sequence[\fI\%Datatype\fP]] +.IP \(bu 2 +Tuple[\fI\%Buffer\fP, Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP], Sequence[\fI\%Datatype\fP]] +.IP \(bu 2 +Tuple[\fI\%Bottom\fP, Tuple[Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP]], Sequence[\fI\%Datatype\fP]] +.IP \(bu 2 +Tuple[\fI\%Bottom\fP, Sequence[\fI\%Count\fP], Sequence[\fI\%Displ\fP], Sequence[\fI\%Datatype\fP]] +.UNINDENT +.sp +alias of \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\fI\%Datatype\fP]] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link']], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\fI\%Datatype\fP]] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%SupportsBuffer\fP | \fI\%SupportsDLPack\fP | \fI\%SupportsCAI\fP, \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\fI\%Datatype\fP]] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%BottomType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link']], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\fI\%Datatype\fP]] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\fI\%BottomType\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'[\fI\%Datatype\fP]] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.List'\fI\%List\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.TargetSpec +Target specification. +.INDENT 7.0 +.IP \(bu 2 +\fI\%Displ\fP +.IP \(bu 2 +Tuple[()] +.IP \(bu 2 +Tuple[\fI\%Displ\fP] +.IP \(bu 2 +Tuple[\fI\%Displ\fP, \fI\%Count\fP] +.IP \(bu 2 +Tuple[\fI\%Displ\fP, \fI\%Count\fP, \fI\%Datatype\fP] +.UNINDENT +.sp +alias of \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Tuple'\fI\%Tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/numbers.html#numbers.Integral'\fI\%Integral\fP\X'tty: link', \fI\%Datatype\fP | \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/typing.html#typing.List'\fI\%List\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.S = TypeVar(\(dqS\(dq) +Invariant \X'tty: link https://docs.python.org/3/library/typing.html#typing.TypeVar'\fI\%TypeVar\fP\X'tty: link'\&. +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.T = TypeVar(\(dqT\(dq) +Invariant \X'tty: link https://docs.python.org/3/library/typing.html#typing.TypeVar'\fI\%TypeVar\fP\X'tty: link'\&. +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.U = TypeVar(\(dqU\(dq) +Invariant \X'tty: link https://docs.python.org/3/library/typing.html#typing.TypeVar'\fI\%TypeVar\fP\X'tty: link'\&. +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.typing.V = TypeVar(\(dqV\(dq) +Invariant \X'tty: link https://docs.python.org/3/library/typing.html#typing.TypeVar'\fI\%TypeVar\fP\X'tty: link'\&. +.UNINDENT +.SH MPI4PY.FUTURES +.sp +Added in version 3.0.0. + +.sp +This package provides a high\-level interface for asynchronously executing +callables on a pool of worker processes using MPI for inter\-process +communication. +.sp +The \fI\%mpi4py.futures\fP package is based on \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures'\fI\%concurrent.futures\fP\X'tty: link' from +the Python standard library. More precisely, \fI\%mpi4py.futures\fP provides the +\fI\%MPIPoolExecutor\fP class as a concrete implementation of the abstract +class \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor'\fI\%Executor\fP\X'tty: link'\&. The +\X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.submit'\fI\%submit()\fP\X'tty: link' interface schedules a callable to +be executed asynchronously and returns a \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' +object representing the execution of the callable. +\X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' instances can be queried for the call +result or exception. Sets of \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' instances can +be passed to the \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.wait'\fI\%wait()\fP\X'tty: link' and +\X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completed'\fI\%as_completed()\fP\X'tty: link' functions. +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.TP +.B Module \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures'\fI\%concurrent.futures\fP\X'tty: link' +Documentation of the \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures'\fI\%concurrent.futures\fP\X'tty: link' standard module. +.UNINDENT +.UNINDENT +.UNINDENT +.SS MPIPoolExecutor +.sp +The \fI\%MPIPoolExecutor\fP class uses a pool of MPI processes to execute +calls asynchronously. By performing computations in separate processes, it +allows to side\-step the \X'tty: link https://docs.python.org/3/glossary.html#term-global-interpreter-lock'\fI\%global interpreter lock\fP\X'tty: link' but also means that +only picklable objects can be executed and returned. The \X'tty: link https://docs.python.org/3/library/__main__.html#module-__main__'\fI\%__main__\fP\X'tty: link' module +must be importable by worker processes, thus \fI\%MPIPoolExecutor\fP instances +may not work in the interactive interpreter. +.sp +\fI\%MPIPoolExecutor\fP takes advantage of the dynamic process management +features introduced in the MPI\-2 standard. In particular, the +\fI\%MPI.Intracomm.Spawn\fP method of \fI\%MPI.COMM_SELF\fP is used in the master (or +parent) process to spawn new worker (or child) processes running a Python +interpreter. The master process uses a separate thread (one for each +\fI\%MPIPoolExecutor\fP instance) to communicate back and forth with the +workers. The worker processes serve the execution of tasks in the main (and +only) thread until they are signaled for completion. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +The worker processes must import the main script in order to \fIunpickle\fP any +callable defined in the \X'tty: link https://docs.python.org/3/library/__main__.html#module-__main__'\fI\%__main__\fP\X'tty: link' module and submitted from the master +process. Furthermore, the callables may need access to other global +variables. At the worker processes, \fI\%mpi4py.futures\fP executes the main +script code (using the \X'tty: link https://docs.python.org/3/library/runpy.html#module-runpy'\fI\%runpy\fP\X'tty: link' module) under the \fB__worker__\fP +namespace to define the \X'tty: link https://docs.python.org/3/library/__main__.html#module-__main__'\fI\%__main__\fP\X'tty: link' module. The \X'tty: link https://docs.python.org/3/library/__main__.html#module-__main__'\fI\%__main__\fP\X'tty: link' and +\fB__worker__\fP modules are added to \X'tty: link https://docs.python.org/3/library/sys.html#sys.modules'\fI\%sys.modules\fP\X'tty: link' (both at the +master and worker processes) to ensure proper \fIpickling\fP and \fIunpickling\fP\&. +.UNINDENT +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +During the initial import phase at the workers, the main script cannot +create and use new \fI\%MPIPoolExecutor\fP instances. Otherwise, each +worker would attempt to spawn a new pool of workers, leading to infinite +recursion. \fI\%mpi4py.futures\fP detects such recursive attempts to spawn +new workers and aborts the MPI execution environment. As the main script +code is run under the \fB__worker__\fP namespace, the easiest way to avoid +spawn recursion is using the idiom \fBif __name__ == \(aq__main__\(aq: ...\fP in +the main script. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.futures.MPIPoolExecutor(max_workers=None, initializer=None, initargs=(), **kwargs) +An \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor'\fI\%Executor\fP\X'tty: link' subclass that executes calls +asynchronously using a pool of at most \fImax_workers\fP processes. If +\fImax_workers\fP is \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' or not given, its value is determined from the +\fI\%MPI4PY_FUTURES_MAX_WORKERS\fP environment variable if set, or the MPI +universe size if set, otherwise a single worker process is spawned. If +\fImax_workers\fP is lower than or equal to \fB0\fP, then a \X'tty: link https://docs.python.org/3/library/exceptions.html#ValueError'\fI\%ValueError\fP\X'tty: link' will +be raised. +.sp +\fIinitializer\fP is an optional callable that is called at the start of each +worker process before executing any tasks; \fIinitargs\fP is a tuple of +arguments passed to the initializer. If \fIinitializer\fP raises an exception, +all pending tasks and any attempt to submit new tasks to the pool will raise +a \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.BrokenExecutor'\fI\%BrokenExecutor\fP\X'tty: link' exception. +.sp +Other parameters: +.INDENT 7.0 +.IP \(bu 2 +\fIpython_exe\fP: Path to the Python interpreter executable used to spawn +worker processes, otherwise \X'tty: link https://docs.python.org/3/library/sys.html#sys.executable'\fI\%sys.executable\fP\X'tty: link' is used. +.IP \(bu 2 +\fIpython_args\fP: \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link' or iterable with additional command line +flags to pass to the Python executable. Command line flags determined from +inspection of \X'tty: link https://docs.python.org/3/library/sys.html#sys.flags'\fI\%sys.flags\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/sys.html#sys.warnoptions'\fI\%sys.warnoptions\fP\X'tty: link' and +\X'tty: link https://docs.python.org/3/library/sys.html#sys._xoptions'\fI\%sys._xoptions\fP\X'tty: link' in are passed unconditionally. +.IP \(bu 2 +\fImpi_info\fP: \X'tty: link https://docs.python.org/3/library/stdtypes.html#dict'\fI\%dict\fP\X'tty: link' or iterable yielding \fB(key, value)\fP pairs. +These \fB(key, value)\fP pairs are passed (through an \fI\%MPI.Info\fP object) to +the \fI\%MPI.Intracomm.Spawn\fP call used to spawn worker processes. This +mechanism allows telling the MPI runtime system where and how to start the +processes. Check the documentation of the backend MPI implementation about +the set of keys it interprets and the corresponding format for values. +.IP \(bu 2 +\fIglobals\fP: \X'tty: link https://docs.python.org/3/library/stdtypes.html#dict'\fI\%dict\fP\X'tty: link' or iterable yielding \fB(name, value)\fP pairs to +initialize the main module namespace in worker processes. +.IP \(bu 2 +\fImain\fP: If set to \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link', do not import the \X'tty: link https://docs.python.org/3/library/__main__.html#module-__main__'\fI\%__main__\fP\X'tty: link' module in +worker processes. Setting \fImain\fP to \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' prevents worker processes +from accessing definitions in the parent \X'tty: link https://docs.python.org/3/library/__main__.html#module-__main__'\fI\%__main__\fP\X'tty: link' namespace. +.IP \(bu 2 +\fIpath\fP: \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link' or iterable with paths to append to \X'tty: link https://docs.python.org/3/library/sys.html#sys.path'\fI\%sys.path\fP\X'tty: link' +in worker processes to extend the \X'tty: link https://docs.python.org/3/tutorial/modules.html#tut-searchpath'\fI\%module search path\fP\X'tty: link'\&. +.IP \(bu 2 +\fIwdir\fP: Path to set the current working directory in worker processes +using \X'tty: link https://docs.python.org/3/library/os.html#os.chdir'\fI\%os.chdir()\fP\X'tty: link'\&. The initial working directory is set by the MPI +implementation. Quality MPI implementations should honor a \fBwdir\fP info +key passed through \fImpi_info\fP, although such feature is not mandatory. +.IP \(bu 2 +\fIenv\fP: \X'tty: link https://docs.python.org/3/library/stdtypes.html#dict'\fI\%dict\fP\X'tty: link' or iterable yielding \fB(name, value)\fP pairs with +environment variables to update \X'tty: link https://docs.python.org/3/library/os.html#os.environ'\fI\%os.environ\fP\X'tty: link' in worker processes. +The initial environment is set by the MPI implementation. MPI +implementations may allow setting the initial environment through +\fImpi_info\fP, however such feature is not required nor recommended by the +MPI standard. +.IP \(bu 2 +\fIuse_pkl5\fP: If set to \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', use \fBpickle5\fP with out\-of\-band buffers +for interprocess communication. If \fIuse_pkl5\fP is set to \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' or not +given, its value is determined from the \fI\%MPI4PY_FUTURES_USE_PKL5\fP +environment variable. Using \fBpickle5\fP with out\-of\-band buffers may +benefit applications dealing with large buffer\-like objects like NumPy +arrays. See \fI\%mpi4py.util.pkl5\fP for additional information. +.IP \(bu 2 +\fIbackoff\fP: \X'tty: link https://docs.python.org/3/library/functions.html#float'\fI\%float\fP\X'tty: link' value specifying the maximum number of seconds a +worker thread or process suspends execution with \X'tty: link https://docs.python.org/3/library/time.html#time.sleep'\fI\%time.sleep()\fP\X'tty: link' +while idle\-waiting. If not set, its value is determined from the +\fI\%MPI4PY_FUTURES_BACKOFF\fP environment variable if set, otherwise +the default value of 0.001 seconds is used. Lower values will reduce +latency and increase execution throughput for very short\-lived tasks, +albeit at the expense of spinning CPU cores and increased energy +consumption. +.UNINDENT +.INDENT 7.0 +.TP +.B submit(func, *args, **kwargs) +Schedule the callable, \fIfunc\fP, to be executed as \fBfunc(*args, +**kwargs)\fP and returns a \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' object +representing the execution of the callable. +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +executor = MPIPoolExecutor(max_workers=1) +future = executor.submit(pow, 321, 1234) +print(future.result()) +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B map(func, *iterables, timeout=None, chunksize=1, **kwargs) +Equivalent to \X'tty: link https://docs.python.org/3/library/functions.html#map'\fI\%map(func, *iterables)\fP\X'tty: link' except \fIfunc\fP is +executed asynchronously and several calls to \fIfunc\fP may be made +concurrently, out\-of\-order, in separate processes. The returned iterator +raises a \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.TimeoutError'\fI\%TimeoutError\fP\X'tty: link' if +\X'tty: link https://docs.python.org/3/library/stdtypes.html#iterator.__next__'\fI\%__next__()\fP\X'tty: link' is called and the result isn\(aqt available after +\fItimeout\fP seconds from the original call to \fI\%map()\fP\&. +\fItimeout\fP can be an int or a float. If \fItimeout\fP is not specified or +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', there is no limit to the wait time. If a call raises an +exception, then that exception will be raised when its value is retrieved +from the iterator. This method chops \fIiterables\fP into a number of chunks +which it submits to the pool as separate tasks. The (approximate) size of +these chunks can be specified by setting \fIchunksize\fP to a positive +integer. For very long iterables, using a large value for \fIchunksize\fP can +significantly improve performance compared to the default size of one. By +default, the returned iterator yields results in\-order, waiting for +successive tasks to complete . This behavior can be changed by passing +the keyword argument \fIunordered\fP as \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', then the result iterator +will yield a result as soon as any of the tasks complete. +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +executor = MPIPoolExecutor(max_workers=3) +for result in executor.map(pow, [2]*32, range(32)): + print(result) +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B starmap(func, iterable, timeout=None, chunksize=1, **kwargs) +Equivalent to \X'tty: link https://docs.python.org/3/library/itertools.html#itertools.starmap'\fI\%itertools.starmap(func, iterable)\fP\X'tty: link'\&. Used instead of \fI\%map()\fP when +argument parameters are already grouped in tuples from a single iterable +(the data has been \(dqpre\-zipped\(dq). \fI\%map(func, *iterable)\fP is +equivalent to \fI\%starmap(func, zip(*iterable))\fP\&. +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +executor = MPIPoolExecutor(max_workers=3) +iterable = ((2, n) for n in range(32)) +for result in executor.starmap(pow, iterable): + print(result) +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B shutdown(wait=True, cancel_futures=False) +Signal the executor that it should free any resources that it is using +when the currently pending futures are done executing. Calls to +\fI\%submit()\fP and \fI\%map()\fP made +after \fI\%shutdown()\fP will raise \X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeError'\fI\%RuntimeError\fP\X'tty: link'\&. +.sp +If \fIwait\fP is \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' then this method will not return until all the +pending futures are done executing and the resources associated with the +executor have been freed. If \fIwait\fP is \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' then this method will +return immediately and the resources associated with the executor will be +freed when all pending futures are done executing. Regardless of the +value of \fIwait\fP, the entire Python program will not exit until all +pending futures are done executing. +.sp +If \fIcancel_futures\fP is \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', this method will cancel all pending +futures that the executor has not started running. Any futures that +are completed or running won\(aqt be cancelled, regardless of the value +of \fIcancel_futures\fP\&. +.sp +You can avoid having to call this method explicitly if you use the +\X'tty: link https://docs.python.org/3/reference/compound_stmts.html#with'\fI\%with\fP\X'tty: link' statement, which will shutdown the executor instance +(waiting as if \fI\%shutdown()\fP were called with \fIwait\fP +set to \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link'). +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +import time +with MPIPoolExecutor(max_workers=1) as executor: + future = executor.submit(time.sleep, 2) +assert future.done() +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B bootup(wait=True) +Signal the executor that it should allocate eagerly any required +resources (in particular, MPI worker processes). If \fIwait\fP is \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', +then \fI\%bootup()\fP will not return until the executor +resources are ready to process submissions. Resources are automatically +allocated in the first call to \fI\%submit()\fP, thus +calling \fI\%bootup()\fP explicitly is seldom needed. +.UNINDENT +.INDENT 7.0 +.TP +.B num_workers +Number or worker processes in the pool. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_FUTURES_MAX_WORKERS +If the \fImax_workers\fP parameter to \fI\%MPIPoolExecutor\fP is \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' or not +given, the \fI\%MPI4PY_FUTURES_MAX_WORKERS\fP environment variable +provides a fallback value for the maximum number of MPI worker processes to +spawn. +.sp +Added in version 3.1.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_FUTURES_USE_PKL5 +If the \fIuse_pkl5\fP keyword argument to \fI\%MPIPoolExecutor\fP is \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' or +not given, the \fI\%MPI4PY_FUTURES_USE_PKL5\fP environment variable +provides a fallback value for whether the executor should use \fBpickle5\fP +with out\-of\-band buffers for interprocess communication. Accepted values are +\fB0\fP and \fB1\fP (interpreted as \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' and \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', respectively), and +strings specifying a \X'tty: link https://yaml.org/type/bool.html'\fI\%YAML boolean\fP\X'tty: link' value (case\-insensitive). Using +\fBpickle5\fP with out\-of\-band buffers may benefit applications dealing +with large buffer\-like objects like NumPy arrays. See +\fI\%mpi4py.util.pkl5\fP for additional information. +.sp +Added in version 4.0.0. + +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_FUTURES_BACKOFF +If the \fIbackoff\fP keyword argument to \fI\%MPIPoolExecutor\fP is not given, +the \fI\%MPI4PY_FUTURES_BACKOFF\fP environment variable can be set to a +\X'tty: link https://docs.python.org/3/library/functions.html#float'\fI\%float\fP\X'tty: link' value specifying the maximum number of seconds a worker +thread or process suspends execution with \X'tty: link https://docs.python.org/3/library/time.html#time.sleep'\fI\%time.sleep()\fP\X'tty: link' while +idle\-waiting. If not set, the default backoff value is 0.001 seconds. Lower +values will reduce latency and increase execution throughput for very +short\-lived tasks, albeit at the expense of spinning CPU cores and increased +energy consumption. +.sp +Added in version 4.0.0. + +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +As the master process uses a separate thread to perform MPI communication +with the workers, the backend MPI implementation should provide support for +\fI\%MPI.THREAD_MULTIPLE\fP\&. However, some popular MPI implementations do not +support yet concurrent MPI calls from multiple threads. Additionally, users +may decide to initialize MPI with a lower level of thread support. If the +level of thread support in the backend MPI is less than +\fI\%MPI.THREAD_MULTIPLE\fP, \fI\%mpi4py.futures\fP will use a global lock to +serialize MPI calls. If the level of thread support is less than +\fI\%MPI.THREAD_SERIALIZED\fP, \fI\%mpi4py.futures\fP will emit a +\X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeWarning'\fI\%RuntimeWarning\fP\X'tty: link'\&. +.UNINDENT +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +If the level of thread support in the backend MPI is less than +\fI\%MPI.THREAD_SERIALIZED\fP (i.e, it is either \fI\%MPI.THREAD_SINGLE\fP or +\fI\%MPI.THREAD_FUNNELED\fP), in theory \fI\%mpi4py.futures\fP cannot be +used. Rather than raising an exception, \fI\%mpi4py.futures\fP emits a +warning and takes a \(dqcross\-fingers\(dq attitude to continue execution in the +hope that serializing MPI calls with a global lock will actually work. +.UNINDENT +.UNINDENT +.SS MPICommExecutor +.sp +Legacy MPI\-1 implementations (as well as some vendor MPI\-2 implementations) do +not support the dynamic process management features introduced in the MPI\-2 +standard. Additionally, job schedulers and batch systems in supercomputing +facilities may pose additional complications to applications using the +\fBMPI_Comm_spawn()\fP routine. +.sp +With these issues in mind, \fI\%mpi4py.futures\fP supports an additional, more +traditional, SPMD\-like usage pattern requiring MPI\-1 calls only. Python +applications are started the usual way, e.g., using the \fBmpiexec\fP +command. Python code should make a collective call to the +\fI\%MPICommExecutor\fP context manager to partition the set of MPI processes +within a MPI communicator in one master processes and many workers +processes. The master process gets access to an \fI\%MPIPoolExecutor\fP +instance to submit tasks. Meanwhile, the worker process follow a different +execution path and team\-up to execute the tasks submitted from the master. +.sp +Besides alleviating the lack of dynamic process management features in legacy +MPI\-1 or partial MPI\-2 implementations, the \fI\%MPICommExecutor\fP context +manager may be useful in classic MPI\-based Python applications willing to take +advantage of the simple, task\-based, master/worker approach available in the +\fI\%mpi4py.futures\fP package. +.INDENT 0.0 +.TP +.B class mpi4py.futures.MPICommExecutor(comm=None, root=0) +Context manager for \fI\%MPIPoolExecutor\fP\&. This context manager splits a +MPI (intra)communicator \fIcomm\fP (defaults to \fI\%MPI.COMM_WORLD\fP if not provided +or \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') in two disjoint sets: a single master process (with rank \fIroot\fP +in \fIcomm\fP) and the remaining worker processes. These sets are then connected +through an intercommunicator. The target of the \X'tty: link https://docs.python.org/3/reference/compound_stmts.html#with'\fI\%with\fP\X'tty: link' statement +is assigned either an \fI\%MPIPoolExecutor\fP instance (at the master) or +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' (at the workers). +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +from mpi4py.futures import MPICommExecutor + +with MPICommExecutor(MPI.COMM_WORLD, root=0) as executor: + if executor is not None: + future = executor.submit(abs, \-42) + assert future.result() == 42 + answer = set(executor.map(abs, [\-42, 42])) + assert answer == {42} +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +If \fI\%MPICommExecutor\fP is passed a communicator of size one (e.g., +\fI\%MPI.COMM_SELF\fP), then the executor instance assigned to the target of the +\X'tty: link https://docs.python.org/3/reference/compound_stmts.html#with'\fI\%with\fP\X'tty: link' statement will execute all submitted tasks in a single +worker thread, thus ensuring that task execution still progress +asynchronously. However, the \X'tty: link https://docs.python.org/3/glossary.html#term-GIL'\fI\%GIL\fP\X'tty: link' will prevent the main and worker +threads from running concurrently in multicore processors. Moreover, the +thread context switching may harm noticeably the performance of CPU\-bound +tasks. In case of I/O\-bound tasks, the \X'tty: link https://docs.python.org/3/glossary.html#term-GIL'\fI\%GIL\fP\X'tty: link' is not usually an issue, +however, as a single worker thread is used, it progress one task at a +time. We advice against using \fI\%MPICommExecutor\fP with communicators of +size one and suggest refactoring your code to use instead a +\X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor'\fI\%ThreadPoolExecutor\fP\X'tty: link'\&. +.UNINDENT +.UNINDENT +.SS Command line +.sp +Recalling the issues related to the lack of support for dynamic process +management features in MPI implementations, \fI\%mpi4py.futures\fP supports an +alternative usage pattern where Python code (either from scripts, modules, or +zip files) is run under command line control of the \fI\%mpi4py.futures\fP +package by passing \fB\-m mpi4py.futures\fP to the \fBpython\fP +executable. The \fBmpi4py.futures\fP invocation should be passed a \fIpyfile\fP path +to a script (or a zipfile/directory containing a \fB__main__.py\fP file). +Additionally, \fBmpi4py.futures\fP accepts \fB\-m \fP\fImod\fP to execute a module +named \fImod\fP, \fB\-c \fP\fIcmd\fP to execute a command string \fIcmd\fP, or even +\fB\-\fP to read commands from standard input (\X'tty: link https://docs.python.org/3/library/sys.html#sys.stdin'\fI\%sys.stdin\fP\X'tty: link'). +Summarizing, \fBmpi4py.futures\fP can be invoked in the following ways: +.INDENT 0.0 +.IP \(bu 2 +\fB$ mpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py.futures \fP\fIpyfile\fP\fB [arg] ...\fP +.IP \(bu 2 +\fB$ mpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py.futures \-m \fP\fImod\fP\fB [arg] ...\fP +.IP \(bu 2 +\fB$ mpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py.futures \-c \fP\fIcmd\fP\fB [arg] ...\fP +.IP \(bu 2 +\fB$ mpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py.futures \- [arg] ...\fP +.UNINDENT +.sp +Before starting the main script execution, \fI\%mpi4py.futures\fP splits +\fI\%MPI.COMM_WORLD\fP in one master (the process with rank 0 in \fI\%MPI.COMM_WORLD\fP) and +\fInumprocs \- 1\fP workers and connects them through an MPI intercommunicator. +Afterwards, the master process proceeds with the execution of the user script +code, which eventually creates \fI\%MPIPoolExecutor\fP instances to submit +tasks. Meanwhile, the worker processes follow a different execution path to +serve the master. Upon successful termination of the main script at the master, +the entire MPI execution environment exists gracefully. In case of any unhandled +exception in the main script, the master process calls +\fBMPI.COMM_WORLD.Abort(1)\fP to prevent deadlocks and force termination of entire +MPI execution environment. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +Running scripts under command line control of \fI\%mpi4py.futures\fP is quite +similar to executing a single\-process application that spawn additional +workers as required. However, there is a very important difference users +should be aware of. All \fI\%MPIPoolExecutor\fP instances created at the +master will share the pool of workers. Tasks submitted at the master from +many different executors will be scheduled for execution in random order as +soon as a worker is idle. Any executor can easily starve all the workers +(e.g., by calling \fI\%MPIPoolExecutor.map()\fP with long iterables). If that +ever happens, submissions from other executors will not be serviced until +free workers are available. +.UNINDENT +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.TP +.B \X'tty: link https://docs.python.org/3/using/cmdline.html#using-on-cmdline'\fI\%Command line\fP\X'tty: link' +Documentation on Python command line interface. +.UNINDENT +.UNINDENT +.UNINDENT +.SS Parallel tasks +.sp +The \fI\%mpi4py.futures\fP package favors an embarrassingly parallel execution +model involving a series of sequential tasks independent of each other and +executed asynchronously. Albeit unnatural, \fI\%MPIPoolExecutor\fP can still be +used for handling workloads involving parallel tasks, where worker processes +communicate and coordinate each other via MPI. +.INDENT 0.0 +.TP +.B mpi4py.futures.get_comm_workers() +Access an intracommunicator grouping MPI worker processes. +.UNINDENT +.sp +Executing parallel tasks with \fI\%mpi4py.futures\fP requires following some +rules, cf. highlighted lines in example \fI\%cpi.py\fP : +.INDENT 0.0 +.IP \(bu 2 +Use \fI\%MPIPoolExecutor.num_workers\fP to determine the number of worker +processes in the executor and \fBsubmit exactly one callable per worker +process\fP using the \fI\%MPIPoolExecutor.submit()\fP method. +.IP \(bu 2 +The submitted callable must use \fI\%get_comm_workers()\fP to access an +intracommunicator grouping MPI worker processes. Afterwards, it is highly +recommended calling the \fI\%Barrier()\fP method on the +communicator. The barrier synchronization ensures that every worker process +is executing the submitted callable exactly once. Afterwards, the parallel +task can safely perform any kind of point\-to\-point or collective operation +using the returned communicator. +.IP \(bu 2 +The \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' instances returned by +\fI\%MPIPoolExecutor.submit()\fP should be collected in a sequence. +Use \X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.wait'\fI\%wait()\fP\X'tty: link' with the sequence of +\X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' instances to ensure logical completion of +the parallel task. +.UNINDENT +.SS Utilities +.sp +The \fI\%mpi4py.futures\fP package provides additional utilities for handling +\X'tty: link https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future'\fI\%Future\fP\X'tty: link' instances. +.INDENT 0.0 +.TP +.B mpi4py.futures.collect(fs) +Gather a collection of futures in a new future. +.INDENT 7.0 +.TP +.B Parameters +\fBfs\fP \-\- Collection of futures. +.TP +.B Returns +New future producing as result a list with results from \fIfs\fP\&. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.futures.compose(future, resulthook=None, excepthook=None) +Compose the completion of a future with result and exception handlers. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfuture\fP \-\- Input future instance. +.IP \(bu 2 +\fBresulthook\fP \-\- Function to be called once the input future completes with +success. Once the input future finish running with success, its +result value is the input argument for \fIresulthook\fP\&. The result of +\fIresulthook\fP is set as the result of the output future. +If \fIresulthook\fP is \fBNone\fP, the output future is completed +directly with the result of the input future. +.IP \(bu 2 +\fBexcepthook\fP \-\- Function to be called once the input future completes with +failure. Once the input future finish running with failure, its +exception value is the input argument for \fIexcepthook\fP\&. If +\fIexcepthook\fP returns an \X'tty: link https://docs.python.org/3/library/exceptions.html#Exception'\fI\%Exception\fP\X'tty: link' instance, it is set as +the exception of the output future. Otherwise, the result of +\fIexcepthook\fP is set as the result of the output future. If +\fIexcepthook\fP is \fBNone\fP, the output future is set as failed with +the exception from the input future. +.UNINDENT +.TP +.B Returns +Output future instance to be completed once the input future is +completed and either \fIresulthook\fP or \fIexcepthook\fP finish executing. +.UNINDENT +.UNINDENT +.SS Examples +.SS Computing the Julia set +.sp +The following \fI\%julia.py\fP script computes the \X'tty: link https://en.wikipedia.org/wiki/Julia_set'\fI\%Julia set\fP\X'tty: link' and dumps an +image to disk in binary \X'tty: link https://netpbm.sourceforge.net/doc/pgm.html'\fI\%PGM\fP\X'tty: link' format. The code starts by importing +\fI\%MPIPoolExecutor\fP from the \fI\%mpi4py.futures\fP package. Next, some +global constants and functions implement the computation of the Julia set. The +computations are protected with the standard \fBif __name__ == \(aq__main__\(aq: +\&...\fP idiom. The image is computed by whole scanlines submitting all these +tasks at once using the \fI\%map\fP method. The result +iterator yields scanlines in\-order as the tasks complete. Finally, each +scanline is dumped to disk. +.sp +\fBjulia.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py.futures import MPIPoolExecutor + +x0, x1, w = \-2.0, +2.0, 640*2 +y0, y1, h = \-1.5, +1.5, 480*2 +dx = (x1 \- x0) / w +dy = (y1 \- y0) / h + +c = complex(0, 0.65) + +def julia(x, y): + z = complex(x, y) + n = 255 + while abs(z) < 3 and n > 1: + z = z**2 + c + n \-= 1 + return n + +def julia_line(k): + line = bytearray(w) + y = y1 \- k * dy + for j in range(w): + x = x0 + j * dx + line[j] = julia(x, y) + return line + +if __name__ == \(aq__main__\(aq: + + with MPIPoolExecutor() as executor: + image = executor.map(julia_line, range(h)) + with open(\(aqjulia.pgm\(aq, \(aqwb\(aq) as f: + f.write(b\(aqP5 %d %d %d\en\(aq % (w, h, 255)) + for line in image: + f.write(line) +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The recommended way to execute the script is by using the \fBmpiexec\fP +command specifying one MPI process (master) and (optional but recommended) the +desired MPI universe size, which determines the number of additional +dynamically spawned processes (workers). The MPI universe size is provided +either by a batch system or set by the user via command\-line arguments to +\fBmpiexec\fP or environment variables. Below we provide examples for +MPICH and Open MPI implementations [1]\&. In all of these examples, the +\fBmpiexec\fP command launches a single master process running the Python +interpreter and executing the main script. When required, \fI\%mpi4py.futures\fP +spawns the pool of 16 worker processes. The master submits tasks to the workers +and waits for the results. The workers receive incoming tasks, execute them, +and send back the results to the master. +.sp +When using MPICH implementation or its derivatives based on the Hydra process +manager, users can set the MPI universe size via the \fB\-usize\fP argument to +\fBmpiexec\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 1 \-usize 17 python julia.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +or, alternatively, by setting the \fBMPIEXEC_UNIVERSE_SIZE\fP environment +variable: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ env MPIEXEC_UNIVERSE_SIZE=17 mpiexec \-n 1 python julia.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +In the Open MPI implementation, the MPI universe size can be set via the +\fB\-host\fP argument to \fBmpiexec\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 1 \-host localhost:17 python julia.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Another way to specify the number of workers is to use the +\fI\%mpi4py.futures\fP\-specific environment variable +\fI\%MPI4PY_FUTURES_MAX_WORKERS\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ env MPI4PY_FUTURES_MAX_WORKERS=16 mpiexec \-n 1 python julia.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Note that in this case, the MPI universe size is ignored. +.sp +Alternatively, users may decide to execute the script in a more traditional +way, that is, all the MPI processes are started at once. The user script is run +under command\-line control of \fI\%mpi4py.futures\fP passing the \X'tty: link https://docs.python.org/3/using/cmdline.html#using-on-cmdline'\fI\%\-m\fP\X'tty: link' flag to the \fBpython\fP executable: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 17 python \-m mpi4py.futures julia.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +As explained previously, the 17 processes are partitioned in one master and 16 +workers. The master process executes the main script while the workers execute +the tasks submitted by the master. +.IP [1] 5 +When using an MPI implementation other than MPICH or Open MPI, please +check the documentation of the implementation and/or batch +system for the ways to specify the desired MPI universe size. +.SS Computing Pi (parallel task) +.sp +The number \epi can be approximated via numerical integration with the +simple midpoint rule, that is: +.sp +.ce +\epi = \eint_{0}^{1} \efrac{4}{1+x^2} \e,dx \eapprox +\efrac{1}{n} \esum_{i=1}^{n} +\efrac{4}{1 + \eleft[\efrac{1}{n} \eleft(i\-\efrac{1}{2}\eright) \eright]^2} . +.ce 0 +.sp +The following \fI\%cpi.py\fP script computes such approximations using +\fI\%mpi4py.futures\fP with a parallel task involving a collective reduction +operation. Highlighted lines correspond to the rules discussed in \fI\%Parallel +tasks\fP\&. +.sp +\fBcpi.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +import math +import sys +from mpi4py.futures import MPIPoolExecutor, wait +from mpi4py.futures import get_comm_workers + + +def compute_pi(n): + # Access intracommunicator and synchronize + comm = get_comm_workers() + comm.Barrier() + + rank = comm.Get_rank() + size = comm.Get_size() + + # Local computation + h = 1.0 / n + s = 0.0 + for i in range(rank + 1, n + 1, size): + x = h * (i \- 0.5) + s += 4.0 / (1.0 + x**2) + pi_partial = s * h + + # Parallel reduce\-to\-all + pi = comm.allreduce(pi_partial) + + # All workers return the same value + return pi + + +if __name__ == \(aq__main__\(aq: + n = int(sys.argv[1]) if len(sys.argv) > 1 else 256 + + with MPIPoolExecutor() as executor: + # Submit exactly one callable per worker + P = executor.num_workers + fs = [executor.submit(compute_pi, n) for _ in range(P)] + + # Wait for all workers to finish + wait(fs) + + # Get result from the first future object. + # In this particular example, due to using reduce\-to\-all, + # all the other future objects hold the same result value. + pi = fs[0].result() + print( + f\(dqpi: {pi:.16f}, error: {abs(pi \- math.pi):.3e}\(dq, + f\(dq({n:d} intervals, {P:d} workers)\(dq, + ) +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +To run in modern MPI\-2 mode: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ env MPI4PY_FUTURES_MAX_WORKERS=4 mpiexec \-n 1 python cpi.py 128 +pi: 3.1415977398528137, error: 5.086e\-06 (128 intervals, 4 workers) + +$ env MPI4PY_FUTURES_MAX_WORKERS=8 mpiexec \-n 1 python cpi.py 512 +pi: 3.1415929714812316, error: 3.179e\-07 (512 intervals, 8 workers) +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +To run in legacy MPI\-1 mode: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 5 python \-m mpi4py.futures cpi.py 128 +pi: 3.1415977398528137, error: 5.086e\-06 (128 intervals, 4 workers) + +$ mpiexec \-n 9 python \-m mpi4py.futures cpi.py 512 +pi: 3.1415929714812316, error: 3.179e\-07 (512 intervals, 8 workers) +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Citation +.sp +If \fI\%mpi4py.futures\fP been significant to a project that leads to an +academic publication, please acknowledge our work by citing the following +article \fI\%[mpi4py\-futures]\fP: +.IP [mpi4py-futures] 5 +M. Rogowski, S. Aseeri, D. Keyes, and L. Dalcin, +\fImpi4py.futures: MPI\-Based Asynchronous Task Execution for Python\fP, +IEEE Transactions on Parallel and Distributed Systems, 34(2):611\-622, 2023. +\X'tty: link https://doi.org/10.1109/TPDS.2022.3225481'\fI\%https://doi.org/10.1109/TPDS.2022.3225481\fP\X'tty: link' +.SH MPI4PY.UTIL +.sp +Added in version 3.1.0. + +.sp +The \fI\%mpi4py.util\fP package collects miscellaneous utilities +within the intersection of Python and MPI. +.SS mpi4py.util.dtlib +.sp +Added in version 3.1.0. + +.sp +The \fI\%mpi4py.util.dtlib\fP module provides converter routines between NumPy +and MPI datatypes. +.INDENT 0.0 +.TP +.B mpi4py.util.dtlib.from_numpy_dtype(dtype) +Convert NumPy datatype to MPI datatype. +.INDENT 7.0 +.TP +.B Parameters +\fBdtype\fP (\X'tty: link https://numpy.org/doc/stable/reference/typing.html#numpy.typing.DTypeLike'\fI\%DTypeLike\fP\X'tty: link') \-\- NumPy dtype\-like object. +.TP +.B Return type +\fI\%Datatype\fP +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B mpi4py.util.dtlib.to_numpy_dtype(datatype) +Convert MPI datatype to NumPy datatype. +.INDENT 7.0 +.TP +.B Parameters +\fBdatatype\fP (\fI\%Datatype\fP) \-\- MPI datatype. +.TP +.B Return type +\X'tty: link https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype'\fI\%dtype\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.SS mpi4py.util.pkl5 +.sp +Added in version 3.1.0. + +.sp +\X'tty: link https://docs.python.org/3/library/pickle.html#module-pickle'\fI\%pickle\fP\X'tty: link' protocol 5 (see \X'tty: link https://peps.python.org/pep-0574/'\fI\%PEP 574\fP\X'tty: link') introduced support for out\-of\-band +buffers, allowing for more efficient handling of certain object types with +large memory footprints. +.sp +MPI for Python uses the traditional in\-band handling of buffers. This approach +is appropriate for communicating non\-buffer Python objects, or buffer\-like +objects with small memory footprints. For point\-to\-point communication, in\-band +buffer handling allows for the communication of a pickled stream with a single +MPI message, at the expense of additional CPU and memory overhead in the +pickling and unpickling steps. +.sp +The \fI\%mpi4py.util.pkl5\fP module provides communicator wrapper classes +reimplementing pickle\-based point\-to\-point and collective communication methods +using pickle protocol 5. Handling out\-of\-band buffers necessarily involves +multiple MPI messages, thus increasing latency and hurting performance in case +of small size data. However, in case of large size data, the zero\-copy savings +of out\-of\-band buffer handling more than offset the extra latency costs. +Additionally, these wrapper methods overcome the infamous 2 GiB message count +limit (MPI\-1 to MPI\-3). +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +Support for pickle protocol 5 is available in the \X'tty: link https://docs.python.org/3/library/pickle.html#module-pickle'\fI\%pickle\fP\X'tty: link' module +within the Python standard library since Python 3.8. Previous Python 3 +releases can use the \fBpickle5\fP backport, which is available on \X'tty: link https://pypi.org/project/pickle5/'\fI\%PyPI\fP\X'tty: link' and can be installed with: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +python \-m pip install pickle5 +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pkl5.Request +Request. +.sp +Custom request class for nonblocking communications. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%Request\fP is not a subclass of \fI\%mpi4py.MPI.Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free a communication request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Free a communication request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B cancel() +Cancel a communication request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B get_status(status=None) +Non\-destructive test for the completion of a request. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B test(status=None) +Test for the completion of a request. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B wait(status=None) +Wait for a request to complete. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod get_status_all(requests, statuses=None) +Non\-destructive test for the completion of all requests. +.INDENT 7.0 +.TP +.B Classmethod +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod testall(requests, statuses=None) +Test for the completion of all requests. +.INDENT 7.0 +.TP +.B Classmethod +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod waitall(requests, statuses=None) +Wait for all requests to complete. +.INDENT 7.0 +.TP +.B Classmethod +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pkl5.Message +Message. +.sp +Custom message class for matching probes. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +\fI\%Message\fP is not a subclass of \fI\%mpi4py.MPI.Message\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Do nothing. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B recv(status=None) +Blocking receive of matched message. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B irecv() +Nonblocking receive of matched message. +.INDENT 7.0 +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod probe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a matched message. +.INDENT 7.0 +.TP +.B Classmethod +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod iprobe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a matched message. +.INDENT 7.0 +.TP +.B Classmethod +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pkl5.Comm +Communicator. +.sp +Base communicator wrapper class. +.INDENT 7.0 +.TP +.B send(obj, dest, tag=0) +Blocking send in standard mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B bsend(obj, dest, tag=0) +Blocking send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B ssend(obj, dest, tag=0) +Blocking send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B isend(obj, dest, tag=0) +Nonblocking send in standard mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B ibsend(obj, dest, tag=0) +Nonblocking send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B issend(obj, dest, tag=0) +Nonblocking send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B recv(buf=None, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B irecv(buf=None, source=ANY_SOURCE, tag=ANY_TAG) +Nonblocking receive. +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +This method cannot be supported reliably +and raises \X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeError'\fI\%RuntimeError\fP\X'tty: link'\&. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B sendrecv(sendobj, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG, status=None) +Send and receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\fIAny\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsendtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B mprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Message\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B improbe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Message\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B bcast(obj, root=0) +Broadcast. +.sp +Added in version 3.1.0. + +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B gather(sendobj, root=0) +Gather. +.sp +Added in version 4.0.0. + +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B scatter(sendobj, root=0) +Scatter. +.sp +Added in version 4.0.0. + +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B allgather(sendobj) +Gather to All. +.sp +Added in version 4.0.0. + +.INDENT 7.0 +.TP +.B Parameters +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B alltoall(sendobj) +All to All Scatter/Gather. +.sp +Added in version 4.0.0. + +.INDENT 7.0 +.TP +.B Parameters +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pkl5.Intracomm +Intracommunicator. +.sp +Intracommunicator wrapper class. +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pkl5.Intercomm +Intercommunicator. +.sp +Intercommunicator wrapper class. +.UNINDENT +.SS Examples +.sp +\fBtest\-pkl5\-1.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +import numpy as np +from mpi4py import MPI +from mpi4py.util import pkl5 + +comm = pkl5.Intracomm(MPI.COMM_WORLD) # comm wrapper +size = comm.Get_size() +rank = comm.Get_rank() +dst = (rank + 1) % size +src = (rank \- 1) % size + +sobj = np.full(1024**3, rank, dtype=\(aqi4\(aq) # > 4 GiB +sreq = comm.isend(sobj, dst, tag=42) +robj = comm.recv (None, src, tag=42) +sreq.Free() + +assert np.min(robj) == src +assert np.max(robj) == src +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBtest\-pkl5\-2.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +import numpy as np +from mpi4py import MPI +from mpi4py.util import pkl5 + +comm = pkl5.Intracomm(MPI.COMM_WORLD) # comm wrapper +size = comm.Get_size() +rank = comm.Get_rank() +dst = (rank + 1) % size +src = (rank \- 1) % size + +sobj = np.full(1024**3, rank, dtype=\(aqi4\(aq) # > 4 GiB +sreq = comm.isend(sobj, dst, tag=42) + +status = MPI.Status() +rmsg = comm.mprobe(status=status) +assert status.Get_source() == src +assert status.Get_tag() == 42 +rreq = rmsg.irecv() +robj = rreq.wait() + +sreq.Free() +assert np.max(robj) == src +assert np.min(robj) == src +.ft P +.fi +.UNINDENT +.UNINDENT +.SS mpi4py.util.pool +.sp +Added in version 4.0.0. + +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +This module intends to be a drop\-in replacement for the +\X'tty: link https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.pool'\fI\%multiprocessing.pool\fP\X'tty: link' interface from the Python standard library. +The \fI\%Pool\fP class exposed here is implemented as a +thin wrapper around \fI\%MPIPoolExecutor\fP\&. +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +The \fI\%mpi4py.futures\fP package offers a higher level interface +for asynchronously pushing tasks to MPI worker process, allowing +for a clear separation between submitting tasks and waiting for the +results. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pool.Pool +Pool using MPI processes as workers. +.INDENT 7.0 +.TP +.B __init__(processes=None, initializer=None, initargs=(), **kwargs) +Initialize a new Pool instance. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBprocesses\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') \-\- Number of worker processes. +.IP \(bu 2 +\fBinitializer\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') \-\- An callable used to initialize workers processes. +.IP \(bu 2 +\fBinitargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) \-\- A tuple of arguments to pass to the initializer. +.IP \(bu 2 +\fBkwargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Additional keyword arguments are passed down to the +\fI\%MPIPoolExecutor\fP constructor. +.UNINDENT +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +The \fImaxtasksperchild\fP and \fIcontext\fP arguments of +\X'tty: link https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool'\fI\%multiprocessing.pool.Pool\fP\X'tty: link' are not supported. Specifying +\fImaxtasksperchild\fP or \fIcontext\fP with a value other than \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' will +issue a warning of category \X'tty: link https://docs.python.org/3/library/exceptions.html#UserWarning'\fI\%UserWarning\fP\X'tty: link'\&. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B apply(func, args=(), kwds={}) +Call \fIfunc\fP with arguments \fIargs\fP and keyword arguments \fIkwds\fP\&. +.sp +Equivalent to \fBfunc(*args, **kwds)\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBkwds\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Mapping'\fI\%Mapping\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\fI\%T\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B apply_async(func, args=(), kwds={}, callback=None, error_callback=None) +Asynchronous version of \fI\%apply()\fP returning \fI\%ApplyResult\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\fICallable\fP\fI[\fP\fI\&...\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBargs\fP (\fIIterable\fP\fI[\fP\fIAny\fP\fI]\fP) +.IP \(bu 2 +\fBkwds\fP (\fIMapping\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\fIAny\fP\fI]\fP) +.IP \(bu 2 +\fBcallback\fP (\fICallable\fP\fI[\fP\fI[\fP\fI\%T\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBerror_callback\fP (\fICallable\fP\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/exceptions.html#BaseException'\fI\%BaseException\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%AsyncResult\fP[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B map(func, iterable, chunksize=None) +Apply \fIfunc\fP to each element in \fIiterable\fP\&. +.sp +Equivalent to \fBlist(map(func, iterable))\fP\&. +.sp +Block until all results are ready and return them in a \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\&. +.sp +The \fIiterable\fP is choped into a number of chunks which are submitted as +separate tasks. The (approximate) size of these chunks can be specified +by setting \fIchunksize\fP to a positive integer. +.sp +Consider using \fI\%imap()\fP or \fI\%imap_unordered()\fP with explicit \fIchunksize\fP +for better efficiency. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%S\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\fI\%S\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B map_async(func, iterable, chunksize=None, callback=None, error_callback=None) +Asynchronous version of \fI\%map()\fP returning \fI\%MapResult\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\fICallable\fP\fI[\fP\fI[\fP\fI\%S\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\fIIterable\fP\fI[\fP\fI\%S\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBcallback\fP (\fICallable\fP\fI[\fP\fI[\fP\fI\%T\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBerror_callback\fP (\fICallable\fP\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/exceptions.html#BaseException'\fI\%BaseException\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%MapResult\fP[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B imap(func, iterable, chunksize=1) +Like \fI\%map()\fP but return an \X'tty: link https://docs.python.org/3/glossary.html#term-iterator'\fI\%iterator\fP\X'tty: link'\&. +.sp +Equivalent to \fBmap(func, iterable)\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%S\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\fI\%S\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterator'\fI\%Iterator\fP\X'tty: link'[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B imap_unordered(func, iterable, chunksize=1) +Like \fI\%imap()\fP but ordering of results is arbitrary. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%S\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\fI\%S\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterator'\fI\%Iterator\fP\X'tty: link'[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B starmap(func, iterable, chunksize=None) +Apply \fIfunc\fP to each argument tuple in \fIiterable\fP\&. +.sp +Equivalent to \fBlist(itertools.starmap(func, iterable))\fP\&. +.sp +Block until all results are ready and return them in a \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\&. +.sp +The \fIiterable\fP is choped into a number of chunks which are submitted as +separate tasks. The (approximate) size of these chunks can be specified +by setting \fIchunksize\fP to a positive integer. +.sp +Consider using \fI\%istarmap()\fP or \fI\%istarmap_unordered()\fP with explicit +\fIchunksize\fP for better efficiency. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B starmap_async(func, iterable, chunksize=None, callback=None, error_callback=None) +Asynchronous version of \fI\%starmap()\fP returning \fI\%MapResult\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\fICallable\fP\fI[\fP\fI\&...\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\fIIterable\fP\fI[\fP\fIIterable\fP\fI[\fP\fIAny\fP\fI]\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBcallback\fP (\fICallable\fP\fI[\fP\fI[\fP\fI\%T\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBerror_callback\fP (\fICallable\fP\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/exceptions.html#BaseException'\fI\%BaseException\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%MapResult\fP[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B istarmap(func, iterable, chunksize=1) +Like \fI\%starmap()\fP but return an \X'tty: link https://docs.python.org/3/glossary.html#term-iterator'\fI\%iterator\fP\X'tty: link'\&. +.sp +Equivalent to \fBitertools.starmap(func, iterable)\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterator'\fI\%Iterator\fP\X'tty: link'[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B istarmap_unordered(func, iterable, chunksize=1) +Like \fI\%istarmap()\fP but ordering of results is arbitrary. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunc\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) +.IP \(bu 2 +\fBiterable\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI]\fP) +.IP \(bu 2 +\fBchunksize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterator'\fI\%Iterator\fP\X'tty: link'[\fI\%T\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B close() +Prevent any more tasks from being submitted to the pool. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B terminate() +Stop the worker processes without completing pending tasks. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B join() +Wait for the worker processes to exit. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pool.ThreadPool +Bases: \fI\%Pool\fP +.sp +Pool using threads as workers. +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pool.AsyncResult +Asynchronous result. +.INDENT 7.0 +.TP +.B get(timeout=None) +Return the result when it arrives. +.sp +If \fItimeout\fP is not \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' and the result does not arrive within +\fItimeout\fP seconds then raise \X'tty: link https://docs.python.org/3/library/exceptions.html#TimeoutError'\fI\%TimeoutError\fP\X'tty: link'\&. +.sp +If the remote call raised an exception then that exception will be +reraised. +.INDENT 7.0 +.TP +.B Parameters +\fBtimeout\fP (\X'tty: link https://docs.python.org/3/library/functions.html#float'\fI\%float\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\fI\%T\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B wait(timeout=None) +Wait until the result is available or \fItimeout\fP seconds pass. +.INDENT 7.0 +.TP +.B Parameters +\fBtimeout\fP (\X'tty: link https://docs.python.org/3/library/functions.html#float'\fI\%float\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B ready() +Return whether the call has completed. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B successful() +Return whether the call completed without raising an exception. +.sp +If the result is not ready then raise \X'tty: link https://docs.python.org/3/library/exceptions.html#ValueError'\fI\%ValueError\fP\X'tty: link'\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pool.ApplyResult +Bases: \fI\%AsyncResult\fP +.sp +Result type of \fI\%apply_async()\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B class mpi4py.util.pool.MapResult +Bases: \fI\%AsyncResult\fP +.sp +Result type of \fI\%map_async()\fP and \fI\%starmap_async()\fP\&. +.UNINDENT +.SS mpi4py.util.sync +.sp +Added in version 4.0.0. + +.sp +The \fI\%mpi4py.util.sync\fP module provides parallel synchronization +utilities. +.SS Sequential execution +.INDENT 0.0 +.TP +.B class mpi4py.util.sync.Sequential +Sequential execution. +.sp +Context manager for sequential execution within a group of MPI processes. +.sp +The implementation is based in MPI\-1 point\-to\-point communication. A process +with rank \fIi\fP waits in a blocking receive until the previous process rank +\fIi\-1\fP finish executing and signals the next rank \fIi\fP with a send. +.INDENT 7.0 +.TP +.B __init__(comm, tag=0) +Initialize sequential execution. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) \-\- Intracommunicator context. +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Tag for point\-to\-point communication. +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __enter__() +Enter sequential execution. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __exit__(*exc) +Exit sequential execution. +.INDENT 7.0 +.TP +.B Parameters +\fBexc\fP (\X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B begin() +Begin sequential execution. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B end() +End sequential execution. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS Global counter +.INDENT 0.0 +.TP +.B class mpi4py.util.sync.Counter +Global counter. +.sp +Produce consecutive values within a group of MPI processes. The counter +interface is close to that of \X'tty: link https://docs.python.org/3/library/itertools.html#itertools.count'\fI\%itertools.count\fP\X'tty: link'\&. +.sp +The implementation is based in MPI\-3 one\-sided operations. A root process +(typically rank \fB0\fP) holds the counter, and its value is queried and +incremented with an atomic RMA \fIfetch\-and\-add\fP operation. +.INDENT 7.0 +.TP +.B __init__(start=0, step=1, *, typecode=\(aqi\(aq, comm=COMM_SELF, info=INFO_NULL, root=0) +Initialize global counter. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBstart\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Start value. +.IP \(bu 2 +\fBstep\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Increment value. +.IP \(bu 2 +\fBtypecode\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') \-\- Type code as defined in the \X'tty: link https://docs.python.org/3/library/array.html#module-array'\fI\%array\fP\X'tty: link' module. +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) \-\- Intracommunicator context. +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) \-\- Info object for RMA context creation. +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Process rank holding the counter memory. +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __iter__() +Implement \fBiter(self)\fP\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __next__() +Implement \fBnext(self)\fP\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B next(incr=None) +Return current value and increment. +.INDENT 7.0 +.TP +.B Parameters +\fBincr\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') \-\- Increment value. +.TP +.B Returns +The counter value before incrementing. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Free counter resources. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS Mutual exclusion +.INDENT 0.0 +.TP +.B class mpi4py.util.sync.Mutex +Mutual exclusion. +.sp +Establish a critical section or mutual exclusion among MPI processes. +.sp +The mutex interface is close to that of \X'tty: link https://docs.python.org/3/library/threading.html#threading.Lock'\fI\%threading.Lock\fP\X'tty: link' and +\X'tty: link https://docs.python.org/3/library/threading.html#threading.RLock'\fI\%threading.RLock\fP\X'tty: link', allowing the use of either recursive or non\-recursive +mutual exclusion. However, a mutex should be used within a group of MPI +processes, not threads. +.sp +In non\-recursive mode, the semantics of \fI\%Mutex\fP are somewhat different than +these of \X'tty: link https://docs.python.org/3/library/threading.html#threading.Lock'\fI\%threading.Lock\fP\X'tty: link': +.INDENT 7.0 +.IP \(bu 2 +Once acquired, a mutex is held and owned by a process until released. +.IP \(bu 2 +Trying to acquire a mutex already held raises \X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeError'\fI\%RuntimeError\fP\X'tty: link'\&. +.IP \(bu 2 +Trying to release a mutex not yet held raises \X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeError'\fI\%RuntimeError\fP\X'tty: link'\&. +.UNINDENT +.sp +This mutex implementation uses the scalable and fair spinlock algorithm from +\fI\%[mcs\-paper]\fP and took inspiration from the MPI\-3 RMA implementation of +\fI\%[uam\-book]\fP\&. +.INDENT 7.0 +.TP +.B __init__(*, recursive=False, comm=COMM_SELF, info=INFO_NULL) +Initialize mutex object. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) \-\- Intracommunicator context. +.IP \(bu 2 +\fBrecursive\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') \-\- Whether to allow recursive acquisition. +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) \-\- Info object for RMA context creation. +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __enter__() +Acquire mutex. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __exit__(*exc) +Release mutex. +.INDENT 7.0 +.TP +.B Parameters +\fBexc\fP (\X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B acquire(blocking=True) +Acquire mutex, blocking or non\-blocking. +.INDENT 7.0 +.TP +.B Parameters +\fBblocking\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') \-\- If \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', block until the mutex is held. +.TP +.B Returns +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' if the mutex is held, \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' otherwise. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B release() +Release mutex. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B locked() +Return whether the mutex is held. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B count() +Return the recursion count. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Free mutex resources. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.IP [mcs-paper] 5 +John M. Mellor\-Crummey and Michael L. Scott. +Algorithms for scalable synchronization on shared\-memory multiprocessors. +ACM Transactions on Computer Systems, 9(1):21\-65, February 1991. +\X'tty: link https://doi.org/10.1145/103727.103729'\fI\%https://doi.org/10.1145/103727.103729\fP\X'tty: link' +.IP [uam-book] 5 +William Gropp, Torsten Hoefler, Rajeev Thakur, Ewing Lusk. +Using Advanced MPI \- Modern Features of the Message\-Passing Interface. +Chapter 4, Section 4.7, Pages 130\-131. The MIT Press, November 2014. +\X'tty: link https://mitpress.mit.edu/9780262527637/using-advanced-mpi/'\fI\%https://mitpress.mit.edu/9780262527637/using\-advanced\-mpi/\fP\X'tty: link' +.SS Condition variable +.INDENT 0.0 +.TP +.B class mpi4py.util.sync.Condition +Condition variable. +.sp +A condition variable allows one or more MPI processes to wait until they are +notified by another processes. +.sp +The condition variable interface is close to that of \X'tty: link https://docs.python.org/3/library/threading.html#threading.Condition'\fI\%threading.Condition\fP\X'tty: link', +allowing the use of either recursive or non\-recursive mutual exclusion. +However, the condition variable should be used within a group of MPI +processes, not threads. +.sp +This condition variable implementation uses a MPI\-3 RMA\-based scalable and +fair circular queue algorithm to track the set of waiting processes. +.INDENT 7.0 +.TP +.B __init__(mutex=None, *, recursive=True, comm=COMM_SELF, info=INFO_NULL) +Initialize condition variable. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBmutex\fP (\fI\%Mutex\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') \-\- Mutual exclusion object. +.IP \(bu 2 +\fBrecursive\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') \-\- Whether to allow recursive acquisition. +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) \-\- Intracommunicator context. +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) \-\- Info object for RMA context creation. +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __enter__() +Acquire the underlying mutex. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __exit__(*exc) +Release the underlying mutex. +.INDENT 7.0 +.TP +.B Parameters +\fBexc\fP (\X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B acquire(blocking=True) +Acquire the underlying mutex. +.INDENT 7.0 +.TP +.B Parameters +\fBblocking\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B release() +Release the underlying mutex. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B locked() +Return whether the underlying mutex is held. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B wait() +Wait until notified by another process. +.INDENT 7.0 +.TP +.B Returns +Always \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link'\&. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Literal'\fI\%Literal\fP\X'tty: link'[True] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B wait_for(predicate) +Wait until a predicate evaluates to \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link'\&. +.INDENT 7.0 +.TP +.B Parameters +\fBpredicate\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI]\fP\fI, \fP\fI\%T\fP\fI]\fP) \-\- callable returning a boolean. +.TP +.B Returns +The result of predicate once it evaluates to \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link'\&. +.TP +.B Return type +\fI\%T\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B notify(n=1) +Wake up one or more processes waiting on this condition. +.INDENT 7.0 +.TP +.B Parameters +\fBn\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Maximum number of processes to wake up. +.TP +.B Returns +The actual number of processes woken up. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B notify_all() +Wake up all processes waiting on this condition. +.INDENT 7.0 +.TP +.B Returns +The actual number of processes woken up. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Free condition resources. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS Semaphore object +.INDENT 0.0 +.TP +.B class mpi4py.util.sync.Semaphore +Semaphore object. +.sp +A semaphore object manages an internal counter which is decremented by each +\fI\%acquire()\fP call and incremented by each \fI\%release()\fP call. The internal +counter never reaches a value below zero; when \fI\%acquire()\fP finds that it is +zero, it blocks and waits until some other process calls \fI\%release()\fP\&. +.sp +The semaphore interface is close to that of \X'tty: link https://docs.python.org/3/library/threading.html#threading.Semaphore'\fI\%threading.Semaphore\fP\X'tty: link' and +\X'tty: link https://docs.python.org/3/library/threading.html#threading.BoundedSemaphore'\fI\%threading.BoundedSemaphore\fP\X'tty: link', allowing the use of either bounded (default) +or unbounded semaphores. With a bounded semaphore, the internal counter +never exceeds its initial value; otherwise \fI\%release()\fP raises \X'tty: link https://docs.python.org/3/library/exceptions.html#ValueError'\fI\%ValueError\fP\X'tty: link'\&. +.sp +This semaphore implementation uses a global \fI\%Counter\fP and a \fI\%Condition\fP +variable to handle waiting and and notification. +.INDENT 7.0 +.TP +.B __init__(value=1, *, bounded=True, comm=COMM_SELF, info=INFO_NULL) +Initialize semaphore object. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBvalue\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Initial value for internal counter. +.IP \(bu 2 +\fBbounded\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') \-\- Bound internal counter to initial value. +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) \-\- Intracommunicator context. +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) \-\- Info object for RMA context creation. +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __enter__() +Acquire semaphore. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B __exit__(*exc) +Release semaphore. +.INDENT 7.0 +.TP +.B Parameters +\fBexc\fP (\X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B acquire(blocking=True) +Acquire semaphore, decrementing the internal counter by one. +.INDENT 7.0 +.TP +.B Parameters +\fBblocking\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') \-\- If \X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link', block until the semaphore is acquired. +.TP +.B Returns +\X'tty: link https://docs.python.org/3/library/constants.html#True'\fI\%True\fP\X'tty: link' if the semaphore is acquired, \X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link' otherwise. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B release(n=1) +Release semaphore, incrementing the internal counter by one or more. +.INDENT 7.0 +.TP +.B Parameters +\fBn\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') \-\- Increment for the internal counter. +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Free semaphore resources. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS Examples +.sp +\fBtest\-sync\-1.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +from mpi4py.util.sync import Counter, Sequential + +comm = MPI.COMM_WORLD + +counter = Counter(comm) +with Sequential(comm): + value = next(counter) +counter.free() + +assert comm.rank == value +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBtest\-sync\-2.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +from mpi4py.util.sync import Counter, Mutex + +comm = MPI.COMM_WORLD + +mutex = Mutex(comm) +counter = Counter(comm) +with mutex: + value = next(counter) +counter.free() +mutex.free() + +assert ( + list(range(comm.size)) == + sorted(comm.allgather(value)) +) +.ft P +.fi +.UNINDENT +.UNINDENT +.SH MPI4PY.RUN +.sp +Added in version 3.0.0. + +.sp +At import time, \fI\%mpi4py\fP initializes the MPI execution environment calling +\fBMPI_Init_thread()\fP and installs an exit hook to automatically call +\fBMPI_Finalize()\fP just before the Python process terminates. Additionally, +\fI\%mpi4py\fP overrides the default \fI\%ERRORS_ARE_FATAL\fP error handler in favor +of \fI\%ERRORS_RETURN\fP, which allows translating MPI errors in Python +exceptions. These departures from standard MPI behavior may be controversial, +but are quite convenient within the highly dynamic Python programming +environment. Third\-party code using \fI\%mpi4py\fP can just \fBfrom mpi4py import +MPI\fP and perform MPI calls without the tedious initialization/finalization +handling. MPI errors, once translated automatically to Python exceptions, can +be dealt with the common \X'tty: link https://docs.python.org/3/reference/compound_stmts.html#try'\fI\%try\fP\X'tty: link'\&...\X'tty: link https://docs.python.org/3/reference/compound_stmts.html#except'\fI\%except\fP\X'tty: link'\&...\X'tty: link https://docs.python.org/3/reference/compound_stmts.html#finally'\fI\%finally\fP\X'tty: link' clauses; unhandled MPI exceptions will print a traceback +which helps in locating problems in source code. +.sp +Unfortunately, the interplay of automatic MPI finalization and unhandled +exceptions may lead to deadlocks. In unattended runs, these deadlocks will +drain the battery of your laptop, or burn precious allocation hours in your +supercomputing facility. +.SS Exceptions and deadlocks +.sp +Consider the following snippet of Python code. Assume this code is stored in a +standard Python script file and run with \fBmpiexec\fP in two or more +processes. +.sp +\fBdeadlock.py\fP +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +from mpi4py import MPI +assert MPI.COMM_WORLD.Get_size() > 1 +rank = MPI.COMM_WORLD.Get_rank() +if rank == 0: + 1/0 + MPI.COMM_WORLD.send(None, dest=1, tag=42) +elif rank == 1: + MPI.COMM_WORLD.recv(source=0, tag=42) +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Process 0 raises \X'tty: link https://docs.python.org/3/library/exceptions.html#ZeroDivisionError'\fI\%ZeroDivisionError\fP\X'tty: link' exception before performing a send call to +process 1. As the exception is not handled, the Python interpreter running in +process 0 will proceed to exit with non\-zero status. However, as \fI\%mpi4py\fP +installed a finalizer hook to call \fBMPI_Finalize()\fP before exit, process +0 will block waiting for other processes to also enter the +\fBMPI_Finalize()\fP call. Meanwhile, process 1 will block waiting for a +message to arrive from process 0, thus never reaching to +\fBMPI_Finalize()\fP\&. The whole MPI execution environment is irremediably in +a deadlock state. +.sp +To alleviate this issue, \fI\%mpi4py\fP offers a simple, alternative command +line execution mechanism based on using the \X'tty: link https://docs.python.org/3/using/cmdline.html#using-on-cmdline'\fI\%\-m\fP\X'tty: link' +flag and implemented with the \X'tty: link https://docs.python.org/3/library/runpy.html#module-runpy'\fI\%runpy\fP\X'tty: link' module. To use this features, Python +code should be run passing \fB\-m mpi4py\fP in the command line invoking the +Python interpreter. In case of unhandled exceptions, the finalizer hook will +call \fBMPI_Abort()\fP on the \fBMPI_COMM_WORLD\fP communicator, thus +effectively aborting the MPI execution environment. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +When a process is forced to abort, resources (e.g. open files) are not +cleaned\-up and any registered finalizers (either with the \X'tty: link https://docs.python.org/3/library/atexit.html#module-atexit'\fI\%atexit\fP\X'tty: link' +module, the Python C/API function \X'tty: link https://docs.python.org/3/c-api/sys.html#c.Py_AtExit'\fI\%Py_AtExit()\fP\X'tty: link', or even the C +standard library function \fBatexit()\fP) will not be executed. Thus, +aborting execution is an extremely impolite way of ensuring process +termination. However, MPI provides no other mechanism to recover from a +deadlock state. +.UNINDENT +.UNINDENT +.SS Command line +.sp +The use of \fB\-m mpi4py\fP to execute Python code on the command line resembles +that of the Python interpreter. +.INDENT 0.0 +.IP \(bu 2 +\fBmpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py \fP\fIpyfile\fP\fB [arg] ...\fP +.IP \(bu 2 +\fBmpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py \-m \fP\fImod\fP\fB [arg] ...\fP +.IP \(bu 2 +\fBmpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py \-c \fP\fIcmd\fP\fB [arg] ...\fP +.IP \(bu 2 +\fBmpiexec \-n \fP\fInumprocs\fP\fB python \-m mpi4py \- [arg] ...\fP +.UNINDENT +.INDENT 0.0 +.TP +.B +Execute the Python code contained in \fIpyfile\fP, which must be a filesystem +path referring to either a Python file, a directory containing a +\fB__main__.py\fP file, or a zipfile containing a \fB__main__.py\fP +file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-m +Search \X'tty: link https://docs.python.org/3/library/sys.html#sys.path'\fI\%sys.path\fP\X'tty: link' for the named module \fImod\fP and execute its contents. +.UNINDENT +.INDENT 0.0 +.TP +.B \-c +Execute the Python code in the \fIcmd\fP string command. +.UNINDENT +.INDENT 0.0 +.TP +.B \- +Read commands from standard input (\X'tty: link https://docs.python.org/3/library/sys.html#sys.stdin'\fI\%sys.stdin\fP\X'tty: link'). +.UNINDENT +.sp +\fBSEE ALSO:\fP +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.TP +.B \X'tty: link https://docs.python.org/3/using/cmdline.html#using-on-cmdline'\fI\%Command line\fP\X'tty: link' +Documentation on Python command line interface. +.UNINDENT +.UNINDENT +.UNINDENT +.SH MPI4PY.BENCH +.sp +Added in version 3.0.0. + +.SH REFERENCE +.TS +center; +|l|l|. +_ +T{ +\fI\%mpi4py.MPI\fP +T} T{ +Message Passing Interface. +T} +_ +.TE +.SS mpi4py.MPI +.sp +Message Passing Interface. +.sp +Classes +.TS +center; +|l|l|. +_ +T{ +\fI\%BottomType\fP +T} T{ +Type of \fI\%BOTTOM\fP\&. +T} +_ +T{ +\fI\%BufferAutomaticType\fP +T} T{ +Type of \fI\%BUFFER_AUTOMATIC\fP\&. +T} +_ +T{ +\fI\%Cartcomm\fP +T} T{ +Cartesian topology intracommunicator. +T} +_ +T{ +\fI\%Comm\fP +T} T{ +Communication context. +T} +_ +T{ +\fI\%Datatype\fP +T} T{ +Datatype object. +T} +_ +T{ +\fI\%Distgraphcomm\fP +T} T{ +Distributed graph topology intracommunicator. +T} +_ +T{ +\fI\%Errhandler\fP +T} T{ +Error handler. +T} +_ +T{ +\fI\%File\fP +T} T{ +File I/O context. +T} +_ +T{ +\fI\%Graphcomm\fP +T} T{ +General graph topology intracommunicator. +T} +_ +T{ +\fI\%Grequest\fP +T} T{ +Generalized request handler. +T} +_ +T{ +\fI\%Group\fP +T} T{ +Group of processes. +T} +_ +T{ +\fI\%InPlaceType\fP +T} T{ +Type of \fI\%IN_PLACE\fP\&. +T} +_ +T{ +\fI\%Info\fP +T} T{ +Info object. +T} +_ +T{ +\fI\%Intercomm\fP +T} T{ +Intercommunicator. +T} +_ +T{ +\fI\%Intracomm\fP +T} T{ +Intracommunicator. +T} +_ +T{ +\fI\%Message\fP +T} T{ +Matched message. +T} +_ +T{ +\fI\%Op\fP +T} T{ +Reduction operation. +T} +_ +T{ +\fI\%Pickle\fP +T} T{ +Pickle/unpickle Python objects. +T} +_ +T{ +\fI\%Prequest\fP +T} T{ +Persistent request handler. +T} +_ +T{ +\fI\%Request\fP +T} T{ +Request handler. +T} +_ +T{ +\fI\%Session\fP +T} T{ +Session context. +T} +_ +T{ +\fI\%Status\fP +T} T{ +Status object. +T} +_ +T{ +\fI\%Topocomm\fP +T} T{ +Topology intracommunicator. +T} +_ +T{ +\fI\%Win\fP +T} T{ +Remote memory access context. +T} +_ +T{ +\fI\%buffer\fP +T} T{ +Buffer. +T} +_ +T{ +\fI\%memory\fP +T} T{ +alias of \fI\%buffer\fP +T} +_ +.TE +.SS mpi4py.MPI.BottomType +.INDENT 0.0 +.TP +.B class mpi4py.MPI.BottomType +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.sp +Type of \fI\%BOTTOM\fP\&. +.INDENT 7.0 +.TP +.B static __new__(cls) +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.BufferAutomaticType +.INDENT 0.0 +.TP +.B class mpi4py.MPI.BufferAutomaticType +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.sp +Type of \fI\%BUFFER_AUTOMATIC\fP\&. +.INDENT 7.0 +.TP +.B static __new__(cls) +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Cartcomm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Cartcomm +Bases: \fI\%Topocomm\fP +.sp +Cartesian topology intracommunicator. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Cartcomm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_cart_rank\fP(coords) +T} T{ +Translate logical coordinates to ranks. +T} +_ +T{ +\fI\%Get_coords\fP(rank) +T} T{ +Translate ranks to logical coordinates. +T} +_ +T{ +\fI\%Get_dim\fP() +T} T{ +Return number of dimensions. +T} +_ +T{ +\fI\%Get_topo\fP() +T} T{ +Return information on the cartesian topology. +T} +_ +T{ +\fI\%Shift\fP(direction, disp) +T} T{ +Return a process ranks for data shifting with \fI\%Sendrecv\fP\&. +T} +_ +T{ +\fI\%Sub\fP(remain_dims) +T} T{ +Return a lower\-dimensional Cartesian topology. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%coords\fP +T} T{ +Coordinates. +T} +_ +T{ +\fI\%dim\fP +T} T{ +Number of dimensions. +T} +_ +T{ +\fI\%dims\fP +T} T{ +Dimensions. +T} +_ +T{ +\fI\%ndim\fP +T} T{ +Number of dimensions. +T} +_ +T{ +\fI\%periods\fP +T} T{ +Periodicity. +T} +_ +T{ +\fI\%topo\fP +T} T{ +Topology information. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Get_cart_rank(coords) +Translate logical coordinates to ranks. +.INDENT 7.0 +.TP +.B Parameters +\fBcoords\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_coords(rank) +Translate ranks to logical coordinates. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_dim() +Return number of dimensions. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_topo() +Return information on the cartesian topology. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link']] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Shift(direction, disp) +Return a process ranks for data shifting with \fI\%Sendrecv\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdirection\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdisp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Sub(remain_dims) +Return a lower\-dimensional Cartesian topology. +.INDENT 7.0 +.TP +.B Parameters +\fBremain_dims\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\fI\%Cartcomm\fP +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B coords +Coordinates. +.UNINDENT +.INDENT 7.0 +.TP +.B dim +Number of dimensions. +.UNINDENT +.INDENT 7.0 +.TP +.B dims +Dimensions. +.UNINDENT +.INDENT 7.0 +.TP +.B ndim +Number of dimensions. +.UNINDENT +.INDENT 7.0 +.TP +.B periods +Periodicity. +.UNINDENT +.INDENT 7.0 +.TP +.B topo +Topology information. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Comm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Comm +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Communication context. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Comm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Abort\fP([errorcode]) +T} T{ +Terminate the MPI execution environment. +T} +_ +T{ +\fI\%Ack_failed\fP([num_to_ack]) +T} T{ +Acknowledge failures on a communicator. +T} +_ +T{ +\fI\%Agree\fP(flag) +T} T{ +Blocking agreement. +T} +_ +T{ +\fI\%Allgather\fP(sendbuf, recvbuf) +T} T{ +Gather to All. +T} +_ +T{ +\fI\%Allgather_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent Gather to All. +T} +_ +T{ +\fI\%Allgatherv\fP(sendbuf, recvbuf) +T} T{ +Gather to All Vector. +T} +_ +T{ +\fI\%Allgatherv_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent Gather to All Vector. +T} +_ +T{ +\fI\%Allreduce\fP(sendbuf, recvbuf[, op]) +T} T{ +Reduce to All. +T} +_ +T{ +\fI\%Allreduce_init\fP(sendbuf, recvbuf[, op, info]) +T} T{ +Persistent Reduce to All. +T} +_ +T{ +\fI\%Alltoall\fP(sendbuf, recvbuf) +T} T{ +All to All Scatter/Gather. +T} +_ +T{ +\fI\%Alltoall_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent All to All Scatter/Gather. +T} +_ +T{ +\fI\%Alltoallv\fP(sendbuf, recvbuf) +T} T{ +All to All Scatter/Gather Vector. +T} +_ +T{ +\fI\%Alltoallv_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent All to All Scatter/Gather Vector. +T} +_ +T{ +\fI\%Alltoallw\fP(sendbuf, recvbuf) +T} T{ +All to All Scatter/Gather General. +T} +_ +T{ +\fI\%Alltoallw_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent All to All Scatter/Gather General. +T} +_ +T{ +\fI\%Attach_buffer\fP(buf) +T} T{ +Attach a user\-provided buffer for sending in buffered mode. +T} +_ +T{ +\fI\%Barrier\fP() +T} T{ +Barrier synchronization. +T} +_ +T{ +\fI\%Barrier_init\fP([info]) +T} T{ +Persistent Barrier. +T} +_ +T{ +\fI\%Bcast\fP(buf[, root]) +T} T{ +Broadcast data from one process to all other processes. +T} +_ +T{ +\fI\%Bcast_init\fP(buf[, root, info]) +T} T{ +Persistent Broadcast. +T} +_ +T{ +\fI\%Bsend\fP(buf, dest[, tag]) +T} T{ +Blocking send in buffered mode. +T} +_ +T{ +\fI\%Bsend_init\fP(buf, dest[, tag]) +T} T{ +Persistent request for a send in buffered mode. +T} +_ +T{ +\fI\%Call_errhandler\fP(errorcode) +T} T{ +Call the error handler installed on a communicator. +T} +_ +T{ +\fI\%Clone\fP() +T} T{ +Clone an existing communicator. +T} +_ +T{ +\fI\%Compare\fP(comm) +T} T{ +Compare two communicators. +T} +_ +T{ +\fI\%Create\fP(group) +T} T{ +Create communicator from group. +T} +_ +T{ +\fI\%Create_errhandler\fP(errhandler_fn) +T} T{ +Create a new error handler for communicators. +T} +_ +T{ +\fI\%Create_keyval\fP([copy_fn, delete_fn, nopython]) +T} T{ +Create a new attribute key for communicators. +T} +_ +T{ +\fI\%Delete_attr\fP(keyval) +T} T{ +Delete attribute value associated with a key. +T} +_ +T{ +\fI\%Detach_buffer\fP() +T} T{ +Remove an existing attached buffer. +T} +_ +T{ +\fI\%Disconnect\fP() +T} T{ +Disconnect from a communicator. +T} +_ +T{ +\fI\%Dup\fP([info]) +T} T{ +Duplicate a communicator. +T} +_ +T{ +\fI\%Dup_with_info\fP(info) +T} T{ +Duplicate a communicator with hints. +T} +_ +T{ +\fI\%Flush_buffer\fP() +T} T{ +Block until all buffered messages have been transmitted. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free a communicator. +T} +_ +T{ +\fI\%Free_keyval\fP(keyval) +T} T{ +Free an attribute key for communicators. +T} +_ +T{ +\fI\%Gather\fP(sendbuf, recvbuf[, root]) +T} T{ +Gather data to one process from all other processes. +T} +_ +T{ +\fI\%Gather_init\fP(sendbuf, recvbuf[, root, info]) +T} T{ +Persistent Gather. +T} +_ +T{ +\fI\%Gatherv\fP(sendbuf, recvbuf[, root]) +T} T{ +Gather Vector. +T} +_ +T{ +\fI\%Gatherv_init\fP(sendbuf, recvbuf[, root, info]) +T} T{ +Persistent Gather Vector. +T} +_ +T{ +\fI\%Get_attr\fP(keyval) +T} T{ +Retrieve attribute value by key. +T} +_ +T{ +\fI\%Get_errhandler\fP() +T} T{ +Get the error handler for a communicator. +T} +_ +T{ +\fI\%Get_failed\fP() +T} T{ +Extract the group of failed processes. +T} +_ +T{ +\fI\%Get_group\fP() +T} T{ +Access the group associated with a communicator. +T} +_ +T{ +\fI\%Get_info\fP() +T} T{ +Return the current hints for a communicator. +T} +_ +T{ +\fI\%Get_name\fP() +T} T{ +Get the print name for this communicator. +T} +_ +T{ +\fI\%Get_parent\fP() +T} T{ +Return the parent intercommunicator for this process. +T} +_ +T{ +\fI\%Get_rank\fP() +T} T{ +Return the rank of this process in a communicator. +T} +_ +T{ +\fI\%Get_size\fP() +T} T{ +Return the number of processes in a communicator. +T} +_ +T{ +\fI\%Get_topology\fP() +T} T{ +Return the type of topology (if any) associated with a communicator. +T} +_ +T{ +\fI\%Iagree\fP(flag) +T} T{ +Nonblocking agreement. +T} +_ +T{ +\fI\%Iallgather\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Gather to All. +T} +_ +T{ +\fI\%Iallgatherv\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Gather to All Vector. +T} +_ +T{ +\fI\%Iallreduce\fP(sendbuf, recvbuf[, op]) +T} T{ +Nonblocking Reduce to All. +T} +_ +T{ +\fI\%Ialltoall\fP(sendbuf, recvbuf) +T} T{ +Nonblocking All to All Scatter/Gather. +T} +_ +T{ +\fI\%Ialltoallv\fP(sendbuf, recvbuf) +T} T{ +Nonblocking All to All Scatter/Gather Vector. +T} +_ +T{ +\fI\%Ialltoallw\fP(sendbuf, recvbuf) +T} T{ +Nonblocking All to All Scatter/Gather General. +T} +_ +T{ +\fI\%Ibarrier\fP() +T} T{ +Nonblocking Barrier. +T} +_ +T{ +\fI\%Ibcast\fP(buf[, root]) +T} T{ +Nonblocking Broadcast. +T} +_ +T{ +\fI\%Ibsend\fP(buf, dest[, tag]) +T} T{ +Nonblocking send in buffered mode. +T} +_ +T{ +\fI\%Idup\fP([info]) +T} T{ +Nonblocking duplicate a communicator. +T} +_ +T{ +\fI\%Idup_with_info\fP(info) +T} T{ +Nonblocking duplicate a communicator with hints. +T} +_ +T{ +\fI\%Iflush_buffer\fP() +T} T{ +Nonblocking flush for buffered messages. +T} +_ +T{ +\fI\%Igather\fP(sendbuf, recvbuf[, root]) +T} T{ +Nonblocking Gather. +T} +_ +T{ +\fI\%Igatherv\fP(sendbuf, recvbuf[, root]) +T} T{ +Nonblocking Gather Vector. +T} +_ +T{ +\fI\%Improbe\fP([source, tag, status]) +T} T{ +Nonblocking test for a matched message. +T} +_ +T{ +\fI\%Iprobe\fP([source, tag, status]) +T} T{ +Nonblocking test for a message. +T} +_ +T{ +\fI\%Irecv\fP(buf[, source, tag]) +T} T{ +Nonblocking receive. +T} +_ +T{ +\fI\%Ireduce\fP(sendbuf, recvbuf[, op, root]) +T} T{ +Nonblocking Reduce to Root. +T} +_ +T{ +\fI\%Ireduce_scatter\fP(sendbuf, recvbuf[, ...]) +T} T{ +Nonblocking Reduce\-Scatter (vector version). +T} +_ +T{ +\fI\%Ireduce_scatter_block\fP(sendbuf, recvbuf[, op]) +T} T{ +Nonblocking Reduce\-Scatter Block (regular, non\-vector version). +T} +_ +T{ +\fI\%Irsend\fP(buf, dest[, tag]) +T} T{ +Nonblocking send in ready mode. +T} +_ +T{ +\fI\%Is_inter\fP() +T} T{ +Return whether the communicator is an intercommunicator. +T} +_ +T{ +\fI\%Is_intra\fP() +T} T{ +Return whether the communicator is an intracommunicator. +T} +_ +T{ +\fI\%Is_revoked\fP() +T} T{ +Indicate whether the communicator has been revoked. +T} +_ +T{ +\fI\%Iscatter\fP(sendbuf, recvbuf[, root]) +T} T{ +Nonblocking Scatter. +T} +_ +T{ +\fI\%Iscatterv\fP(sendbuf, recvbuf[, root]) +T} T{ +Nonblocking Scatter Vector. +T} +_ +T{ +\fI\%Isend\fP(buf, dest[, tag]) +T} T{ +Nonblocking send. +T} +_ +T{ +\fI\%Isendrecv\fP(sendbuf, dest[, sendtag, recvbuf, ...]) +T} T{ +Nonblocking send and receive. +T} +_ +T{ +\fI\%Isendrecv_replace\fP(buf, dest[, sendtag, ...]) +T} T{ +Send and receive a message. +T} +_ +T{ +\fI\%Ishrink\fP() +T} T{ +Nonblocking shrink a communicator to remove all failed processes. +T} +_ +T{ +\fI\%Issend\fP(buf, dest[, tag]) +T} T{ +Nonblocking send in synchronous mode. +T} +_ +T{ +\fI\%Join\fP(fd) +T} T{ +Interconnect two processes connected by a socket. +T} +_ +T{ +\fI\%Mprobe\fP([source, tag, status]) +T} T{ +Blocking test for a matched message. +T} +_ +T{ +\fI\%Precv_init\fP(buf, partitions[, source, tag, info]) +T} T{ +Create request for a partitioned recv operation. +T} +_ +T{ +\fI\%Probe\fP([source, tag, status]) +T} T{ +Blocking test for a message. +T} +_ +T{ +\fI\%Psend_init\fP(buf, partitions, dest[, tag, info]) +T} T{ +Create request for a partitioned send operation. +T} +_ +T{ +\fI\%Recv\fP(buf[, source, tag, status]) +T} T{ +Blocking receive. +T} +_ +T{ +\fI\%Recv_init\fP(buf[, source, tag]) +T} T{ +Create a persistent request for a receive. +T} +_ +T{ +\fI\%Reduce\fP(sendbuf, recvbuf[, op, root]) +T} T{ +Reduce to Root. +T} +_ +T{ +\fI\%Reduce_init\fP(sendbuf, recvbuf[, op, root, info]) +T} T{ +Persistent Reduce to Root. +T} +_ +T{ +\fI\%Reduce_scatter\fP(sendbuf, recvbuf[, ...]) +T} T{ +Reduce\-Scatter (vector version). +T} +_ +T{ +\fI\%Reduce_scatter_block\fP(sendbuf, recvbuf[, op]) +T} T{ +Reduce\-Scatter Block (regular, non\-vector version). +T} +_ +T{ +\fI\%Reduce_scatter_block_init\fP(sendbuf, recvbuf) +T} T{ +Persistent Reduce\-Scatter Block (regular, non\-vector version). +T} +_ +T{ +\fI\%Reduce_scatter_init\fP(sendbuf, recvbuf[, ...]) +T} T{ +Persistent Reduce\-Scatter (vector version). +T} +_ +T{ +\fI\%Revoke\fP() +T} T{ +Revoke a communicator. +T} +_ +T{ +\fI\%Rsend\fP(buf, dest[, tag]) +T} T{ +Blocking send in ready mode. +T} +_ +T{ +\fI\%Rsend_init\fP(buf, dest[, tag]) +T} T{ +Persistent request for a send in ready mode. +T} +_ +T{ +\fI\%Scatter\fP(sendbuf, recvbuf[, root]) +T} T{ +Scatter data from one process to all other processes. +T} +_ +T{ +\fI\%Scatter_init\fP(sendbuf, recvbuf[, root, info]) +T} T{ +Persistent Scatter. +T} +_ +T{ +\fI\%Scatterv\fP(sendbuf, recvbuf[, root]) +T} T{ +Scatter Vector. +T} +_ +T{ +\fI\%Scatterv_init\fP(sendbuf, recvbuf[, root, info]) +T} T{ +Persistent Scatter Vector. +T} +_ +T{ +\fI\%Send\fP(buf, dest[, tag]) +T} T{ +Blocking send. +T} +_ +T{ +\fI\%Send_init\fP(buf, dest[, tag]) +T} T{ +Create a persistent request for a standard send. +T} +_ +T{ +\fI\%Sendrecv\fP(sendbuf, dest[, sendtag, recvbuf, ...]) +T} T{ +Send and receive a message. +T} +_ +T{ +\fI\%Sendrecv_replace\fP(buf, dest[, sendtag, ...]) +T} T{ +Send and receive a message. +T} +_ +T{ +\fI\%Set_attr\fP(keyval, attrval) +T} T{ +Store attribute value associated with a key. +T} +_ +T{ +\fI\%Set_errhandler\fP(errhandler) +T} T{ +Set the error handler for a communicator. +T} +_ +T{ +\fI\%Set_info\fP(info) +T} T{ +Set new values for the hints associated with a communicator. +T} +_ +T{ +\fI\%Set_name\fP(name) +T} T{ +Set the print name for this communicator. +T} +_ +T{ +\fI\%Shrink\fP() +T} T{ +Shrink a communicator to remove all failed processes. +T} +_ +T{ +\fI\%Split\fP([color, key]) +T} T{ +Split communicator by color and key. +T} +_ +T{ +\fI\%Split_type\fP(split_type[, key, info]) +T} T{ +Split communicator by split type. +T} +_ +T{ +\fI\%Ssend\fP(buf, dest[, tag]) +T} T{ +Blocking send in synchronous mode. +T} +_ +T{ +\fI\%Ssend_init\fP(buf, dest[, tag]) +T} T{ +Persistent request for a send in synchronous mode. +T} +_ +T{ +\fI\%allgather\fP(sendobj) +T} T{ +Gather to All. +T} +_ +T{ +\fI\%allreduce\fP(sendobj[, op]) +T} T{ +Reduce to All. +T} +_ +T{ +\fI\%alltoall\fP(sendobj) +T} T{ +All to All Scatter/Gather. +T} +_ +T{ +\fI\%barrier\fP() +T} T{ +Barrier synchronization. +T} +_ +T{ +\fI\%bcast\fP(obj[, root]) +T} T{ +Broadcast. +T} +_ +T{ +\fI\%bsend\fP(obj, dest[, tag]) +T} T{ +Send in buffered mode. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null or predefined. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%gather\fP(sendobj[, root]) +T} T{ +Gather. +T} +_ +T{ +\fI\%ibsend\fP(obj, dest[, tag]) +T} T{ +Nonblocking send in buffered mode. +T} +_ +T{ +\fI\%improbe\fP([source, tag, status]) +T} T{ +Nonblocking test for a matched message. +T} +_ +T{ +\fI\%iprobe\fP([source, tag, status]) +T} T{ +Nonblocking test for a message. +T} +_ +T{ +\fI\%irecv\fP([buf, source, tag]) +T} T{ +Nonblocking receive. +T} +_ +T{ +\fI\%isend\fP(obj, dest[, tag]) +T} T{ +Nonblocking send. +T} +_ +T{ +\fI\%issend\fP(obj, dest[, tag]) +T} T{ +Nonblocking send in synchronous mode. +T} +_ +T{ +\fI\%mprobe\fP([source, tag, status]) +T} T{ +Blocking test for a matched message. +T} +_ +T{ +\fI\%probe\fP([source, tag, status]) +T} T{ +Blocking test for a message. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +T{ +\fI\%recv\fP([buf, source, tag, status]) +T} T{ +Receive. +T} +_ +T{ +\fI\%reduce\fP(sendobj[, op, root]) +T} T{ +Reduce to Root. +T} +_ +T{ +\fI\%scatter\fP(sendobj[, root]) +T} T{ +Scatter. +T} +_ +T{ +\fI\%send\fP(obj, dest[, tag]) +T} T{ +Send in standard mode. +T} +_ +T{ +\fI\%sendrecv\fP(sendobj, dest[, sendtag, recvbuf, ...]) +T} T{ +Send and Receive. +T} +_ +T{ +\fI\%ssend\fP(obj, dest[, tag]) +T} T{ +Send in synchronous mode. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%group\fP +T} T{ +Group. +T} +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +T{ +\fI\%info\fP +T} T{ +Info hints. +T} +_ +T{ +\fI\%is_inter\fP +T} T{ +Is intercommunicator. +T} +_ +T{ +\fI\%is_intra\fP +T} T{ +Is intracommunicator. +T} +_ +T{ +\fI\%is_topo\fP +T} T{ +Is a topology. +T} +_ +T{ +\fI\%name\fP +T} T{ +Print name. +T} +_ +T{ +\fI\%rank\fP +T} T{ +Rank of this process. +T} +_ +T{ +\fI\%size\fP +T} T{ +Number of processes. +T} +_ +T{ +\fI\%topology\fP +T} T{ +Topology type. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Abort(errorcode=0) +Terminate the MPI execution environment. +.sp +\fBWARNING:\fP +.INDENT 7.0 +.INDENT 3.5 +The invocation of this method prevents the execution of +various Python exit and cleanup mechanisms. Use this method as a +last resort to prevent parallel deadlocks in case of unrecoverable +errors. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.NoReturn'\fI\%NoReturn\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ack_failed(num_to_ack=None) +Acknowledge failures on a communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBnum_to_ack\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Agree(flag) +Blocking agreement. +.INDENT 7.0 +.TP +.B Parameters +\fBflag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Allgather(sendbuf, recvbuf) +Gather to All. +.sp +Gather data from all processes and broadcast the combined data to all +other processes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Allgather_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Gather to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Allgatherv(sendbuf, recvbuf) +Gather to All Vector. +.sp +Gather data from all processes and send it to all other processes +providing different amounts of data and displacements. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Allgatherv_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Gather to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Allreduce(sendbuf, recvbuf, op=SUM) +Reduce to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Allreduce_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL) +Persistent Reduce to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Alltoall(sendbuf, recvbuf) +All to All Scatter/Gather. +.sp +Send data to all processes and recv data from all processes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Alltoall_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent All to All Scatter/Gather. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Alltoallv(sendbuf, recvbuf) +All to All Scatter/Gather Vector. +.sp +Send data to all processes and recv data from all processes +providing different amounts of data and displacements. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Alltoallv_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent All to All Scatter/Gather Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Alltoallw(sendbuf, recvbuf) +All to All Scatter/Gather General. +.sp +Send/recv data to/from all processes allowing the specification of +different counts, displacements, and datatypes for each dest/source. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecW\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecW\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Alltoallw_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent All to All Scatter/Gather General. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecW\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecW\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Attach_buffer(buf) +Attach a user\-provided buffer for sending in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Barrier() +Barrier synchronization. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Barrier_init(info=INFO_NULL) +Persistent Barrier. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Bcast(buf, root=0) +Broadcast data from one process to all other processes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Bcast_init(buf, root=0, info=INFO_NULL) +Persistent Broadcast. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Bsend(buf, dest, tag=0) +Blocking send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Bsend_init(buf, dest, tag=0) +Persistent request for a send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Call_errhandler(errorcode) +Call the error handler installed on a communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Clone() +Clone an existing communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Compare(comm) +Compare two communicators. +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Comm\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create(group) +Create communicator from group. +.INDENT 7.0 +.TP +.B Parameters +\fBgroup\fP (\fI\%Group\fP) +.TP +.B Return type +\fI\%Comm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_errhandler(errhandler_fn) +Create a new error handler for communicators. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Comm\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_keyval(copy_fn=None, delete_fn=None, nopython=False) +Create a new attribute key for communicators. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcopy_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Comm\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBdelete_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Comm\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBnopython\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Delete_attr(keyval) +Delete attribute value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Detach_buffer() +Remove an existing attached buffer. +.INDENT 7.0 +.TP +.B Return type +\fI\%Buffer\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Disconnect() +Disconnect from a communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Dup(info=None) +Duplicate a communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Dup_with_info(info) +Duplicate a communicator with hints. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Flush_buffer() +Block until all buffered messages have been transmitted. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free a communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Free_keyval(keyval) +Free an attribute key for communicators. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Gather(sendbuf, recvbuf, root=0) +Gather data to one process from all other processes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Gather_init(sendbuf, recvbuf, root=0, info=INFO_NULL) +Persistent Gather. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Gatherv(sendbuf, recvbuf, root=0) +Gather Vector. +.sp +Gather data to one process from all other processes +providing different amounts of data and displacements. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Gatherv_init(sendbuf, recvbuf, root=0, info=INFO_NULL) +Persistent Gather Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_attr(keyval) +Retrieve attribute value by key. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_errhandler() +Get the error handler for a communicator. +.INDENT 7.0 +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_failed() +Extract the group of failed processes. +.INDENT 7.0 +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_group() +Access the group associated with a communicator. +.INDENT 7.0 +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_info() +Return the current hints for a communicator. +.INDENT 7.0 +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_name() +Get the print name for this communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Get_parent() +Return the parent intercommunicator for this process. +.INDENT 7.0 +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_rank() +Return the rank of this process in a communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_size() +Return the number of processes in a communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_topology() +Return the type of topology (if any) associated with a communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iagree(flag) +Nonblocking agreement. +.INDENT 7.0 +.TP +.B Parameters +\fBflag\fP (\fI\%Buffer\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iallgather(sendbuf, recvbuf) +Nonblocking Gather to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iallgatherv(sendbuf, recvbuf) +Nonblocking Gather to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iallreduce(sendbuf, recvbuf, op=SUM) +Nonblocking Reduce to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ialltoall(sendbuf, recvbuf) +Nonblocking All to All Scatter/Gather. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ialltoallv(sendbuf, recvbuf) +Nonblocking All to All Scatter/Gather Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ialltoallw(sendbuf, recvbuf) +Nonblocking All to All Scatter/Gather General. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecW\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecW\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ibarrier() +Nonblocking Barrier. +.INDENT 7.0 +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ibcast(buf, root=0) +Nonblocking Broadcast. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ibsend(buf, dest, tag=0) +Nonblocking send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Idup(info=None) +Nonblocking duplicate a communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link', \fI\%Request\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Idup_with_info(info) +Nonblocking duplicate a communicator with hints. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link', \fI\%Request\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iflush_buffer() +Nonblocking flush for buffered messages. +.INDENT 7.0 +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Igather(sendbuf, recvbuf, root=0) +Nonblocking Gather. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Igatherv(sendbuf, recvbuf, root=0) +Nonblocking Gather Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Improbe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Message\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Irecv(buf, source=ANY_SOURCE, tag=ANY_TAG) +Nonblocking receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ireduce(sendbuf, recvbuf, op=SUM, root=0) +Nonblocking Reduce to Root. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ireduce_scatter(sendbuf, recvbuf, recvcounts=None, op=SUM) +Nonblocking Reduce\-Scatter (vector version). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvcounts\fP (\fISequence\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ireduce_scatter_block(sendbuf, recvbuf, op=SUM) +Nonblocking Reduce\-Scatter Block (regular, non\-vector version). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Irsend(buf, dest, tag=0) +Nonblocking send in ready mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Is_inter() +Return whether the communicator is an intercommunicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Is_intra() +Return whether the communicator is an intracommunicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Is_revoked() +Indicate whether the communicator has been revoked. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iscatter(sendbuf, recvbuf, root=0) +Nonblocking Scatter. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iscatterv(sendbuf, recvbuf, root=0) +Nonblocking Scatter Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Isend(buf, dest, tag=0) +Nonblocking send. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Isendrecv(sendbuf, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG) +Nonblocking send and receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsendtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Isendrecv_replace(buf, dest, sendtag=0, source=ANY_SOURCE, recvtag=ANY_TAG) +Send and receive a message. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function is guaranteed not to deadlock in situations +where pairs of blocking sends and receives may deadlock. +.UNINDENT +.UNINDENT +.sp +\fBCAUTION:\fP +.INDENT 7.0 +.INDENT 3.5 +A common mistake when using this function is to mismatch +the tags with the source and destination ranks, which can result in +deadlock. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsendtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ishrink() +Nonblocking shrink a communicator to remove all failed processes. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\fI\%Comm\fP, \fI\%Request\fP] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Issend(buf, dest, tag=0) +Nonblocking send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Join(fd) +Interconnect two processes connected by a socket. +.INDENT 7.0 +.TP +.B Parameters +\fBfd\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Mprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Message\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Precv_init(buf, partitions, source=ANY_SOURCE, tag=ANY_TAG, info=INFO_NULL) +Create request for a partitioned recv operation. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBpartitions\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Probe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a message. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function blocks until the message arrives. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Literal'\fI\%Literal\fP\X'tty: link'[True] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Psend_init(buf, partitions, dest, tag=0, info=INFO_NULL) +Create request for a partitioned send operation. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBpartitions\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Recv(buf, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking receive. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function blocks until the message is received. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Recv_init(buf, source=ANY_SOURCE, tag=ANY_TAG) +Create a persistent request for a receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce(sendbuf, recvbuf, op=SUM, root=0) +Reduce to Root. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce_init(sendbuf, recvbuf, op=SUM, root=0, info=INFO_NULL) +Persistent Reduce to Root. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce_scatter(sendbuf, recvbuf, recvcounts=None, op=SUM) +Reduce\-Scatter (vector version). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvcounts\fP (\fISequence\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce_scatter_block(sendbuf, recvbuf, op=SUM) +Reduce\-Scatter Block (regular, non\-vector version). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce_scatter_block_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL) +Persistent Reduce\-Scatter Block (regular, non\-vector version). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce_scatter_init(sendbuf, recvbuf, recvcounts=None, op=SUM, info=INFO_NULL) +Persistent Reduce\-Scatter (vector version). +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvcounts\fP (\fISequence\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Revoke() +Revoke a communicator. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Rsend(buf, dest, tag=0) +Blocking send in ready mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Rsend_init(buf, dest, tag=0) +Persistent request for a send in ready mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Scatter(sendbuf, recvbuf, root=0) +Scatter data from one process to all other processes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Scatter_init(sendbuf, recvbuf, root=0, info=INFO_NULL) +Persistent Scatter. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Scatterv(sendbuf, recvbuf, root=0) +Scatter Vector. +.sp +Scatter data from one process to all other processes +providing different amounts of data and displacements. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Scatterv_init(sendbuf, recvbuf, root=0, info=INFO_NULL) +Persistent Scatter Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Send(buf, dest, tag=0) +Blocking send. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function may block until the message is received. +Whether \fI\%Send\fP blocks or not depends on several factors and is +implementation dependent. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Send_init(buf, dest, tag=0) +Create a persistent request for a standard send. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Sendrecv(sendbuf, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG, status=None) +Send and receive a message. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function is guaranteed not to deadlock in situations +where pairs of blocking sends and receives may deadlock. +.UNINDENT +.UNINDENT +.sp +\fBCAUTION:\fP +.INDENT 7.0 +.INDENT 3.5 +A common mistake when using this function is to mismatch +the tags with the source and destination ranks, which can result in +deadlock. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsendtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Sendrecv_replace(buf, dest, sendtag=0, source=ANY_SOURCE, recvtag=ANY_TAG, status=None) +Send and receive a message. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This function is guaranteed not to deadlock in situations +where pairs of blocking sends and receives may deadlock. +.UNINDENT +.UNINDENT +.sp +\fBCAUTION:\fP +.INDENT 7.0 +.INDENT 3.5 +A common mistake when using this function is to mismatch +the tags with the source and destination ranks, which can result in +deadlock. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsendtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_attr(keyval, attrval) +Store attribute value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBattrval\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_errhandler(errhandler) +Set the error handler for a communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler\fP (\fI\%Errhandler\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_info(info) +Set new values for the hints associated with a communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_name(name) +Set the print name for this communicator. +.INDENT 7.0 +.TP +.B Parameters +\fBname\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Shrink() +Shrink a communicator to remove all failed processes. +.INDENT 7.0 +.TP +.B Return type +\fI\%Comm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Split(color=0, key=0) +Split communicator by color and key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcolor\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Comm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Split_type(split_type, key=0, info=INFO_NULL) +Split communicator by split type. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsplit_type\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Comm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ssend(buf, dest, tag=0) +Blocking send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ssend_init(buf, dest, tag=0) +Persistent request for a send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B allgather(sendobj) +Gather to All. +.INDENT 7.0 +.TP +.B Parameters +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B allreduce(sendobj, op=SUM) +Reduce to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B alltoall(sendobj) +All to All Scatter/Gather. +.INDENT 7.0 +.TP +.B Parameters +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B barrier() +Barrier synchronization. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This method is equivalent to \fI\%Barrier\fP\&. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B bcast(obj, root=0) +Broadcast. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B bsend(obj, dest, tag=0) +Send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Comm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null or predefined. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Comm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B gather(sendobj, root=0) +Gather. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B ibsend(obj, dest, tag=0) +Nonblocking send in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B improbe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Message\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B iprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B irecv(buf=None, source=ANY_SOURCE, tag=ANY_TAG) +Nonblocking receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B isend(obj, dest, tag=0) +Nonblocking send. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B issend(obj, dest, tag=0) +Nonblocking send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B mprobe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Message\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B probe(source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Literal'\fI\%Literal\fP\X'tty: link'[True] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B recv(buf=None, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B reduce(sendobj, op=SUM, root=0) +Reduce to Root. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B scatter(sendobj, root=0) +Scatter. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B send(obj, dest, tag=0) +Send in standard mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B sendrecv(sendobj, dest, sendtag=0, recvbuf=None, source=ANY_SOURCE, recvtag=ANY_TAG, status=None) +Send and Receive. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\fIAny\fP) +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsendtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrecvtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B ssend(obj, dest, tag=0) +Send in synchronous mode. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBdest\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B group +Group. +.UNINDENT +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.INDENT 7.0 +.TP +.B info +Info hints. +.UNINDENT +.INDENT 7.0 +.TP +.B is_inter +Is intercommunicator. +.UNINDENT +.INDENT 7.0 +.TP +.B is_intra +Is intracommunicator. +.UNINDENT +.INDENT 7.0 +.TP +.B is_topo +Is a topology. +.UNINDENT +.INDENT 7.0 +.TP +.B name +Print name. +.UNINDENT +.INDENT 7.0 +.TP +.B rank +Rank of this process. +.UNINDENT +.INDENT 7.0 +.TP +.B size +Number of processes. +.UNINDENT +.INDENT 7.0 +.TP +.B topology +Topology type. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Datatype +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Datatype +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Datatype object. +.INDENT 7.0 +.TP +.B static __new__(cls, datatype=None) +.INDENT 7.0 +.TP +.B Parameters +\fBdatatype\fP (\fI\%Datatype\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Commit\fP() +T} T{ +Commit the datatype. +T} +_ +T{ +\fI\%Create_contiguous\fP(count) +T} T{ +Create a contiguous datatype. +T} +_ +T{ +\fI\%Create_darray\fP(size, rank, gsizes, distribs, ...) +T} T{ +Create a datatype for a distributed array on Cartesian process grids. +T} +_ +T{ +\fI\%Create_f90_complex\fP(p, r) +T} T{ +Return a bounded complex datatype. +T} +_ +T{ +\fI\%Create_f90_integer\fP(r) +T} T{ +Return a bounded integer datatype. +T} +_ +T{ +\fI\%Create_f90_real\fP(p, r) +T} T{ +Return a bounded real datatype. +T} +_ +T{ +\fI\%Create_hindexed\fP(blocklengths, displacements) +T} T{ +Create an indexed datatype. +T} +_ +T{ +\fI\%Create_hindexed_block\fP(blocklength, displacements) +T} T{ +Create an indexed datatype with constant\-sized blocks. +T} +_ +T{ +\fI\%Create_hvector\fP(count, blocklength, stride) +T} T{ +Create a vector (strided) datatype with stride in bytes. +T} +_ +T{ +\fI\%Create_indexed\fP(blocklengths, displacements) +T} T{ +Create an indexed datatype. +T} +_ +T{ +\fI\%Create_indexed_block\fP(blocklength, displacements) +T} T{ +Create an indexed datatype with constant\-sized blocks. +T} +_ +T{ +\fI\%Create_keyval\fP([copy_fn, delete_fn, nopython]) +T} T{ +Create a new attribute key for datatypes. +T} +_ +T{ +\fI\%Create_resized\fP(lb, extent) +T} T{ +Create a datatype with a new lower bound and extent. +T} +_ +T{ +\fI\%Create_struct\fP(blocklengths, displacements, ...) +T} T{ +Create a general composite (struct) datatype. +T} +_ +T{ +\fI\%Create_subarray\fP(sizes, subsizes, starts[, order]) +T} T{ +Create a datatype for a subarray of a multidimensional array. +T} +_ +T{ +\fI\%Create_vector\fP(count, blocklength, stride) +T} T{ +Create a vector (strided) datatype. +T} +_ +T{ +\fI\%Delete_attr\fP(keyval) +T} T{ +Delete attribute value associated with a key. +T} +_ +T{ +\fI\%Dup\fP() +T} T{ +Duplicate a datatype. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free the datatype. +T} +_ +T{ +\fI\%Free_keyval\fP(keyval) +T} T{ +Free an attribute key for datatypes. +T} +_ +T{ +\fI\%Get_attr\fP(keyval) +T} T{ +Retrieve attribute value by key. +T} +_ +T{ +\fI\%Get_contents\fP() +T} T{ +Return the input arguments used to create a datatype. +T} +_ +T{ +\fI\%Get_envelope\fP() +T} T{ +Return the number of input arguments used to create a datatype. +T} +_ +T{ +\fI\%Get_extent\fP() +T} T{ +Return lower bound and extent of datatype. +T} +_ +T{ +\fI\%Get_name\fP() +T} T{ +Get the print name for this datatype. +T} +_ +T{ +\fI\%Get_size\fP() +T} T{ +Return the number of bytes occupied by entries in the datatype. +T} +_ +T{ +\fI\%Get_true_extent\fP() +T} T{ +Return the true lower bound and extent of a datatype. +T} +_ +T{ +\fI\%Get_value_index\fP(value, index) +T} T{ +Return a predefined pair datatype. +T} +_ +T{ +\fI\%Match_size\fP(typeclass, size) +T} T{ +Find a datatype matching a specified size in bytes. +T} +_ +T{ +\fI\%Pack\fP(inbuf, outbuf, position, comm) +T} T{ +Pack into contiguous memory according to datatype. +T} +_ +T{ +\fI\%Pack_external\fP(datarep, inbuf, outbuf, position) +T} T{ +Pack into contiguous memory according to datatype. +T} +_ +T{ +\fI\%Pack_external_size\fP(datarep, count) +T} T{ +Determine the amount of space needed to pack a message. +T} +_ +T{ +\fI\%Pack_size\fP(count, comm) +T} T{ +Determine the amount of space needed to pack a message. +T} +_ +T{ +\fI\%Set_attr\fP(keyval, attrval) +T} T{ +Store attribute value associated with a key. +T} +_ +T{ +\fI\%Set_name\fP(name) +T} T{ +Set the print name for this datatype. +T} +_ +T{ +\fI\%Unpack\fP(inbuf, position, outbuf, comm) +T} T{ +Unpack from contiguous memory according to datatype. +T} +_ +T{ +\fI\%Unpack_external\fP(datarep, inbuf, position, outbuf) +T} T{ +Unpack from contiguous memory according to datatype. +T} +_ +T{ +\fI\%decode\fP() +T} T{ +Convenience method for decoding a datatype. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null or predefined. +T} +_ +T{ +\fI\%fromcode\fP(code) +T} T{ +Get predefined MPI datatype from character code or type string. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +T{ +\fI\%tocode\fP() +T} T{ +Get character code or type string from predefined MPI datatype. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%combiner\fP +T} T{ +Combiner. +T} +_ +T{ +\fI\%contents\fP +T} T{ +Contents. +T} +_ +T{ +\fI\%envelope\fP +T} T{ +Envelope. +T} +_ +T{ +\fI\%extent\fP +T} T{ +Extent. +T} +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +T{ +\fI\%is_named\fP +T} T{ +Is a named datatype. +T} +_ +T{ +\fI\%is_predefined\fP +T} T{ +Is a predefined datatype. +T} +_ +T{ +\fI\%lb\fP +T} T{ +Lower bound. +T} +_ +T{ +\fI\%name\fP +T} T{ +Print name. +T} +_ +T{ +\fI\%size\fP +T} T{ +Size (in bytes). +T} +_ +T{ +\fI\%true_extent\fP +T} T{ +True extent. +T} +_ +T{ +\fI\%true_lb\fP +T} T{ +True lower bound. +T} +_ +T{ +\fI\%true_ub\fP +T} T{ +True upper bound. +T} +_ +T{ +\fI\%typechar\fP +T} T{ +Character code. +T} +_ +T{ +\fI\%typestr\fP +T} T{ +Type string. +T} +_ +T{ +\fI\%ub\fP +T} T{ +Upper bound. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Commit() +Commit the datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_contiguous(count) +Create a contiguous datatype. +.INDENT 7.0 +.TP +.B Parameters +\fBcount\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_darray(size, rank, gsizes, distribs, dargs, psizes, order=ORDER_C) +Create a datatype for a distributed array on Cartesian process grids. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBgsizes\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdistribs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBpsizes\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBorder\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_f90_complex(p, r) +Return a bounded complex datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBr\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_f90_integer(r) +Return a bounded integer datatype. +.INDENT 7.0 +.TP +.B Parameters +\fBr\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_f90_real(p, r) +Return a bounded real datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBr\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_hindexed(blocklengths, displacements) +Create an indexed datatype. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Displacements are measured in bytes. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBblocklengths\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdisplacements\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_hindexed_block(blocklength, displacements) +Create an indexed datatype with constant\-sized blocks. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Displacements are measured in bytes. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBblocklength\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdisplacements\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_hvector(count, blocklength, stride) +Create a vector (strided) datatype with stride in bytes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcount\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBblocklength\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstride\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_indexed(blocklengths, displacements) +Create an indexed datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBblocklengths\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdisplacements\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_indexed_block(blocklength, displacements) +Create an indexed datatype with constant\-sized blocks. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBblocklength\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdisplacements\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_keyval(copy_fn=None, delete_fn=None, nopython=False) +Create a new attribute key for datatypes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcopy_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Datatype\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBdelete_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Datatype\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBnopython\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_resized(lb, extent) +Create a datatype with a new lower bound and extent. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBlb\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBextent\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_struct(blocklengths, displacements, datatypes) +Create a general composite (struct) datatype. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Displacements are measured in bytes. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBblocklengths\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdisplacements\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdatatypes\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Datatype\fP\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_subarray(sizes, subsizes, starts, order=ORDER_C) +Create a datatype for a subarray of a multidimensional array. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsizes\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBsubsizes\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBstarts\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBorder\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_vector(count, blocklength, stride) +Create a vector (strided) datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcount\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBblocklength\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstride\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Delete_attr(keyval) +Delete attribute value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Dup() +Duplicate a datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free the datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Free_keyval(keyval) +Free an attribute key for datatypes. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_attr(keyval) +Retrieve attribute value by key. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_contents() +Return the input arguments used to create a datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\fI\%Datatype\fP]] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_envelope() +Return the number of input arguments used to create a datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_extent() +Return lower bound and extent of datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_name() +Get the print name for this datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_size() +Return the number of bytes occupied by entries in the datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_true_extent() +Return the true lower bound and extent of a datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Get_value_index(value, index) +Return a predefined pair datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBvalue\fP (\fI\%Datatype\fP) +.IP \(bu 2 +\fBindex\fP (\fI\%Datatype\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Match_size(typeclass, size) +Find a datatype matching a specified size in bytes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBtypeclass\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pack(inbuf, outbuf, position, comm) +Pack into contiguous memory according to datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBinbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBoutbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBposition\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pack_external(datarep, inbuf, outbuf, position) +Pack into contiguous memory according to datatype. +.sp +Uses the portable data representation \fBexternal32\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdatarep\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBoutbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBposition\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pack_external_size(datarep, count) +Determine the amount of space needed to pack a message. +.sp +Uses the portable data representation \fBexternal32\fP\&. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Returns an upper bound measured in bytes. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdatarep\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBcount\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pack_size(count, comm) +Determine the amount of space needed to pack a message. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Returns an upper bound measured in bytes. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcount\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_attr(keyval, attrval) +Store attribute value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBattrval\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_name(name) +Set the print name for this datatype. +.INDENT 7.0 +.TP +.B Parameters +\fBname\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Unpack(inbuf, position, outbuf, comm) +Unpack from contiguous memory according to datatype. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBinbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBposition\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBoutbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Unpack_external(datarep, inbuf, position, outbuf) +Unpack from contiguous memory according to datatype. +.sp +Uses the portable data representation \fBexternal32\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdatarep\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBposition\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBoutbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B decode() +Convenience method for decoding a datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\fI\%Datatype\fP, \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#dict'\fI\%dict\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link']] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Datatype\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null or predefined. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromcode(code) +Get predefined MPI datatype from character code or type string. +.INDENT 7.0 +.TP +.B Parameters +\fBcode\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\fI\%Datatype\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Datatype\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B tocode() +Get character code or type string from predefined MPI datatype. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B combiner +Combiner. +.UNINDENT +.INDENT 7.0 +.TP +.B contents +Contents. +.UNINDENT +.INDENT 7.0 +.TP +.B envelope +Envelope. +.UNINDENT +.INDENT 7.0 +.TP +.B extent +Extent. +.UNINDENT +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.INDENT 7.0 +.TP +.B is_named +Is a named datatype. +.UNINDENT +.INDENT 7.0 +.TP +.B is_predefined +Is a predefined datatype. +.UNINDENT +.INDENT 7.0 +.TP +.B lb +Lower bound. +.UNINDENT +.INDENT 7.0 +.TP +.B name +Print name. +.UNINDENT +.INDENT 7.0 +.TP +.B size +Size (in bytes). +.UNINDENT +.INDENT 7.0 +.TP +.B true_extent +True extent. +.UNINDENT +.INDENT 7.0 +.TP +.B true_lb +True lower bound. +.UNINDENT +.INDENT 7.0 +.TP +.B true_ub +True upper bound. +.UNINDENT +.INDENT 7.0 +.TP +.B typechar +Character code. +.UNINDENT +.INDENT 7.0 +.TP +.B typestr +Type string. +.UNINDENT +.INDENT 7.0 +.TP +.B ub +Upper bound. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Distgraphcomm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Distgraphcomm +Bases: \fI\%Topocomm\fP +.sp +Distributed graph topology intracommunicator. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Distgraphcomm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_dist_neighbors\fP() +T} T{ +Return adjacency information for a distributed graph topology. +T} +_ +T{ +\fI\%Get_dist_neighbors_count\fP() +T} T{ +Return adjacency information for a distributed graph topology. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Get_dist_neighbors() +Return adjacency information for a distributed graph topology. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link']] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_dist_neighbors_count() +Return adjacency information for a distributed graph topology. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Errhandler +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Errhandler +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Error handler. +.INDENT 7.0 +.TP +.B static __new__(cls, errhandler=None) +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler\fP (\fI\%Errhandler\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Free\fP() +T} T{ +Free an error handler. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Free() +Free an error handler. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.File +.INDENT 0.0 +.TP +.B class mpi4py.MPI.File +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +File I/O context. +.INDENT 7.0 +.TP +.B static __new__(cls, file=None) +.INDENT 7.0 +.TP +.B Parameters +\fBfile\fP (\fI\%File\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Call_errhandler\fP(errorcode) +T} T{ +Call the error handler installed on a file. +T} +_ +T{ +\fI\%Close\fP() +T} T{ +Close a file. +T} +_ +T{ +\fI\%Create_errhandler\fP(errhandler_fn) +T} T{ +Create a new error handler for files. +T} +_ +T{ +\fI\%Delete\fP(filename[, info]) +T} T{ +Delete a file. +T} +_ +T{ +\fI\%Get_amode\fP() +T} T{ +Return the file access mode. +T} +_ +T{ +\fI\%Get_atomicity\fP() +T} T{ +Return the atomicity mode. +T} +_ +T{ +\fI\%Get_byte_offset\fP(offset) +T} T{ +Return the absolute byte position in the file. +T} +_ +T{ +\fI\%Get_errhandler\fP() +T} T{ +Get the error handler for a file. +T} +_ +T{ +\fI\%Get_group\fP() +T} T{ +Access the group of processes that opened the file. +T} +_ +T{ +\fI\%Get_info\fP() +T} T{ +Return the current hints for a file. +T} +_ +T{ +\fI\%Get_position\fP() +T} T{ +Return the current position of the individual file pointer. +T} +_ +T{ +\fI\%Get_position_shared\fP() +T} T{ +Return the current position of the shared file pointer. +T} +_ +T{ +\fI\%Get_size\fP() +T} T{ +Return the file size. +T} +_ +T{ +\fI\%Get_type_extent\fP(datatype) +T} T{ +Return the extent of datatype in the file. +T} +_ +T{ +\fI\%Get_view\fP() +T} T{ +Return the file view. +T} +_ +T{ +\fI\%Iread\fP(buf) +T} T{ +Nonblocking read using individual file pointer. +T} +_ +T{ +\fI\%Iread_all\fP(buf) +T} T{ +Nonblocking collective read using individual file pointer. +T} +_ +T{ +\fI\%Iread_at\fP(offset, buf) +T} T{ +Nonblocking read using explicit offset. +T} +_ +T{ +\fI\%Iread_at_all\fP(offset, buf) +T} T{ +Nonblocking collective read using explicit offset. +T} +_ +T{ +\fI\%Iread_shared\fP(buf) +T} T{ +Nonblocking read using shared file pointer. +T} +_ +T{ +\fI\%Iwrite\fP(buf) +T} T{ +Nonblocking write using individual file pointer. +T} +_ +T{ +\fI\%Iwrite_all\fP(buf) +T} T{ +Nonblocking collective write using individual file pointer. +T} +_ +T{ +\fI\%Iwrite_at\fP(offset, buf) +T} T{ +Nonblocking write using explicit offset. +T} +_ +T{ +\fI\%Iwrite_at_all\fP(offset, buf) +T} T{ +Nonblocking collective write using explicit offset. +T} +_ +T{ +\fI\%Iwrite_shared\fP(buf) +T} T{ +Nonblocking write using shared file pointer. +T} +_ +T{ +\fI\%Open\fP(comm, filename[, amode, info]) +T} T{ +Open a file. +T} +_ +T{ +\fI\%Preallocate\fP(size) +T} T{ +Preallocate storage space for a file. +T} +_ +T{ +\fI\%Read\fP(buf[, status]) +T} T{ +Read using individual file pointer. +T} +_ +T{ +\fI\%Read_all\fP(buf[, status]) +T} T{ +Collective read using individual file pointer. +T} +_ +T{ +\fI\%Read_all_begin\fP(buf) +T} T{ +Start a split collective read using individual file pointer. +T} +_ +T{ +\fI\%Read_all_end\fP(buf[, status]) +T} T{ +Complete a split collective read using individual file pointer. +T} +_ +T{ +\fI\%Read_at\fP(offset, buf[, status]) +T} T{ +Read using explicit offset. +T} +_ +T{ +\fI\%Read_at_all\fP(offset, buf[, status]) +T} T{ +Collective read using explicit offset. +T} +_ +T{ +\fI\%Read_at_all_begin\fP(offset, buf) +T} T{ +Start a split collective read using explicit offset. +T} +_ +T{ +\fI\%Read_at_all_end\fP(buf[, status]) +T} T{ +Complete a split collective read using explicit offset. +T} +_ +T{ +\fI\%Read_ordered\fP(buf[, status]) +T} T{ +Collective read using shared file pointer. +T} +_ +T{ +\fI\%Read_ordered_begin\fP(buf) +T} T{ +Start a split collective read using shared file pointer. +T} +_ +T{ +\fI\%Read_ordered_end\fP(buf[, status]) +T} T{ +Complete a split collective read using shared file pointer. +T} +_ +T{ +\fI\%Read_shared\fP(buf[, status]) +T} T{ +Read using shared file pointer. +T} +_ +T{ +\fI\%Seek\fP(offset[, whence]) +T} T{ +Update the individual file pointer. +T} +_ +T{ +\fI\%Seek_shared\fP(offset[, whence]) +T} T{ +Update the shared file pointer. +T} +_ +T{ +\fI\%Set_atomicity\fP(flag) +T} T{ +Set the atomicity mode. +T} +_ +T{ +\fI\%Set_errhandler\fP(errhandler) +T} T{ +Set the error handler for a file. +T} +_ +T{ +\fI\%Set_info\fP(info) +T} T{ +Set new values for the hints associated with a file. +T} +_ +T{ +\fI\%Set_size\fP(size) +T} T{ +Set the file size. +T} +_ +T{ +\fI\%Set_view\fP([disp, etype, filetype, datarep, info]) +T} T{ +Set the file view. +T} +_ +T{ +\fI\%Sync\fP() +T} T{ +Causes all previous writes to be transferred to the storage device. +T} +_ +T{ +\fI\%Write\fP(buf[, status]) +T} T{ +Write using individual file pointer. +T} +_ +T{ +\fI\%Write_all\fP(buf[, status]) +T} T{ +Collective write using individual file pointer. +T} +_ +T{ +\fI\%Write_all_begin\fP(buf) +T} T{ +Start a split collective write using individual file pointer. +T} +_ +T{ +\fI\%Write_all_end\fP(buf[, status]) +T} T{ +Complete a split collective write using individual file pointer. +T} +_ +T{ +\fI\%Write_at\fP(offset, buf[, status]) +T} T{ +Write using explicit offset. +T} +_ +T{ +\fI\%Write_at_all\fP(offset, buf[, status]) +T} T{ +Collective write using explicit offset. +T} +_ +T{ +\fI\%Write_at_all_begin\fP(offset, buf) +T} T{ +Start a split collective write using explicit offset. +T} +_ +T{ +\fI\%Write_at_all_end\fP(buf[, status]) +T} T{ +Complete a split collective write using explicit offset. +T} +_ +T{ +\fI\%Write_ordered\fP(buf[, status]) +T} T{ +Collective write using shared file pointer. +T} +_ +T{ +\fI\%Write_ordered_begin\fP(buf) +T} T{ +Start a split collective write using shared file pointer. +T} +_ +T{ +\fI\%Write_ordered_end\fP(buf[, status]) +T} T{ +Complete a split collective write using shared file pointer. +T} +_ +T{ +\fI\%Write_shared\fP(buf[, status]) +T} T{ +Write using shared file pointer. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Close\fP if not null. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%amode\fP +T} T{ +Access mode. +T} +_ +T{ +\fI\%atomicity\fP +T} T{ +Atomicity mode. +T} +_ +T{ +\fI\%group\fP +T} T{ +Group. +T} +_ +T{ +\fI\%group_rank\fP +T} T{ +Group rank. +T} +_ +T{ +\fI\%group_size\fP +T} T{ +Group size. +T} +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +T{ +\fI\%info\fP +T} T{ +Info hints. +T} +_ +T{ +\fI\%size\fP +T} T{ +Size (in bytes). +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Call_errhandler(errorcode) +Call the error handler installed on a file. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Close() +Close a file. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_errhandler(errhandler_fn) +Create a new error handler for files. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%File\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Delete(filename, info=INFO_NULL) +Delete a file. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfilename\fP (\X'tty: link https://docs.python.org/3/library/os.html#os.PathLike'\fI\%PathLike\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#bytes'\fI\%bytes\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_amode() +Return the file access mode. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_atomicity() +Return the atomicity mode. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_byte_offset(offset) +Return the absolute byte position in the file. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Input \fIoffset\fP is measured in etype units +relative to the current file view. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_errhandler() +Get the error handler for a file. +.INDENT 7.0 +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_group() +Access the group of processes that opened the file. +.INDENT 7.0 +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_info() +Return the current hints for a file. +.INDENT 7.0 +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_position() +Return the current position of the individual file pointer. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Position is measured in etype units +relative to the current file view. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_position_shared() +Return the current position of the shared file pointer. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +Position is measured in etype units +relative to the current view. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_size() +Return the file size. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_type_extent(datatype) +Return the extent of datatype in the file. +.INDENT 7.0 +.TP +.B Parameters +\fBdatatype\fP (\fI\%Datatype\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_view() +Return the file view. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \fI\%Datatype\fP, \fI\%Datatype\fP, \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iread(buf) +Nonblocking read using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iread_all(buf) +Nonblocking collective read using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iread_at(offset, buf) +Nonblocking read using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iread_at_all(offset, buf) +Nonblocking collective read using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iread_shared(buf) +Nonblocking read using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iwrite(buf) +Nonblocking write using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iwrite_all(buf) +Nonblocking collective write using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iwrite_at(offset, buf) +Nonblocking write using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iwrite_at_all(offset, buf) +Nonblocking collective write using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iwrite_shared(buf) +Nonblocking write using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Open(comm, filename, amode=MODE_RDONLY, info=INFO_NULL) +Open a file. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) +.IP \(bu 2 +\fBfilename\fP (\X'tty: link https://docs.python.org/3/library/os.html#os.PathLike'\fI\%PathLike\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#bytes'\fI\%bytes\fP\X'tty: link') +.IP \(bu 2 +\fBamode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Preallocate(size) +Preallocate storage space for a file. +.INDENT 7.0 +.TP +.B Parameters +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read(buf, status=None) +Read using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_all(buf, status=None) +Collective read using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_all_begin(buf) +Start a split collective read using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_all_end(buf, status=None) +Complete a split collective read using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_at(offset, buf, status=None) +Read using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_at_all(offset, buf, status=None) +Collective read using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_at_all_begin(offset, buf) +Start a split collective read using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_at_all_end(buf, status=None) +Complete a split collective read using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_ordered(buf, status=None) +Collective read using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_ordered_begin(buf) +Start a split collective read using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_ordered_end(buf, status=None) +Complete a split collective read using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Read_shared(buf, status=None) +Read using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Seek(offset, whence=SEEK_SET) +Update the individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBwhence\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Seek_shared(offset, whence=SEEK_SET) +Update the shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBwhence\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_atomicity(flag) +Set the atomicity mode. +.INDENT 7.0 +.TP +.B Parameters +\fBflag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_errhandler(errhandler) +Set the error handler for a file. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler\fP (\fI\%Errhandler\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_info(info) +Set new values for the hints associated with a file. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_size(size) +Set the file size. +.INDENT 7.0 +.TP +.B Parameters +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_view(disp=0, etype=BYTE, filetype=None, datarep=\(aqnative\(aq, info=INFO_NULL) +Set the file view. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdisp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBetype\fP (\fI\%Datatype\fP) +.IP \(bu 2 +\fBfiletype\fP (\fI\%Datatype\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBdatarep\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Sync() +Causes all previous writes to be transferred to the storage device. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write(buf, status=None) +Write using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_all(buf, status=None) +Collective write using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_all_begin(buf) +Start a split collective write using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_all_end(buf, status=None) +Complete a split collective write using individual file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_at(offset, buf, status=None) +Write using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_at_all(offset, buf, status=None) +Collective write using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_at_all_begin(offset, buf) +Start a split collective write using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBoffset\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_at_all_end(buf, status=None) +Complete a split collective write using explicit offset. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_ordered(buf, status=None) +Collective write using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_ordered_begin(buf) +Start a split collective write using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_ordered_end(buf, status=None) +Complete a split collective write using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Write_shared(buf, status=None) +Write using shared file pointer. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%File\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Close\fP if not null. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%File\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B amode +Access mode. +.UNINDENT +.INDENT 7.0 +.TP +.B atomicity +Atomicity mode. +.UNINDENT +.INDENT 7.0 +.TP +.B group +Group. +.UNINDENT +.INDENT 7.0 +.TP +.B group_rank +Group rank. +.UNINDENT +.INDENT 7.0 +.TP +.B group_size +Group size. +.UNINDENT +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.INDENT 7.0 +.TP +.B info +Info hints. +.UNINDENT +.INDENT 7.0 +.TP +.B size +Size (in bytes). +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Graphcomm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Graphcomm +Bases: \fI\%Topocomm\fP +.sp +General graph topology intracommunicator. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Graphcomm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_dims\fP() +T} T{ +Return the number of nodes and edges. +T} +_ +T{ +\fI\%Get_neighbors\fP(rank) +T} T{ +Return list of neighbors of a process. +T} +_ +T{ +\fI\%Get_neighbors_count\fP(rank) +T} T{ +Return number of neighbors of a process. +T} +_ +T{ +\fI\%Get_topo\fP() +T} T{ +Return index and edges. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%dims\fP +T} T{ +Number of nodes and edges. +T} +_ +T{ +\fI\%edges\fP +T} T{ +Edges. +T} +_ +T{ +\fI\%index\fP +T} T{ +Index. +T} +_ +T{ +\fI\%nedges\fP +T} T{ +Number of edges. +T} +_ +T{ +\fI\%neighbors\fP +T} T{ +Neighbors. +T} +_ +T{ +\fI\%nneighbors\fP +T} T{ +Number of neighbors. +T} +_ +T{ +\fI\%nnodes\fP +T} T{ +Number of nodes. +T} +_ +T{ +\fI\%topo\fP +T} T{ +Topology information. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Get_dims() +Return the number of nodes and edges. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_neighbors(rank) +Return list of neighbors of a process. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_neighbors_count(rank) +Return number of neighbors of a process. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_topo() +Return index and edges. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'], \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link']] +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B dims +Number of nodes and edges. +.UNINDENT +.INDENT 7.0 +.TP +.B edges +Edges. +.UNINDENT +.INDENT 7.0 +.TP +.B index +Index. +.UNINDENT +.INDENT 7.0 +.TP +.B nedges +Number of edges. +.UNINDENT +.INDENT 7.0 +.TP +.B neighbors +Neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B nneighbors +Number of neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B nnodes +Number of nodes. +.UNINDENT +.INDENT 7.0 +.TP +.B topo +Topology information. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Grequest +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Grequest +Bases: \fI\%Request\fP +.sp +Generalized request handler. +.INDENT 7.0 +.TP +.B static __new__(cls, request=None) +.INDENT 7.0 +.TP +.B Parameters +\fBrequest\fP (\fI\%Grequest\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Complete\fP() +T} T{ +Notify that a user\-defined request is complete. +T} +_ +T{ +\fI\%Start\fP([query_fn, free_fn, cancel_fn, args, ...]) +T} T{ +Create and return a user\-defined request. +T} +_ +T{ +\fI\%complete\fP([obj]) +T} T{ +Notify that a user\-defined request is complete. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Complete() +Notify that a user\-defined request is complete. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Start(query_fn=None, free_fn=None, cancel_fn=None, args=None, kwargs=None) +Create and return a user\-defined request. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBquery_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBfree_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBcancel_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\&...\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBargs\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBkwargs\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#dict'\fI\%dict\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Grequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B complete(obj=None) +Notify that a user\-defined request is complete. +.INDENT 7.0 +.TP +.B Parameters +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Group +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Group +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Group of processes. +.INDENT 7.0 +.TP +.B static __new__(cls, group=None) +.INDENT 7.0 +.TP +.B Parameters +\fBgroup\fP (\fI\%Group\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Compare\fP(group) +T} T{ +Compare two groups. +T} +_ +T{ +\fI\%Create_from_session_pset\fP(session, pset_name) +T} T{ +Create a new group from session and process set. +T} +_ +T{ +\fI\%Difference\fP(group1, group2) +T} T{ +Create a new group from the difference of two existing groups. +T} +_ +T{ +\fI\%Dup\fP() +T} T{ +Duplicate a group. +T} +_ +T{ +\fI\%Excl\fP(ranks) +T} T{ +Create a new group by excluding listed members. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free a group. +T} +_ +T{ +\fI\%Get_rank\fP() +T} T{ +Return the rank of this process in a group. +T} +_ +T{ +\fI\%Get_size\fP() +T} T{ +Return the number of processes in a group. +T} +_ +T{ +\fI\%Incl\fP(ranks) +T} T{ +Create a new group by including listed members. +T} +_ +T{ +\fI\%Intersection\fP(group1, group2) +T} T{ +Create a new group from the intersection of two existing groups. +T} +_ +T{ +\fI\%Range_excl\fP(ranks) +T} T{ +Create a new group by excluding ranges of members. +T} +_ +T{ +\fI\%Range_incl\fP(ranks) +T} T{ +Create a new group by including ranges of members. +T} +_ +T{ +\fI\%Translate_ranks\fP([ranks, group]) +T} T{ +Translate ranks in a group to those in another group. +T} +_ +T{ +\fI\%Union\fP(group1, group2) +T} T{ +Create a new group from the union of two existing groups. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null or predefined. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +T{ +\fI\%rank\fP +T} T{ +Rank of this process. +T} +_ +T{ +\fI\%size\fP +T} T{ +Number of processes. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Compare(group) +Compare two groups. +.INDENT 7.0 +.TP +.B Parameters +\fBgroup\fP (\fI\%Group\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_from_session_pset(session, pset_name) +Create a new group from session and process set. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsession\fP (\fI\%Session\fP) +.IP \(bu 2 +\fBpset_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Difference(group1, group2) +Create a new group from the difference of two existing groups. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup1\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBgroup2\fP (\fI\%Group\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Dup() +Duplicate a group. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Excl(ranks) +Create a new group by excluding listed members. +.INDENT 7.0 +.TP +.B Parameters +\fBranks\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free a group. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_rank() +Return the rank of this process in a group. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_size() +Return the number of processes in a group. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Incl(ranks) +Create a new group by including listed members. +.INDENT 7.0 +.TP +.B Parameters +\fBranks\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Intersection(group1, group2) +Create a new group from the intersection of two existing groups. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup1\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBgroup2\fP (\fI\%Group\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Range_excl(ranks) +Create a new group by excluding ranges of members. +.INDENT 7.0 +.TP +.B Parameters +\fBranks\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Range_incl(ranks) +Create a new group by including ranges of members. +.INDENT 7.0 +.TP +.B Parameters +\fBranks\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Translate_ranks(ranks=None, group=None) +Translate ranks in a group to those in another group. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBranks\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBgroup\fP (\fI\%Group\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Union(group1, group2) +Create a new group from the union of two existing groups. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup1\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBgroup2\fP (\fI\%Group\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null or predefined. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.INDENT 7.0 +.TP +.B rank +Rank of this process. +.UNINDENT +.INDENT 7.0 +.TP +.B size +Number of processes. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.InPlaceType +.INDENT 0.0 +.TP +.B class mpi4py.MPI.InPlaceType +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.sp +Type of \fI\%IN_PLACE\fP\&. +.INDENT 7.0 +.TP +.B static __new__(cls) +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Info +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Info +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Info object. +.INDENT 7.0 +.TP +.B static __new__(cls, info=None) +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Create\fP([items]) +T} T{ +Create a new info object. +T} +_ +T{ +\fI\%Create_env\fP([args]) +T} T{ +Create a new environment info object. +T} +_ +T{ +\fI\%Delete\fP(key) +T} T{ +Remove a (key, value) pair from info. +T} +_ +T{ +\fI\%Dup\fP() +T} T{ +Duplicate an existing info object. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free an info object. +T} +_ +T{ +\fI\%Get\fP(key) +T} T{ +Retrieve the value associated with a key. +T} +_ +T{ +\fI\%Get_nkeys\fP() +T} T{ +Return the number of currently defined keys in info. +T} +_ +T{ +\fI\%Get_nthkey\fP(n) +T} T{ +Return the \fIn\fP\-th defined key in info. +T} +_ +T{ +\fI\%Set\fP(key, value) +T} T{ +Store a value associated with a key. +T} +_ +T{ +\fI\%clear\fP() +T} T{ +Clear contents. +T} +_ +T{ +\fI\%copy\fP() +T} T{ +Copy contents. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null or predefined. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%get\fP(key[, default]) +T} T{ +Retrieve value by key. +T} +_ +T{ +\fI\%items\fP() +T} T{ +Return list of items. +T} +_ +T{ +\fI\%keys\fP() +T} T{ +Return list of keys. +T} +_ +T{ +\fI\%pop\fP(key, *default) +T} T{ +Pop value by key. +T} +_ +T{ +\fI\%popitem\fP() +T} T{ +Pop first item. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +T{ +\fI\%update\fP([items]) +T} T{ +Update contents. +T} +_ +T{ +\fI\%values\fP() +T} T{ +Return list of values. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B classmethod Create(items=None) +Create a new info object. +.INDENT 7.0 +.TP +.B Parameters +\fBitems\fP (\fI\%Info\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Mapping'\fI\%Mapping\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI]\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_env(args=None) +Create a new environment info object. +.INDENT 7.0 +.TP +.B Parameters +\fBargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Delete(key) +Remove a (key, value) pair from info. +.INDENT 7.0 +.TP +.B Parameters +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Dup() +Duplicate an existing info object. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free an info object. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get(key) +Retrieve the value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_nkeys() +Return the number of currently defined keys in info. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_nthkey(n) +Return the \fIn\fP\-th defined key in info. +.INDENT 7.0 +.TP +.B Parameters +\fBn\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set(key, value) +Store a value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBvalue\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B clear() +Clear contents. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B copy() +Copy contents. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null or predefined. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B get(key, default=None) +Retrieve value by key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBdefault\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B items() +Return list of items. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link']] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B keys() +Return list of keys. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B pop(key, *default) +Pop value by key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBkey\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBdefault\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B popitem() +Pop first item. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B update(items=(), **kwds) +Update contents. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBitems\fP (\fI\%Info\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Mapping'\fI\%Mapping\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI]\fP\fI]\fP) +.IP \(bu 2 +\fBkwds\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B values() +Return list of values. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Intercomm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Intercomm +Bases: \fI\%Comm\fP +.sp +Intercommunicator. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Intercomm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Create_from_groups\fP(local_group, ...[, ...]) +T} T{ +Create communicator from group. +T} +_ +T{ +\fI\%Get_remote_group\fP() +T} T{ +Access the remote group associated with the inter\-communicator. +T} +_ +T{ +\fI\%Get_remote_size\fP() +T} T{ +Intercommunicator remote size. +T} +_ +T{ +\fI\%Merge\fP([high]) +T} T{ +Merge intercommunicator into an intracommunicator. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%remote_group\fP +T} T{ +Remote group. +T} +_ +T{ +\fI\%remote_size\fP +T} T{ +Number of remote processes. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B classmethod Create_from_groups(local_group, local_leader, remote_group, remote_leader, stringtag=\(aqorg.mpi4py\(aq, info=INFO_NULL, errhandler=None) +Create communicator from group. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBlocal_group\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBlocal_leader\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBremote_group\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBremote_leader\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstringtag\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBerrhandler\fP (\fI\%Errhandler\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intracomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_remote_group() +Access the remote group associated with the inter\-communicator. +.INDENT 7.0 +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_remote_size() +Intercommunicator remote size. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Merge(high=False) +Merge intercommunicator into an intracommunicator. +.INDENT 7.0 +.TP +.B Parameters +\fBhigh\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.TP +.B Return type +\fI\%Intracomm\fP +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B remote_group +Remote group. +.UNINDENT +.INDENT 7.0 +.TP +.B remote_size +Number of remote processes. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Intracomm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Intracomm +Bases: \fI\%Comm\fP +.sp +Intracommunicator. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Intracomm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Accept\fP(port_name[, info, root]) +T} T{ +Accept a request to form a new intercommunicator. +T} +_ +T{ +\fI\%Cart_map\fP(dims[, periods]) +T} T{ +Determine optimal process placement on a Cartesian topology. +T} +_ +T{ +\fI\%Connect\fP(port_name[, info, root]) +T} T{ +Make a request to form a new intercommunicator. +T} +_ +T{ +\fI\%Create_cart\fP(dims[, periods, reorder]) +T} T{ +Create cartesian communicator. +T} +_ +T{ +\fI\%Create_dist_graph\fP(sources, degrees, destinations) +T} T{ +Create distributed graph communicator. +T} +_ +T{ +\fI\%Create_dist_graph_adjacent\fP(sources, destinations) +T} T{ +Create distributed graph communicator. +T} +_ +T{ +\fI\%Create_from_group\fP(group[, stringtag, info, ...]) +T} T{ +Create communicator from group. +T} +_ +T{ +\fI\%Create_graph\fP(index, edges[, reorder]) +T} T{ +Create graph communicator. +T} +_ +T{ +\fI\%Create_group\fP(group[, tag]) +T} T{ +Create communicator from group. +T} +_ +T{ +\fI\%Create_intercomm\fP(local_leader, peer_comm, ...) +T} T{ +Create intercommunicator. +T} +_ +T{ +\fI\%Exscan\fP(sendbuf, recvbuf[, op]) +T} T{ +Exclusive Scan. +T} +_ +T{ +\fI\%Exscan_init\fP(sendbuf, recvbuf[, op, info]) +T} T{ +Persistent Exclusive Scan. +T} +_ +T{ +\fI\%Graph_map\fP(index, edges) +T} T{ +Determine optimal process placement on a graph topology. +T} +_ +T{ +\fI\%Iexscan\fP(sendbuf, recvbuf[, op]) +T} T{ +Inclusive Scan. +T} +_ +T{ +\fI\%Iscan\fP(sendbuf, recvbuf[, op]) +T} T{ +Inclusive Scan. +T} +_ +T{ +\fI\%Scan\fP(sendbuf, recvbuf[, op]) +T} T{ +Inclusive Scan. +T} +_ +T{ +\fI\%Scan_init\fP(sendbuf, recvbuf[, op, info]) +T} T{ +Persistent Inclusive Scan. +T} +_ +T{ +\fI\%Spawn\fP(command[, args, maxprocs, info, root, ...]) +T} T{ +Spawn instances of a single MPI application. +T} +_ +T{ +\fI\%Spawn_multiple\fP(command[, args, maxprocs, ...]) +T} T{ +Spawn instances of multiple MPI applications. +T} +_ +T{ +\fI\%exscan\fP(sendobj[, op]) +T} T{ +Exclusive Scan. +T} +_ +T{ +\fI\%scan\fP(sendobj[, op]) +T} T{ +Inclusive Scan. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Accept(port_name, info=INFO_NULL, root=0) +Accept a request to form a new intercommunicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBport_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Cart_map(dims, periods=None) +Determine optimal process placement on a Cartesian topology. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdims\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBperiods\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Connect(port_name, info=INFO_NULL, root=0) +Make a request to form a new intercommunicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBport_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_cart(dims, periods=None, reorder=False) +Create cartesian communicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdims\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBperiods\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBreorder\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Cartcomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_dist_graph(sources, degrees, destinations, weights=None, info=INFO_NULL, reorder=False) +Create distributed graph communicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsources\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdegrees\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdestinations\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBweights\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBreorder\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Distgraphcomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_dist_graph_adjacent(sources, destinations, sourceweights=None, destweights=None, info=INFO_NULL, reorder=False) +Create distributed graph communicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsources\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBdestinations\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBsourceweights\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBdestweights\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBreorder\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Distgraphcomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_from_group(group, stringtag=\(aqorg.mpi4py\(aq, info=INFO_NULL, errhandler=None) +Create communicator from group. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBstringtag\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBerrhandler\fP (\fI\%Errhandler\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intracomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_graph(index, edges, reorder=False) +Create graph communicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBindex\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBedges\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBreorder\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Graphcomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_group(group, tag=0) +Create communicator from group. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intracomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_intercomm(local_leader, peer_comm, remote_leader, tag=0) +Create intercommunicator. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBlocal_leader\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBpeer_comm\fP (\fI\%Intracomm\fP) +.IP \(bu 2 +\fBremote_leader\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Exscan(sendbuf, recvbuf, op=SUM) +Exclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Exscan_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL) +Persistent Exclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Graph_map(index, edges) +Determine optimal process placement on a graph topology. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBindex\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBedges\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iexscan(sendbuf, recvbuf, op=SUM) +Inclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iscan(sendbuf, recvbuf, op=SUM) +Inclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Scan(sendbuf, recvbuf, op=SUM) +Inclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Scan_init(sendbuf, recvbuf, op=SUM, info=INFO_NULL) +Persistent Inclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP\fI | \fP\fI\%InPlace\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Spawn(command, args=None, maxprocs=1, info=INFO_NULL, root=0, errcodes=None) +Spawn instances of a single MPI application. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcommand\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBmaxprocs\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBerrcodes\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Spawn_multiple(command, args=None, maxprocs=None, info=INFO_NULL, root=0, errcodes=None) +Spawn instances of multiple MPI applications. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcommand\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBargs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI]\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBmaxprocs\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Info\fP\fI] \fP\fI| \fP\fI\%Info\fP) +.IP \(bu 2 +\fBroot\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBerrcodes\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Intercomm\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B exscan(sendobj, op=SUM) +Exclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B scan(sendobj, op=SUM) +Inclusive Scan. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Message +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Message +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Matched message. +.INDENT 7.0 +.TP +.B static __new__(cls, message=None) +.INDENT 7.0 +.TP +.B Parameters +\fBmessage\fP (\fI\%Message\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Iprobe\fP(comm[, source, tag, status]) +T} T{ +Nonblocking test for a matched message. +T} +_ +T{ +\fI\%Irecv\fP(buf) +T} T{ +Nonblocking receive of matched message. +T} +_ +T{ +\fI\%Probe\fP(comm[, source, tag, status]) +T} T{ +Blocking test for a matched message. +T} +_ +T{ +\fI\%Recv\fP(buf[, status]) +T} T{ +Blocking receive of matched message. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Do nothing. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%iprobe\fP(comm[, source, tag, status]) +T} T{ +Nonblocking test for a matched message. +T} +_ +T{ +\fI\%irecv\fP() +T} T{ +Nonblocking receive of matched message. +T} +_ +T{ +\fI\%probe\fP(comm[, source, tag, status]) +T} T{ +Blocking test for a matched message. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +T{ +\fI\%recv\fP([status]) +T} T{ +Blocking receive of matched message. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B classmethod Iprobe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Irecv(buf) +Nonblocking receive of matched message. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%BufSpec\fP) +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Probe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Recv(buf, status=None) +Blocking receive of matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Message\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Do nothing. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Message\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod iprobe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Nonblocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B irecv() +Nonblocking receive of matched message. +.INDENT 7.0 +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod probe(comm, source=ANY_SOURCE, tag=ANY_TAG, status=None) +Blocking test for a matched message. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcomm\fP (\fI\%Comm\fP) +.IP \(bu 2 +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B recv(status=None) +Blocking receive of matched message. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Op +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Op +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Reduction operation. +.INDENT 7.0 +.TP +.B static __new__(cls, op=None) +.INDENT 7.0 +.TP +.B Parameters +\fBop\fP (\fI\%Op\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Create\fP(function[, commute]) +T} T{ +Create a user\-defined reduction operation. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free a user\-defined reduction operation. +T} +_ +T{ +\fI\%Is_commutative\fP() +T} T{ +Query reduction operations for their commutativity. +T} +_ +T{ +\fI\%Reduce_local\fP(inbuf, inoutbuf) +T} T{ +Apply a reduction operation to local data. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null or predefined. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +T{ +\fI\%is_commutative\fP +T} T{ +Is a commutative operation. +T} +_ +T{ +\fI\%is_predefined\fP +T} T{ +Is a predefined operation. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B classmethod Create(function, commute=False) +Create a user\-defined reduction operation. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBfunction\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Buffer\fP\fI, \fP\fI\%Buffer\fP\fI, \fP\fI\%Datatype\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBcommute\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free a user\-defined reduction operation. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Is_commutative() +Query reduction operations for their commutativity. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Reduce_local(inbuf, inoutbuf) +Apply a reduction operation to local data. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBinbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBinoutbuf\fP (\fI\%BufSpec\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Op\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null or predefined. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Op\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.INDENT 7.0 +.TP +.B is_commutative +Is a commutative operation. +.UNINDENT +.INDENT 7.0 +.TP +.B is_predefined +Is a predefined operation. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Pickle +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Pickle +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Pickle/unpickle Python objects. +.INDENT 7.0 +.TP +.B static __new__(cls, pickle=None) +.INDENT 7.0 +.TP +.B Parameters +\fBpickle\fP (\fI\%Pickle\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%dumps\fP(obj) +T} T{ +Serialize object to pickle data stream. +T} +_ +T{ +\fI\%dumps_oob\fP(obj) +T} T{ +Serialize object to pickle data stream and out\-of\-band buffers. +T} +_ +T{ +\fI\%loads\fP(data) +T} T{ +Deserialize object from pickle data stream. +T} +_ +T{ +\fI\%loads_oob\fP(data, buffers) +T} T{ +Deserialize object from pickle data stream and out\-of\-band buffers. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%PROTOCOL\fP +T} T{ +Protocol version. +T} +_ +T{ +\fI\%THRESHOLD\fP +T} T{ +Out\-of\-band threshold. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B dumps(obj) +Serialize object to pickle data stream. +.INDENT 7.0 +.TP +.B Parameters +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#bytes'\fI\%bytes\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B dumps_oob(obj) +Serialize object to pickle data stream and out\-of\-band buffers. +.INDENT 7.0 +.TP +.B Parameters +\fBobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#bytes'\fI\%bytes\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\fI\%buffer\fP]] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B loads(data) +Deserialize object from pickle data stream. +.INDENT 7.0 +.TP +.B Parameters +\fBdata\fP (\fI\%Buffer\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B loads_oob(data, buffers) +Deserialize object from pickle data stream and out\-of\-band buffers. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdata\fP (\fI\%Buffer\fP) +.IP \(bu 2 +\fBbuffers\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Iterable'\fI\%Iterable\fP\X'tty: link'\fI[\fP\fI\%Buffer\fP\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B PROTOCOL +Protocol version. +.UNINDENT +.INDENT 7.0 +.TP +.B THRESHOLD +Out\-of\-band threshold. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Prequest +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Prequest +Bases: \fI\%Request\fP +.sp +Persistent request handler. +.INDENT 7.0 +.TP +.B static __new__(cls, request=None) +.INDENT 7.0 +.TP +.B Parameters +\fBrequest\fP (\fI\%Prequest\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Parrived\fP(partition) +T} T{ +Test partial completion of a partitioned receive operation. +T} +_ +T{ +\fI\%Pready\fP(partition) +T} T{ +Mark a given partition as ready. +T} +_ +T{ +\fI\%Pready_list\fP(partitions) +T} T{ +Mark a sequence of partitions as ready. +T} +_ +T{ +\fI\%Pready_range\fP(partition_low, partition_high) +T} T{ +Mark a range of partitions as ready. +T} +_ +T{ +\fI\%Start\fP() +T} T{ +Initiate a communication with a persistent request. +T} +_ +T{ +\fI\%Startall\fP(requests) +T} T{ +Start a collection of persistent requests. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Parrived(partition) +Test partial completion of a partitioned receive operation. +.INDENT 7.0 +.TP +.B Parameters +\fBpartition\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pready(partition) +Mark a given partition as ready. +.INDENT 7.0 +.TP +.B Parameters +\fBpartition\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pready_list(partitions) +Mark a sequence of partitions as ready. +.INDENT 7.0 +.TP +.B Parameters +\fBpartitions\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Pready_range(partition_low, partition_high) +Mark a range of partitions as ready. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBpartition_low\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBpartition_high\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Start() +Initiate a communication with a persistent request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Startall(requests) +Start a collection of persistent requests. +.INDENT 7.0 +.TP +.B Parameters +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Prequest\fP\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Request +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Request +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Request handler. +.INDENT 7.0 +.TP +.B static __new__(cls, request=None) +.INDENT 7.0 +.TP +.B Parameters +\fBrequest\fP (\fI\%Request\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Cancel\fP() +T} T{ +Cancel a request. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free a communication request. +T} +_ +T{ +\fI\%Get_status\fP([status]) +T} T{ +Non\-destructive test for the completion of a request. +T} +_ +T{ +\fI\%Get_status_all\fP(requests[, statuses]) +T} T{ +Non\-destructive test for the completion of all requests. +T} +_ +T{ +\fI\%Get_status_any\fP(requests[, status]) +T} T{ +Non\-destructive test for the completion of any requests. +T} +_ +T{ +\fI\%Get_status_some\fP(requests[, statuses]) +T} T{ +Non\-destructive test for completion of some requests. +T} +_ +T{ +\fI\%Test\fP([status]) +T} T{ +Test for the completion of a non\-blocking operation. +T} +_ +T{ +\fI\%Testall\fP(requests[, statuses]) +T} T{ +Test for completion of all previously initiated requests. +T} +_ +T{ +\fI\%Testany\fP(requests[, status]) +T} T{ +Test for completion of any previously initiated request. +T} +_ +T{ +\fI\%Testsome\fP(requests[, statuses]) +T} T{ +Test for completion of some previously initiated requests. +T} +_ +T{ +\fI\%Wait\fP([status]) +T} T{ +Wait for a non\-blocking operation to complete. +T} +_ +T{ +\fI\%Waitall\fP(requests[, statuses]) +T} T{ +Wait for all previously initiated requests to complete. +T} +_ +T{ +\fI\%Waitany\fP(requests[, status]) +T} T{ +Wait for any previously initiated request to complete. +T} +_ +T{ +\fI\%Waitsome\fP(requests[, statuses]) +T} T{ +Wait for some previously initiated requests to complete. +T} +_ +T{ +\fI\%cancel\fP() +T} T{ +Cancel a request. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%get_status\fP([status]) +T} T{ +Non\-destructive test for the completion of a request. +T} +_ +T{ +\fI\%get_status_all\fP(requests[, statuses]) +T} T{ +Non\-destructive test for the completion of all requests. +T} +_ +T{ +\fI\%get_status_any\fP(requests[, status]) +T} T{ +Non\-destructive test for the completion of any requests. +T} +_ +T{ +\fI\%get_status_some\fP(requests[, statuses]) +T} T{ +Non\-destructive test for completion of some requests. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +T{ +\fI\%test\fP([status]) +T} T{ +Test for the completion of a non\-blocking operation. +T} +_ +T{ +\fI\%testall\fP(requests[, statuses]) +T} T{ +Test for completion of all previously initiated requests. +T} +_ +T{ +\fI\%testany\fP(requests[, status]) +T} T{ +Test for completion of any previously initiated request. +T} +_ +T{ +\fI\%testsome\fP(requests[, statuses]) +T} T{ +Test for completion of some previously initiated requests. +T} +_ +T{ +\fI\%wait\fP([status]) +T} T{ +Wait for a non\-blocking operation to complete. +T} +_ +T{ +\fI\%waitall\fP(requests[, statuses]) +T} T{ +Wait for all previously initiated requests to complete. +T} +_ +T{ +\fI\%waitany\fP(requests[, status]) +T} T{ +Wait for any previously initiated request to complete. +T} +_ +T{ +\fI\%waitsome\fP(requests[, statuses]) +T} T{ +Wait for some previously initiated requests to complete. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Cancel() +Cancel a request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free a communication request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_status(status=None) +Non\-destructive test for the completion of a request. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Get_status_all(requests, statuses=None) +Non\-destructive test for the completion of all requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Get_status_any(requests, status=None) +Non\-destructive test for the completion of any requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Get_status_some(requests, statuses=None) +Non\-destructive test for completion of some requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Test(status=None) +Test for the completion of a non\-blocking operation. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Testall(requests, statuses=None) +Test for completion of all previously initiated requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Testany(requests, status=None) +Test for completion of any previously initiated request. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Testsome(requests, statuses=None) +Test for completion of some previously initiated requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Wait(status=None) +Wait for a non\-blocking operation to complete. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Literal'\fI\%Literal\fP\X'tty: link'[True] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Waitall(requests, statuses=None) +Wait for all previously initiated requests to complete. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Literal'\fI\%Literal\fP\X'tty: link'[True] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Waitany(requests, status=None) +Wait for any previously initiated request to complete. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Waitsome(requests, statuses=None) +Wait for some previously initiated requests to complete. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B cancel() +Cancel a request. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B get_status(status=None) +Non\-destructive test for the completion of a request. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod get_status_all(requests, statuses=None) +Non\-destructive test for the completion of all requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod get_status_any(requests, status=None) +Non\-destructive test for the completion of any requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod get_status_some(requests, statuses=None) +Non\-destructive test for completion of some requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B test(status=None) +Test for the completion of a non\-blocking operation. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod testall(requests, statuses=None) +Test for completion of all previously initiated requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod testany(requests, status=None) +Test for completion of any previously initiated request. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod testsome(requests, statuses=None) +Test for completion of some previously initiated requests. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B wait(status=None) +Wait for a non\-blocking operation to complete. +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod waitall(requests, statuses=None) +Wait for all previously initiated requests to complete. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod waitany(requests, status=None) +Wait for any previously initiated request to complete. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod waitsome(requests, statuses=None) +Wait for some previously initiated requests to complete. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrequests\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\fI\%Request\fP\fI]\fP) +.IP \(bu 2 +\fBstatuses\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\fI\%Status\fP\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Session +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Session +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Session context. +.INDENT 7.0 +.TP +.B static __new__(cls, session=None) +.INDENT 7.0 +.TP +.B Parameters +\fBsession\fP (\fI\%Session\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Attach_buffer\fP(buf) +T} T{ +Attach a user\-provided buffer for sending in buffered mode. +T} +_ +T{ +\fI\%Call_errhandler\fP(errorcode) +T} T{ +Call the error handler installed on a session. +T} +_ +T{ +\fI\%Create_errhandler\fP(errhandler_fn) +T} T{ +Create a new error handler for sessions. +T} +_ +T{ +\fI\%Create_group\fP(pset_name) +T} T{ +Create a new group from session and process set. +T} +_ +T{ +\fI\%Detach_buffer\fP() +T} T{ +Remove an existing attached buffer. +T} +_ +T{ +\fI\%Finalize\fP() +T} T{ +Finalize a session. +T} +_ +T{ +\fI\%Flush_buffer\fP() +T} T{ +Block until all buffered messages have been transmitted. +T} +_ +T{ +\fI\%Get_errhandler\fP() +T} T{ +Get the error handler for a session. +T} +_ +T{ +\fI\%Get_info\fP() +T} T{ +Return the current hints for a session. +T} +_ +T{ +\fI\%Get_nth_pset\fP(n[, info]) +T} T{ +Name of the \fIn\fP\-th process set. +T} +_ +T{ +\fI\%Get_num_psets\fP([info]) +T} T{ +Number of available process sets. +T} +_ +T{ +\fI\%Get_pset_info\fP(pset_name) +T} T{ +Return the current hints for a session and process set. +T} +_ +T{ +\fI\%Iflush_buffer\fP() +T} T{ +Nonblocking flush for buffered messages. +T} +_ +T{ +\fI\%Init\fP([info, errhandler]) +T} T{ +Create a new session. +T} +_ +T{ +\fI\%Set_errhandler\fP(errhandler) +T} T{ +Set the error handler for a session. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Finalize\fP if not null. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Attach_buffer(buf) +Attach a user\-provided buffer for sending in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Call_errhandler(errorcode) +Call the error handler installed on a session. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_errhandler(errhandler_fn) +Create a new error handler for sessions. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Session\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Create_group(pset_name) +Create a new group from session and process set. +.INDENT 7.0 +.TP +.B Parameters +\fBpset_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Detach_buffer() +Remove an existing attached buffer. +.INDENT 7.0 +.TP +.B Return type +\fI\%Buffer\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Finalize() +Finalize a session. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Flush_buffer() +Block until all buffered messages have been transmitted. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_errhandler() +Get the error handler for a session. +.INDENT 7.0 +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_info() +Return the current hints for a session. +.INDENT 7.0 +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_nth_pset(n, info=INFO_NULL) +Name of the \fIn\fP\-th process set. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBn\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_num_psets(info=INFO_NULL) +Number of available process sets. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_pset_info(pset_name) +Return the current hints for a session and process set. +.INDENT 7.0 +.TP +.B Parameters +\fBpset_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Iflush_buffer() +Nonblocking flush for buffered messages. +.INDENT 7.0 +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Init(info=INFO_NULL, errhandler=None) +Create a new session. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBerrhandler\fP (\fI\%Errhandler\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_errhandler(errhandler) +Set the error handler for a session. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler\fP (\fI\%Errhandler\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Session\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Finalize\fP if not null. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Session\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Status +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Status +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Status object. +.INDENT 7.0 +.TP +.B static __new__(cls, status=None) +.INDENT 7.0 +.TP +.B Parameters +\fBstatus\fP (\fI\%Status\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_count\fP([datatype]) +T} T{ +Get the number of \fItop level\fP elements. +T} +_ +T{ +\fI\%Get_elements\fP(datatype) +T} T{ +Get the number of basic elements in a datatype. +T} +_ +T{ +\fI\%Get_error\fP() +T} T{ +Get message error. +T} +_ +T{ +\fI\%Get_source\fP() +T} T{ +Get message source. +T} +_ +T{ +\fI\%Get_tag\fP() +T} T{ +Get message tag. +T} +_ +T{ +\fI\%Is_cancelled\fP() +T} T{ +Test to see if a request was cancelled. +T} +_ +T{ +\fI\%Set_cancelled\fP(flag) +T} T{ +Set the cancelled state associated with a status. +T} +_ +T{ +\fI\%Set_elements\fP(datatype, count) +T} T{ +Set the number of elements in a status. +T} +_ +T{ +\fI\%Set_error\fP(error) +T} T{ +Set message error. +T} +_ +T{ +\fI\%Set_source\fP(source) +T} T{ +Set message source. +T} +_ +T{ +\fI\%Set_tag\fP(tag) +T} T{ +Set message tag. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%cancelled\fP +T} T{ +Cancelled state. +T} +_ +T{ +\fI\%count\fP +T} T{ +Byte count. +T} +_ +T{ +\fI\%error\fP +T} T{ +Message error. +T} +_ +T{ +\fI\%source\fP +T} T{ +Message source. +T} +_ +T{ +\fI\%tag\fP +T} T{ +Message tag. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Get_count(datatype=BYTE) +Get the number of \fItop level\fP elements. +.INDENT 7.0 +.TP +.B Parameters +\fBdatatype\fP (\fI\%Datatype\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_elements(datatype) +Get the number of basic elements in a datatype. +.INDENT 7.0 +.TP +.B Parameters +\fBdatatype\fP (\fI\%Datatype\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_error() +Get message error. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_source() +Get message source. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_tag() +Get message tag. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Is_cancelled() +Test to see if a request was cancelled. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_cancelled(flag) +Set the cancelled state associated with a status. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This method should be used only when implementing +query callback functions for generalized requests. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +\fBflag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_elements(datatype, count) +Set the number of elements in a status. +.sp +\fBNOTE:\fP +.INDENT 7.0 +.INDENT 3.5 +This method should be only used when implementing +query callback functions for generalized requests. +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdatatype\fP (\fI\%Datatype\fP) +.IP \(bu 2 +\fBcount\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_error(error) +Set message error. +.INDENT 7.0 +.TP +.B Parameters +\fBerror\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_source(source) +Set message source. +.INDENT 7.0 +.TP +.B Parameters +\fBsource\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_tag(tag) +Set message tag. +.INDENT 7.0 +.TP +.B Parameters +\fBtag\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B cancelled +Cancelled state. +.UNINDENT +.INDENT 7.0 +.TP +.B count +Byte count. +.UNINDENT +.INDENT 7.0 +.TP +.B error +Message error. +.UNINDENT +.INDENT 7.0 +.TP +.B source +Message source. +.UNINDENT +.INDENT 7.0 +.TP +.B tag +Message tag. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Topocomm +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Topocomm +Bases: \fI\%Intracomm\fP +.sp +Topology intracommunicator. +.INDENT 7.0 +.TP +.B static __new__(cls, comm=None) +.INDENT 7.0 +.TP +.B Parameters +\fBcomm\fP (\fI\%Topocomm\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Ineighbor_allgather\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Neighbor Gather to All. +T} +_ +T{ +\fI\%Ineighbor_allgatherv\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Neighbor Gather to All Vector. +T} +_ +T{ +\fI\%Ineighbor_alltoall\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Neighbor All to All. +T} +_ +T{ +\fI\%Ineighbor_alltoallv\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Neighbor All to All Vector. +T} +_ +T{ +\fI\%Ineighbor_alltoallw\fP(sendbuf, recvbuf) +T} T{ +Nonblocking Neighbor All to All General. +T} +_ +T{ +\fI\%Neighbor_allgather\fP(sendbuf, recvbuf) +T} T{ +Neighbor Gather to All. +T} +_ +T{ +\fI\%Neighbor_allgather_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent Neighbor Gather to All. +T} +_ +T{ +\fI\%Neighbor_allgatherv\fP(sendbuf, recvbuf) +T} T{ +Neighbor Gather to All Vector. +T} +_ +T{ +\fI\%Neighbor_allgatherv_init\fP(sendbuf, recvbuf[, ...]) +T} T{ +Persistent Neighbor Gather to All Vector. +T} +_ +T{ +\fI\%Neighbor_alltoall\fP(sendbuf, recvbuf) +T} T{ +Neighbor All to All. +T} +_ +T{ +\fI\%Neighbor_alltoall_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent Neighbor All to All. +T} +_ +T{ +\fI\%Neighbor_alltoallv\fP(sendbuf, recvbuf) +T} T{ +Neighbor All to All Vector. +T} +_ +T{ +\fI\%Neighbor_alltoallv_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent Neighbor All to All Vector. +T} +_ +T{ +\fI\%Neighbor_alltoallw\fP(sendbuf, recvbuf) +T} T{ +Neighbor All to All General. +T} +_ +T{ +\fI\%Neighbor_alltoallw_init\fP(sendbuf, recvbuf[, info]) +T} T{ +Persistent Neighbor All to All General. +T} +_ +T{ +\fI\%neighbor_allgather\fP(sendobj) +T} T{ +Neighbor Gather to All. +T} +_ +T{ +\fI\%neighbor_alltoall\fP(sendobj) +T} T{ +Neighbor All to All. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%degrees\fP +T} T{ +Number of incoming and outgoing neighbors. +T} +_ +T{ +\fI\%indegree\fP +T} T{ +Number of incoming neighbors. +T} +_ +T{ +\fI\%inedges\fP +T} T{ +Incoming neighbors. +T} +_ +T{ +\fI\%inoutedges\fP +T} T{ +Incoming and outgoing neighbors. +T} +_ +T{ +\fI\%outdegree\fP +T} T{ +Number of outgoing neighbors. +T} +_ +T{ +\fI\%outedges\fP +T} T{ +Outgoing neighbors. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Ineighbor_allgather(sendbuf, recvbuf) +Nonblocking Neighbor Gather to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ineighbor_allgatherv(sendbuf, recvbuf) +Nonblocking Neighbor Gather to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ineighbor_alltoall(sendbuf, recvbuf) +Nonblocking Neighbor All to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ineighbor_alltoallv(sendbuf, recvbuf) +Nonblocking Neighbor All to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Ineighbor_alltoallw(sendbuf, recvbuf) +Nonblocking Neighbor All to All General. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecW\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecW\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_allgather(sendbuf, recvbuf) +Neighbor Gather to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_allgather_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Neighbor Gather to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_allgatherv(sendbuf, recvbuf) +Neighbor Gather to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_allgatherv_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Neighbor Gather to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_alltoall(sendbuf, recvbuf) +Neighbor All to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_alltoall_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Neighbor All to All. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecB\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_alltoallv(sendbuf, recvbuf) +Neighbor All to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_alltoallv_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Neighbor All to All Vector. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecV\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_alltoallw(sendbuf, recvbuf) +Neighbor All to All General. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecW\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecW\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Neighbor_alltoallw_init(sendbuf, recvbuf, info=INFO_NULL) +Persistent Neighbor All to All General. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsendbuf\fP (\fI\%BufSpecW\fP) +.IP \(bu 2 +\fBrecvbuf\fP (\fI\%BufSpecW\fP) +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%Prequest\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B neighbor_allgather(sendobj) +Neighbor Gather to All. +.INDENT 7.0 +.TP +.B Parameters +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B neighbor_alltoall(sendobj) +Neighbor All to All. +.INDENT 7.0 +.TP +.B Parameters +\fBsendobj\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B degrees +Number of incoming and outgoing neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B indegree +Number of incoming neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B inedges +Incoming neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B inoutedges +Incoming and outgoing neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B outdegree +Number of outgoing neighbors. +.UNINDENT +.INDENT 7.0 +.TP +.B outedges +Outgoing neighbors. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Win +.INDENT 0.0 +.TP +.B class mpi4py.MPI.Win +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Remote memory access context. +.INDENT 7.0 +.TP +.B static __new__(cls, win=None) +.INDENT 7.0 +.TP +.B Parameters +\fBwin\fP (\fI\%Win\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Accumulate\fP(origin, target_rank[, target, op]) +T} T{ +Accumulate data into the target process. +T} +_ +T{ +\fI\%Allocate\fP(size[, disp_unit, info, comm]) +T} T{ +Create an window object for one\-sided communication. +T} +_ +T{ +\fI\%Allocate_shared\fP(size[, disp_unit, info, comm]) +T} T{ +Create an window object for one\-sided communication. +T} +_ +T{ +\fI\%Attach\fP(memory) +T} T{ +Attach a local memory region. +T} +_ +T{ +\fI\%Call_errhandler\fP(errorcode) +T} T{ +Call the error handler installed on a window. +T} +_ +T{ +\fI\%Compare_and_swap\fP(origin, compare, result, ...) +T} T{ +Perform one\-sided atomic compare\-and\-swap. +T} +_ +T{ +\fI\%Complete\fP() +T} T{ +Complete an RMA operation begun after an \fI\%Start\fP\&. +T} +_ +T{ +\fI\%Create\fP(memory[, disp_unit, info, comm]) +T} T{ +Create an window object for one\-sided communication. +T} +_ +T{ +\fI\%Create_dynamic\fP([info, comm]) +T} T{ +Create an window object for one\-sided communication. +T} +_ +T{ +\fI\%Create_errhandler\fP(errhandler_fn) +T} T{ +Create a new error handler for windows. +T} +_ +T{ +\fI\%Create_keyval\fP([copy_fn, delete_fn, nopython]) +T} T{ +Create a new attribute key for windows. +T} +_ +T{ +\fI\%Delete_attr\fP(keyval) +T} T{ +Delete attribute value associated with a key. +T} +_ +T{ +\fI\%Detach\fP(memory) +T} T{ +Detach a local memory region. +T} +_ +T{ +\fI\%Fence\fP([assertion]) +T} T{ +Perform an MPI fence synchronization on a window. +T} +_ +T{ +\fI\%Fetch_and_op\fP(origin, result, target_rank[, ...]) +T} T{ +Perform one\-sided read\-modify\-write. +T} +_ +T{ +\fI\%Flush\fP(rank) +T} T{ +Complete all outstanding RMA operations at a target. +T} +_ +T{ +\fI\%Flush_all\fP() +T} T{ +Complete all outstanding RMA operations at all targets. +T} +_ +T{ +\fI\%Flush_local\fP(rank) +T} T{ +Complete locally all outstanding RMA operations at a target. +T} +_ +T{ +\fI\%Flush_local_all\fP() +T} T{ +Complete locally all outstanding RMA operations at all targets. +T} +_ +T{ +\fI\%Free\fP() +T} T{ +Free a window. +T} +_ +T{ +\fI\%Free_keyval\fP(keyval) +T} T{ +Free an attribute key for windows. +T} +_ +T{ +\fI\%Get\fP(origin, target_rank[, target]) +T} T{ +Get data from a memory window on a remote process. +T} +_ +T{ +\fI\%Get_accumulate\fP(origin, result, target_rank) +T} T{ +Fetch\-and\-accumulate data into the target process. +T} +_ +T{ +\fI\%Get_attr\fP(keyval) +T} T{ +Retrieve attribute value by key. +T} +_ +T{ +\fI\%Get_errhandler\fP() +T} T{ +Get the error handler for a window. +T} +_ +T{ +\fI\%Get_group\fP() +T} T{ +Access the group of processes that created the window. +T} +_ +T{ +\fI\%Get_info\fP() +T} T{ +Return the current hints for a window. +T} +_ +T{ +\fI\%Get_name\fP() +T} T{ +Get the print name for this window. +T} +_ +T{ +\fI\%Lock\fP(rank[, lock_type, assertion]) +T} T{ +Begin an RMA access epoch at the target process. +T} +_ +T{ +\fI\%Lock_all\fP([assertion]) +T} T{ +Begin an RMA access epoch at all processes. +T} +_ +T{ +\fI\%Post\fP(group[, assertion]) +T} T{ +Start an RMA exposure epoch. +T} +_ +T{ +\fI\%Put\fP(origin, target_rank[, target]) +T} T{ +Put data into a memory window on a remote process. +T} +_ +T{ +\fI\%Raccumulate\fP(origin, target_rank[, target, op]) +T} T{ +Fetch\-and\-accumulate data into the target process. +T} +_ +T{ +\fI\%Rget\fP(origin, target_rank[, target]) +T} T{ +Get data from a memory window on a remote process. +T} +_ +T{ +\fI\%Rget_accumulate\fP(origin, result, target_rank) +T} T{ +Accumulate data into the target process using remote memory access. +T} +_ +T{ +\fI\%Rput\fP(origin, target_rank[, target]) +T} T{ +Put data into a memory window on a remote process. +T} +_ +T{ +\fI\%Set_attr\fP(keyval, attrval) +T} T{ +Store attribute value associated with a key. +T} +_ +T{ +\fI\%Set_errhandler\fP(errhandler) +T} T{ +Set the error handler for a window. +T} +_ +T{ +\fI\%Set_info\fP(info) +T} T{ +Set new values for the hints associated with a window. +T} +_ +T{ +\fI\%Set_name\fP(name) +T} T{ +Set the print name for this window. +T} +_ +T{ +\fI\%Shared_query\fP(rank) +T} T{ +Query the process\-local address for remote memory segments. +T} +_ +T{ +\fI\%Start\fP(group[, assertion]) +T} T{ +Start an RMA access epoch for MPI. +T} +_ +T{ +\fI\%Sync\fP() +T} T{ +Synchronize public and private copies of the window. +T} +_ +T{ +\fI\%Test\fP() +T} T{ +Test whether an RMA exposure epoch has completed. +T} +_ +T{ +\fI\%Unlock\fP(rank) +T} T{ +Complete an RMA access epoch at the target process. +T} +_ +T{ +\fI\%Unlock_all\fP() +T} T{ +Complete an RMA access epoch at all processes. +T} +_ +T{ +\fI\%Wait\fP() +T} T{ +Complete an RMA exposure epoch begun with \fI\%Post\fP\&. +T} +_ +T{ +\fI\%f2py\fP(arg) +T} T{ +T} +_ +T{ +\fI\%free\fP() +T} T{ +Call \fI\%Free\fP if not null. +T} +_ +T{ +\fI\%fromhandle\fP(handle) +T} T{ +Create object from MPI handle. +T} +_ +T{ +\fI\%py2f\fP() +T} T{ +T} +_ +T{ +\fI\%tomemory\fP() +T} T{ +Return window memory buffer. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%attrs\fP +T} T{ +Attributes. +T} +_ +T{ +\fI\%flavor\fP +T} T{ +Create flavor. +T} +_ +T{ +\fI\%group\fP +T} T{ +Group. +T} +_ +T{ +\fI\%group_rank\fP +T} T{ +Group rank. +T} +_ +T{ +\fI\%group_size\fP +T} T{ +Group size. +T} +_ +T{ +\fI\%handle\fP +T} T{ +MPI handle. +T} +_ +T{ +\fI\%info\fP +T} T{ +Info hints. +T} +_ +T{ +\fI\%model\fP +T} T{ +Memory model. +T} +_ +T{ +\fI\%name\fP +T} T{ +Print name. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Accumulate(origin, target_rank, target=None, op=SUM) +Accumulate data into the target process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Allocate(size, disp_unit=1, info=INFO_NULL, comm=COMM_SELF) +Create an window object for one\-sided communication. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdisp_unit\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Allocate_shared(size, disp_unit=1, info=INFO_NULL, comm=COMM_SELF) +Create an window object for one\-sided communication. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdisp_unit\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Attach(memory) +Attach a local memory region. +.INDENT 7.0 +.TP +.B Parameters +\fBmemory\fP (\fI\%Buffer\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Call_errhandler(errorcode) +Call the error handler installed on a window. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Compare_and_swap(origin, compare, result, target_rank, target_disp=0) +Perform one\-sided atomic compare\-and\-swap. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBcompare\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBresult\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget_disp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Complete() +Complete an RMA operation begun after an \fI\%Start\fP\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create(memory, disp_unit=1, info=INFO_NULL, comm=COMM_SELF) +Create an window object for one\-sided communication. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBmemory\fP (\fI\%Buffer\fP\fI | \fP\fI\%Bottom\fP) +.IP \(bu 2 +\fBdisp_unit\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) +.UNINDENT +.TP +.B Return type +Self +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_dynamic(info=INFO_NULL, comm=COMM_SELF) +Create an window object for one\-sided communication. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.IP \(bu 2 +\fBcomm\fP (\fI\%Intracomm\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_errhandler(errhandler_fn) +Create a new error handler for windows. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Win\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Create_keyval(copy_fn=None, delete_fn=None, nopython=False) +Create a new attribute key for windows. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBcopy_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Win\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBdelete_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Win\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBnopython\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Delete_attr(keyval) +Delete attribute value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Detach(memory) +Detach a local memory region. +.INDENT 7.0 +.TP +.B Parameters +\fBmemory\fP (\fI\%Buffer\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Fence(assertion=0) +Perform an MPI fence synchronization on a window. +.INDENT 7.0 +.TP +.B Parameters +\fBassertion\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Fetch_and_op(origin, result, target_rank, target_disp=0, op=SUM) +Perform one\-sided read\-modify\-write. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBresult\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget_disp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Flush(rank) +Complete all outstanding RMA operations at a target. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Flush_all() +Complete all outstanding RMA operations at all targets. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Flush_local(rank) +Complete locally all outstanding RMA operations at a target. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Flush_local_all() +Complete locally all outstanding RMA operations at all targets. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Free() +Free a window. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod Free_keyval(keyval) +Free an attribute key for windows. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get(origin, target_rank, target=None) +Get data from a memory window on a remote process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_accumulate(origin, result, target_rank, target=None, op=SUM) +Fetch\-and\-accumulate data into the target process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBresult\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_attr(keyval) +Retrieve attribute value by key. +.INDENT 7.0 +.TP +.B Parameters +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link' | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_errhandler() +Get the error handler for a window. +.INDENT 7.0 +.TP +.B Return type +\fI\%Errhandler\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_group() +Access the group of processes that created the window. +.INDENT 7.0 +.TP +.B Return type +\fI\%Group\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_info() +Return the current hints for a window. +.INDENT 7.0 +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_name() +Get the print name for this window. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Lock(rank, lock_type=LOCK_EXCLUSIVE, assertion=0) +Begin an RMA access epoch at the target process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBlock_type\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBassertion\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Lock_all(assertion=0) +Begin an RMA access epoch at all processes. +.INDENT 7.0 +.TP +.B Parameters +\fBassertion\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Post(group, assertion=0) +Start an RMA exposure epoch. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBassertion\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Put(origin, target_rank, target=None) +Put data into a memory window on a remote process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Raccumulate(origin, target_rank, target=None, op=SUM) +Fetch\-and\-accumulate data into the target process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Rget(origin, target_rank, target=None) +Get data from a memory window on a remote process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Rget_accumulate(origin, result, target_rank, target=None, op=SUM) +Accumulate data into the target process using remote memory access. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBresult\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.IP \(bu 2 +\fBop\fP (\fI\%Op\fP) +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Rput(origin, target_rank, target=None) +Put data into a memory window on a remote process. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBorigin\fP (\fI\%BufSpec\fP) +.IP \(bu 2 +\fBtarget_rank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBtarget\fP (\fI\%TargetSpec\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_attr(keyval, attrval) +Store attribute value associated with a key. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBkeyval\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBattrval\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Any'\fI\%Any\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_errhandler(errhandler) +Set the error handler for a window. +.INDENT 7.0 +.TP +.B Parameters +\fBerrhandler\fP (\fI\%Errhandler\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_info(info) +Set new values for the hints associated with a window. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Set_name(name) +Set the print name for this window. +.INDENT 7.0 +.TP +.B Parameters +\fBname\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Shared_query(rank) +Query the process\-local address for remote memory segments. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\fI\%buffer\fP, \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Start(group, assertion=0) +Start an RMA access epoch for MPI. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBgroup\fP (\fI\%Group\fP) +.IP \(bu 2 +\fBassertion\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Sync() +Synchronize public and private copies of the window. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Test() +Test whether an RMA exposure epoch has completed. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Unlock(rank) +Complete an RMA access epoch at the target process. +.INDENT 7.0 +.TP +.B Parameters +\fBrank\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Unlock_all() +Complete an RMA access epoch at all processes. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Wait() +Complete an RMA exposure epoch begun with \fI\%Post\fP\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Literal'\fI\%Literal\fP\X'tty: link'[True] +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod f2py(arg) +.INDENT 7.0 +.TP +.B Parameters +\fBarg\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Win\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B free() +Call \fI\%Free\fP if not null. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B classmethod fromhandle(handle) +Create object from MPI handle. +.INDENT 7.0 +.TP +.B Parameters +\fBhandle\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\fI\%Win\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B py2f() +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B tomemory() +Return window memory buffer. +.INDENT 7.0 +.TP +.B Return type +\fI\%buffer\fP +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B attrs +Attributes. +.UNINDENT +.INDENT 7.0 +.TP +.B flavor +Create flavor. +.UNINDENT +.INDENT 7.0 +.TP +.B group +Group. +.UNINDENT +.INDENT 7.0 +.TP +.B group_rank +Group rank. +.UNINDENT +.INDENT 7.0 +.TP +.B group_size +Group size. +.UNINDENT +.INDENT 7.0 +.TP +.B handle +MPI handle. +.UNINDENT +.INDENT 7.0 +.TP +.B info +Info hints. +.UNINDENT +.INDENT 7.0 +.TP +.B model +Memory model. +.UNINDENT +.INDENT 7.0 +.TP +.B name +Print name. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.buffer +.INDENT 0.0 +.TP +.B class mpi4py.MPI.buffer +Bases: \X'tty: link https://docs.python.org/3/library/functions.html#object'\fI\%object\fP\X'tty: link' +.sp +Buffer. +.INDENT 7.0 +.TP +.B static __new__(cls, buf) +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%Buffer\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%allocate\fP(nbytes[, clear]) +T} T{ +Buffer allocation. +T} +_ +T{ +\fI\%cast\fP(format[, shape]) +T} T{ +Cast to a \X'tty: link https://docs.python.org/3/library/stdtypes.html#memoryview'\fI\%memoryview\fP\X'tty: link' with new format or shape. +T} +_ +T{ +\fI\%fromaddress\fP(address, nbytes[, readonly]) +T} T{ +Buffer from address and size in bytes. +T} +_ +T{ +\fI\%frombuffer\fP(obj[, readonly]) +T} T{ +Buffer from buffer\-like object. +T} +_ +T{ +\fI\%release\fP() +T} T{ +Release the underlying buffer exposed by the buffer object. +T} +_ +T{ +\fI\%tobytes\fP([order]) +T} T{ +Return the data in the buffer as a byte string. +T} +_ +T{ +\fI\%toreadonly\fP() +T} T{ +Return a readonly version of the buffer object. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%address\fP +T} T{ +Buffer address. +T} +_ +T{ +\fI\%format\fP +T} T{ +Format of each element. +T} +_ +T{ +\fI\%itemsize\fP +T} T{ +Size (in bytes) of each element. +T} +_ +T{ +\fI\%nbytes\fP +T} T{ +Buffer size (in bytes). +T} +_ +T{ +\fI\%obj\fP +T} T{ +Object exposing buffer. +T} +_ +T{ +\fI\%readonly\fP +T} T{ +Buffer is read\-only. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B static allocate(nbytes, clear=False) +Buffer allocation. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBnbytes\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBclear\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%buffer\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B cast(format, shape=Ellipsis) +Cast to a \X'tty: link https://docs.python.org/3/library/stdtypes.html#memoryview'\fI\%memoryview\fP\X'tty: link' with new format or shape. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBformat\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBshape\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI] \fP\fI| \fP\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\fI\&...\fP\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#memoryview'\fI\%memoryview\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B static fromaddress(address, nbytes, readonly=False) +Buffer from address and size in bytes. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBaddress\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBnbytes\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBreadonly\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%buffer\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B static frombuffer(obj, readonly=False) +Buffer from buffer\-like object. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBobj\fP (\fI\%Buffer\fP) +.IP \(bu 2 +\fBreadonly\fP (\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\fI\%buffer\fP +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B release() +Release the underlying buffer exposed by the buffer object. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B tobytes(order=None) +Return the data in the buffer as a byte string. +.INDENT 7.0 +.TP +.B Parameters +\fBorder\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#bytes'\fI\%bytes\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B toreadonly() +Return a readonly version of the buffer object. +.INDENT 7.0 +.TP +.B Return type +\fI\%buffer\fP +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B address +Buffer address. +.UNINDENT +.INDENT 7.0 +.TP +.B format +Format of each element. +.UNINDENT +.INDENT 7.0 +.TP +.B itemsize +Size (in bytes) of each element. +.UNINDENT +.INDENT 7.0 +.TP +.B nbytes +Buffer size (in bytes). +.UNINDENT +.INDENT 7.0 +.TP +.B obj +Object exposing buffer. +.UNINDENT +.INDENT 7.0 +.TP +.B readonly +Buffer is read\-only. +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.memory +.INDENT 0.0 +.TP +.B mpi4py.MPI.memory +alias of \fI\%buffer\fP +.UNINDENT +.sp +Exceptions +.TS +center; +|l|l|. +_ +T{ +\fI\%Exception\fP +T} T{ +Exception class. +T} +_ +.TE +.SS mpi4py.MPI.Exception +.INDENT 0.0 +.TP +.B exception mpi4py.MPI.Exception +Bases: \X'tty: link https://docs.python.org/3/library/exceptions.html#RuntimeError'\fI\%RuntimeError\fP\X'tty: link' +.sp +Exception class. +.INDENT 7.0 +.TP +.B static __new__(cls, ierr=SUCCESS) +.INDENT 7.0 +.TP +.B Parameters +\fBierr\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/typing.html#typing.Self'\fI\%Self\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Methods Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%Get_error_class\fP() +T} T{ +Error class. +T} +_ +T{ +\fI\%Get_error_code\fP() +T} T{ +Error code. +T} +_ +T{ +\fI\%Get_error_string\fP() +T} T{ +Error string. +T} +_ +.TE +.sp +Attributes Summary +.TS +center; +|l|l|. +_ +T{ +\fI\%error_class\fP +T} T{ +Error class. +T} +_ +T{ +\fI\%error_code\fP +T} T{ +Error code. +T} +_ +T{ +\fI\%error_string\fP +T} T{ +Error string. +T} +_ +.TE +.sp +Methods Documentation +.INDENT 7.0 +.TP +.B Get_error_class() +Error class. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_error_code() +Error code. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.INDENT 7.0 +.TP +.B Get_error_string() +Error string. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.sp +Attributes Documentation +.INDENT 7.0 +.TP +.B error_class +Error class. +.UNINDENT +.INDENT 7.0 +.TP +.B error_code +Error code. +.UNINDENT +.INDENT 7.0 +.TP +.B error_string +Error string. +.UNINDENT +.UNINDENT +.sp +Functions +.TS +center; +|l|l|. +_ +T{ +\fI\%Add_error_class\fP() +T} T{ +Add an \fIerror class\fP to the known error classes. +T} +_ +T{ +\fI\%Add_error_code\fP(errorclass) +T} T{ +Add an \fIerror code\fP to an \fIerror class\fP\&. +T} +_ +T{ +\fI\%Add_error_string\fP(errorcode, string) +T} T{ +Associate an \fIerror string\fP with an \fIerror class\fP or \fIerror code\fP\&. +T} +_ +T{ +\fI\%Aint_add\fP(base, disp) +T} T{ +Return the sum of base address and displacement. +T} +_ +T{ +\fI\%Aint_diff\fP(addr1, addr2) +T} T{ +Return the difference between absolute addresses. +T} +_ +T{ +\fI\%Alloc_mem\fP(size[, info]) +T} T{ +Allocate memory for message passing and remote memory access. +T} +_ +T{ +\fI\%Attach_buffer\fP(buf) +T} T{ +Attach a user\-provided buffer for sending in buffered mode. +T} +_ +T{ +\fI\%Close_port\fP(port_name) +T} T{ +Close a port. +T} +_ +T{ +\fI\%Compute_dims\fP(nnodes, dims) +T} T{ +Return a balanced distribution of processes per coordinate direction. +T} +_ +T{ +\fI\%Detach_buffer\fP() +T} T{ +Remove an existing attached buffer. +T} +_ +T{ +\fI\%Finalize\fP() +T} T{ +Terminate the MPI execution environment. +T} +_ +T{ +\fI\%Flush_buffer\fP() +T} T{ +Block until all buffered messages have been transmitted. +T} +_ +T{ +\fI\%Free_mem\fP(mem) +T} T{ +Free memory allocated with \fI\%Alloc_mem\fP\&. +T} +_ +T{ +\fI\%Get_address\fP(location) +T} T{ +Get the address of a location in memory. +T} +_ +T{ +\fI\%Get_error_class\fP(errorcode) +T} T{ +Convert an \fIerror code\fP into an \fIerror class\fP\&. +T} +_ +T{ +\fI\%Get_error_string\fP(errorcode) +T} T{ +Return the \fIerror string\fP for a given \fIerror class\fP or \fIerror code\fP\&. +T} +_ +T{ +\fI\%Get_hw_resource_info\fP() +T} T{ +Obtain information about the hardware platform of the calling processor. +T} +_ +T{ +\fI\%Get_library_version\fP() +T} T{ +Obtain the version string of the MPI library. +T} +_ +T{ +\fI\%Get_processor_name\fP() +T} T{ +Obtain the name of the calling processor. +T} +_ +T{ +\fI\%Get_version\fP() +T} T{ +Obtain the version number of the MPI standard. +T} +_ +T{ +\fI\%Iflush_buffer\fP() +T} T{ +Nonblocking flush for buffered messages. +T} +_ +T{ +\fI\%Init\fP() +T} T{ +Initialize the MPI execution environment. +T} +_ +T{ +\fI\%Init_thread\fP([required]) +T} T{ +Initialize the MPI execution environment. +T} +_ +T{ +\fI\%Is_finalized\fP() +T} T{ +Indicate whether \fI\%Finalize\fP has completed. +T} +_ +T{ +\fI\%Is_initialized\fP() +T} T{ +Indicate whether \fI\%Init\fP has been called. +T} +_ +T{ +\fI\%Is_thread_main\fP() +T} T{ +Indicate whether this thread called \fI\%Init\fP or \fI\%Init_thread\fP\&. +T} +_ +T{ +\fI\%Lookup_name\fP(service_name[, info]) +T} T{ +Lookup a port name given a service name. +T} +_ +T{ +\fI\%Open_port\fP([info]) +T} T{ +Return an address used to connect group of processes. +T} +_ +T{ +\fI\%Pcontrol\fP(level) +T} T{ +Control profiling. +T} +_ +T{ +\fI\%Publish_name\fP(service_name, port_name[, info]) +T} T{ +Publish a service name. +T} +_ +T{ +\fI\%Query_thread\fP() +T} T{ +Return the level of thread support provided by the MPI library. +T} +_ +T{ +\fI\%Register_datarep\fP(datarep, read_fn, write_fn, ...) +T} T{ +Register user\-defined data representations. +T} +_ +T{ +\fI\%Remove_error_class\fP(errorclass) +T} T{ +Remove an \fIerror class\fP from the known error classes. +T} +_ +T{ +\fI\%Remove_error_code\fP(errorcode) +T} T{ +Remove an \fIerror code\fP from the known error codes. +T} +_ +T{ +\fI\%Remove_error_string\fP(errorcode) +T} T{ +Remove \fIerror string\fP association from \fIerror class\fP or \fIerror code\fP\&. +T} +_ +T{ +\fI\%Unpublish_name\fP(service_name, port_name[, info]) +T} T{ +Unpublish a service name. +T} +_ +T{ +\fI\%Wtick\fP() +T} T{ +Return the resolution of \fI\%Wtime\fP\&. +T} +_ +T{ +\fI\%Wtime\fP() +T} T{ +Return an elapsed time on the calling processor. +T} +_ +T{ +\fI\%get_vendor\fP() +T} T{ +Information about the underlying MPI implementation. +T} +_ +.TE +.SS mpi4py.MPI.Add_error_class +.INDENT 0.0 +.TP +.B mpi4py.MPI.Add_error_class() +Add an \fIerror class\fP to the known error classes. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Add_error_code +.INDENT 0.0 +.TP +.B mpi4py.MPI.Add_error_code(errorclass) +Add an \fIerror code\fP to an \fIerror class\fP\&. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorclass\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Add_error_string +.INDENT 0.0 +.TP +.B mpi4py.MPI.Add_error_string(errorcode, string) +Associate an \fIerror string\fP with an \fIerror class\fP or \fIerror code\fP\&. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBstring\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Aint_add +.INDENT 0.0 +.TP +.B mpi4py.MPI.Aint_add(base, disp) +Return the sum of base address and displacement. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBbase\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdisp\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Aint_diff +.INDENT 0.0 +.TP +.B mpi4py.MPI.Aint_diff(addr1, addr2) +Return the difference between absolute addresses. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBaddr1\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBaddr2\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Alloc_mem +.INDENT 0.0 +.TP +.B mpi4py.MPI.Alloc_mem(size, info=INFO_NULL) +Allocate memory for message passing and remote memory access. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBsize\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\fI\%buffer\fP +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Attach_buffer +.INDENT 0.0 +.TP +.B mpi4py.MPI.Attach_buffer(buf) +Attach a user\-provided buffer for sending in buffered mode. +.INDENT 7.0 +.TP +.B Parameters +\fBbuf\fP (\fI\%Buffer\fP\fI | \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Close_port +.INDENT 0.0 +.TP +.B mpi4py.MPI.Close_port(port_name) +Close a port. +.INDENT 7.0 +.TP +.B Parameters +\fBport_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Compute_dims +.INDENT 0.0 +.TP +.B mpi4py.MPI.Compute_dims(nnodes, dims) +Return a balanced distribution of processes per coordinate direction. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBnnodes\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.IP \(bu 2 +\fBdims\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI | \fP\X'tty: link https://docs.python.org/3/library/typing.html#typing.Sequence'\fI\%Sequence\fP\X'tty: link'\fI[\fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#list'\fI\%list\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Detach_buffer +.INDENT 0.0 +.TP +.B mpi4py.MPI.Detach_buffer() +Remove an existing attached buffer. +.INDENT 7.0 +.TP +.B Return type +\fI\%Buffer\fP | \X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Finalize +.INDENT 0.0 +.TP +.B mpi4py.MPI.Finalize() +Terminate the MPI execution environment. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Flush_buffer +.INDENT 0.0 +.TP +.B mpi4py.MPI.Flush_buffer() +Block until all buffered messages have been transmitted. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Free_mem +.INDENT 0.0 +.TP +.B mpi4py.MPI.Free_mem(mem) +Free memory allocated with \fI\%Alloc_mem\fP\&. +.INDENT 7.0 +.TP +.B Parameters +\fBmem\fP (\fI\%buffer\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_address +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_address(location) +Get the address of a location in memory. +.INDENT 7.0 +.TP +.B Parameters +\fBlocation\fP (\fI\%Buffer\fP\fI | \fP\fI\%Bottom\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_error_class +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_error_class(errorcode) +Convert an \fIerror code\fP into an \fIerror class\fP\&. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_error_string +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_error_string(errorcode) +Return the \fIerror string\fP for a given \fIerror class\fP or \fIerror code\fP\&. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_hw_resource_info +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_hw_resource_info() +Obtain information about the hardware platform of the calling processor. +.INDENT 7.0 +.TP +.B Return type +\fI\%Info\fP +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_library_version +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_library_version() +Obtain the version string of the MPI library. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_processor_name +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_processor_name() +Obtain the name of the calling processor. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Get_version +.INDENT 0.0 +.TP +.B mpi4py.MPI.Get_version() +Obtain the version number of the MPI standard. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'] +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Iflush_buffer +.INDENT 0.0 +.TP +.B mpi4py.MPI.Iflush_buffer() +Nonblocking flush for buffered messages. +.INDENT 7.0 +.TP +.B Return type +\fI\%Request\fP +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Init +.INDENT 0.0 +.TP +.B mpi4py.MPI.Init() +Initialize the MPI execution environment. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Init_thread +.INDENT 0.0 +.TP +.B mpi4py.MPI.Init_thread(required=THREAD_MULTIPLE) +Initialize the MPI execution environment. +.INDENT 7.0 +.TP +.B Parameters +\fBrequired\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Is_finalized +.INDENT 0.0 +.TP +.B mpi4py.MPI.Is_finalized() +Indicate whether \fI\%Finalize\fP has completed. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Is_initialized +.INDENT 0.0 +.TP +.B mpi4py.MPI.Is_initialized() +Indicate whether \fI\%Init\fP has been called. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Is_thread_main +.INDENT 0.0 +.TP +.B mpi4py.MPI.Is_thread_main() +Indicate whether this thread called \fI\%Init\fP or \fI\%Init_thread\fP\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#bool'\fI\%bool\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Lookup_name +.INDENT 0.0 +.TP +.B mpi4py.MPI.Lookup_name(service_name, info=INFO_NULL) +Lookup a port name given a service name. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBservice_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Open_port +.INDENT 0.0 +.TP +.B mpi4py.MPI.Open_port(info=INFO_NULL) +Return an address used to connect group of processes. +.INDENT 7.0 +.TP +.B Parameters +\fBinfo\fP (\fI\%Info\fP) +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Pcontrol +.INDENT 0.0 +.TP +.B mpi4py.MPI.Pcontrol(level) +Control profiling. +.INDENT 7.0 +.TP +.B Parameters +\fBlevel\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Publish_name +.INDENT 0.0 +.TP +.B mpi4py.MPI.Publish_name(service_name, port_name, info=INFO_NULL) +Publish a service name. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBservice_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBport_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Query_thread +.INDENT 0.0 +.TP +.B mpi4py.MPI.Query_thread() +Return the level of thread support provided by the MPI library. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Register_datarep +.INDENT 0.0 +.TP +.B mpi4py.MPI.Register_datarep(datarep, read_fn, write_fn, extent_fn) +Register user\-defined data representations. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBdatarep\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBread_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Buffer\fP\fI, \fP\fI\%Datatype\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\fI\%Buffer\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBwrite_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Buffer\fP\fI, \fP\fI\%Datatype\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI, \fP\fI\%Buffer\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link'\fI]\fP) +.IP \(bu 2 +\fBextent_fn\fP (\X'tty: link https://docs.python.org/3/library/typing.html#typing.Callable'\fI\%Callable\fP\X'tty: link'\fI[\fP\fI[\fP\fI\%Datatype\fP\fI]\fP\fI, \fP\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link'\fI]\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Remove_error_class +.INDENT 0.0 +.TP +.B mpi4py.MPI.Remove_error_class(errorclass) +Remove an \fIerror class\fP from the known error classes. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorclass\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Remove_error_code +.INDENT 0.0 +.TP +.B mpi4py.MPI.Remove_error_code(errorcode) +Remove an \fIerror code\fP from the known error codes. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Remove_error_string +.INDENT 0.0 +.TP +.B mpi4py.MPI.Remove_error_string(errorcode) +Remove \fIerror string\fP association from \fIerror class\fP or \fIerror code\fP\&. +.INDENT 7.0 +.TP +.B Parameters +\fBerrorcode\fP (\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link') +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Unpublish_name +.INDENT 0.0 +.TP +.B mpi4py.MPI.Unpublish_name(service_name, port_name, info=INFO_NULL) +Unpublish a service name. +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBservice_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBport_name\fP (\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link') +.IP \(bu 2 +\fBinfo\fP (\fI\%Info\fP) +.UNINDENT +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/constants.html#None'\fI\%None\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Wtick +.INDENT 0.0 +.TP +.B mpi4py.MPI.Wtick() +Return the resolution of \fI\%Wtime\fP\&. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#float'\fI\%float\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.Wtime +.INDENT 0.0 +.TP +.B mpi4py.MPI.Wtime() +Return an elapsed time on the calling processor. +.INDENT 7.0 +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/functions.html#float'\fI\%float\fP\X'tty: link' +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.get_vendor +.INDENT 0.0 +.TP +.B mpi4py.MPI.get_vendor() +Information about the underlying MPI implementation. +.INDENT 7.0 +.TP +.B Returns +.INDENT 7.0 +.IP \(bu 2 +string with the name of the MPI implementation. +.IP \(bu 2 +integer 3\-tuple version number \fB(major, minor, micro)\fP\&. +.UNINDENT + +.TP +.B Return type +\X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/stdtypes.html#str'\fI\%str\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/stdtypes.html#tuple'\fI\%tuple\fP\X'tty: link'[\X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link', \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link']] +.UNINDENT +.UNINDENT +.sp +Attributes +.TS +center; +|l|l|. +_ +T{ +\fI\%UNDEFINED\fP +T} T{ +Constant \fBUNDEFINED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ANY_SOURCE\fP +T} T{ +Constant \fBANY_SOURCE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ANY_TAG\fP +T} T{ +Constant \fBANY_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%PROC_NULL\fP +T} T{ +Constant \fBPROC_NULL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ROOT\fP +T} T{ +Constant \fBROOT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%BOTTOM\fP +T} T{ +Constant \fBBOTTOM\fP of type \fI\%BottomType\fP +T} +_ +T{ +\fI\%IN_PLACE\fP +T} T{ +Constant \fBIN_PLACE\fP of type \fI\%InPlaceType\fP +T} +_ +T{ +\fI\%KEYVAL_INVALID\fP +T} T{ +Constant \fBKEYVAL_INVALID\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TAG_UB\fP +T} T{ +Constant \fBTAG_UB\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%IO\fP +T} T{ +Constant \fBIO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WTIME_IS_GLOBAL\fP +T} T{ +Constant \fBWTIME_IS_GLOBAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%UNIVERSE_SIZE\fP +T} T{ +Constant \fBUNIVERSE_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%APPNUM\fP +T} T{ +Constant \fBAPPNUM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%LASTUSEDCODE\fP +T} T{ +Constant \fBLASTUSEDCODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_BASE\fP +T} T{ +Constant \fBWIN_BASE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_SIZE\fP +T} T{ +Constant \fBWIN_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_DISP_UNIT\fP +T} T{ +Constant \fBWIN_DISP_UNIT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_CREATE_FLAVOR\fP +T} T{ +Constant \fBWIN_CREATE_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR\fP +T} T{ +Constant \fBWIN_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_MODEL\fP +T} T{ +Constant \fBWIN_MODEL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SUCCESS\fP +T} T{ +Constant \fBSUCCESS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_LASTCODE\fP +T} T{ +Constant \fBERR_LASTCODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TYPE\fP +T} T{ +Constant \fBERR_TYPE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_REQUEST\fP +T} T{ +Constant \fBERR_REQUEST\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_OP\fP +T} T{ +Constant \fBERR_OP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_GROUP\fP +T} T{ +Constant \fBERR_GROUP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO\fP +T} T{ +Constant \fBERR_INFO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ERRHANDLER\fP +T} T{ +Constant \fBERR_ERRHANDLER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SESSION\fP +T} T{ +Constant \fBERR_SESSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_COMM\fP +T} T{ +Constant \fBERR_COMM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_WIN\fP +T} T{ +Constant \fBERR_WIN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_FILE\fP +T} T{ +Constant \fBERR_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_BUFFER\fP +T} T{ +Constant \fBERR_BUFFER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_COUNT\fP +T} T{ +Constant \fBERR_COUNT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TAG\fP +T} T{ +Constant \fBERR_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RANK\fP +T} T{ +Constant \fBERR_RANK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ROOT\fP +T} T{ +Constant \fBERR_ROOT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TRUNCATE\fP +T} T{ +Constant \fBERR_TRUNCATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_IN_STATUS\fP +T} T{ +Constant \fBERR_IN_STATUS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PENDING\fP +T} T{ +Constant \fBERR_PENDING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_TOPOLOGY\fP +T} T{ +Constant \fBERR_TOPOLOGY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_DIMS\fP +T} T{ +Constant \fBERR_DIMS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ARG\fP +T} T{ +Constant \fBERR_ARG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_OTHER\fP +T} T{ +Constant \fBERR_OTHER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_UNKNOWN\fP +T} T{ +Constant \fBERR_UNKNOWN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INTERN\fP +T} T{ +Constant \fBERR_INTERN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_KEYVAL\fP +T} T{ +Constant \fBERR_KEYVAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NO_MEM\fP +T} T{ +Constant \fBERR_NO_MEM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO_KEY\fP +T} T{ +Constant \fBERR_INFO_KEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO_VALUE\fP +T} T{ +Constant \fBERR_INFO_VALUE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_INFO_NOKEY\fP +T} T{ +Constant \fBERR_INFO_NOKEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SPAWN\fP +T} T{ +Constant \fBERR_SPAWN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PORT\fP +T} T{ +Constant \fBERR_PORT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SERVICE\fP +T} T{ +Constant \fBERR_SERVICE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NAME\fP +T} T{ +Constant \fBERR_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PROC_ABORTED\fP +T} T{ +Constant \fBERR_PROC_ABORTED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_BASE\fP +T} T{ +Constant \fBERR_BASE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_SIZE\fP +T} T{ +Constant \fBERR_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_DISP\fP +T} T{ +Constant \fBERR_DISP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ASSERT\fP +T} T{ +Constant \fBERR_ASSERT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_LOCKTYPE\fP +T} T{ +Constant \fBERR_LOCKTYPE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_CONFLICT\fP +T} T{ +Constant \fBERR_RMA_CONFLICT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_SYNC\fP +T} T{ +Constant \fBERR_RMA_SYNC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_RANGE\fP +T} T{ +Constant \fBERR_RMA_RANGE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_ATTACH\fP +T} T{ +Constant \fBERR_RMA_ATTACH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_SHARED\fP +T} T{ +Constant \fBERR_RMA_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_RMA_FLAVOR\fP +T} T{ +Constant \fBERR_RMA_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_BAD_FILE\fP +T} T{ +Constant \fBERR_BAD_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NO_SUCH_FILE\fP +T} T{ +Constant \fBERR_NO_SUCH_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_FILE_EXISTS\fP +T} T{ +Constant \fBERR_FILE_EXISTS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_FILE_IN_USE\fP +T} T{ +Constant \fBERR_FILE_IN_USE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_AMODE\fP +T} T{ +Constant \fBERR_AMODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_ACCESS\fP +T} T{ +Constant \fBERR_ACCESS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_READ_ONLY\fP +T} T{ +Constant \fBERR_READ_ONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NO_SPACE\fP +T} T{ +Constant \fBERR_NO_SPACE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_QUOTA\fP +T} T{ +Constant \fBERR_QUOTA\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_NOT_SAME\fP +T} T{ +Constant \fBERR_NOT_SAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_IO\fP +T} T{ +Constant \fBERR_IO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_UNSUPPORTED_OPERATION\fP +T} T{ +Constant \fBERR_UNSUPPORTED_OPERATION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_UNSUPPORTED_DATAREP\fP +T} T{ +Constant \fBERR_UNSUPPORTED_DATAREP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_CONVERSION\fP +T} T{ +Constant \fBERR_CONVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_DUP_DATAREP\fP +T} T{ +Constant \fBERR_DUP_DATAREP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_VALUE_TOO_LARGE\fP +T} T{ +Constant \fBERR_VALUE_TOO_LARGE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_REVOKED\fP +T} T{ +Constant \fBERR_REVOKED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PROC_FAILED\fP +T} T{ +Constant \fBERR_PROC_FAILED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ERR_PROC_FAILED_PENDING\fP +T} T{ +Constant \fBERR_PROC_FAILED_PENDING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ORDER_C\fP +T} T{ +Constant \fBORDER_C\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ORDER_FORTRAN\fP +T} T{ +Constant \fBORDER_FORTRAN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%ORDER_F\fP +T} T{ +Constant \fBORDER_F\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TYPECLASS_INTEGER\fP +T} T{ +Constant \fBTYPECLASS_INTEGER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TYPECLASS_REAL\fP +T} T{ +Constant \fBTYPECLASS_REAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%TYPECLASS_COMPLEX\fP +T} T{ +Constant \fBTYPECLASS_COMPLEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_NONE\fP +T} T{ +Constant \fBDISTRIBUTE_NONE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_BLOCK\fP +T} T{ +Constant \fBDISTRIBUTE_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_CYCLIC\fP +T} T{ +Constant \fBDISTRIBUTE_CYCLIC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISTRIBUTE_DFLT_DARG\fP +T} T{ +Constant \fBDISTRIBUTE_DFLT_DARG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_NAMED\fP +T} T{ +Constant \fBCOMBINER_NAMED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_DUP\fP +T} T{ +Constant \fBCOMBINER_DUP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_CONTIGUOUS\fP +T} T{ +Constant \fBCOMBINER_CONTIGUOUS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_VECTOR\fP +T} T{ +Constant \fBCOMBINER_VECTOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_HVECTOR\fP +T} T{ +Constant \fBCOMBINER_HVECTOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_INDEXED\fP +T} T{ +Constant \fBCOMBINER_INDEXED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_HINDEXED\fP +T} T{ +Constant \fBCOMBINER_HINDEXED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_INDEXED_BLOCK\fP +T} T{ +Constant \fBCOMBINER_INDEXED_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_HINDEXED_BLOCK\fP +T} T{ +Constant \fBCOMBINER_HINDEXED_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_STRUCT\fP +T} T{ +Constant \fBCOMBINER_STRUCT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_SUBARRAY\fP +T} T{ +Constant \fBCOMBINER_SUBARRAY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_DARRAY\fP +T} T{ +Constant \fBCOMBINER_DARRAY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_RESIZED\fP +T} T{ +Constant \fBCOMBINER_RESIZED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_VALUE_INDEX\fP +T} T{ +Constant \fBCOMBINER_VALUE_INDEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_F90_INTEGER\fP +T} T{ +Constant \fBCOMBINER_F90_INTEGER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_F90_REAL\fP +T} T{ +Constant \fBCOMBINER_F90_REAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMBINER_F90_COMPLEX\fP +T} T{ +Constant \fBCOMBINER_F90_COMPLEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%F_SOURCE\fP +T} T{ +Constant \fBF_SOURCE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%F_TAG\fP +T} T{ +Constant \fBF_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%F_ERROR\fP +T} T{ +Constant \fBF_ERROR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%F_STATUS_SIZE\fP +T} T{ +Constant \fBF_STATUS_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%IDENT\fP +T} T{ +Constant \fBIDENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%CONGRUENT\fP +T} T{ +Constant \fBCONGRUENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SIMILAR\fP +T} T{ +Constant \fBSIMILAR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%UNEQUAL\fP +T} T{ +Constant \fBUNEQUAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%CART\fP +T} T{ +Constant \fBCART\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%GRAPH\fP +T} T{ +Constant \fBGRAPH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DIST_GRAPH\fP +T} T{ +Constant \fBDIST_GRAPH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%UNWEIGHTED\fP +T} T{ +Constant \fBUNWEIGHTED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WEIGHTS_EMPTY\fP +T} T{ +Constant \fBWEIGHTS_EMPTY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMM_TYPE_SHARED\fP +T} T{ +Constant \fBCOMM_TYPE_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMM_TYPE_HW_GUIDED\fP +T} T{ +Constant \fBCOMM_TYPE_HW_GUIDED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMM_TYPE_HW_UNGUIDED\fP +T} T{ +Constant \fBCOMM_TYPE_HW_UNGUIDED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%COMM_TYPE_RESOURCE_GUIDED\fP +T} T{ +Constant \fBCOMM_TYPE_RESOURCE_GUIDED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%BSEND_OVERHEAD\fP +T} T{ +Constant \fBBSEND_OVERHEAD\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%BUFFER_AUTOMATIC\fP +T} T{ +Constant \fBBUFFER_AUTOMATIC\fP of type \fI\%BufferAutomaticType\fP +T} +_ +T{ +\fI\%WIN_FLAVOR_CREATE\fP +T} T{ +Constant \fBWIN_FLAVOR_CREATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_ALLOCATE\fP +T} T{ +Constant \fBWIN_FLAVOR_ALLOCATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_DYNAMIC\fP +T} T{ +Constant \fBWIN_FLAVOR_DYNAMIC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_FLAVOR_SHARED\fP +T} T{ +Constant \fBWIN_FLAVOR_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_SEPARATE\fP +T} T{ +Constant \fBWIN_SEPARATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%WIN_UNIFIED\fP +T} T{ +Constant \fBWIN_UNIFIED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOCHECK\fP +T} T{ +Constant \fBMODE_NOCHECK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOSTORE\fP +T} T{ +Constant \fBMODE_NOSTORE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOPUT\fP +T} T{ +Constant \fBMODE_NOPUT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOPRECEDE\fP +T} T{ +Constant \fBMODE_NOPRECEDE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_NOSUCCEED\fP +T} T{ +Constant \fBMODE_NOSUCCEED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%LOCK_EXCLUSIVE\fP +T} T{ +Constant \fBLOCK_EXCLUSIVE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%LOCK_SHARED\fP +T} T{ +Constant \fBLOCK_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_RDONLY\fP +T} T{ +Constant \fBMODE_RDONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_WRONLY\fP +T} T{ +Constant \fBMODE_WRONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_RDWR\fP +T} T{ +Constant \fBMODE_RDWR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_CREATE\fP +T} T{ +Constant \fBMODE_CREATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_EXCL\fP +T} T{ +Constant \fBMODE_EXCL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_DELETE_ON_CLOSE\fP +T} T{ +Constant \fBMODE_DELETE_ON_CLOSE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_UNIQUE_OPEN\fP +T} T{ +Constant \fBMODE_UNIQUE_OPEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_SEQUENTIAL\fP +T} T{ +Constant \fBMODE_SEQUENTIAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MODE_APPEND\fP +T} T{ +Constant \fBMODE_APPEND\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SEEK_SET\fP +T} T{ +Constant \fBSEEK_SET\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SEEK_CUR\fP +T} T{ +Constant \fBSEEK_CUR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SEEK_END\fP +T} T{ +Constant \fBSEEK_END\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISPLACEMENT_CURRENT\fP +T} T{ +Constant \fBDISPLACEMENT_CURRENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DISP_CUR\fP +T} T{ +Constant \fBDISP_CUR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_SINGLE\fP +T} T{ +Constant \fBTHREAD_SINGLE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_FUNNELED\fP +T} T{ +Constant \fBTHREAD_FUNNELED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_SERIALIZED\fP +T} T{ +Constant \fBTHREAD_SERIALIZED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%THREAD_MULTIPLE\fP +T} T{ +Constant \fBTHREAD_MULTIPLE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%VERSION\fP +T} T{ +Constant \fBVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%SUBVERSION\fP +T} T{ +Constant \fBSUBVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_PROCESSOR_NAME\fP +T} T{ +Constant \fBMAX_PROCESSOR_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_ERROR_STRING\fP +T} T{ +Constant \fBMAX_ERROR_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_PORT_NAME\fP +T} T{ +Constant \fBMAX_PORT_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_INFO_KEY\fP +T} T{ +Constant \fBMAX_INFO_KEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_INFO_VAL\fP +T} T{ +Constant \fBMAX_INFO_VAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_OBJECT_NAME\fP +T} T{ +Constant \fBMAX_OBJECT_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_DATAREP_STRING\fP +T} T{ +Constant \fBMAX_DATAREP_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_LIBRARY_VERSION_STRING\fP +T} T{ +Constant \fBMAX_LIBRARY_VERSION_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_PSET_NAME_LEN\fP +T} T{ +Constant \fBMAX_PSET_NAME_LEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%MAX_STRINGTAG_LEN\fP +T} T{ +Constant \fBMAX_STRINGTAG_LEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +T} +_ +T{ +\fI\%DATATYPE_NULL\fP +T} T{ +Object \fBDATATYPE_NULL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%PACKED\fP +T} T{ +Object \fBPACKED\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%BYTE\fP +T} T{ +Object \fBBYTE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%AINT\fP +T} T{ +Object \fBAINT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%OFFSET\fP +T} T{ +Object \fBOFFSET\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COUNT\fP +T} T{ +Object \fBCOUNT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CHAR\fP +T} T{ +Object \fBCHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%WCHAR\fP +T} T{ +Object \fBWCHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_CHAR\fP +T} T{ +Object \fBSIGNED_CHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SHORT\fP +T} T{ +Object \fBSHORT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT\fP +T} T{ +Object \fBINT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG\fP +T} T{ +Object \fBLONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_LONG\fP +T} T{ +Object \fBLONG_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_CHAR\fP +T} T{ +Object \fBUNSIGNED_CHAR\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_SHORT\fP +T} T{ +Object \fBUNSIGNED_SHORT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED\fP +T} T{ +Object \fBUNSIGNED\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_LONG\fP +T} T{ +Object \fBUNSIGNED_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_LONG_LONG\fP +T} T{ +Object \fBUNSIGNED_LONG_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%FLOAT\fP +T} T{ +Object \fBFLOAT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE\fP +T} T{ +Object \fBDOUBLE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_DOUBLE\fP +T} T{ +Object \fBLONG_DOUBLE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_BOOL\fP +T} T{ +Object \fBC_BOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT8_T\fP +T} T{ +Object \fBINT8_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT16_T\fP +T} T{ +Object \fBINT16_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT32_T\fP +T} T{ +Object \fBINT32_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT64_T\fP +T} T{ +Object \fBINT64_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT8_T\fP +T} T{ +Object \fBUINT8_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT16_T\fP +T} T{ +Object \fBUINT16_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT32_T\fP +T} T{ +Object \fBUINT32_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UINT64_T\fP +T} T{ +Object \fBUINT64_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_COMPLEX\fP +T} T{ +Object \fBC_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_FLOAT_COMPLEX\fP +T} T{ +Object \fBC_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_DOUBLE_COMPLEX\fP +T} T{ +Object \fBC_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%C_LONG_DOUBLE_COMPLEX\fP +T} T{ +Object \fBC_LONG_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_BOOL\fP +T} T{ +Object \fBCXX_BOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_FLOAT_COMPLEX\fP +T} T{ +Object \fBCXX_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_DOUBLE_COMPLEX\fP +T} T{ +Object \fBCXX_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CXX_LONG_DOUBLE_COMPLEX\fP +T} T{ +Object \fBCXX_LONG_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SHORT_INT\fP +T} T{ +Object \fBSHORT_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INT_INT\fP +T} T{ +Object \fBINT_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%TWOINT\fP +T} T{ +Object \fBTWOINT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_INT\fP +T} T{ +Object \fBLONG_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%FLOAT_INT\fP +T} T{ +Object \fBFLOAT_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE_INT\fP +T} T{ +Object \fBDOUBLE_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LONG_DOUBLE_INT\fP +T} T{ +Object \fBLONG_DOUBLE_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%CHARACTER\fP +T} T{ +Object \fBCHARACTER\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL\fP +T} T{ +Object \fBLOGICAL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER\fP +T} T{ +Object \fBINTEGER\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL\fP +T} T{ +Object \fBREAL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE_PRECISION\fP +T} T{ +Object \fBDOUBLE_PRECISION\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX\fP +T} T{ +Object \fBCOMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%DOUBLE_COMPLEX\fP +T} T{ +Object \fBDOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL1\fP +T} T{ +Object \fBLOGICAL1\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL2\fP +T} T{ +Object \fBLOGICAL2\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL4\fP +T} T{ +Object \fBLOGICAL4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%LOGICAL8\fP +T} T{ +Object \fBLOGICAL8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER1\fP +T} T{ +Object \fBINTEGER1\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER2\fP +T} T{ +Object \fBINTEGER2\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER4\fP +T} T{ +Object \fBINTEGER4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER8\fP +T} T{ +Object \fBINTEGER8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%INTEGER16\fP +T} T{ +Object \fBINTEGER16\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL2\fP +T} T{ +Object \fBREAL2\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL4\fP +T} T{ +Object \fBREAL4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL8\fP +T} T{ +Object \fBREAL8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REAL16\fP +T} T{ +Object \fBREAL16\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX4\fP +T} T{ +Object \fBCOMPLEX4\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX8\fP +T} T{ +Object \fBCOMPLEX8\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX16\fP +T} T{ +Object \fBCOMPLEX16\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%COMPLEX32\fP +T} T{ +Object \fBCOMPLEX32\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%UNSIGNED_INT\fP +T} T{ +Object \fBUNSIGNED_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_SHORT\fP +T} T{ +Object \fBSIGNED_SHORT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_INT\fP +T} T{ +Object \fBSIGNED_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_LONG\fP +T} T{ +Object \fBSIGNED_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SIGNED_LONG_LONG\fP +T} T{ +Object \fBSIGNED_LONG_LONG\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%BOOL\fP +T} T{ +Object \fBBOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT8_T\fP +T} T{ +Object \fBSINT8_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT16_T\fP +T} T{ +Object \fBSINT16_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT32_T\fP +T} T{ +Object \fBSINT32_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%SINT64_T\fP +T} T{ +Object \fBSINT64_T\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_BOOL\fP +T} T{ +Object \fBF_BOOL\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_INT\fP +T} T{ +Object \fBF_INT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_FLOAT\fP +T} T{ +Object \fBF_FLOAT\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_DOUBLE\fP +T} T{ +Object \fBF_DOUBLE\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_COMPLEX\fP +T} T{ +Object \fBF_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_FLOAT_COMPLEX\fP +T} T{ +Object \fBF_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%F_DOUBLE_COMPLEX\fP +T} T{ +Object \fBF_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +T} +_ +T{ +\fI\%REQUEST_NULL\fP +T} T{ +Object \fBREQUEST_NULL\fP of type \fI\%Request\fP +T} +_ +T{ +\fI\%MESSAGE_NULL\fP +T} T{ +Object \fBMESSAGE_NULL\fP of type \fI\%Message\fP +T} +_ +T{ +\fI\%MESSAGE_NO_PROC\fP +T} T{ +Object \fBMESSAGE_NO_PROC\fP of type \fI\%Message\fP +T} +_ +T{ +\fI\%OP_NULL\fP +T} T{ +Object \fBOP_NULL\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MAX\fP +T} T{ +Object \fBMAX\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MIN\fP +T} T{ +Object \fBMIN\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%SUM\fP +T} T{ +Object \fBSUM\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%PROD\fP +T} T{ +Object \fBPROD\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%LAND\fP +T} T{ +Object \fBLAND\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%BAND\fP +T} T{ +Object \fBBAND\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%LOR\fP +T} T{ +Object \fBLOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%BOR\fP +T} T{ +Object \fBBOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%LXOR\fP +T} T{ +Object \fBLXOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%BXOR\fP +T} T{ +Object \fBBXOR\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MAXLOC\fP +T} T{ +Object \fBMAXLOC\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%MINLOC\fP +T} T{ +Object \fBMINLOC\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%REPLACE\fP +T} T{ +Object \fBREPLACE\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%NO_OP\fP +T} T{ +Object \fBNO_OP\fP of type \fI\%Op\fP +T} +_ +T{ +\fI\%GROUP_NULL\fP +T} T{ +Object \fBGROUP_NULL\fP of type \fI\%Group\fP +T} +_ +T{ +\fI\%GROUP_EMPTY\fP +T} T{ +Object \fBGROUP_EMPTY\fP of type \fI\%Group\fP +T} +_ +T{ +\fI\%INFO_NULL\fP +T} T{ +Object \fBINFO_NULL\fP of type \fI\%Info\fP +T} +_ +T{ +\fI\%INFO_ENV\fP +T} T{ +Object \fBINFO_ENV\fP of type \fI\%Info\fP +T} +_ +T{ +\fI\%ERRHANDLER_NULL\fP +T} T{ +Object \fBERRHANDLER_NULL\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%ERRORS_RETURN\fP +T} T{ +Object \fBERRORS_RETURN\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%ERRORS_ABORT\fP +T} T{ +Object \fBERRORS_ABORT\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%ERRORS_ARE_FATAL\fP +T} T{ +Object \fBERRORS_ARE_FATAL\fP of type \fI\%Errhandler\fP +T} +_ +T{ +\fI\%SESSION_NULL\fP +T} T{ +Object \fBSESSION_NULL\fP of type \fI\%Session\fP +T} +_ +T{ +\fI\%COMM_NULL\fP +T} T{ +Object \fBCOMM_NULL\fP of type \fI\%Comm\fP +T} +_ +T{ +\fI\%COMM_SELF\fP +T} T{ +Object \fBCOMM_SELF\fP of type \fI\%Intracomm\fP +T} +_ +T{ +\fI\%COMM_WORLD\fP +T} T{ +Object \fBCOMM_WORLD\fP of type \fI\%Intracomm\fP +T} +_ +T{ +\fI\%WIN_NULL\fP +T} T{ +Object \fBWIN_NULL\fP of type \fI\%Win\fP +T} +_ +T{ +\fI\%FILE_NULL\fP +T} T{ +Object \fBFILE_NULL\fP of type \fI\%File\fP +T} +_ +T{ +\fI\%pickle\fP +T} T{ +Object \fBpickle\fP of type \fI\%Pickle\fP +T} +_ +.TE +.SS mpi4py.MPI.UNDEFINED +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNDEFINED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = UNDEFINED +Constant \fBUNDEFINED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ANY_SOURCE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ANY_SOURCE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ANY_SOURCE +Constant \fBANY_SOURCE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ANY_TAG +.INDENT 0.0 +.TP +.B mpi4py.MPI.ANY_TAG: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ANY_TAG +Constant \fBANY_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.PROC_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.PROC_NULL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = PROC_NULL +Constant \fBPROC_NULL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ROOT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ROOT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ROOT +Constant \fBROOT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.BOTTOM +.INDENT 0.0 +.TP +.B mpi4py.MPI.BOTTOM: \fI\%BottomType\fP = BOTTOM +Constant \fBBOTTOM\fP of type \fI\%BottomType\fP +.UNINDENT +.SS mpi4py.MPI.IN_PLACE +.INDENT 0.0 +.TP +.B mpi4py.MPI.IN_PLACE: \fI\%InPlaceType\fP = IN_PLACE +Constant \fBIN_PLACE\fP of type \fI\%InPlaceType\fP +.UNINDENT +.SS mpi4py.MPI.KEYVAL_INVALID +.INDENT 0.0 +.TP +.B mpi4py.MPI.KEYVAL_INVALID: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = KEYVAL_INVALID +Constant \fBKEYVAL_INVALID\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.TAG_UB +.INDENT 0.0 +.TP +.B mpi4py.MPI.TAG_UB: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = TAG_UB +Constant \fBTAG_UB\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.IO +.INDENT 0.0 +.TP +.B mpi4py.MPI.IO: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = IO +Constant \fBIO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WTIME_IS_GLOBAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.WTIME_IS_GLOBAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WTIME_IS_GLOBAL +Constant \fBWTIME_IS_GLOBAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.UNIVERSE_SIZE +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNIVERSE_SIZE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = UNIVERSE_SIZE +Constant \fBUNIVERSE_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.APPNUM +.INDENT 0.0 +.TP +.B mpi4py.MPI.APPNUM: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = APPNUM +Constant \fBAPPNUM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.LASTUSEDCODE +.INDENT 0.0 +.TP +.B mpi4py.MPI.LASTUSEDCODE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = LASTUSEDCODE +Constant \fBLASTUSEDCODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_BASE +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_BASE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_BASE +Constant \fBWIN_BASE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_SIZE +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_SIZE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_SIZE +Constant \fBWIN_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_DISP_UNIT +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_DISP_UNIT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_DISP_UNIT +Constant \fBWIN_DISP_UNIT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_CREATE_FLAVOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_CREATE_FLAVOR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_CREATE_FLAVOR +Constant \fBWIN_CREATE_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_FLAVOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_FLAVOR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_FLAVOR +Constant \fBWIN_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_MODEL +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_MODEL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_MODEL +Constant \fBWIN_MODEL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.SUCCESS +.INDENT 0.0 +.TP +.B mpi4py.MPI.SUCCESS: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = SUCCESS +Constant \fBSUCCESS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_LASTCODE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_LASTCODE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_LASTCODE +Constant \fBERR_LASTCODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_TYPE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_TYPE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_TYPE +Constant \fBERR_TYPE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_REQUEST +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_REQUEST: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_REQUEST +Constant \fBERR_REQUEST\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_OP +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_OP: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_OP +Constant \fBERR_OP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_GROUP +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_GROUP: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_GROUP +Constant \fBERR_GROUP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_INFO +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_INFO: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_INFO +Constant \fBERR_INFO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_ERRHANDLER +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_ERRHANDLER: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_ERRHANDLER +Constant \fBERR_ERRHANDLER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_SESSION +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_SESSION: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_SESSION +Constant \fBERR_SESSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_COMM +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_COMM: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_COMM +Constant \fBERR_COMM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_WIN +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_WIN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_WIN +Constant \fBERR_WIN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_FILE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_FILE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_FILE +Constant \fBERR_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_BUFFER +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_BUFFER: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_BUFFER +Constant \fBERR_BUFFER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_COUNT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_COUNT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_COUNT +Constant \fBERR_COUNT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_TAG +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_TAG: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_TAG +Constant \fBERR_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RANK +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RANK: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RANK +Constant \fBERR_RANK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_ROOT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_ROOT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_ROOT +Constant \fBERR_ROOT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_TRUNCATE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_TRUNCATE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_TRUNCATE +Constant \fBERR_TRUNCATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_IN_STATUS +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_IN_STATUS: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_IN_STATUS +Constant \fBERR_IN_STATUS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_PENDING +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_PENDING: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_PENDING +Constant \fBERR_PENDING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_TOPOLOGY +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_TOPOLOGY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_TOPOLOGY +Constant \fBERR_TOPOLOGY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_DIMS +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_DIMS: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_DIMS +Constant \fBERR_DIMS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_ARG +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_ARG: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_ARG +Constant \fBERR_ARG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_OTHER +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_OTHER: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_OTHER +Constant \fBERR_OTHER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_UNKNOWN +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_UNKNOWN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_UNKNOWN +Constant \fBERR_UNKNOWN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_INTERN +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_INTERN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_INTERN +Constant \fBERR_INTERN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_KEYVAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_KEYVAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_KEYVAL +Constant \fBERR_KEYVAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_NO_MEM +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_NO_MEM: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_NO_MEM +Constant \fBERR_NO_MEM\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_INFO_KEY +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_INFO_KEY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_INFO_KEY +Constant \fBERR_INFO_KEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_INFO_VALUE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_INFO_VALUE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_INFO_VALUE +Constant \fBERR_INFO_VALUE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_INFO_NOKEY +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_INFO_NOKEY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_INFO_NOKEY +Constant \fBERR_INFO_NOKEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_SPAWN +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_SPAWN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_SPAWN +Constant \fBERR_SPAWN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_PORT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_PORT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_PORT +Constant \fBERR_PORT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_SERVICE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_SERVICE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_SERVICE +Constant \fBERR_SERVICE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_NAME +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_NAME: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_NAME +Constant \fBERR_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_PROC_ABORTED +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_PROC_ABORTED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_PROC_ABORTED +Constant \fBERR_PROC_ABORTED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_BASE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_BASE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_BASE +Constant \fBERR_BASE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_SIZE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_SIZE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_SIZE +Constant \fBERR_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_DISP +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_DISP: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_DISP +Constant \fBERR_DISP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_ASSERT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_ASSERT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_ASSERT +Constant \fBERR_ASSERT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_LOCKTYPE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_LOCKTYPE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_LOCKTYPE +Constant \fBERR_LOCKTYPE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RMA_CONFLICT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RMA_CONFLICT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RMA_CONFLICT +Constant \fBERR_RMA_CONFLICT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RMA_SYNC +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RMA_SYNC: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RMA_SYNC +Constant \fBERR_RMA_SYNC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RMA_RANGE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RMA_RANGE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RMA_RANGE +Constant \fBERR_RMA_RANGE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RMA_ATTACH +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RMA_ATTACH: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RMA_ATTACH +Constant \fBERR_RMA_ATTACH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RMA_SHARED +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RMA_SHARED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RMA_SHARED +Constant \fBERR_RMA_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_RMA_FLAVOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_RMA_FLAVOR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_RMA_FLAVOR +Constant \fBERR_RMA_FLAVOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_BAD_FILE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_BAD_FILE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_BAD_FILE +Constant \fBERR_BAD_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_NO_SUCH_FILE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_NO_SUCH_FILE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_NO_SUCH_FILE +Constant \fBERR_NO_SUCH_FILE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_FILE_EXISTS +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_FILE_EXISTS: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_FILE_EXISTS +Constant \fBERR_FILE_EXISTS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_FILE_IN_USE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_FILE_IN_USE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_FILE_IN_USE +Constant \fBERR_FILE_IN_USE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_AMODE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_AMODE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_AMODE +Constant \fBERR_AMODE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_ACCESS +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_ACCESS: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_ACCESS +Constant \fBERR_ACCESS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_READ_ONLY +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_READ_ONLY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_READ_ONLY +Constant \fBERR_READ_ONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_NO_SPACE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_NO_SPACE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_NO_SPACE +Constant \fBERR_NO_SPACE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_QUOTA +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_QUOTA: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_QUOTA +Constant \fBERR_QUOTA\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_NOT_SAME +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_NOT_SAME: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_NOT_SAME +Constant \fBERR_NOT_SAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_IO +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_IO: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_IO +Constant \fBERR_IO\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_UNSUPPORTED_OPERATION +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_UNSUPPORTED_OPERATION: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_UNSUPPORTED_OPERATION +Constant \fBERR_UNSUPPORTED_OPERATION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_UNSUPPORTED_DATAREP +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_UNSUPPORTED_DATAREP: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_UNSUPPORTED_DATAREP +Constant \fBERR_UNSUPPORTED_DATAREP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_CONVERSION +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_CONVERSION: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_CONVERSION +Constant \fBERR_CONVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_DUP_DATAREP +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_DUP_DATAREP: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_DUP_DATAREP +Constant \fBERR_DUP_DATAREP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_VALUE_TOO_LARGE +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_VALUE_TOO_LARGE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_VALUE_TOO_LARGE +Constant \fBERR_VALUE_TOO_LARGE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_REVOKED +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_REVOKED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_REVOKED +Constant \fBERR_REVOKED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_PROC_FAILED +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_PROC_FAILED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_PROC_FAILED +Constant \fBERR_PROC_FAILED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ERR_PROC_FAILED_PENDING +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERR_PROC_FAILED_PENDING: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ERR_PROC_FAILED_PENDING +Constant \fBERR_PROC_FAILED_PENDING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ORDER_C +.INDENT 0.0 +.TP +.B mpi4py.MPI.ORDER_C: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ORDER_C +Constant \fBORDER_C\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ORDER_FORTRAN +.INDENT 0.0 +.TP +.B mpi4py.MPI.ORDER_FORTRAN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ORDER_FORTRAN +Constant \fBORDER_FORTRAN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.ORDER_F +.INDENT 0.0 +.TP +.B mpi4py.MPI.ORDER_F: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = ORDER_F +Constant \fBORDER_F\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.TYPECLASS_INTEGER +.INDENT 0.0 +.TP +.B mpi4py.MPI.TYPECLASS_INTEGER: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = TYPECLASS_INTEGER +Constant \fBTYPECLASS_INTEGER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.TYPECLASS_REAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.TYPECLASS_REAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = TYPECLASS_REAL +Constant \fBTYPECLASS_REAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.TYPECLASS_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.TYPECLASS_COMPLEX: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = TYPECLASS_COMPLEX +Constant \fBTYPECLASS_COMPLEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DISTRIBUTE_NONE +.INDENT 0.0 +.TP +.B mpi4py.MPI.DISTRIBUTE_NONE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DISTRIBUTE_NONE +Constant \fBDISTRIBUTE_NONE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DISTRIBUTE_BLOCK +.INDENT 0.0 +.TP +.B mpi4py.MPI.DISTRIBUTE_BLOCK: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DISTRIBUTE_BLOCK +Constant \fBDISTRIBUTE_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DISTRIBUTE_CYCLIC +.INDENT 0.0 +.TP +.B mpi4py.MPI.DISTRIBUTE_CYCLIC: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DISTRIBUTE_CYCLIC +Constant \fBDISTRIBUTE_CYCLIC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DISTRIBUTE_DFLT_DARG +.INDENT 0.0 +.TP +.B mpi4py.MPI.DISTRIBUTE_DFLT_DARG: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DISTRIBUTE_DFLT_DARG +Constant \fBDISTRIBUTE_DFLT_DARG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_NAMED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_NAMED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_NAMED +Constant \fBCOMBINER_NAMED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_DUP +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_DUP: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_DUP +Constant \fBCOMBINER_DUP\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_CONTIGUOUS +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_CONTIGUOUS: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_CONTIGUOUS +Constant \fBCOMBINER_CONTIGUOUS\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_VECTOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_VECTOR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_VECTOR +Constant \fBCOMBINER_VECTOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_HVECTOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_HVECTOR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_HVECTOR +Constant \fBCOMBINER_HVECTOR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_INDEXED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_INDEXED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_INDEXED +Constant \fBCOMBINER_INDEXED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_HINDEXED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_HINDEXED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_HINDEXED +Constant \fBCOMBINER_HINDEXED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_INDEXED_BLOCK +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_INDEXED_BLOCK: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_INDEXED_BLOCK +Constant \fBCOMBINER_INDEXED_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_HINDEXED_BLOCK +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_HINDEXED_BLOCK: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_HINDEXED_BLOCK +Constant \fBCOMBINER_HINDEXED_BLOCK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_STRUCT +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_STRUCT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_STRUCT +Constant \fBCOMBINER_STRUCT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_SUBARRAY +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_SUBARRAY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_SUBARRAY +Constant \fBCOMBINER_SUBARRAY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_DARRAY +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_DARRAY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_DARRAY +Constant \fBCOMBINER_DARRAY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_RESIZED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_RESIZED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_RESIZED +Constant \fBCOMBINER_RESIZED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_VALUE_INDEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_VALUE_INDEX: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_VALUE_INDEX +Constant \fBCOMBINER_VALUE_INDEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_F90_INTEGER +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_F90_INTEGER: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_F90_INTEGER +Constant \fBCOMBINER_F90_INTEGER\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_F90_REAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_F90_REAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_F90_REAL +Constant \fBCOMBINER_F90_REAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMBINER_F90_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMBINER_F90_COMPLEX: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMBINER_F90_COMPLEX +Constant \fBCOMBINER_F90_COMPLEX\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.F_SOURCE +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_SOURCE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = F_SOURCE +Constant \fBF_SOURCE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.F_TAG +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_TAG: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = F_TAG +Constant \fBF_TAG\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.F_ERROR +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_ERROR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = F_ERROR +Constant \fBF_ERROR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.F_STATUS_SIZE +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_STATUS_SIZE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = F_STATUS_SIZE +Constant \fBF_STATUS_SIZE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.IDENT +.INDENT 0.0 +.TP +.B mpi4py.MPI.IDENT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = IDENT +Constant \fBIDENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.CONGRUENT +.INDENT 0.0 +.TP +.B mpi4py.MPI.CONGRUENT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = CONGRUENT +Constant \fBCONGRUENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.SIMILAR +.INDENT 0.0 +.TP +.B mpi4py.MPI.SIMILAR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = SIMILAR +Constant \fBSIMILAR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.UNEQUAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNEQUAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = UNEQUAL +Constant \fBUNEQUAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.CART +.INDENT 0.0 +.TP +.B mpi4py.MPI.CART: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = CART +Constant \fBCART\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.GRAPH +.INDENT 0.0 +.TP +.B mpi4py.MPI.GRAPH: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = GRAPH +Constant \fBGRAPH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DIST_GRAPH +.INDENT 0.0 +.TP +.B mpi4py.MPI.DIST_GRAPH: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DIST_GRAPH +Constant \fBDIST_GRAPH\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.UNWEIGHTED +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNWEIGHTED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = UNWEIGHTED +Constant \fBUNWEIGHTED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WEIGHTS_EMPTY +.INDENT 0.0 +.TP +.B mpi4py.MPI.WEIGHTS_EMPTY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WEIGHTS_EMPTY +Constant \fBWEIGHTS_EMPTY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMM_TYPE_SHARED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_TYPE_SHARED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMM_TYPE_SHARED +Constant \fBCOMM_TYPE_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMM_TYPE_HW_GUIDED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_TYPE_HW_GUIDED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMM_TYPE_HW_GUIDED +Constant \fBCOMM_TYPE_HW_GUIDED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMM_TYPE_HW_UNGUIDED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_TYPE_HW_UNGUIDED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMM_TYPE_HW_UNGUIDED +Constant \fBCOMM_TYPE_HW_UNGUIDED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = COMM_TYPE_RESOURCE_GUIDED +Constant \fBCOMM_TYPE_RESOURCE_GUIDED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.BSEND_OVERHEAD +.INDENT 0.0 +.TP +.B mpi4py.MPI.BSEND_OVERHEAD: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = BSEND_OVERHEAD +Constant \fBBSEND_OVERHEAD\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.BUFFER_AUTOMATIC +.INDENT 0.0 +.TP +.B mpi4py.MPI.BUFFER_AUTOMATIC: \fI\%BufferAutomaticType\fP = BUFFER_AUTOMATIC +Constant \fBBUFFER_AUTOMATIC\fP of type \fI\%BufferAutomaticType\fP +.UNINDENT +.SS mpi4py.MPI.WIN_FLAVOR_CREATE +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_FLAVOR_CREATE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_FLAVOR_CREATE +Constant \fBWIN_FLAVOR_CREATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_FLAVOR_ALLOCATE +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_FLAVOR_ALLOCATE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_FLAVOR_ALLOCATE +Constant \fBWIN_FLAVOR_ALLOCATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_FLAVOR_DYNAMIC +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_FLAVOR_DYNAMIC: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_FLAVOR_DYNAMIC +Constant \fBWIN_FLAVOR_DYNAMIC\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_FLAVOR_SHARED +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_FLAVOR_SHARED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_FLAVOR_SHARED +Constant \fBWIN_FLAVOR_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_SEPARATE +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_SEPARATE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_SEPARATE +Constant \fBWIN_SEPARATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.WIN_UNIFIED +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_UNIFIED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = WIN_UNIFIED +Constant \fBWIN_UNIFIED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_NOCHECK +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_NOCHECK: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_NOCHECK +Constant \fBMODE_NOCHECK\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_NOSTORE +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_NOSTORE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_NOSTORE +Constant \fBMODE_NOSTORE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_NOPUT +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_NOPUT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_NOPUT +Constant \fBMODE_NOPUT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_NOPRECEDE +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_NOPRECEDE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_NOPRECEDE +Constant \fBMODE_NOPRECEDE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_NOSUCCEED +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_NOSUCCEED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_NOSUCCEED +Constant \fBMODE_NOSUCCEED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.LOCK_EXCLUSIVE +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOCK_EXCLUSIVE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = LOCK_EXCLUSIVE +Constant \fBLOCK_EXCLUSIVE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.LOCK_SHARED +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOCK_SHARED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = LOCK_SHARED +Constant \fBLOCK_SHARED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_RDONLY +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_RDONLY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_RDONLY +Constant \fBMODE_RDONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_WRONLY +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_WRONLY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_WRONLY +Constant \fBMODE_WRONLY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_RDWR +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_RDWR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_RDWR +Constant \fBMODE_RDWR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_CREATE +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_CREATE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_CREATE +Constant \fBMODE_CREATE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_EXCL +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_EXCL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_EXCL +Constant \fBMODE_EXCL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_DELETE_ON_CLOSE +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_DELETE_ON_CLOSE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_DELETE_ON_CLOSE +Constant \fBMODE_DELETE_ON_CLOSE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_UNIQUE_OPEN +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_UNIQUE_OPEN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_UNIQUE_OPEN +Constant \fBMODE_UNIQUE_OPEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_SEQUENTIAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_SEQUENTIAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_SEQUENTIAL +Constant \fBMODE_SEQUENTIAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MODE_APPEND +.INDENT 0.0 +.TP +.B mpi4py.MPI.MODE_APPEND: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MODE_APPEND +Constant \fBMODE_APPEND\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.SEEK_SET +.INDENT 0.0 +.TP +.B mpi4py.MPI.SEEK_SET: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = SEEK_SET +Constant \fBSEEK_SET\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.SEEK_CUR +.INDENT 0.0 +.TP +.B mpi4py.MPI.SEEK_CUR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = SEEK_CUR +Constant \fBSEEK_CUR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.SEEK_END +.INDENT 0.0 +.TP +.B mpi4py.MPI.SEEK_END: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = SEEK_END +Constant \fBSEEK_END\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DISPLACEMENT_CURRENT +.INDENT 0.0 +.TP +.B mpi4py.MPI.DISPLACEMENT_CURRENT: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DISPLACEMENT_CURRENT +Constant \fBDISPLACEMENT_CURRENT\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DISP_CUR +.INDENT 0.0 +.TP +.B mpi4py.MPI.DISP_CUR: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = DISP_CUR +Constant \fBDISP_CUR\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.THREAD_SINGLE +.INDENT 0.0 +.TP +.B mpi4py.MPI.THREAD_SINGLE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = THREAD_SINGLE +Constant \fBTHREAD_SINGLE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.THREAD_FUNNELED +.INDENT 0.0 +.TP +.B mpi4py.MPI.THREAD_FUNNELED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = THREAD_FUNNELED +Constant \fBTHREAD_FUNNELED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.THREAD_SERIALIZED +.INDENT 0.0 +.TP +.B mpi4py.MPI.THREAD_SERIALIZED: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = THREAD_SERIALIZED +Constant \fBTHREAD_SERIALIZED\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.THREAD_MULTIPLE +.INDENT 0.0 +.TP +.B mpi4py.MPI.THREAD_MULTIPLE: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = THREAD_MULTIPLE +Constant \fBTHREAD_MULTIPLE\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.VERSION +.INDENT 0.0 +.TP +.B mpi4py.MPI.VERSION: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = VERSION +Constant \fBVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.SUBVERSION +.INDENT 0.0 +.TP +.B mpi4py.MPI.SUBVERSION: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = SUBVERSION +Constant \fBSUBVERSION\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_PROCESSOR_NAME +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_PROCESSOR_NAME: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_PROCESSOR_NAME +Constant \fBMAX_PROCESSOR_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_ERROR_STRING +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_ERROR_STRING: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_ERROR_STRING +Constant \fBMAX_ERROR_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_PORT_NAME +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_PORT_NAME: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_PORT_NAME +Constant \fBMAX_PORT_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_INFO_KEY +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_INFO_KEY: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_INFO_KEY +Constant \fBMAX_INFO_KEY\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_INFO_VAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_INFO_VAL: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_INFO_VAL +Constant \fBMAX_INFO_VAL\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_OBJECT_NAME +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_OBJECT_NAME: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_OBJECT_NAME +Constant \fBMAX_OBJECT_NAME\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_DATAREP_STRING +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_DATAREP_STRING: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_DATAREP_STRING +Constant \fBMAX_DATAREP_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_LIBRARY_VERSION_STRING +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_LIBRARY_VERSION_STRING: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_LIBRARY_VERSION_STRING +Constant \fBMAX_LIBRARY_VERSION_STRING\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_PSET_NAME_LEN +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_PSET_NAME_LEN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_PSET_NAME_LEN +Constant \fBMAX_PSET_NAME_LEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.MAX_STRINGTAG_LEN +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX_STRINGTAG_LEN: \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' = MAX_STRINGTAG_LEN +Constant \fBMAX_STRINGTAG_LEN\fP of type \X'tty: link https://docs.python.org/3/library/functions.html#int'\fI\%int\fP\X'tty: link' +.UNINDENT +.SS mpi4py.MPI.DATATYPE_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.DATATYPE_NULL: \fI\%Datatype\fP = DATATYPE_NULL +Object \fBDATATYPE_NULL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.PACKED +.INDENT 0.0 +.TP +.B mpi4py.MPI.PACKED: \fI\%Datatype\fP = PACKED +Object \fBPACKED\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.BYTE +.INDENT 0.0 +.TP +.B mpi4py.MPI.BYTE: \fI\%Datatype\fP = BYTE +Object \fBBYTE\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.AINT +.INDENT 0.0 +.TP +.B mpi4py.MPI.AINT: \fI\%Datatype\fP = AINT +Object \fBAINT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.OFFSET +.INDENT 0.0 +.TP +.B mpi4py.MPI.OFFSET: \fI\%Datatype\fP = OFFSET +Object \fBOFFSET\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.COUNT +.INDENT 0.0 +.TP +.B mpi4py.MPI.COUNT: \fI\%Datatype\fP = COUNT +Object \fBCOUNT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.CHAR +.INDENT 0.0 +.TP +.B mpi4py.MPI.CHAR: \fI\%Datatype\fP = CHAR +Object \fBCHAR\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.WCHAR +.INDENT 0.0 +.TP +.B mpi4py.MPI.WCHAR: \fI\%Datatype\fP = WCHAR +Object \fBWCHAR\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SIGNED_CHAR +.INDENT 0.0 +.TP +.B mpi4py.MPI.SIGNED_CHAR: \fI\%Datatype\fP = SIGNED_CHAR +Object \fBSIGNED_CHAR\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SHORT +.INDENT 0.0 +.TP +.B mpi4py.MPI.SHORT: \fI\%Datatype\fP = SHORT +Object \fBSHORT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.INT: \fI\%Datatype\fP = INT +Object \fBINT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LONG +.INDENT 0.0 +.TP +.B mpi4py.MPI.LONG: \fI\%Datatype\fP = LONG +Object \fBLONG\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LONG_LONG +.INDENT 0.0 +.TP +.B mpi4py.MPI.LONG_LONG: \fI\%Datatype\fP = LONG_LONG +Object \fBLONG_LONG\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UNSIGNED_CHAR +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNSIGNED_CHAR: \fI\%Datatype\fP = UNSIGNED_CHAR +Object \fBUNSIGNED_CHAR\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UNSIGNED_SHORT +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNSIGNED_SHORT: \fI\%Datatype\fP = UNSIGNED_SHORT +Object \fBUNSIGNED_SHORT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UNSIGNED +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNSIGNED: \fI\%Datatype\fP = UNSIGNED +Object \fBUNSIGNED\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UNSIGNED_LONG +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNSIGNED_LONG: \fI\%Datatype\fP = UNSIGNED_LONG +Object \fBUNSIGNED_LONG\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UNSIGNED_LONG_LONG +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNSIGNED_LONG_LONG: \fI\%Datatype\fP = UNSIGNED_LONG_LONG +Object \fBUNSIGNED_LONG_LONG\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.FLOAT +.INDENT 0.0 +.TP +.B mpi4py.MPI.FLOAT: \fI\%Datatype\fP = FLOAT +Object \fBFLOAT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.DOUBLE +.INDENT 0.0 +.TP +.B mpi4py.MPI.DOUBLE: \fI\%Datatype\fP = DOUBLE +Object \fBDOUBLE\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LONG_DOUBLE +.INDENT 0.0 +.TP +.B mpi4py.MPI.LONG_DOUBLE: \fI\%Datatype\fP = LONG_DOUBLE +Object \fBLONG_DOUBLE\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.C_BOOL +.INDENT 0.0 +.TP +.B mpi4py.MPI.C_BOOL: \fI\%Datatype\fP = C_BOOL +Object \fBC_BOOL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INT8_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.INT8_T: \fI\%Datatype\fP = INT8_T +Object \fBINT8_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INT16_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.INT16_T: \fI\%Datatype\fP = INT16_T +Object \fBINT16_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INT32_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.INT32_T: \fI\%Datatype\fP = INT32_T +Object \fBINT32_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INT64_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.INT64_T: \fI\%Datatype\fP = INT64_T +Object \fBINT64_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UINT8_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.UINT8_T: \fI\%Datatype\fP = UINT8_T +Object \fBUINT8_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UINT16_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.UINT16_T: \fI\%Datatype\fP = UINT16_T +Object \fBUINT16_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UINT32_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.UINT32_T: \fI\%Datatype\fP = UINT32_T +Object \fBUINT32_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UINT64_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.UINT64_T: \fI\%Datatype\fP = UINT64_T +Object \fBUINT64_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.C_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.C_COMPLEX: \fI\%Datatype\fP = C_COMPLEX +Object \fBC_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.C_FLOAT_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.C_FLOAT_COMPLEX: \fI\%Datatype\fP = C_FLOAT_COMPLEX +Object \fBC_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.C_DOUBLE_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.C_DOUBLE_COMPLEX: \fI\%Datatype\fP = C_DOUBLE_COMPLEX +Object \fBC_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.C_LONG_DOUBLE_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.C_LONG_DOUBLE_COMPLEX: \fI\%Datatype\fP = C_LONG_DOUBLE_COMPLEX +Object \fBC_LONG_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.CXX_BOOL +.INDENT 0.0 +.TP +.B mpi4py.MPI.CXX_BOOL: \fI\%Datatype\fP = CXX_BOOL +Object \fBCXX_BOOL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.CXX_FLOAT_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.CXX_FLOAT_COMPLEX: \fI\%Datatype\fP = CXX_FLOAT_COMPLEX +Object \fBCXX_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.CXX_DOUBLE_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.CXX_DOUBLE_COMPLEX: \fI\%Datatype\fP = CXX_DOUBLE_COMPLEX +Object \fBCXX_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX: \fI\%Datatype\fP = CXX_LONG_DOUBLE_COMPLEX +Object \fBCXX_LONG_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SHORT_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.SHORT_INT: \fI\%Datatype\fP = SHORT_INT +Object \fBSHORT_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INT_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.INT_INT: \fI\%Datatype\fP = INT_INT +Object \fBINT_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.TWOINT +.INDENT 0.0 +.TP +.B mpi4py.MPI.TWOINT: \fI\%Datatype\fP = TWOINT +Object \fBTWOINT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LONG_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.LONG_INT: \fI\%Datatype\fP = LONG_INT +Object \fBLONG_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.FLOAT_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.FLOAT_INT: \fI\%Datatype\fP = FLOAT_INT +Object \fBFLOAT_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.DOUBLE_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.DOUBLE_INT: \fI\%Datatype\fP = DOUBLE_INT +Object \fBDOUBLE_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LONG_DOUBLE_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.LONG_DOUBLE_INT: \fI\%Datatype\fP = LONG_DOUBLE_INT +Object \fBLONG_DOUBLE_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.CHARACTER +.INDENT 0.0 +.TP +.B mpi4py.MPI.CHARACTER: \fI\%Datatype\fP = CHARACTER +Object \fBCHARACTER\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LOGICAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOGICAL: \fI\%Datatype\fP = LOGICAL +Object \fBLOGICAL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INTEGER +.INDENT 0.0 +.TP +.B mpi4py.MPI.INTEGER: \fI\%Datatype\fP = INTEGER +Object \fBINTEGER\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.REAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.REAL: \fI\%Datatype\fP = REAL +Object \fBREAL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.DOUBLE_PRECISION +.INDENT 0.0 +.TP +.B mpi4py.MPI.DOUBLE_PRECISION: \fI\%Datatype\fP = DOUBLE_PRECISION +Object \fBDOUBLE_PRECISION\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMPLEX: \fI\%Datatype\fP = COMPLEX +Object \fBCOMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.DOUBLE_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.DOUBLE_COMPLEX: \fI\%Datatype\fP = DOUBLE_COMPLEX +Object \fBDOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LOGICAL1 +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOGICAL1: \fI\%Datatype\fP = LOGICAL1 +Object \fBLOGICAL1\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LOGICAL2 +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOGICAL2: \fI\%Datatype\fP = LOGICAL2 +Object \fBLOGICAL2\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LOGICAL4 +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOGICAL4: \fI\%Datatype\fP = LOGICAL4 +Object \fBLOGICAL4\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.LOGICAL8 +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOGICAL8: \fI\%Datatype\fP = LOGICAL8 +Object \fBLOGICAL8\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INTEGER1 +.INDENT 0.0 +.TP +.B mpi4py.MPI.INTEGER1: \fI\%Datatype\fP = INTEGER1 +Object \fBINTEGER1\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INTEGER2 +.INDENT 0.0 +.TP +.B mpi4py.MPI.INTEGER2: \fI\%Datatype\fP = INTEGER2 +Object \fBINTEGER2\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INTEGER4 +.INDENT 0.0 +.TP +.B mpi4py.MPI.INTEGER4: \fI\%Datatype\fP = INTEGER4 +Object \fBINTEGER4\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INTEGER8 +.INDENT 0.0 +.TP +.B mpi4py.MPI.INTEGER8: \fI\%Datatype\fP = INTEGER8 +Object \fBINTEGER8\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.INTEGER16 +.INDENT 0.0 +.TP +.B mpi4py.MPI.INTEGER16: \fI\%Datatype\fP = INTEGER16 +Object \fBINTEGER16\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.REAL2 +.INDENT 0.0 +.TP +.B mpi4py.MPI.REAL2: \fI\%Datatype\fP = REAL2 +Object \fBREAL2\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.REAL4 +.INDENT 0.0 +.TP +.B mpi4py.MPI.REAL4: \fI\%Datatype\fP = REAL4 +Object \fBREAL4\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.REAL8 +.INDENT 0.0 +.TP +.B mpi4py.MPI.REAL8: \fI\%Datatype\fP = REAL8 +Object \fBREAL8\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.REAL16 +.INDENT 0.0 +.TP +.B mpi4py.MPI.REAL16: \fI\%Datatype\fP = REAL16 +Object \fBREAL16\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.COMPLEX4 +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMPLEX4: \fI\%Datatype\fP = COMPLEX4 +Object \fBCOMPLEX4\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.COMPLEX8 +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMPLEX8: \fI\%Datatype\fP = COMPLEX8 +Object \fBCOMPLEX8\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.COMPLEX16 +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMPLEX16: \fI\%Datatype\fP = COMPLEX16 +Object \fBCOMPLEX16\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.COMPLEX32 +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMPLEX32: \fI\%Datatype\fP = COMPLEX32 +Object \fBCOMPLEX32\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.UNSIGNED_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.UNSIGNED_INT: \fI\%Datatype\fP = UNSIGNED_INT +Object \fBUNSIGNED_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SIGNED_SHORT +.INDENT 0.0 +.TP +.B mpi4py.MPI.SIGNED_SHORT: \fI\%Datatype\fP = SIGNED_SHORT +Object \fBSIGNED_SHORT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SIGNED_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.SIGNED_INT: \fI\%Datatype\fP = SIGNED_INT +Object \fBSIGNED_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SIGNED_LONG +.INDENT 0.0 +.TP +.B mpi4py.MPI.SIGNED_LONG: \fI\%Datatype\fP = SIGNED_LONG +Object \fBSIGNED_LONG\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SIGNED_LONG_LONG +.INDENT 0.0 +.TP +.B mpi4py.MPI.SIGNED_LONG_LONG: \fI\%Datatype\fP = SIGNED_LONG_LONG +Object \fBSIGNED_LONG_LONG\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.BOOL +.INDENT 0.0 +.TP +.B mpi4py.MPI.BOOL: \fI\%Datatype\fP = BOOL +Object \fBBOOL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SINT8_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.SINT8_T: \fI\%Datatype\fP = SINT8_T +Object \fBSINT8_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SINT16_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.SINT16_T: \fI\%Datatype\fP = SINT16_T +Object \fBSINT16_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SINT32_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.SINT32_T: \fI\%Datatype\fP = SINT32_T +Object \fBSINT32_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.SINT64_T +.INDENT 0.0 +.TP +.B mpi4py.MPI.SINT64_T: \fI\%Datatype\fP = SINT64_T +Object \fBSINT64_T\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_BOOL +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_BOOL: \fI\%Datatype\fP = F_BOOL +Object \fBF_BOOL\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_INT +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_INT: \fI\%Datatype\fP = F_INT +Object \fBF_INT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_FLOAT +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_FLOAT: \fI\%Datatype\fP = F_FLOAT +Object \fBF_FLOAT\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_DOUBLE +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_DOUBLE: \fI\%Datatype\fP = F_DOUBLE +Object \fBF_DOUBLE\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_COMPLEX: \fI\%Datatype\fP = F_COMPLEX +Object \fBF_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_FLOAT_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_FLOAT_COMPLEX: \fI\%Datatype\fP = F_FLOAT_COMPLEX +Object \fBF_FLOAT_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.F_DOUBLE_COMPLEX +.INDENT 0.0 +.TP +.B mpi4py.MPI.F_DOUBLE_COMPLEX: \fI\%Datatype\fP = F_DOUBLE_COMPLEX +Object \fBF_DOUBLE_COMPLEX\fP of type \fI\%Datatype\fP +.UNINDENT +.SS mpi4py.MPI.REQUEST_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.REQUEST_NULL: \fI\%Request\fP = REQUEST_NULL +Object \fBREQUEST_NULL\fP of type \fI\%Request\fP +.UNINDENT +.SS mpi4py.MPI.MESSAGE_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.MESSAGE_NULL: \fI\%Message\fP = MESSAGE_NULL +Object \fBMESSAGE_NULL\fP of type \fI\%Message\fP +.UNINDENT +.SS mpi4py.MPI.MESSAGE_NO_PROC +.INDENT 0.0 +.TP +.B mpi4py.MPI.MESSAGE_NO_PROC: \fI\%Message\fP = MESSAGE_NO_PROC +Object \fBMESSAGE_NO_PROC\fP of type \fI\%Message\fP +.UNINDENT +.SS mpi4py.MPI.OP_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.OP_NULL: \fI\%Op\fP = OP_NULL +Object \fBOP_NULL\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.MAX +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAX: \fI\%Op\fP = MAX +Object \fBMAX\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.MIN +.INDENT 0.0 +.TP +.B mpi4py.MPI.MIN: \fI\%Op\fP = MIN +Object \fBMIN\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.SUM +.INDENT 0.0 +.TP +.B mpi4py.MPI.SUM: \fI\%Op\fP = SUM +Object \fBSUM\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.PROD +.INDENT 0.0 +.TP +.B mpi4py.MPI.PROD: \fI\%Op\fP = PROD +Object \fBPROD\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.LAND +.INDENT 0.0 +.TP +.B mpi4py.MPI.LAND: \fI\%Op\fP = LAND +Object \fBLAND\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.BAND +.INDENT 0.0 +.TP +.B mpi4py.MPI.BAND: \fI\%Op\fP = BAND +Object \fBBAND\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.LOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.LOR: \fI\%Op\fP = LOR +Object \fBLOR\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.BOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.BOR: \fI\%Op\fP = BOR +Object \fBBOR\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.LXOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.LXOR: \fI\%Op\fP = LXOR +Object \fBLXOR\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.BXOR +.INDENT 0.0 +.TP +.B mpi4py.MPI.BXOR: \fI\%Op\fP = BXOR +Object \fBBXOR\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.MAXLOC +.INDENT 0.0 +.TP +.B mpi4py.MPI.MAXLOC: \fI\%Op\fP = MAXLOC +Object \fBMAXLOC\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.MINLOC +.INDENT 0.0 +.TP +.B mpi4py.MPI.MINLOC: \fI\%Op\fP = MINLOC +Object \fBMINLOC\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.REPLACE +.INDENT 0.0 +.TP +.B mpi4py.MPI.REPLACE: \fI\%Op\fP = REPLACE +Object \fBREPLACE\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.NO_OP +.INDENT 0.0 +.TP +.B mpi4py.MPI.NO_OP: \fI\%Op\fP = NO_OP +Object \fBNO_OP\fP of type \fI\%Op\fP +.INDENT 7.0 +.TP +.B Parameters +.INDENT 7.0 +.IP \(bu 2 +\fBx\fP (\fIAny\fP) +.IP \(bu 2 +\fBy\fP (\fIAny\fP) +.UNINDENT +.TP +.B Return type +Any +.UNINDENT +.UNINDENT +.SS mpi4py.MPI.GROUP_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.GROUP_NULL: \fI\%Group\fP = GROUP_NULL +Object \fBGROUP_NULL\fP of type \fI\%Group\fP +.UNINDENT +.SS mpi4py.MPI.GROUP_EMPTY +.INDENT 0.0 +.TP +.B mpi4py.MPI.GROUP_EMPTY: \fI\%Group\fP = GROUP_EMPTY +Object \fBGROUP_EMPTY\fP of type \fI\%Group\fP +.UNINDENT +.SS mpi4py.MPI.INFO_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.INFO_NULL: \fI\%Info\fP = INFO_NULL +Object \fBINFO_NULL\fP of type \fI\%Info\fP +.UNINDENT +.SS mpi4py.MPI.INFO_ENV +.INDENT 0.0 +.TP +.B mpi4py.MPI.INFO_ENV: \fI\%Info\fP = INFO_ENV +Object \fBINFO_ENV\fP of type \fI\%Info\fP +.UNINDENT +.SS mpi4py.MPI.ERRHANDLER_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERRHANDLER_NULL: \fI\%Errhandler\fP = ERRHANDLER_NULL +Object \fBERRHANDLER_NULL\fP of type \fI\%Errhandler\fP +.UNINDENT +.SS mpi4py.MPI.ERRORS_RETURN +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERRORS_RETURN: \fI\%Errhandler\fP = ERRORS_RETURN +Object \fBERRORS_RETURN\fP of type \fI\%Errhandler\fP +.UNINDENT +.SS mpi4py.MPI.ERRORS_ABORT +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERRORS_ABORT: \fI\%Errhandler\fP = ERRORS_ABORT +Object \fBERRORS_ABORT\fP of type \fI\%Errhandler\fP +.UNINDENT +.SS mpi4py.MPI.ERRORS_ARE_FATAL +.INDENT 0.0 +.TP +.B mpi4py.MPI.ERRORS_ARE_FATAL: \fI\%Errhandler\fP = ERRORS_ARE_FATAL +Object \fBERRORS_ARE_FATAL\fP of type \fI\%Errhandler\fP +.UNINDENT +.SS mpi4py.MPI.SESSION_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.SESSION_NULL: \fI\%Session\fP = SESSION_NULL +Object \fBSESSION_NULL\fP of type \fI\%Session\fP +.UNINDENT +.SS mpi4py.MPI.COMM_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_NULL: \fI\%Comm\fP = COMM_NULL +Object \fBCOMM_NULL\fP of type \fI\%Comm\fP +.UNINDENT +.SS mpi4py.MPI.COMM_SELF +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_SELF: \fI\%Intracomm\fP = COMM_SELF +Object \fBCOMM_SELF\fP of type \fI\%Intracomm\fP +.UNINDENT +.SS mpi4py.MPI.COMM_WORLD +.INDENT 0.0 +.TP +.B mpi4py.MPI.COMM_WORLD: \fI\%Intracomm\fP = COMM_WORLD +Object \fBCOMM_WORLD\fP of type \fI\%Intracomm\fP +.UNINDENT +.SS mpi4py.MPI.WIN_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.WIN_NULL: \fI\%Win\fP = WIN_NULL +Object \fBWIN_NULL\fP of type \fI\%Win\fP +.UNINDENT +.SS mpi4py.MPI.FILE_NULL +.INDENT 0.0 +.TP +.B mpi4py.MPI.FILE_NULL: \fI\%File\fP = FILE_NULL +Object \fBFILE_NULL\fP of type \fI\%File\fP +.UNINDENT +.SS mpi4py.MPI.pickle +.INDENT 0.0 +.TP +.B mpi4py.MPI.pickle: \fI\%Pickle\fP = +Object \fBpickle\fP of type \fI\%Pickle\fP +.UNINDENT +.SH CITATION +.sp +If MPI for Python been significant to a project that leads to an +academic publication, please acknowledge that fact by citing the +project. +.INDENT 0.0 +.IP \(bu 2 +M. Rogowski, S. Aseeri, D. Keyes, and L. Dalcin, +\fImpi4py.futures: MPI\-Based Asynchronous Task Execution for Python\fP, +IEEE Transactions on Parallel and Distributed Systems, 34(2):611\-622, 2023. +\X'tty: link https://doi.org/10.1109/TPDS.2022.3225481'\fI\%https://doi.org/10.1109/TPDS.2022.3225481\fP\X'tty: link' +.IP \(bu 2 +L. Dalcin and Y.\-L. L. Fang, +\fImpi4py: Status Update After 12 Years of Development\fP, +Computing in Science & Engineering, 23(4):47\-54, 2021. +\X'tty: link https://doi.org/10.1109/MCSE.2021.3083216'\fI\%https://doi.org/10.1109/MCSE.2021.3083216\fP\X'tty: link' +.IP \(bu 2 +L. Dalcin, P. Kler, R. Paz, and A. Cosimo, +\fIParallel Distributed Computing using Python\fP, +Advances in Water Resources, 34(9):1124\-1139, 2011. +\X'tty: link https://doi.org/10.1016/j.advwatres.2011.04.013'\fI\%https://doi.org/10.1016/j.advwatres.2011.04.013\fP\X'tty: link' +.IP \(bu 2 +L. Dalcin, R. Paz, M. Storti, and J. D\(aqElia, +\fIMPI for Python: performance improvements and MPI\-2 extensions\fP, +Journal of Parallel and Distributed Computing, 68(5):655\-662, 2008. +\X'tty: link https://doi.org/10.1016/j.jpdc.2007.09.005'\fI\%https://doi.org/10.1016/j.jpdc.2007.09.005\fP\X'tty: link' +.IP \(bu 2 +L. Dalcin, R. Paz, and M. Storti, +\fIMPI for Python\fP, +Journal of Parallel and Distributed Computing, 65(9):1108\-1115, 2005. +\X'tty: link https://doi.org/10.1016/j.jpdc.2005.03.010'\fI\%https://doi.org/10.1016/j.jpdc.2005.03.010\fP\X'tty: link' +.UNINDENT +.SH INSTALLATION +.SS Build backends +.sp +mpi4py supports two different build backends: \X'tty: link https://setuptools.pypa.io/'\fI\%setuptools\fP\X'tty: link' (default), +\X'tty: link https://scikit-build-core.readthedocs.io/'\fI\%scikit\-build\-core\fP\X'tty: link' (\X'tty: link https://cmake.org/'\fI\%CMake\fP\X'tty: link'\-based), and \X'tty: link https://meson-python.readthedocs.io/'\fI\%meson\-python\fP\X'tty: link' +(\X'tty: link https://mesonbuild.com/'\fI\%Meson\fP\X'tty: link'\-based). The build backend can be selected by setting the +\fI\%MPI4PY_BUILD_BACKEND\fP environment variable. +.INDENT 0.0 +.TP +.B MPI4PY_BUILD_BACKEND +.INDENT 7.0 +.TP +.B Choices +\fB\(dqsetuptools\(dq\fP, \fB\(dqscikit\-build\-core\(dq\fP, \fB\(dqmeson\-python\(dq\fP +.TP +.B Default +\fB\(dqsetuptools\(dq\fP +.UNINDENT +.sp +Request a build backend for building mpi4py from sources. +.UNINDENT +.SS Using \fBsetuptools\fP +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +Set the \fI\%MPI4PY_BUILD_BACKEND\fP environment variable to +\fB\(dqsetuptools\(dq\fP to use the \X'tty: link https://setuptools.pypa.io/'\fI\%setuptools\fP\X'tty: link' build backend. +.UNINDENT +.UNINDENT +.sp +When using the default \X'tty: link https://setuptools.pypa.io/'\fI\%setuptools\fP\X'tty: link' build backend, mpi4py relies on +the legacy Python distutils framework to build C extension modules. +The following environment variables affect the build configuration. +.INDENT 0.0 +.TP +.B MPI4PY_BUILD_MPICC +The \fBmpicc\fP compiler wrapper command is searched for in +the executable search path (\fBPATH\fP environment variable) +and used to compile the \fI\%mpi4py.MPI\fP C extension module. +Alternatively, use the \fI\%MPI4PY_BUILD_MPICC\fP environment +variable to the full path or command corresponding to the MPI\-aware +C compiler. +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_BUILD_MPILD +The \fBmpicc\fP compiler wrapper command is also used for +linking the \fI\%mpi4py.MPI\fP C extension module. +Alternatively, use the \fI\%MPI4PY_BUILD_MPILD\fP environment +variable to specify the full path or command corresponding to the +MPI\-aware C linker. +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_BUILD_MPICFG +If the MPI implementation does not provide a compiler wrapper, or +it is not installed in a default system location, all relevant +build information like include/library locations and library lists +can be provided in an ini\-style configuration file under a +\fB[mpi]\fP section. mpi4py can then be asked to use the custom build +information by setting the \fI\%MPI4PY_BUILD_MPICFG\fP +environment variable to the full path of the configuration file. As +an example, see the \fBmpi.cfg\fP file located in the top level +mpi4py source directory. +.UNINDENT +.INDENT 0.0 +.TP +.B MPI4PY_BUILD_CONFIGURE +Some vendor MPI implementations may not provide complete coverage +of the MPI standard, or may provide partial features of newer MPI +standard versions while advertising support for an older version. +Setting the \fI\%MPI4PY_BUILD_CONFIGURE\fP environment variable +to a non\-empty string will trigger the run of exhaustive checks for +the availability of all MPI constants, predefined handles, and +routines. +.UNINDENT +.sp +The following environment variables are aliases for the ones described +above. Having shorter names, they are convenient for occasional use in +the command line. Its usage is not recommended in automation scenarios +like packaging recipes, deployment scripts, and container image +creation. +.INDENT 0.0 +.TP +.B MPICC +Convenience alias for \fI\%MPI4PY_BUILD_MPICC\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B MPILD +Convenience alias for \fI\%MPI4PY_BUILD_MPILD\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B MPICFG +Convenience alias for \fI\%MPI4PY_BUILD_MPICFG\fP\&. +.UNINDENT +.SS Using \fBscikit\-build\-core\fP +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +Set the \fI\%MPI4PY_BUILD_BACKEND\fP environment variable to +\fB\(dqscikit\-build\-core\(dq\fP to use the \X'tty: link https://scikit-build-core.readthedocs.io/'\fI\%scikit\-build\-core\fP\X'tty: link' build backend. +.UNINDENT +.UNINDENT +.sp +When using the \X'tty: link https://scikit-build-core.readthedocs.io/'\fI\%scikit\-build\-core\fP\X'tty: link' build backend, mpi4py delegates all +of MPI build configuration to \X'tty: link https://cmake.org/'\fI\%CMake\fP\X'tty: link'\(aqs \X'tty: link https://cmake.org/cmake/help/latest/module/FindMPI.html'\fI\%FindMPI\fP\X'tty: link' module. Besides the +obvious advantage of cross\-platform support, this delegation to CMake +may be convenient in build environments exposing vendor software +stacks via intricate module systems. Note however that mpi4py will not +be able to look for MPI routines available beyond the MPI standard +version the MPI implementation advertises to support (via the +\fBMPI_VERSION\fP and \fBMPI_SUBVERSION\fP macro constants +in the \fBmpi.h\fP header file), any missing MPI constant or symbol +will prevent a successful build. +.SS Using \fBmeson\-python\fP +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +Set the \fI\%MPI4PY_BUILD_BACKEND\fP environment variable to +\fB\(dqmeson\-python\(dq\fP to use the \X'tty: link https://meson-python.readthedocs.io/'\fI\%meson\-python\fP\X'tty: link' build backend. +.UNINDENT +.UNINDENT +.sp +When using the \X'tty: link https://meson-python.readthedocs.io/'\fI\%meson\-python\fP\X'tty: link' build backend, mpi4py delegates build +tasks to the \X'tty: link https://mesonbuild.com/'\fI\%Meson\fP\X'tty: link' build system. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +mpi4py support for the \X'tty: link https://meson-python.readthedocs.io/'\fI\%meson\-python\fP\X'tty: link' build backend is +experimental. For the time being, users must set the \X'tty: link https://docs.python.org/3/using/configure.html#envvar-CC'\fI\%CC\fP\X'tty: link' +environment variable to the command or path corresponding to the +\fBmpicc\fP C compiler wrapper. +.UNINDENT +.UNINDENT +.SS Using \fBpip\fP +.sp +You can install the latest mpi4py release from its source distribution +at \X'tty: link https://pypi.org/project/mpi4py/'\fI\%PyPI\fP\X'tty: link' using \fBpip\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip install mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +You can also install the in\-development version with: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip install git+https://github.com/mpi4py/mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +or: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip install https://github.com/mpi4py/mpi4py/tarball/master +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +Installing mpi4py from its source distribution (available at PyPI) +or Git source code repository (available at GitHub) requires a C +compiler and a working MPI implementation with development headers +and libraries. +.UNINDENT +.UNINDENT +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +\fBpip\fP keeps previously built wheel files on its cache for future +reuse. If you want to reinstall the \fBmpi4py\fP package using a +different or updated MPI implementation, you have to either first +remove the cached wheel file with: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip cache remove mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +or ask \fBpip\fP to disable the cache: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip install \-\-no\-cache\-dir mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.SS Using \fBconda\fP +.sp +The \X'tty: link https://conda-forge.org/'\fI\%conda\-forge\fP\X'tty: link' community provides ready\-to\-use binary packages +from an ever growing collection of software libraries built around the +multi\-platform \fIconda\fP package manager. Four MPI implementations are +available on conda\-forge: Open MPI (Linux and macOS), MPICH (Linux and +macOS), Intel MPI (Linux and Windows) and Microsoft MPI (Windows). +You can install mpi4py and your preferred MPI implementation using the +\fBconda\fP package manager: +.INDENT 0.0 +.IP \(bu 2 +to use MPICH do: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ conda install \-c conda\-forge mpi4py mpich +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +to use Open MPI do: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ conda install \-c conda\-forge mpi4py openmpi +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +to use Intel MPI do: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ conda install \-c conda\-forge mpi4py impi_rt +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +to use Microsoft MPI do: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ conda install \-c conda\-forge mpi4py msmpi +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.sp +MPICH and many of its derivatives are ABI\-compatible. You can provide +the package specification \fBmpich=X.Y.*=external_*\fP (where \fBX\fP and +\fBY\fP are the major and minor version numbers) to request the conda +package manager to use system\-provided MPICH (or derivative) +libraries. Similarly, you can provide the package specification +\fBopenmpi=X.Y.*=external_*\fP to use system\-provided Open MPI +libraries. +.sp +The \fBopenmpi\fP package on conda\-forge has built\-in CUDA support, but +it is disabled by default. To enable it, follow the instruction +outlined during \fBconda install\fP\&. Additionally, UCX support is also +available once the \fBucx\fP package is installed. +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +Binary conda\-forge packages are built with a focus on +compatibility. The MPICH and Open MPI packages are build in a +constrained environment with relatively dated OS images. Therefore, +they may lack support for high\-performance features like +cross\-memory attach (XPMEM/CMA). In production scenarios, it is +recommended to use external (either custom\-built or system\-provided) +MPI installations. See the relevant conda\-forge documentation about +\X'tty: link https://conda-forge.org/docs/user/tipsandtricks/#using-external-message-passing-interface-mpi-libraries'\fI\%using external MPI libraries\fP\X'tty: link' . +.UNINDENT +.UNINDENT +.SS Linux +.sp +On \fBFedora Linux\fP systems (as well as \fBRHEL\fP and their derivatives +using the EPEL software repository), you can install binary packages +with the system package manager: +.INDENT 0.0 +.IP \(bu 2 +using \fBdnf\fP and the \fBmpich\fP package: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ sudo dnf install python3\-mpi4py\-mpich +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +using \fBdnf\fP and the \fBopenmpi\fP package: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ sudo dnf install python3\-mpi4py\-openmpi +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.sp +Please remember to load the correct MPI module for your chosen MPI +implementation: +.INDENT 0.0 +.IP \(bu 2 +for the \fBmpich\fP package do: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ module load mpi/mpich\-$(arch) +$ python \-c \(dqfrom mpi4py import MPI\(dq +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +for the \fBopenmpi\fP package do: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ module load mpi/openmpi\-$(arch) +$ python \-c \(dqfrom mpi4py import MPI\(dq +.ft P +.fi +.UNINDENT +.UNINDENT +.UNINDENT +.sp +On \fBUbuntu Linux\fP and \fBDebian Linux\fP systems, binary packages are +available for installation using the system package manager: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ sudo apt install python3\-mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Note that on Ubuntu/Debian systems, the mpi4py package uses Open +MPI. To use MPICH, install the \fBlibmpich\-dev\fP and \fBpython3\-dev\fP +packages (and any other required development tools). Afterwards, +install mpi4py from sources using \fBpip\fP\&. +.SS macOS +.sp +\fBmacOS\fP users can install mpi4py using the \X'tty: link https://brew.sh/'\fI\%Homebrew\fP\X'tty: link' package +manager: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ brew install mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Note that the Homebrew mpi4py package uses Open MPI. Alternatively, +install the \fBmpich\fP package and next install mpi4py from sources +using \fBpip\fP\&. +.SS Windows +.sp +\fBWindows\fP users can install mpi4py from binary wheels hosted on the +Python Package Index (PyPI) using \fBpip\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip install mpi4py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The Windows wheels available on PyPI are specially crafted to work +with either the \X'tty: link https://software.intel.com/intel-mpi-library'\fI\%Intel MPI\fP\X'tty: link' or the \X'tty: link https://learn.microsoft.com/message-passing-interface/microsoft-mpi'\fI\%Microsoft MPI\fP\X'tty: link' +runtime, therefore requiring a separate installation of any one of +these packages. +.sp +Intel MPI is under active development and supports recent version of +the MPI standard. Intel MPI can be installed with \fBpip\fP (see the +\X'tty: link https://pypi.org/project/impi-rt/'\fI\%impi\-rt\fP\X'tty: link' package on PyPI), being therefore straightforward to get it +up and running within a Python environment. Intel MPI can also be +installed system\-wide as part of the Intel HPC Toolkit for Windows or +via standalone online/offline installers. +.SH DEVELOPMENT +.SS Prerequisites +.sp +You need to have the following software properly installed to develop +\fIMPI for Python\fP: +.INDENT 0.0 +.IP \(bu 2 +\X'tty: link https://www.python.org/'\fI\%Python\fP\X'tty: link' 3.6 or above. +.IP \(bu 2 +The \X'tty: link https://cython.org/'\fI\%Cython\fP\X'tty: link' compiler. +.IP \(bu 2 +A working \X'tty: link https://www.mpi-forum.org/'\fI\%MPI\fP\X'tty: link' implementation like \X'tty: link https://www.mpich.org/'\fI\%MPICH\fP\X'tty: link' or \X'tty: link https://www.open-mpi.org/'\fI\%Open MPI\fP\X'tty: link', +preferably supporting MPI\-4 and built with shared/dynamic libraries. +.UNINDENT +.sp +Optionally, consider installing the following packages: +.INDENT 0.0 +.IP \(bu 2 +\X'tty: link https://numpy.org/'\fI\%NumPy\fP\X'tty: link' for enabling comprehensive testing of MPI communication. +.IP \(bu 2 +\X'tty: link https://cupy.dev/'\fI\%CuPy\fP\X'tty: link' for enabling comprehensive testing with a GPU\-aware MPI. +.IP \(bu 2 +\X'tty: link https://www.sphinx-doc.org/'\fI\%Sphinx\fP\X'tty: link' to build the documentation. +.UNINDENT +.sp +\fBTIP:\fP +.INDENT 0.0 +.INDENT 3.5 +Most routine development tasks like building, installing in +editable mode, testing, and generating documentation can be +performed with the \X'tty: link https://github.com/scientific-python/spin'\fI\%spin\fP\X'tty: link' developer tool. Run \fBspin\fP at +the top level source directory for a list of available subcommands. +.UNINDENT +.UNINDENT +.SS Building +.sp +\fIMPI for Python\fP uses \fBsetuptools\fP\-based build system that relies on +the \fBsetup.py\fP file. Some setuptools commands (e.g., \fIbuild\fP) +accept additional options: +.INDENT 0.0 +.TP +.B \-\-mpi= +Lets you pass a section with MPI configuration within a special +configuration file. Alternatively, you can use the \fI\%MPICFG\fP +environment variable. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-mpicc= +Specify the path or name of the \fBmpicc\fP C compiler wrapper. +Alternatively, use the \fI\%MPICC\fP environment variable. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-mpild= +Specify the full path or name for the MPI\-aware C linker. +Alternatively, use the \fI\%MPILD\fP environment variable. If +not set, the \fBmpicc\fP C compiler wrapper is used for +linking. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-configure +Runs exhaustive tests for checking about missing MPI types, +constants, and functions. This option should be passed in order to +build \fIMPI for Python\fP against old MPI\-1, MPI\-2, or MPI\-3 +implementations, possibly providing a subset of MPI\-4. +.UNINDENT +.sp +If you use a MPI implementation providing a \fBmpicc\fP C +compiler wrapper (e.g., MPICH or Open MPI), it will be used for +compilation and linking. This is the preferred and easiest way to +build \fIMPI for Python\fP\&. +.sp +If \fBmpicc\fP is found in the executable search path +(\fBPATH\fP environment variable), simply run the \fIbuild\fP +command: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python setup.py build +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +If \fBmpicc\fP is not in your search path or the compiler wrapper +has a different name, you can run the \fIbuild\fP command specifying its +location, either via the \fI\%\-\-mpicc\fP command option or using the +\fI\%MPICC\fP environment variable: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python setup.py build \-\-mpicc=/path/to/mpicc +$ env MPICC=/path/to/mpicc python setup.py build +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Alternatively, you can provide all the relevant information about your +MPI implementation by editing the \fBmpi.cfg\fP file located in the +top level source directory. You can use the default section \fB[mpi]\fP +or add a new custom section, for example \fB[vendor_mpi]\fP (see the +examples provided in the \fBmpi.cfg\fP file as a starting point to +write your own section): +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[mpi] +include_dirs = /usr/local/mpi/include +libraries = mpi +library_dirs = /usr/local/mpi/lib +runtime_library_dirs = /usr/local/mpi/lib + +[vendor_mpi] +include_dirs = /opt/mpi/include ... +libraries = mpi ... +library_dirs = /opt/mpi/lib ... +runtime_library_dirs = /opt/mpi/lib ... + +\&... +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +and then run the \fIbuild\fP command specifying you custom +configuration section: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python setup.py build \-\-mpi=vendor_mpi +$ env MPICFG=vendor_mpi python setup.py build +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Installing +.sp +\fIMPI for Python\fP can be installed in editable mode: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python \-m pip install \-\-editable . +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +After modifying Cython sources, an in\-place rebuild is needed: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ python setup.py build \-\-inplace +.ft P +.fi +.UNINDENT +.UNINDENT +.SS Testing +.sp +To quickly test the installation: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 5 python \-m mpi4py.bench helloworld +Hello, World! I am process 0 of 5 on localhost. +Hello, World! I am process 1 of 5 on localhost. +Hello, World! I am process 2 of 5 on localhost. +Hello, World! I am process 3 of 5 on localhost. +Hello, World! I am process 4 of 5 on localhost. + +$ mpiexec \-n 5 python \-m mpi4py.bench ringtest \-l 10 \-n 1048576 +time for 10 loops = 0.00361614 seconds (5 processes, 1048576 bytes) +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +If you installed from a git clone or the source distribution, issuing +at the command line: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 5 python demo/helloworld.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +will launch a five\-process run of the Python interpreter and run the +demo script \fBdemo/helloworld.py\fP from the source distribution. +.sp +You can also run all the \fIunittest\fP scripts: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 5 python test/main.py +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +or, if you have the \X'tty: link https://docs.pytest.org/'\fI\%pytest\fP\X'tty: link' unit testing framework installed: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ mpiexec \-n 5 pytest +.ft P +.fi +.UNINDENT +.UNINDENT +.SH GUIDELINES +.SS Fair play +.SS Summary +.sp +This section defines Rules of Play for companies and outside developers that +engage with the mpi4py project. It covers: +.INDENT 0.0 +.IP \(bu 2 +Restrictions on use of the mpi4py name. +.IP \(bu 2 +How and whether to publish a modified distribution. +.IP \(bu 2 +How to make us aware of patched versions. +.UNINDENT +.sp +After reading this section, companies and developers will know what kinds of +behavior the mpi4py developers and contributors would like to see, and which we +consider troublesome, bothersome, and unacceptable. +.sp +This document is a close adaptation of \X'tty: link https://numpy.org/neps/nep-0036-fair-play.html'\fI\%NumPy NEP 36\fP\X'tty: link'\&. +.SS Motivation +.sp +Occasionally, we learn of modified mpi4py versions and binary distributions +circulated by outsiders. These patched versions can cause problems to mpi4py +users (see, e.g., \X'tty: link https://github.com/mpi4py/mpi4py/issues/508'\fI\%mpi4py/mpi4py#508\fP\X'tty: link'). When issues like these arise, our +developers waste time identifying the problematic release, locating +alterations, and determining an appropriate course of action. +.sp +In addition, packages on the Python Packaging Index are sometimes named such +that users assume they are sanctioned or maintained by the mpi4py +developers. We wish to reduce the number of such incidents. +.SS Scope +.sp +This document aims to define a minimal set of rules that, when followed, will +be considered good\-faith efforts in line with the expectations of the mpi4py +developers and contributors. +.sp +Our hope is that companies and outside developers who feel they need to modify +mpi4py will first consider contributing to the project, or use alternative +mechanisms for patching and extending mpi4py. +.sp +When in doubt, please \X'tty: link https://github.com/mpi4py/mpi4py/discussions/'\fI\%talk to us first\fP\X'tty: link'\&. We may suggest an alternative; at +minimum, we\(aqll be informed and we may even grant an exception if deemed +appropriate. +.SS Fair play rules +.INDENT 0.0 +.IP 1. 3 +Do not reuse the mpi4py name for projects not affiliated with the mpi4py +project. +.sp +At time of writing, there are only a handful of \fBmpi4py\fP\-named packages +developed by the mpi4py project, including \fBmpi4py\fP and \fBmpi4py\-fft\fP\&. We +ask that outside packages not include the phrase \fBmpi4py\fP, i.e., avoid +names such as \fBmycompany\-mpi4py\fP or \fBmpi4py\-mycompany\fP\&. +.sp +To be clear, this rule only applies to modules (package names); it is +perfectly acceptable to have a \fIsubmodule\fP of your own package named +\fBmycompany.mpi4py\fP\&. +.IP 2. 3 +Do not publish binary mpi4py wheels on PyPI (\X'tty: link https://pypi.org/'\fI\%https://pypi.org/\fP\X'tty: link'). +.sp +We ask companies and outside developers to not publish binary mpi4py wheels +in the main Python Package Index (\X'tty: link https://pypi.org/'\fI\%https://pypi.org/\fP\X'tty: link') under names such +\fBmpi4py\-mpich\fP, \fBmpi4py\-openmpi\fP, or \fBmpi4py\-vendor_mpi\fP\&. +.sp +The usual approaches to build binary Python wheels involve the embedding of +dependent shared libraries. While such an approach may seem convenient and +often is, in the particular case of MPI and mpi4py it is ultimately harmful +to end users. Embedding the MPI shared libraries would prevent the use of +external, system\-provided MPI installations with hardware\-specific +optimizations and site\-specific tweaks. +.sp +The MPI Forum is currently discussing the standardization of a proposal for +an Application Binary Interface (ABI) for MPI, see \fI\%[mpi\-abi\-paper]\fP and +\fI\%[mpi\-abi\-issue]\fP\&. Such standardization will allow for any binary dependent +on the MPI library to be used with multiple MPI backends. Once this proposal +becomes part of the MPI standard, the mpi4py project will consider +publishing on PyPI binary wheels capable of using any backend MPI +implementation supporting the new MPI ABI specification. In the mean time, +mpi4py is currently distributing experimental MPI and mpi4py binary wheels +on \X'tty: link https://anaconda.org/mpi4py'\fI\%https://anaconda.org/mpi4py\fP\X'tty: link'\&. +.IP [mpi-abi-paper] 5 +J. Hammond, L. Dalcin, E. Schnetter, M. Pérache, J. B. Besnard, +J. Brown, G. Brito Gadeschi, S. Byrne, J. Schuchart, and H. Zhou. +MPI Application Binary Interface Standardization. +EuroMPI 2023, Bristol, UK, September 2023. +\X'tty: link https://doi.org/10.1145/3615318.3615319'\fI\%https://doi.org/10.1145/3615318.3615319\fP\X'tty: link' +.IP [mpi-abi-issue] 5 +MPI Forum GitHub Issue: \fIMPI needs a standard ABI\fP\&. +\X'tty: link https://github.com/mpi-forum/mpi-issues/issues/751'\fI\%https://github.com/mpi\-forum/mpi\-issues/issues/751\fP\X'tty: link' +.IP 3. 3 +Do not republish modified versions of mpi4py. +.sp +Modified versions of mpi4py make it very difficult for the developers to +address bug reports, since we typically do not know which parts of mpi4py +have been modified. +.sp +If you have to break this rule (and we implore you not to!), then make it +clear in the \fB__version__\fP tag that you have modified mpi4py, e.g.: +.INDENT 3.0 +.INDENT 3.5 +.sp +.nf +.ft C +>>> print(mpi4py.__version__) +\(aq4.0.0+mycompany.13\(ga +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +We understand that minor patches are often required to make a library work +inside of a package ecosystem. This is totally acceptable, but we ask that +no substantive changes are made. +.IP 4. 3 +Do not extend or modify mpi4py\(aqs API. +.sp +If you absolutely have to break the previous rule, please do not add +additional functions to the namespace, or modify the API of existing +functions. Having additional functions exposed in distributed versions is +confusing for users and developers alike. +.UNINDENT +.SH LICENSE +.sp +Copyright (c) 2024, Lisandro Dalcin +.sp +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +.INDENT 0.0 +.IP 1. 3 +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. +.IP 2. 3 +Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +.IP 3. 3 +Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. +.UNINDENT +.sp +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \(dqAS IS\(dq +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.SH CHANGES +.SS Release 4.0.0 [2024\-07\-28] +.INDENT 0.0 +.IP \(bu 2 +New features: +.INDENT 2.0 +.IP \(bu 2 +Add support for the MPI\-4.0 standard. +.INDENT 2.0 +.IP \(bu 2 +Use large count MPI\-4 routines. +.IP \(bu 2 +Add persistent collective communication. +.IP \(bu 2 +Add partitioned point\-to\-point communication. +.IP \(bu 2 +Add new communicator constructors. +.IP \(bu 2 +Add the \fBSession\fP class and its methods. +.UNINDENT +.IP \(bu 2 +Add support for the MPI\-4.1 standard. +.INDENT 2.0 +.IP \(bu 2 +Add non\-destructive completion test for multiple requests. +.IP \(bu 2 +Add value\-index datatype constructor. +.IP \(bu 2 +Add communicator/session buffer attach/detach/flush. +.IP \(bu 2 +Support for removal of error classes/codes/strings. +.IP \(bu 2 +Support for querying hardware resource information. +.UNINDENT +.IP \(bu 2 +Add preliminary support for the upcoming MPI\-5.0 standard. +.INDENT 2.0 +.IP \(bu 2 +User\-level failure mitigation (ULFM). +.UNINDENT +.IP \(bu 2 +\fBmpi4py.util.pool\fP: New drop\-in replacement for \fBmultiprocessing.pool\fP\&. +.IP \(bu 2 +\fBmpi4py.util.sync\fP: New synchronization utilities. +.IP \(bu 2 +Add runtime check for mismatch between \fBmpiexec\fP and MPI library. +.IP \(bu 2 +Support \X'tty: link https://scikit-build.readthedocs.io/'\fI\%scikit\-build\-core\fP\X'tty: link' as an alternative build backend. +.UNINDENT +.INDENT 2.0 +.IP \(bu 2 +Support \X'tty: link https://meson-python.readthedocs.io/'\fI\%meson\-python\fP\X'tty: link' as an alternative build backend. +.UNINDENT +.IP \(bu 2 +Enhancements: +.INDENT 2.0 +.IP \(bu 2 +\fBmpi4py.futures\fP: Support for parallel tasks. +.IP \(bu 2 +\fBmpi4py.futures\fP: Report exception tracebacks in workers. +.IP \(bu 2 +\fBmpi4py.util.pkl5\fP: Add support for collective communication. +.IP \(bu 2 +Add methods \fBDatatype.fromcode()\fP, \fBDatatype.tocode()\fP and +attributes \fBDatatype.typestr\fP, \fBDatatype.typechar\fP to simplify +NumPy interoperability for simple cases. +.IP \(bu 2 +Add methods \fBComm.Create_errhandler()\fP, \fBWin.Create_errhandler()\fP, +and \fBFile.Create_errhandler()\fP to create custom error handlers. +.IP \(bu 2 +Add support for pickle serialization of instances of MPI types. +All instances of \fBDatatype\fP, \fBInfo\fP, and \fBStatus\fP can be +serialized. Instances of \fBOp\fP can be serialized only if created +through \fBmpi4py\fP by calling \fBOp.Create()\fP\&. Instances of other MPI +types can be serialized only if they reference predefined handles. +.IP \(bu 2 +Add \fBhandle\fP attribute and \fBfromhandle()\fP class method to MPI +classes to ease interoperability with external code. The handle +value is a unsigned integer guaranteed to fit on the platform\(aqs +\fBuintptr_t\fP C type. +.IP \(bu 2 +Add lowercase \fBfree()\fP method to MPI classes to ease MPI object +deallocation and cleanup. This method eventually attempts to call +\fBFree()\fP, but only if the object\(aqs MPI handle is not a null or +predefined handle, and such call is allowed within the World Model +init/finalize. +.UNINDENT +.IP \(bu 2 +Backward\-incompatible changes: +.INDENT 2.0 +.IP \(bu 2 +Python 2 is no longer supported, Python 3.6+ is required, but +typing stubs are supported for Python 3.8+. +.IP \(bu 2 +The \fBIntracomm.Create_group()\fP method is no longer defined in the +base \fBComm\fP class. +.IP \(bu 2 +\fBGroup.Compare()\fP and \fBComm.Compare()\fP are no longer class methods +but instance methods. Existing codes using the former class +methods are expected to continue working. +.IP \(bu 2 +\fBGroup.Translate_ranks()\fP is no longer a class method but an +instance method. Existing codes using the former class method are +expected to continue working. +.IP \(bu 2 +The \fBLB\fP and \fBUB\fP datatypes are no longer available, use +\fBDatatype.Create_resized()\fP instead. +.IP \(bu 2 +The \fBHOST\fP predefined attribute key is no longer available. +.IP \(bu 2 +The \fBMPI.memory\fP class has been renamed to \fBMPI.buffer\fP\&. The old +name is still available as an alias to the new name. +.IP \(bu 2 +The \fBmpi4py.dl\fP module is no longer available. +.IP \(bu 2 +The \fBmpi4py.get_config\fP function returns an empty dictionary. +.UNINDENT +.IP \(bu 2 +Miscellaneous: +.INDENT 2.0 +.IP \(bu 2 +The project is now licenced under the BSD\-3\-Clause license. This +change is fairly inconsequential for users and distributors. It +simply adds an additional clause against using contributor names +for promotional purposes without their consent. +.IP \(bu 2 +Add a new guidelines section to documentation laying out new fair +play rules. These rules ask companies and outside developers to +refrain from reusing the \fBmpi4py\fP name in unaffiliated projects, +publishing binary mpi4py wheels on the main Python Package Index +(PyPI), and distributing modified versions with incompatible or +extended API changes. The primary motivation of these rules is to +avoid fragmentation and end\-user confusion. +.UNINDENT +.UNINDENT +.SS Release 3.1.6 [2024\-04\-14] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +Fix various build issues. +.UNINDENT +.SS Release 3.1.5 [2023\-10\-04] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +Rebuild C sources with Cython 0.29.36 to support Python 3.12. +.UNINDENT +.SS Release 3.1.4 [2022\-11\-02] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +Rebuild C sources with Cython 0.29.32 to support Python 3.11. +.IP \(bu 2 +Fix contiguity check for DLPack and CAI buffers. +.IP \(bu 2 +Workaround build failures with setuptools v60. +.UNINDENT +.SS Release 3.1.3 [2021\-11\-25] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +Add missing support for \fBMPI.BOTTOM\fP to generalized all\-to\-all collectives. +.UNINDENT +.SS Release 3.1.2 [2021\-11\-04] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +\fBmpi4py.futures\fP: Add \fB_max_workers\fP property to \fBMPIPoolExecutor\fP\&. +.IP \(bu 2 +\fBmpi4py.util.dtlib\fP: Fix computation of alignment for predefined datatypes. +.IP \(bu 2 +\fBmpi4py.util.pkl5\fP: Fix deadlock when using \fBssend()\fP + \fBmprobe()\fP\&. +.IP \(bu 2 +\fBmpi4py.util.pkl5\fP: Add environment variable \fBMPI4PY_PICKLE_THRESHOLD\fP\&. +.IP \(bu 2 +\fBmpi4py.rc\fP: Interpret \fB\(dqy\(dq\fP and \fB\(dqn\(dq\fP strings as boolean values. +.IP \(bu 2 +Fix/add typemap/typestr for \fBMPI.WCHAR\fP/\fBMPI.COUNT\fP datatypes. +.IP \(bu 2 +Minor fixes and additions to documentation. +.IP \(bu 2 +Minor fixes to typing support. +.IP \(bu 2 +Support for local version identifier (PEP\-440). +.UNINDENT +.SS Release 3.1.1 [2021\-08\-14] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +Fix typo in Requires\-Python package metadata. +.IP \(bu 2 +Regenerate C sources with Cython 0.29.24. +.UNINDENT +.SS Release 3.1.0 [2021\-08\-12] +.sp +\fBWARNING:\fP +.INDENT 0.0 +.INDENT 3.5 +This is the last release supporting Python 2. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP \(bu 2 +New features: +.INDENT 2.0 +.IP \(bu 2 +\fBmpi4py.util\fP: New package collecting miscellaneous utilities. +.UNINDENT +.IP \(bu 2 +Enhancements: +.INDENT 2.0 +.IP \(bu 2 +Add pickle\-based \fBRequest.waitsome()\fP and \fBRequest.testsome()\fP\&. +.IP \(bu 2 +Add lowercase methods \fBRequest.get_status()\fP and \fBRequest.cancel()\fP\&. +.IP \(bu 2 +Support for passing Python GPU arrays compliant with the \X'tty: link https://github.com/dmlc/dlpack'\fI\%DLPack\fP\X'tty: link' data +interchange mechanism (\X'tty: link https://data-apis.org/array-api/latest/design_topics/data_interchange.html'\fI\%link\fP\X'tty: link') and the \fB__cuda_array_interface__\fP +(CAI) standard (\X'tty: link https://numba.readthedocs.io/en/stable/cuda/cuda_array_interface.html'\fI\%link\fP\X'tty: link') to uppercase methods. This support requires +that mpi4py is built against \X'tty: link https://developer.nvidia.com/blog/introduction-cuda-aware-mpi/'\fI\%CUDA\-aware MPI\fP\X'tty: link' implementations. This +feature is currently experimental and subject to future changes. +.IP \(bu 2 +\fBmpi4py.futures\fP: Add support for initializers and canceling futures at shutdown. +Environment variables names now follow the pattern \fBMPI4PY_FUTURES_*\fP, the +previous \fBMPI4PY_*\fP names are deprecated. +.IP \(bu 2 +Add type annotations to Cython code. The first line of the docstring of functions +and methods displays a signature including type annotations. +.IP \(bu 2 +Add companion stub files to support type checkers. +.IP \(bu 2 +Support for weak references. +.UNINDENT +.IP \(bu 2 +Miscellaneous: +.INDENT 2.0 +.IP \(bu 2 +Add a new mpi4py publication (\X'tty: link https://doi.org/10.1109/MCSE.2021.3083216'\fI\%link\fP\X'tty: link') to the citation listing. +.UNINDENT +.UNINDENT +.SS Release 3.0.3 [2019\-11\-04] +.INDENT 0.0 +.IP \(bu 2 +Regenerate Cython wrappers to support Python 3.8. +.UNINDENT +.SS Release 3.0.2 [2019\-06\-11] +.INDENT 0.0 +.IP \(bu 2 +Bug fixes: +.INDENT 2.0 +.IP \(bu 2 +Fix handling of readonly buffers in support for Python 2 legacy +buffer interface. The issue triggers only when using a buffer\-like +object that is readonly and does not export the new Python 3 +buffer interface. +.IP \(bu 2 +Fix build issues with Open MPI 4.0.x series related to removal of +many MPI\-1 symbols deprecated in MPI\-2 and removed in MPI\-3. +.IP \(bu 2 +Minor documentation fixes. +.UNINDENT +.UNINDENT +.SS Release 3.0.1 [2019\-02\-15] +.INDENT 0.0 +.IP \(bu 2 +Bug fixes: +.INDENT 2.0 +.IP \(bu 2 +Fix \fBComm.scatter()\fP and other collectives corrupting input send +list. Add safety measures to prevent related issues in global +reduction operations. +.IP \(bu 2 +Fix error\-checking code for counts in \fBOp.Reduce_local()\fP\&. +.UNINDENT +.IP \(bu 2 +Enhancements: +.INDENT 2.0 +.IP \(bu 2 +Map size\-specific Python/NumPy typecodes to MPI datatypes. +.IP \(bu 2 +Allow partial specification of target list/tuple arguments in the +various \fBWin\fP RMA methods. +.IP \(bu 2 +Workaround for removal of \fBMPI_{LB|UB}\fP in Open MPI 4.0. +.IP \(bu 2 +Support for Microsoft MPI v10.0. +.UNINDENT +.UNINDENT +.SS Release 3.0.0 [2017\-11\-08] +.INDENT 0.0 +.IP \(bu 2 +New features: +.INDENT 2.0 +.IP \(bu 2 +\fBmpi4py.futures\fP: Execute computations asynchronously using a pool +of MPI processes. This package is based on \fBconcurrent.futures\fP +from the Python standard library. +.IP \(bu 2 +\fBmpi4py.run\fP: Run Python code and abort execution in case of +unhandled exceptions to prevent deadlocks. +.IP \(bu 2 +\fBmpi4py.bench\fP: Run basic MPI benchmarks and tests. +.UNINDENT +.IP \(bu 2 +Enhancements: +.INDENT 2.0 +.IP \(bu 2 +Lowercase, pickle\-based collective communication calls are now +thread\-safe through the use of fine\-grained locking. +.IP \(bu 2 +The \fBMPI\fP module now exposes a \fBmemory\fP type which is a +lightweight variant of the builtin \fBmemoryview\fP type, but +exposes both the legacy Python 2 and the modern Python 3 buffer +interface under a Python 2 runtime. +.IP \(bu 2 +The \fBMPI.Comm.Alltoallw()\fP method now uses \fBcount=1\fP and +\fBdispl=0\fP as defaults, assuming that messages are specified +through user\-defined datatypes. +.IP \(bu 2 +The \fBRequest.Wait[all]()\fP methods now return \fBTrue\fP to match +the interface of \fBRequest.Test[all]()\fP\&. +.IP \(bu 2 +The \fBWin\fP class now implements the Python buffer interface. +.UNINDENT +.IP \(bu 2 +Backward\-incompatible changes: +.INDENT 2.0 +.IP \(bu 2 +The \fBbuf\fP argument of the \fBMPI.Comm.recv()\fP method is +deprecated, passing anything but \fBNone\fP emits a warning. +.IP \(bu 2 +The \fBMPI.Win.memory\fP property was removed, use the +\fBMPI.Win.tomemory()\fP method instead. +.IP \(bu 2 +Executing \fBpython \-m mpi4py\fP in the command line is now +equivalent to \fBpython \-m mpi4py.run\fP\&. For the former behavior, +use \fBpython \-m mpi4py.bench\fP\&. +.IP \(bu 2 +Python 2.6 and 3.2 are no longer supported. The \fBmpi4py.MPI\fP +module may still build and partially work, but other pure\-Python +modules under the \fBmpi4py\fP namespace will not. +.IP \(bu 2 +Windows: Remove support for legacy MPICH2, Open MPI, and DeinoMPI. +.UNINDENT +.UNINDENT +.SS Release 2.0.0 [2015\-10\-18] +.INDENT 0.0 +.IP \(bu 2 +Support for MPI\-3 features. +.INDENT 2.0 +.IP \(bu 2 +Matched probes and receives. +.IP \(bu 2 +Nonblocking collectives. +.IP \(bu 2 +Neighborhood collectives. +.IP \(bu 2 +New communicator constructors. +.IP \(bu 2 +Request\-based RMA operations. +.IP \(bu 2 +New RMA communication and synchronisation calls. +.IP \(bu 2 +New window constructors. +.IP \(bu 2 +New datatype constructor. +.IP \(bu 2 +New C++ boolean and floating complex datatypes. +.UNINDENT +.IP \(bu 2 +Support for MPI\-2 features not included in previous releases. +.INDENT 2.0 +.IP \(bu 2 +Generalized All\-to\-All collective (\fBComm.Alltoallw()\fP) +.IP \(bu 2 +User\-defined data representations (\fBRegister_datarep()\fP) +.UNINDENT +.IP \(bu 2 +New scalable implementation of reduction operations for Python +objects. This code is based on binomial tree algorithms using +point\-to\-point communication and duplicated communicator +contexts. To disable this feature, use +\fBmpi4py.rc.fast_reduce = False\fP\&. +.IP \(bu 2 +Backward\-incompatible changes: +.INDENT 2.0 +.IP \(bu 2 +Python 2.4, 2.5, 3.0 and 3.1 are no longer supported. +.IP \(bu 2 +Default MPI error handling policies are overridden. After import, +mpi4py sets the \fBERRORS_RETURN\fP error handler in \fBCOMM_SELF\fP +and \fBCOMM_WORLD\fP, as well as any new \fBComm\fP, \fBWin\fP, or +\fBFile\fP instance created through mpi4py, thus effectively +ignoring the MPI rules about error handler inheritance. This way, +MPI errors translate to Python exceptions. To disable this +behavior and use the standard MPI error handling rules, use +\fBmpi4py.rc.errors = \(aqdefault\(aq\fP\&. +.IP \(bu 2 +Change signature of all send methods, +\fBdest\fP is a required argument. +.IP \(bu 2 +Change signature of all receive and probe methods, +\fBsource\fP defaults to \fBANY_SOURCE\fP, +\fBtag\fP defaults to \fBANY_TAG\fP\&. +.IP \(bu 2 +Change signature of send lowercase\-spelling methods, +\fBobj\fP arguments are not mandatory. +.IP \(bu 2 +Change signature of recv lowercase\-spelling methods, +renamed \(aqobj\(aq arguments to \(aqbuf\(aq. +.IP \(bu 2 +Change \fBRequest.Waitsome()\fP and \fBRequest.Testsome()\fP +to return \fBNone\fP or \fBlist\fP\&. +.IP \(bu 2 +Change signature of all lowercase\-spelling collectives, +\fBsendobj\fP arguments are now mandatory, +\fBrecvobj\fP arguments were removed. +.IP \(bu 2 +Reduction operations \fBMAXLOC\fP and \fBMINLOC\fP are no longer +special\-cased in lowercase\-spelling methods \fBComm.[all]reduce()\fP +and \fBComm.[ex]scan()\fP, the input object must be specified as a +tuple \fB(obj, location)\fP\&. +.IP \(bu 2 +Change signature of name publishing functions. +The new signatures are +\fBPublish_name(service_name, port_name, info=INFO_NULL)\fP and +\fBUnpublish_name(service_name, port_name, info=INFO_NULL)\(ga\fP\&. +.IP \(bu 2 +\fBWin\fP instances now cache Python objects exposing memory by +keeping references instead of using MPI attribute caching. +.IP \(bu 2 +Change signature of \fBWin.Lock()\fP\&. +The new signature is +\fBWin.Lock(rank, lock_type=LOCK_EXCLUSIVE, assertion=0)\fP\&. +.IP \(bu 2 +Move \fBCartcomm.Map()\fP to \fBIntracomm.Cart_map()\fP\&. +.IP \(bu 2 +Move \fBGraphcomm.Map()\fP to \fBIntracomm.Graph_map()\fP\&. +.IP \(bu 2 +Remove the \fBmpi4py.MPE\fP module. +.IP \(bu 2 +Rename the Cython definition file for use with \fBcimport\fP +statement from \fBmpi_c.pxd\fP to \fBlibmpi.pxd\fP\&. +.UNINDENT +.UNINDENT +.SS Release 1.3.1 [2013\-08\-07] +.INDENT 0.0 +.IP \(bu 2 +Regenerate C wrappers with Cython 0.19.1 to support Python 3.3. +.IP \(bu 2 +Install \fB*.pxd\fP files in \fB/mpi4py\fP to ease the +support for Cython\(aqs \fBcimport\fP statement in code requiring to +access mpi4py internals. +.IP \(bu 2 +As a side\-effect of using Cython 0.19.1, ancient Python 2.3 is no +longer supported. If you really need it, you can install an older +Cython and run \fBpython setup.py build_src \-\-force\fP\&. +.UNINDENT +.SS Release 1.3 [2012\-01\-20] +.INDENT 0.0 +.IP \(bu 2 +Now \fBComm.recv()\fP accept a buffer to receive the message. +.IP \(bu 2 +Add \fBComm.irecv()\fP and \fBRequest.{wait|test}[any|all]()\fP\&. +.IP \(bu 2 +Add \fBIntracomm.Spawn_multiple()\fP\&. +.IP \(bu 2 +Better buffer handling for PEP 3118 and legacy buffer interfaces. +.IP \(bu 2 +Add support for attribute attribute caching on communicators, +datatypes and windows. +.IP \(bu 2 +Install MPI\-enabled Python interpreter as +\fB/mpi4py/bin/python\-mpi\fP\&. +.IP \(bu 2 +Windows: Support for building with Open MPI. +.UNINDENT +.SS Release 1.2.2 [2010\-09\-13] +.INDENT 0.0 +.IP \(bu 2 +Add \fBmpi4py.get_config()\fP to retrieve information (compiler +wrappers, includes, libraries, etc) about the MPI implementation +employed to build mpi4py. +.IP \(bu 2 +Workaround Python libraries with missing GILState\-related API calls +in case of non\-threaded Python builds. +.IP \(bu 2 +Windows: look for MPICH2, DeinoMPI, Microsoft HPC Pack at their +default install locations under %ProgramFiles. +.IP \(bu 2 +MPE: fix hacks related to old API\(aqs, these hacks are broken when MPE +is built with a MPI implementations other than MPICH2. +.IP \(bu 2 +HP\-MPI: fix for missing Fortran datatypes, use dlopen() to load the +MPI shared library before MPI_Init() +.IP \(bu 2 +Many distutils\-related fixes, cleanup, and enhancements, better +logics to find MPI compiler wrappers. +.IP \(bu 2 +Support for \fBpip install mpi4py\fP\&. +.UNINDENT +.SS Release 1.2.1 [2010\-02\-26] +.INDENT 0.0 +.IP \(bu 2 +Fix declaration in Cython include file. This declaration, while +valid for Cython, broke the simple\-minded parsing used in +conf/mpidistutils.py to implement configure\-tests for availability +of MPI symbols. +.IP \(bu 2 +Update SWIG support and make it compatible with Python 3. Also +generate an warning for SWIG < 1.3.28. +.IP \(bu 2 +Fix distutils\-related issues in Mac OS X. Now ARCHFLAGS environment +variable is honored of all Python\(aqs \fBconfig/Makefile\fP variables. +.IP \(bu 2 +Fix issues with Open MPI < 1.4.2 related to error checking and +\fBMPI_XXX_NULL\fP handles. +.UNINDENT +.SS Release 1.2 [2009\-12\-29] +.INDENT 0.0 +.IP \(bu 2 +Automatic MPI datatype discovery for NumPy arrays and PEP\-3118 +buffers. Now buffer\-like objects can be messaged directly, it is no +longer required to explicitly pass a 2/3\-list/tuple like \fB[data, +MPI.DOUBLE]\fP, or \fB[data, count, MPI.DOUBLE]\fP\&. Only basic types +are supported, i.e., all C/C99\-native signed/unsigned integral types +and single/double precision real/complex floating types. Many thanks +to Eilif Muller for the initial feedback. +.IP \(bu 2 +Nonblocking send of pickled Python objects. Many thanks to Andreas +Kloeckner for the initial patch and enlightening discussion about +this enhancement. +.IP \(bu 2 +\fBRequest\fP instances now hold a reference to the Python object +exposing the buffer involved in point\-to\-point communication or +parallel I/O. Many thanks to Andreas Kloeckner for the initial +feedback. +.IP \(bu 2 +Support for logging of user\-defined states and events using \X'tty: link https://www.mcs.anl.gov/research/projects/perfvis/'\fI\%MPE\fP\X'tty: link'\&. Runtime +(i.e., without requiring a recompile!) activation of logging of all +MPI calls is supported in POSIX platforms implementing \fBdlopen()\fP\&. +.IP \(bu 2 +Support for all the new features in MPI\-2.2 (new C99 and F90 +datatypes, distributed graph topology, local reduction operation, +and other minor enhancements). +.IP \(bu 2 +Fix the annoying issues related to Open MPI and Python dynamic +loading of extension modules in platforms supporting \fBdlopen()\fP\&. +.IP \(bu 2 +Fix SLURM dynamic loading issues on SiCortex. Many thanks to Ian +Langmore for providing me shell access. +.UNINDENT +.SS Release 1.1.0 [2009\-06\-06] +.INDENT 0.0 +.IP \(bu 2 +Fix bug in \fBComm.Iprobe()\fP that caused segfaults as Python C\-API +calls were issued with the GIL released (issue #2). +.IP \(bu 2 +Add \fBComm.bsend()\fP and \fBComm.ssend()\fP for buffered and +synchronous send semantics when communicating general Python +objects. +.IP \(bu 2 +Now the call \fBInfo.Get(key)\fP return a \fIsingle\fP value (i.e, instead +of a 2\-tuple); this value is \fBNone\fP if \fBkey\fP is not in the +\fBInfo\fP object, or a string otherwise. Previously, the call +redundantly returned \fB(None, False)\fP for missing key\-value pairs; +\fBNone\fP is enough to signal a missing entry. +.IP \(bu 2 +Add support for parametrized Fortran datatypes. +.IP \(bu 2 +Add support for decoding user\-defined datatypes. +.IP \(bu 2 +Add support for user\-defined reduction operations on memory +buffers. However, at most 16 user\-defined reduction operations +can be created. Ask the author for more room if you need it. +.UNINDENT +.SS Release 1.0.0 [2009\-03\-20] +.sp +This is the fist release of the all\-new, Cython\-based, implementation +of \fIMPI for Python\fP\&. Unfortunately, this implementation is not +backward\-compatible with the previous one. The list below summarizes +the more important changes that can impact user codes. +.INDENT 0.0 +.IP \(bu 2 +Some communication calls had \fIoverloaded\fP functionality. Now there +is a clear distinction between communication of general Python +object with \fIpickle\fP, and (fast, near C\-speed) communication of +buffer\-like objects (e.g., NumPy arrays). +.INDENT 2.0 +.IP \(bu 2 +for communicating general Python objects, you have to use +all\-lowercase methods, like \fBsend()\fP, \fBrecv()\fP, \fBbcast()\fP, +etc. +.IP \(bu 2 +for communicating array data, you have to use \fBSend()\fP, +\fBRecv()\fP, \fBBcast()\fP, etc. methods. Buffer arguments to these +calls must be explicitly specified by using a 2/3\-list/tuple like +\fB[data, MPI.DOUBLE]\fP, or \fB[data, count, MPI.DOUBLE]\fP (the +former one uses the byte\-size of \fBdata\fP and the extent of the +MPI datatype to define the \fBcount\fP). +.UNINDENT +.IP \(bu 2 +Indexing a communicator with an integer returned a special object +associating the communication with a target rank, alleviating you +from specifying source/destination/root arguments in point\-to\-point +and collective communications. This functionality is no longer +available, expressions like: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +MPI.COMM_WORLD[0].Send(...) +MPI.COMM_WORLD[0].Recv(...) +MPI.COMM_WORLD[0].Bcast(...) +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +have to be replaced by: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +MPI.COMM_WORLD.Send(..., dest=0) +MPI.COMM_WORLD.Recv(..., source=0) +MPI.COMM_WORLD.Bcast(..., root=0) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +Automatic MPI initialization (i.e., at import time) requests the +maximum level of MPI thread support (i.e., it is done by calling +\fBMPI_Init_thread()\fP and passing \fBMPI_THREAD_MULTIPLE\fP). In case +you need to change this behavior, you can tweak the contents of the +\fBmpi4py.rc\fP module. +.IP \(bu 2 +In order to obtain the values of predefined attributes attached to +the world communicator, now you have to use the \fBGet_attr()\fP +method on the \fBMPI.COMM_WORLD\fP instance: +.INDENT 2.0 +.INDENT 3.5 +.sp +.nf +.ft C +tag_ub = MPI.COMM_WORLD.Get_attr(MPI.TAG_UB) +.ft P +.fi +.UNINDENT +.UNINDENT +.IP \(bu 2 +In the previous implementation, \fBMPI.COMM_WORLD\fP and +\fBMPI.COMM_SELF\fP were associated to \fBduplicates\fP of the (C\-level) +\fBMPI_COMM_WORLD\fP and \fBMPI_COMM_SELF\fP predefined communicator +handles. Now this is no longer the case, \fBMPI.COMM_WORLD\fP and +\fBMPI.COMM_SELF\fP proxies the \fBactual\fP \fBMPI_COMM_WORLD\fP and +\fBMPI_COMM_SELF\fP handles. +.IP \(bu 2 +Convenience aliases \fBMPI.WORLD\fP and \fBMPI.SELF\fP were removed. Use +instead \fBMPI.COMM_WORLD\fP and \fBMPI.COMM_SELF\fP\&. +.IP \(bu 2 +Convenience constants \fBMPI.WORLD_SIZE\fP and \fBMPI.WORLD_RANK\fP were +removed. Use instead \fBMPI.COMM_WORLD.Get_size()\fP and +\fBMPI.COMM_WORLD.Get_rank()\fP\&. +.UNINDENT +.SH AUTHOR +Lisandro Dalcin +.SH COPYRIGHT +2024, Lisandro Dalcin +.\" Generated by docutils manpage writer. +. diff --git a/4.0.0/mpi4py.bib b/4.0.0/mpi4py.bib new file mode 100644 index 0000000..26e99bf --- /dev/null +++ b/4.0.0/mpi4py.bib @@ -0,0 +1,58 @@ +@article{mpi4py.futures, + title = {mpi4py.futures: {MPI}-Based Asynchronous Task Execution for {P}ython}, + author = {Rogowski, Marcin and Aseeri, Samar and Keyes, David and Dalcin, Lisandro}, + journal = {IEEE Transactions on Parallel and Distributed Systems}, + volume = {34}, + number = {2}, + pages = {611--622}, + year = {2023}, + doi = {10.1109/TPDS.2022.3225481} +} + +@article{Dalcin2021, + title = {mpi4py: Status Update After 12 Years of Development}, + author = {Dalcin, Lisandro and Fang, Yao-Lung Leo}, + journal = {Computing in Science \& Engineering}, + volume = {23}, + number = {4}, + pages = {47--54}, + year = {2021}, + issn = {1521-9615}, + doi = {10.1109/MCSE.2021.3083216} +} + +@article{Dalcin2011, + title = {Parallel distributed computing using {P}ython}, + author = {Lisandro D. Dalcin and Rodrigo R. Paz and Pablo A. Kler and Alejandro Cosimo}, + journal = {Advances in Water Resources}, + volume = {34}, + number = {9}, + pages = {1124--1139}, + year = {2011}, + issn = {0309-1708}, + doi = {10.1016/j.advwatres.2011.04.013}, +} + +@article{mpi4py2008, + title = {{MPI} for {P}ython: Performance improvements and {MPI-2} extensions}, + author = {Lisandro Dalcin and Rodrigo Paz and Mario Storti and Jorge D'Elia}, + journal = {Journal of Parallel and Distributed Computing}, + volume = {68}, + number = {5}, + pages = {655--662}, + year = {2008}, + issn = {0743-7315}, + doi = {10.1016/j.jpdc.2007.09.005}, +} + +@article{mpi4py2005, + title = {{MPI} for {P}ython}, + author = {Lisandro Dalcin and Rodrigo Paz and Mario Storti}, + journal = {Journal of Parallel and Distributed Computing}, + volume = {65}, + number = {9}, + pages = {1108--1115}, + year = {2005}, + issn = {0743-7315}, + doi = {10.1016/j.jpdc.2005.03.010}, +} diff --git a/4.0.0/mpi4py.info b/4.0.0/mpi4py.info new file mode 100644 index 0000000..6479ce6 --- /dev/null +++ b/4.0.0/mpi4py.info @@ -0,0 +1,36928 @@ +This is mpi4py.info, produced by makeinfo version 6.8 from mpi4py.texi. + + MPI for Python 4.0.0, Jul 28, 2024 + + Lisandro Dalcin + + Copyright © 2024, Lisandro Dalcin + +INFO-DIR-SECTION Miscellaneous +START-INFO-DIR-ENTRY +* mpi4py: (mpi4py.info). MPI for Python. +END-INFO-DIR-ENTRY + + + Generated by Sphinx 7.4.7. + + +File: mpi4py.info, Node: Top, Next: Introduction, Up: (dir) + +MPI for Python +************** + + MPI for Python 4.0.0, Jul 28, 2024 + + Lisandro Dalcin + + Copyright © 2024, Lisandro Dalcin + +Abstract +======== + +‘MPI for Python’ provides Python bindings for the ‘Message Passing +Interface’ (MPI) standard, allowing Python applications to exploit +multiple processors on workstations, clusters and supercomputers. + +This package builds on the MPI specification and provides an object +oriented interface resembling the MPI-2 C++ bindings. It supports +point-to-point (sends, receives) and collective (broadcasts, scatters, +gathers) communication of any ‘picklable’ Python object, as well as +efficient communication of Python objects exposing the Python buffer +interface (e.g. NumPy arrays and builtin bytes/array/memoryview +objects). + +* Menu: + +* Introduction:: +* Overview:: +* Tutorial:: +* mpi4py:: +* mpi4py.MPI: mpi4py MPI. +* mpi4py.typing: mpi4py typing. +* mpi4py.futures: mpi4py futures. +* mpi4py.util: mpi4py util. +* mpi4py.run: mpi4py run. +* mpi4py.bench: mpi4py bench. +* Reference:: +* Citation: Citation<2>. +* Installation:: +* Development:: +* Guidelines:: +* LICENSE:: +* CHANGES:: +* Python Module Index:: +* Index:: + + — The Detailed Node Listing — + +Introduction + +* What is MPI?:: +* What is Python?:: +* Related Projects:: + +Overview + +* Communicating Python Objects and Array Data:: +* Communicators:: +* Point-to-Point Communications:: +* Collective Communications:: +* Support for GPU-aware MPI:: +* Dynamic Process Management:: +* One-Sided Communications:: +* Parallel Input/Output:: +* Environmental Management:: + +Point-to-Point Communications + +* Blocking Communications:: +* Nonblocking Communications:: +* Persistent Communications:: + +Environmental Management + +* Initialization and Exit:: +* Implementation Information:: +* Timers:: +* Error Handling:: + +Tutorial + +* Running Python scripts with MPI:: +* Point-to-Point Communication:: +* Collective Communication:: +* Input/Output (MPI-IO): Input/Output MPI-IO. +* Dynamic Process Management: Dynamic Process Management<2>. +* GPU-aware MPI + Python GPU arrays:: +* One-Sided Communication (RMA): One-Sided Communication RMA. +* Wrapping with SWIG:: +* Wrapping with F2Py:: + +mpi4py + +* Runtime configuration options:: +* Environment variables:: +* Miscellaneous functions:: + +mpi4py.MPI + +* Classes:: +* Functions:: +* Attributes:: + +mpi4py.futures + +* MPIPoolExecutor:: +* MPICommExecutor:: +* Command line:: +* Parallel tasks:: +* Utilities:: +* Examples:: +* Citation:: + +Examples + +* Computing the Julia set:: +* Computing Pi (parallel task): Computing Pi parallel task. + +mpi4py.util + +* mpi4py.util.dtlib: mpi4py util dtlib. +* mpi4py.util.pkl5: mpi4py util pkl5. +* mpi4py.util.pool: mpi4py util pool. +* mpi4py.util.sync: mpi4py util sync. + +mpi4py.util.pkl5 + +* Examples: Examples<2>. + +mpi4py.util.sync + +* Sequential execution:: +* Global counter:: +* Mutual exclusion:: +* Condition variable:: +* Semaphore object:: +* Examples: Examples<3>. + +mpi4py.run + +* Exceptions and deadlocks:: +* Command line: Command line<2>. + +Reference + +* mpi4py.MPI: mpi4py MPI<2>. + +mpi4py.MPI + +* mpi4py.MPI.BottomType: mpi4py MPI BottomType. +* mpi4py.MPI.BufferAutomaticType: mpi4py MPI BufferAutomaticType. +* mpi4py.MPI.Cartcomm: mpi4py MPI Cartcomm. +* mpi4py.MPI.Comm: mpi4py MPI Comm. +* mpi4py.MPI.Datatype: mpi4py MPI Datatype. +* mpi4py.MPI.Distgraphcomm: mpi4py MPI Distgraphcomm. +* mpi4py.MPI.Errhandler: mpi4py MPI Errhandler. +* mpi4py.MPI.File: mpi4py MPI File. +* mpi4py.MPI.Graphcomm: mpi4py MPI Graphcomm. +* mpi4py.MPI.Grequest: mpi4py MPI Grequest. +* mpi4py.MPI.Group: mpi4py MPI Group. +* mpi4py.MPI.InPlaceType: mpi4py MPI InPlaceType. +* mpi4py.MPI.Info: mpi4py MPI Info. +* mpi4py.MPI.Intercomm: mpi4py MPI Intercomm. +* mpi4py.MPI.Intracomm: mpi4py MPI Intracomm. +* mpi4py.MPI.Message: mpi4py MPI Message. +* mpi4py.MPI.Op: mpi4py MPI Op. +* mpi4py.MPI.Pickle: mpi4py MPI Pickle. +* mpi4py.MPI.Prequest: mpi4py MPI Prequest. +* mpi4py.MPI.Request: mpi4py MPI Request. +* mpi4py.MPI.Session: mpi4py MPI Session. +* mpi4py.MPI.Status: mpi4py MPI Status. +* mpi4py.MPI.Topocomm: mpi4py MPI Topocomm. +* mpi4py.MPI.Win: mpi4py MPI Win. +* mpi4py.MPI.buffer: mpi4py MPI buffer. +* mpi4py.MPI.memory: mpi4py MPI memory. +* mpi4py.MPI.Exception: mpi4py MPI Exception. +* mpi4py.MPI.Add_error_class: mpi4py MPI Add_error_class. +* mpi4py.MPI.Add_error_code: mpi4py MPI Add_error_code. +* mpi4py.MPI.Add_error_string: mpi4py MPI Add_error_string. +* mpi4py.MPI.Aint_add: mpi4py MPI Aint_add. +* mpi4py.MPI.Aint_diff: mpi4py MPI Aint_diff. +* mpi4py.MPI.Alloc_mem: mpi4py MPI Alloc_mem. +* mpi4py.MPI.Attach_buffer: mpi4py MPI Attach_buffer. +* mpi4py.MPI.Close_port: mpi4py MPI Close_port. +* mpi4py.MPI.Compute_dims: mpi4py MPI Compute_dims. +* mpi4py.MPI.Detach_buffer: mpi4py MPI Detach_buffer. +* mpi4py.MPI.Finalize: mpi4py MPI Finalize. +* mpi4py.MPI.Flush_buffer: mpi4py MPI Flush_buffer. +* mpi4py.MPI.Free_mem: mpi4py MPI Free_mem. +* mpi4py.MPI.Get_address: mpi4py MPI Get_address. +* mpi4py.MPI.Get_error_class: mpi4py MPI Get_error_class. +* mpi4py.MPI.Get_error_string: mpi4py MPI Get_error_string. +* mpi4py.MPI.Get_hw_resource_info: mpi4py MPI Get_hw_resource_info. +* mpi4py.MPI.Get_library_version: mpi4py MPI Get_library_version. +* mpi4py.MPI.Get_processor_name: mpi4py MPI Get_processor_name. +* mpi4py.MPI.Get_version: mpi4py MPI Get_version. +* mpi4py.MPI.Iflush_buffer: mpi4py MPI Iflush_buffer. +* mpi4py.MPI.Init: mpi4py MPI Init. +* mpi4py.MPI.Init_thread: mpi4py MPI Init_thread. +* mpi4py.MPI.Is_finalized: mpi4py MPI Is_finalized. +* mpi4py.MPI.Is_initialized: mpi4py MPI Is_initialized. +* mpi4py.MPI.Is_thread_main: mpi4py MPI Is_thread_main. +* mpi4py.MPI.Lookup_name: mpi4py MPI Lookup_name. +* mpi4py.MPI.Open_port: mpi4py MPI Open_port. +* mpi4py.MPI.Pcontrol: mpi4py MPI Pcontrol. +* mpi4py.MPI.Publish_name: mpi4py MPI Publish_name. +* mpi4py.MPI.Query_thread: mpi4py MPI Query_thread. +* mpi4py.MPI.Register_datarep: mpi4py MPI Register_datarep. +* mpi4py.MPI.Remove_error_class: mpi4py MPI Remove_error_class. +* mpi4py.MPI.Remove_error_code: mpi4py MPI Remove_error_code. +* mpi4py.MPI.Remove_error_string: mpi4py MPI Remove_error_string. +* mpi4py.MPI.Unpublish_name: mpi4py MPI Unpublish_name. +* mpi4py.MPI.Wtick: mpi4py MPI Wtick. +* mpi4py.MPI.Wtime: mpi4py MPI Wtime. +* mpi4py.MPI.get_vendor: mpi4py MPI get_vendor. +* mpi4py.MPI.UNDEFINED: mpi4py MPI UNDEFINED. +* mpi4py.MPI.ANY_SOURCE: mpi4py MPI ANY_SOURCE. +* mpi4py.MPI.ANY_TAG: mpi4py MPI ANY_TAG. +* mpi4py.MPI.PROC_NULL: mpi4py MPI PROC_NULL. +* mpi4py.MPI.ROOT: mpi4py MPI ROOT. +* mpi4py.MPI.BOTTOM: mpi4py MPI BOTTOM. +* mpi4py.MPI.IN_PLACE: mpi4py MPI IN_PLACE. +* mpi4py.MPI.KEYVAL_INVALID: mpi4py MPI KEYVAL_INVALID. +* mpi4py.MPI.TAG_UB: mpi4py MPI TAG_UB. +* mpi4py.MPI.IO: mpi4py MPI IO. +* mpi4py.MPI.WTIME_IS_GLOBAL: mpi4py MPI WTIME_IS_GLOBAL. +* mpi4py.MPI.UNIVERSE_SIZE: mpi4py MPI UNIVERSE_SIZE. +* mpi4py.MPI.APPNUM: mpi4py MPI APPNUM. +* mpi4py.MPI.LASTUSEDCODE: mpi4py MPI LASTUSEDCODE. +* mpi4py.MPI.WIN_BASE: mpi4py MPI WIN_BASE. +* mpi4py.MPI.WIN_SIZE: mpi4py MPI WIN_SIZE. +* mpi4py.MPI.WIN_DISP_UNIT: mpi4py MPI WIN_DISP_UNIT. +* mpi4py.MPI.WIN_CREATE_FLAVOR: mpi4py MPI WIN_CREATE_FLAVOR. +* mpi4py.MPI.WIN_FLAVOR: mpi4py MPI WIN_FLAVOR. +* mpi4py.MPI.WIN_MODEL: mpi4py MPI WIN_MODEL. +* mpi4py.MPI.SUCCESS: mpi4py MPI SUCCESS. +* mpi4py.MPI.ERR_LASTCODE: mpi4py MPI ERR_LASTCODE. +* mpi4py.MPI.ERR_TYPE: mpi4py MPI ERR_TYPE. +* mpi4py.MPI.ERR_REQUEST: mpi4py MPI ERR_REQUEST. +* mpi4py.MPI.ERR_OP: mpi4py MPI ERR_OP. +* mpi4py.MPI.ERR_GROUP: mpi4py MPI ERR_GROUP. +* mpi4py.MPI.ERR_INFO: mpi4py MPI ERR_INFO. +* mpi4py.MPI.ERR_ERRHANDLER: mpi4py MPI ERR_ERRHANDLER. +* mpi4py.MPI.ERR_SESSION: mpi4py MPI ERR_SESSION. +* mpi4py.MPI.ERR_COMM: mpi4py MPI ERR_COMM. +* mpi4py.MPI.ERR_WIN: mpi4py MPI ERR_WIN. +* mpi4py.MPI.ERR_FILE: mpi4py MPI ERR_FILE. +* mpi4py.MPI.ERR_BUFFER: mpi4py MPI ERR_BUFFER. +* mpi4py.MPI.ERR_COUNT: mpi4py MPI ERR_COUNT. +* mpi4py.MPI.ERR_TAG: mpi4py MPI ERR_TAG. +* mpi4py.MPI.ERR_RANK: mpi4py MPI ERR_RANK. +* mpi4py.MPI.ERR_ROOT: mpi4py MPI ERR_ROOT. +* mpi4py.MPI.ERR_TRUNCATE: mpi4py MPI ERR_TRUNCATE. +* mpi4py.MPI.ERR_IN_STATUS: mpi4py MPI ERR_IN_STATUS. +* mpi4py.MPI.ERR_PENDING: mpi4py MPI ERR_PENDING. +* mpi4py.MPI.ERR_TOPOLOGY: mpi4py MPI ERR_TOPOLOGY. +* mpi4py.MPI.ERR_DIMS: mpi4py MPI ERR_DIMS. +* mpi4py.MPI.ERR_ARG: mpi4py MPI ERR_ARG. +* mpi4py.MPI.ERR_OTHER: mpi4py MPI ERR_OTHER. +* mpi4py.MPI.ERR_UNKNOWN: mpi4py MPI ERR_UNKNOWN. +* mpi4py.MPI.ERR_INTERN: mpi4py MPI ERR_INTERN. +* mpi4py.MPI.ERR_KEYVAL: mpi4py MPI ERR_KEYVAL. +* mpi4py.MPI.ERR_NO_MEM: mpi4py MPI ERR_NO_MEM. +* mpi4py.MPI.ERR_INFO_KEY: mpi4py MPI ERR_INFO_KEY. +* mpi4py.MPI.ERR_INFO_VALUE: mpi4py MPI ERR_INFO_VALUE. +* mpi4py.MPI.ERR_INFO_NOKEY: mpi4py MPI ERR_INFO_NOKEY. +* mpi4py.MPI.ERR_SPAWN: mpi4py MPI ERR_SPAWN. +* mpi4py.MPI.ERR_PORT: mpi4py MPI ERR_PORT. +* mpi4py.MPI.ERR_SERVICE: mpi4py MPI ERR_SERVICE. +* mpi4py.MPI.ERR_NAME: mpi4py MPI ERR_NAME. +* mpi4py.MPI.ERR_PROC_ABORTED: mpi4py MPI ERR_PROC_ABORTED. +* mpi4py.MPI.ERR_BASE: mpi4py MPI ERR_BASE. +* mpi4py.MPI.ERR_SIZE: mpi4py MPI ERR_SIZE. +* mpi4py.MPI.ERR_DISP: mpi4py MPI ERR_DISP. +* mpi4py.MPI.ERR_ASSERT: mpi4py MPI ERR_ASSERT. +* mpi4py.MPI.ERR_LOCKTYPE: mpi4py MPI ERR_LOCKTYPE. +* mpi4py.MPI.ERR_RMA_CONFLICT: mpi4py MPI ERR_RMA_CONFLICT. +* mpi4py.MPI.ERR_RMA_SYNC: mpi4py MPI ERR_RMA_SYNC. +* mpi4py.MPI.ERR_RMA_RANGE: mpi4py MPI ERR_RMA_RANGE. +* mpi4py.MPI.ERR_RMA_ATTACH: mpi4py MPI ERR_RMA_ATTACH. +* mpi4py.MPI.ERR_RMA_SHARED: mpi4py MPI ERR_RMA_SHARED. +* mpi4py.MPI.ERR_RMA_FLAVOR: mpi4py MPI ERR_RMA_FLAVOR. +* mpi4py.MPI.ERR_BAD_FILE: mpi4py MPI ERR_BAD_FILE. +* mpi4py.MPI.ERR_NO_SUCH_FILE: mpi4py MPI ERR_NO_SUCH_FILE. +* mpi4py.MPI.ERR_FILE_EXISTS: mpi4py MPI ERR_FILE_EXISTS. +* mpi4py.MPI.ERR_FILE_IN_USE: mpi4py MPI ERR_FILE_IN_USE. +* mpi4py.MPI.ERR_AMODE: mpi4py MPI ERR_AMODE. +* mpi4py.MPI.ERR_ACCESS: mpi4py MPI ERR_ACCESS. +* mpi4py.MPI.ERR_READ_ONLY: mpi4py MPI ERR_READ_ONLY. +* mpi4py.MPI.ERR_NO_SPACE: mpi4py MPI ERR_NO_SPACE. +* mpi4py.MPI.ERR_QUOTA: mpi4py MPI ERR_QUOTA. +* mpi4py.MPI.ERR_NOT_SAME: mpi4py MPI ERR_NOT_SAME. +* mpi4py.MPI.ERR_IO: mpi4py MPI ERR_IO. +* mpi4py.MPI.ERR_UNSUPPORTED_OPERATION: mpi4py MPI ERR_UNSUPPORTED_OPERATION. +* mpi4py.MPI.ERR_UNSUPPORTED_DATAREP: mpi4py MPI ERR_UNSUPPORTED_DATAREP. +* mpi4py.MPI.ERR_CONVERSION: mpi4py MPI ERR_CONVERSION. +* mpi4py.MPI.ERR_DUP_DATAREP: mpi4py MPI ERR_DUP_DATAREP. +* mpi4py.MPI.ERR_VALUE_TOO_LARGE: mpi4py MPI ERR_VALUE_TOO_LARGE. +* mpi4py.MPI.ERR_REVOKED: mpi4py MPI ERR_REVOKED. +* mpi4py.MPI.ERR_PROC_FAILED: mpi4py MPI ERR_PROC_FAILED. +* mpi4py.MPI.ERR_PROC_FAILED_PENDING: mpi4py MPI ERR_PROC_FAILED_PENDING. +* mpi4py.MPI.ORDER_C: mpi4py MPI ORDER_C. +* mpi4py.MPI.ORDER_FORTRAN: mpi4py MPI ORDER_FORTRAN. +* mpi4py.MPI.ORDER_F: mpi4py MPI ORDER_F. +* mpi4py.MPI.TYPECLASS_INTEGER: mpi4py MPI TYPECLASS_INTEGER. +* mpi4py.MPI.TYPECLASS_REAL: mpi4py MPI TYPECLASS_REAL. +* mpi4py.MPI.TYPECLASS_COMPLEX: mpi4py MPI TYPECLASS_COMPLEX. +* mpi4py.MPI.DISTRIBUTE_NONE: mpi4py MPI DISTRIBUTE_NONE. +* mpi4py.MPI.DISTRIBUTE_BLOCK: mpi4py MPI DISTRIBUTE_BLOCK. +* mpi4py.MPI.DISTRIBUTE_CYCLIC: mpi4py MPI DISTRIBUTE_CYCLIC. +* mpi4py.MPI.DISTRIBUTE_DFLT_DARG: mpi4py MPI DISTRIBUTE_DFLT_DARG. +* mpi4py.MPI.COMBINER_NAMED: mpi4py MPI COMBINER_NAMED. +* mpi4py.MPI.COMBINER_DUP: mpi4py MPI COMBINER_DUP. +* mpi4py.MPI.COMBINER_CONTIGUOUS: mpi4py MPI COMBINER_CONTIGUOUS. +* mpi4py.MPI.COMBINER_VECTOR: mpi4py MPI COMBINER_VECTOR. +* mpi4py.MPI.COMBINER_HVECTOR: mpi4py MPI COMBINER_HVECTOR. +* mpi4py.MPI.COMBINER_INDEXED: mpi4py MPI COMBINER_INDEXED. +* mpi4py.MPI.COMBINER_HINDEXED: mpi4py MPI COMBINER_HINDEXED. +* mpi4py.MPI.COMBINER_INDEXED_BLOCK: mpi4py MPI COMBINER_INDEXED_BLOCK. +* mpi4py.MPI.COMBINER_HINDEXED_BLOCK: mpi4py MPI COMBINER_HINDEXED_BLOCK. +* mpi4py.MPI.COMBINER_STRUCT: mpi4py MPI COMBINER_STRUCT. +* mpi4py.MPI.COMBINER_SUBARRAY: mpi4py MPI COMBINER_SUBARRAY. +* mpi4py.MPI.COMBINER_DARRAY: mpi4py MPI COMBINER_DARRAY. +* mpi4py.MPI.COMBINER_RESIZED: mpi4py MPI COMBINER_RESIZED. +* mpi4py.MPI.COMBINER_VALUE_INDEX: mpi4py MPI COMBINER_VALUE_INDEX. +* mpi4py.MPI.COMBINER_F90_INTEGER: mpi4py MPI COMBINER_F90_INTEGER. +* mpi4py.MPI.COMBINER_F90_REAL: mpi4py MPI COMBINER_F90_REAL. +* mpi4py.MPI.COMBINER_F90_COMPLEX: mpi4py MPI COMBINER_F90_COMPLEX. +* mpi4py.MPI.F_SOURCE: mpi4py MPI F_SOURCE. +* mpi4py.MPI.F_TAG: mpi4py MPI F_TAG. +* mpi4py.MPI.F_ERROR: mpi4py MPI F_ERROR. +* mpi4py.MPI.F_STATUS_SIZE: mpi4py MPI F_STATUS_SIZE. +* mpi4py.MPI.IDENT: mpi4py MPI IDENT. +* mpi4py.MPI.CONGRUENT: mpi4py MPI CONGRUENT. +* mpi4py.MPI.SIMILAR: mpi4py MPI SIMILAR. +* mpi4py.MPI.UNEQUAL: mpi4py MPI UNEQUAL. +* mpi4py.MPI.CART: mpi4py MPI CART. +* mpi4py.MPI.GRAPH: mpi4py MPI GRAPH. +* mpi4py.MPI.DIST_GRAPH: mpi4py MPI DIST_GRAPH. +* mpi4py.MPI.UNWEIGHTED: mpi4py MPI UNWEIGHTED. +* mpi4py.MPI.WEIGHTS_EMPTY: mpi4py MPI WEIGHTS_EMPTY. +* mpi4py.MPI.COMM_TYPE_SHARED: mpi4py MPI COMM_TYPE_SHARED. +* mpi4py.MPI.COMM_TYPE_HW_GUIDED: mpi4py MPI COMM_TYPE_HW_GUIDED. +* mpi4py.MPI.COMM_TYPE_HW_UNGUIDED: mpi4py MPI COMM_TYPE_HW_UNGUIDED. +* mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED. +* mpi4py.MPI.BSEND_OVERHEAD: mpi4py MPI BSEND_OVERHEAD. +* mpi4py.MPI.BUFFER_AUTOMATIC: mpi4py MPI BUFFER_AUTOMATIC. +* mpi4py.MPI.WIN_FLAVOR_CREATE: mpi4py MPI WIN_FLAVOR_CREATE. +* mpi4py.MPI.WIN_FLAVOR_ALLOCATE: mpi4py MPI WIN_FLAVOR_ALLOCATE. +* mpi4py.MPI.WIN_FLAVOR_DYNAMIC: mpi4py MPI WIN_FLAVOR_DYNAMIC. +* mpi4py.MPI.WIN_FLAVOR_SHARED: mpi4py MPI WIN_FLAVOR_SHARED. +* mpi4py.MPI.WIN_SEPARATE: mpi4py MPI WIN_SEPARATE. +* mpi4py.MPI.WIN_UNIFIED: mpi4py MPI WIN_UNIFIED. +* mpi4py.MPI.MODE_NOCHECK: mpi4py MPI MODE_NOCHECK. +* mpi4py.MPI.MODE_NOSTORE: mpi4py MPI MODE_NOSTORE. +* mpi4py.MPI.MODE_NOPUT: mpi4py MPI MODE_NOPUT. +* mpi4py.MPI.MODE_NOPRECEDE: mpi4py MPI MODE_NOPRECEDE. +* mpi4py.MPI.MODE_NOSUCCEED: mpi4py MPI MODE_NOSUCCEED. +* mpi4py.MPI.LOCK_EXCLUSIVE: mpi4py MPI LOCK_EXCLUSIVE. +* mpi4py.MPI.LOCK_SHARED: mpi4py MPI LOCK_SHARED. +* mpi4py.MPI.MODE_RDONLY: mpi4py MPI MODE_RDONLY. +* mpi4py.MPI.MODE_WRONLY: mpi4py MPI MODE_WRONLY. +* mpi4py.MPI.MODE_RDWR: mpi4py MPI MODE_RDWR. +* mpi4py.MPI.MODE_CREATE: mpi4py MPI MODE_CREATE. +* mpi4py.MPI.MODE_EXCL: mpi4py MPI MODE_EXCL. +* mpi4py.MPI.MODE_DELETE_ON_CLOSE: mpi4py MPI MODE_DELETE_ON_CLOSE. +* mpi4py.MPI.MODE_UNIQUE_OPEN: mpi4py MPI MODE_UNIQUE_OPEN. +* mpi4py.MPI.MODE_SEQUENTIAL: mpi4py MPI MODE_SEQUENTIAL. +* mpi4py.MPI.MODE_APPEND: mpi4py MPI MODE_APPEND. +* mpi4py.MPI.SEEK_SET: mpi4py MPI SEEK_SET. +* mpi4py.MPI.SEEK_CUR: mpi4py MPI SEEK_CUR. +* mpi4py.MPI.SEEK_END: mpi4py MPI SEEK_END. +* mpi4py.MPI.DISPLACEMENT_CURRENT: mpi4py MPI DISPLACEMENT_CURRENT. +* mpi4py.MPI.DISP_CUR: mpi4py MPI DISP_CUR. +* mpi4py.MPI.THREAD_SINGLE: mpi4py MPI THREAD_SINGLE. +* mpi4py.MPI.THREAD_FUNNELED: mpi4py MPI THREAD_FUNNELED. +* mpi4py.MPI.THREAD_SERIALIZED: mpi4py MPI THREAD_SERIALIZED. +* mpi4py.MPI.THREAD_MULTIPLE: mpi4py MPI THREAD_MULTIPLE. +* mpi4py.MPI.VERSION: mpi4py MPI VERSION. +* mpi4py.MPI.SUBVERSION: mpi4py MPI SUBVERSION. +* mpi4py.MPI.MAX_PROCESSOR_NAME: mpi4py MPI MAX_PROCESSOR_NAME. +* mpi4py.MPI.MAX_ERROR_STRING: mpi4py MPI MAX_ERROR_STRING. +* mpi4py.MPI.MAX_PORT_NAME: mpi4py MPI MAX_PORT_NAME. +* mpi4py.MPI.MAX_INFO_KEY: mpi4py MPI MAX_INFO_KEY. +* mpi4py.MPI.MAX_INFO_VAL: mpi4py MPI MAX_INFO_VAL. +* mpi4py.MPI.MAX_OBJECT_NAME: mpi4py MPI MAX_OBJECT_NAME. +* mpi4py.MPI.MAX_DATAREP_STRING: mpi4py MPI MAX_DATAREP_STRING. +* mpi4py.MPI.MAX_LIBRARY_VERSION_STRING: mpi4py MPI MAX_LIBRARY_VERSION_STRING. +* mpi4py.MPI.MAX_PSET_NAME_LEN: mpi4py MPI MAX_PSET_NAME_LEN. +* mpi4py.MPI.MAX_STRINGTAG_LEN: mpi4py MPI MAX_STRINGTAG_LEN. +* mpi4py.MPI.DATATYPE_NULL: mpi4py MPI DATATYPE_NULL. +* mpi4py.MPI.PACKED: mpi4py MPI PACKED. +* mpi4py.MPI.BYTE: mpi4py MPI BYTE. +* mpi4py.MPI.AINT: mpi4py MPI AINT. +* mpi4py.MPI.OFFSET: mpi4py MPI OFFSET. +* mpi4py.MPI.COUNT: mpi4py MPI COUNT. +* mpi4py.MPI.CHAR: mpi4py MPI CHAR. +* mpi4py.MPI.WCHAR: mpi4py MPI WCHAR. +* mpi4py.MPI.SIGNED_CHAR: mpi4py MPI SIGNED_CHAR. +* mpi4py.MPI.SHORT: mpi4py MPI SHORT. +* mpi4py.MPI.INT: mpi4py MPI INT. +* mpi4py.MPI.LONG: mpi4py MPI LONG. +* mpi4py.MPI.LONG_LONG: mpi4py MPI LONG_LONG. +* mpi4py.MPI.UNSIGNED_CHAR: mpi4py MPI UNSIGNED_CHAR. +* mpi4py.MPI.UNSIGNED_SHORT: mpi4py MPI UNSIGNED_SHORT. +* mpi4py.MPI.UNSIGNED: mpi4py MPI UNSIGNED. +* mpi4py.MPI.UNSIGNED_LONG: mpi4py MPI UNSIGNED_LONG. +* mpi4py.MPI.UNSIGNED_LONG_LONG: mpi4py MPI UNSIGNED_LONG_LONG. +* mpi4py.MPI.FLOAT: mpi4py MPI FLOAT. +* mpi4py.MPI.DOUBLE: mpi4py MPI DOUBLE. +* mpi4py.MPI.LONG_DOUBLE: mpi4py MPI LONG_DOUBLE. +* mpi4py.MPI.C_BOOL: mpi4py MPI C_BOOL. +* mpi4py.MPI.INT8_T: mpi4py MPI INT8_T. +* mpi4py.MPI.INT16_T: mpi4py MPI INT16_T. +* mpi4py.MPI.INT32_T: mpi4py MPI INT32_T. +* mpi4py.MPI.INT64_T: mpi4py MPI INT64_T. +* mpi4py.MPI.UINT8_T: mpi4py MPI UINT8_T. +* mpi4py.MPI.UINT16_T: mpi4py MPI UINT16_T. +* mpi4py.MPI.UINT32_T: mpi4py MPI UINT32_T. +* mpi4py.MPI.UINT64_T: mpi4py MPI UINT64_T. +* mpi4py.MPI.C_COMPLEX: mpi4py MPI C_COMPLEX. +* mpi4py.MPI.C_FLOAT_COMPLEX: mpi4py MPI C_FLOAT_COMPLEX. +* mpi4py.MPI.C_DOUBLE_COMPLEX: mpi4py MPI C_DOUBLE_COMPLEX. +* mpi4py.MPI.C_LONG_DOUBLE_COMPLEX: mpi4py MPI C_LONG_DOUBLE_COMPLEX. +* mpi4py.MPI.CXX_BOOL: mpi4py MPI CXX_BOOL. +* mpi4py.MPI.CXX_FLOAT_COMPLEX: mpi4py MPI CXX_FLOAT_COMPLEX. +* mpi4py.MPI.CXX_DOUBLE_COMPLEX: mpi4py MPI CXX_DOUBLE_COMPLEX. +* mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX: mpi4py MPI CXX_LONG_DOUBLE_COMPLEX. +* mpi4py.MPI.SHORT_INT: mpi4py MPI SHORT_INT. +* mpi4py.MPI.INT_INT: mpi4py MPI INT_INT. +* mpi4py.MPI.TWOINT: mpi4py MPI TWOINT. +* mpi4py.MPI.LONG_INT: mpi4py MPI LONG_INT. +* mpi4py.MPI.FLOAT_INT: mpi4py MPI FLOAT_INT. +* mpi4py.MPI.DOUBLE_INT: mpi4py MPI DOUBLE_INT. +* mpi4py.MPI.LONG_DOUBLE_INT: mpi4py MPI LONG_DOUBLE_INT. +* mpi4py.MPI.CHARACTER: mpi4py MPI CHARACTER. +* mpi4py.MPI.LOGICAL: mpi4py MPI LOGICAL. +* mpi4py.MPI.INTEGER: mpi4py MPI INTEGER. +* mpi4py.MPI.REAL: mpi4py MPI REAL. +* mpi4py.MPI.DOUBLE_PRECISION: mpi4py MPI DOUBLE_PRECISION. +* mpi4py.MPI.COMPLEX: mpi4py MPI COMPLEX. +* mpi4py.MPI.DOUBLE_COMPLEX: mpi4py MPI DOUBLE_COMPLEX. +* mpi4py.MPI.LOGICAL1: mpi4py MPI LOGICAL1. +* mpi4py.MPI.LOGICAL2: mpi4py MPI LOGICAL2. +* mpi4py.MPI.LOGICAL4: mpi4py MPI LOGICAL4. +* mpi4py.MPI.LOGICAL8: mpi4py MPI LOGICAL8. +* mpi4py.MPI.INTEGER1: mpi4py MPI INTEGER1. +* mpi4py.MPI.INTEGER2: mpi4py MPI INTEGER2. +* mpi4py.MPI.INTEGER4: mpi4py MPI INTEGER4. +* mpi4py.MPI.INTEGER8: mpi4py MPI INTEGER8. +* mpi4py.MPI.INTEGER16: mpi4py MPI INTEGER16. +* mpi4py.MPI.REAL2: mpi4py MPI REAL2. +* mpi4py.MPI.REAL4: mpi4py MPI REAL4. +* mpi4py.MPI.REAL8: mpi4py MPI REAL8. +* mpi4py.MPI.REAL16: mpi4py MPI REAL16. +* mpi4py.MPI.COMPLEX4: mpi4py MPI COMPLEX4. +* mpi4py.MPI.COMPLEX8: mpi4py MPI COMPLEX8. +* mpi4py.MPI.COMPLEX16: mpi4py MPI COMPLEX16. +* mpi4py.MPI.COMPLEX32: mpi4py MPI COMPLEX32. +* mpi4py.MPI.UNSIGNED_INT: mpi4py MPI UNSIGNED_INT. +* mpi4py.MPI.SIGNED_SHORT: mpi4py MPI SIGNED_SHORT. +* mpi4py.MPI.SIGNED_INT: mpi4py MPI SIGNED_INT. +* mpi4py.MPI.SIGNED_LONG: mpi4py MPI SIGNED_LONG. +* mpi4py.MPI.SIGNED_LONG_LONG: mpi4py MPI SIGNED_LONG_LONG. +* mpi4py.MPI.BOOL: mpi4py MPI BOOL. +* mpi4py.MPI.SINT8_T: mpi4py MPI SINT8_T. +* mpi4py.MPI.SINT16_T: mpi4py MPI SINT16_T. +* mpi4py.MPI.SINT32_T: mpi4py MPI SINT32_T. +* mpi4py.MPI.SINT64_T: mpi4py MPI SINT64_T. +* mpi4py.MPI.F_BOOL: mpi4py MPI F_BOOL. +* mpi4py.MPI.F_INT: mpi4py MPI F_INT. +* mpi4py.MPI.F_FLOAT: mpi4py MPI F_FLOAT. +* mpi4py.MPI.F_DOUBLE: mpi4py MPI F_DOUBLE. +* mpi4py.MPI.F_COMPLEX: mpi4py MPI F_COMPLEX. +* mpi4py.MPI.F_FLOAT_COMPLEX: mpi4py MPI F_FLOAT_COMPLEX. +* mpi4py.MPI.F_DOUBLE_COMPLEX: mpi4py MPI F_DOUBLE_COMPLEX. +* mpi4py.MPI.REQUEST_NULL: mpi4py MPI REQUEST_NULL. +* mpi4py.MPI.MESSAGE_NULL: mpi4py MPI MESSAGE_NULL. +* mpi4py.MPI.MESSAGE_NO_PROC: mpi4py MPI MESSAGE_NO_PROC. +* mpi4py.MPI.OP_NULL: mpi4py MPI OP_NULL. +* mpi4py.MPI.MAX: mpi4py MPI MAX. +* mpi4py.MPI.MIN: mpi4py MPI MIN. +* mpi4py.MPI.SUM: mpi4py MPI SUM. +* mpi4py.MPI.PROD: mpi4py MPI PROD. +* mpi4py.MPI.LAND: mpi4py MPI LAND. +* mpi4py.MPI.BAND: mpi4py MPI BAND. +* mpi4py.MPI.LOR: mpi4py MPI LOR. +* mpi4py.MPI.BOR: mpi4py MPI BOR. +* mpi4py.MPI.LXOR: mpi4py MPI LXOR. +* mpi4py.MPI.BXOR: mpi4py MPI BXOR. +* mpi4py.MPI.MAXLOC: mpi4py MPI MAXLOC. +* mpi4py.MPI.MINLOC: mpi4py MPI MINLOC. +* mpi4py.MPI.REPLACE: mpi4py MPI REPLACE. +* mpi4py.MPI.NO_OP: mpi4py MPI NO_OP. +* mpi4py.MPI.GROUP_NULL: mpi4py MPI GROUP_NULL. +* mpi4py.MPI.GROUP_EMPTY: mpi4py MPI GROUP_EMPTY. +* mpi4py.MPI.INFO_NULL: mpi4py MPI INFO_NULL. +* mpi4py.MPI.INFO_ENV: mpi4py MPI INFO_ENV. +* mpi4py.MPI.ERRHANDLER_NULL: mpi4py MPI ERRHANDLER_NULL. +* mpi4py.MPI.ERRORS_RETURN: mpi4py MPI ERRORS_RETURN. +* mpi4py.MPI.ERRORS_ABORT: mpi4py MPI ERRORS_ABORT. +* mpi4py.MPI.ERRORS_ARE_FATAL: mpi4py MPI ERRORS_ARE_FATAL. +* mpi4py.MPI.SESSION_NULL: mpi4py MPI SESSION_NULL. +* mpi4py.MPI.COMM_NULL: mpi4py MPI COMM_NULL. +* mpi4py.MPI.COMM_SELF: mpi4py MPI COMM_SELF. +* mpi4py.MPI.COMM_WORLD: mpi4py MPI COMM_WORLD. +* mpi4py.MPI.WIN_NULL: mpi4py MPI WIN_NULL. +* mpi4py.MPI.FILE_NULL: mpi4py MPI FILE_NULL. +* mpi4py.MPI.pickle: mpi4py MPI pickle. + +Installation + +* Build backends:: +* Using pip:: +* Using conda:: +* Linux:: +* macOS:: +* Windows:: + +Build backends + +* Using setuptools:: +* Using scikit-build-core:: +* Using meson-python:: + +Development + +* Prerequisites:: +* Building:: +* Installing:: +* Testing:: + +Guidelines + +* Fair play:: + +Fair play + +* Summary:: +* Motivation:: +* Scope:: +* Fair play rules:: + +CHANGES + +* Release 4.0.0 [2024-07-28]: Release 4 0 0 [2024-07-28]. +* Release 3.1.6 [2024-04-14]: Release 3 1 6 [2024-04-14]. +* Release 3.1.5 [2023-10-04]: Release 3 1 5 [2023-10-04]. +* Release 3.1.4 [2022-11-02]: Release 3 1 4 [2022-11-02]. +* Release 3.1.3 [2021-11-25]: Release 3 1 3 [2021-11-25]. +* Release 3.1.2 [2021-11-04]: Release 3 1 2 [2021-11-04]. +* Release 3.1.1 [2021-08-14]: Release 3 1 1 [2021-08-14]. +* Release 3.1.0 [2021-08-12]: Release 3 1 0 [2021-08-12]. +* Release 3.0.3 [2019-11-04]: Release 3 0 3 [2019-11-04]. +* Release 3.0.2 [2019-06-11]: Release 3 0 2 [2019-06-11]. +* Release 3.0.1 [2019-02-15]: Release 3 0 1 [2019-02-15]. +* Release 3.0.0 [2017-11-08]: Release 3 0 0 [2017-11-08]. +* Release 2.0.0 [2015-10-18]: Release 2 0 0 [2015-10-18]. +* Release 1.3.1 [2013-08-07]: Release 1 3 1 [2013-08-07]. +* Release 1.3 [2012-01-20]: Release 1 3 [2012-01-20]. +* Release 1.2.2 [2010-09-13]: Release 1 2 2 [2010-09-13]. +* Release 1.2.1 [2010-02-26]: Release 1 2 1 [2010-02-26]. +* Release 1.2 [2009-12-29]: Release 1 2 [2009-12-29]. +* Release 1.1.0 [2009-06-06]: Release 1 1 0 [2009-06-06]. +* Release 1.0.0 [2009-03-20]: Release 1 0 0 [2009-03-20]. + + + +File: mpi4py.info, Node: Introduction, Next: Overview, Prev: Top, Up: Top + +1 Introduction +************** + +Over the last years, high performance computing has become an affordable +resource to many more researchers in the scientific community than ever +before. The conjunction of quality open source software and commodity +hardware strongly influenced the now widespread popularity of Beowulf(1) +class clusters and cluster of workstations. + +Among many parallel computational models, message-passing has proven to +be an effective one. This paradigm is specially suited for (but not +limited to) distributed memory architectures and is used in today’s most +demanding scientific and engineering application related to modeling, +simulation, design, and signal processing. However, portable +message-passing parallel programming used to be a nightmare in the past +because of the many incompatible options developers were faced to. +Fortunately, this situation definitely changed after the MPI Forum +released its standard specification. + +High performance computing is traditionally associated with software +development using compiled languages. However, in typical applications +programs, only a small part of the code is time-critical enough to +require the efficiency of compiled languages. The rest of the code is +generally related to memory management, error handling, input/output, +and user interaction, and those are usually the most error prone and +time-consuming lines of code to write and debug in the whole development +process. Interpreted high-level languages can be really advantageous +for this kind of tasks. + +For implementing general-purpose numerical computations, MATLAB (2) is +the dominant interpreted programming language. In the open source side, +Octave and Scilab are well known, freely distributed software packages +providing compatibility with the MATLAB language. In this work, we +present MPI for Python, a new package enabling applications to exploit +multiple processors using standard MPI “look and feel” in Python +scripts. + +* Menu: + +* What is MPI?:: +* What is Python?:: +* Related Projects:: + + ---------- Footnotes ---------- + + (1) https://www.beowulf.org/ + + (2) MATLAB is a registered trademark of The MathWorks, Inc. + + +File: mpi4py.info, Node: What is MPI?, Next: What is Python?, Up: Introduction + +1.1 What is MPI? +================ + +MPI(1), *note [mpi-using]: 10. *note [mpi-ref]: 11. the ‘Message Passing +Interface’, is a standardized and portable message-passing system +designed to function on a wide variety of parallel computers. The +standard defines the syntax and semantics of library routines and allows +users to write portable programs in the main scientific programming +languages (Fortran, C, or C++). + +Since its release, the MPI specification *note [mpi-std1]: 12. *note +[mpi-std2]: 13. has become the leading standard for message-passing +libraries for parallel computers. Implementations are available from +vendors of high-performance computers and from well known open source +projects like MPICH(2) *note [mpi-mpich]: 14. and Open MPI(3) *note +[mpi-openmpi]: 15. + + ---------- Footnotes ---------- + + (1) https://www.mpi-forum.org/ + + (2) https://www.mpich.org/ + + (3) https://www.open-mpi.org/ + + +File: mpi4py.info, Node: What is Python?, Next: Related Projects, Prev: What is MPI?, Up: Introduction + +1.2 What is Python? +=================== + +Python(1) is a modern, easy to learn, powerful programming language. It +has efficient high-level data structures and a simple but effective +approach to object-oriented programming with dynamic typing and dynamic +binding. It supports modules and packages, which encourages program +modularity and code reuse. Python’s elegant syntax, together with its +interpreted nature, make it an ideal language for scripting and rapid +application development in many areas on most platforms. + +The Python interpreter and the extensive standard library are available +in source or binary form without charge for all major platforms, and can +be freely distributed. It is easily extended with new functions and +data types implemented in C or C++. Python is also suitable as an +extension language for customizable applications. + +Python is an ideal candidate for writing the higher-level parts of +large-scale scientific applications *note [Hinsen97]: 17. and driving +simulations in parallel architectures *note [Beazley97]: 18. like +clusters of PC’s or SMP’s. Python codes are quickly developed, easily +maintained, and can achieve a high degree of integration with other +libraries written in compiled languages. + + ---------- Footnotes ---------- + + (1) https://www.python.org/ + + +File: mpi4py.info, Node: Related Projects, Prev: What is Python?, Up: Introduction + +1.3 Related Projects +==================== + +As this work started and evolved, some ideas were borrowed from well +known MPI and Python related open source projects from the Internet. + + * OOMPI(1) + + + It has no relation with Python, but is an excellent object + oriented approach to MPI. + + + It is a C++ class library specification layered on top of the + C bindings that encapsulates MPI into a functional class + hierarchy. + + + It provides a flexible and intuitive interface by adding some + abstractions, like ‘Ports’ and ‘Messages’, which enrich and + simplify the syntax. + + * Pypar(2) + + + Its interface is rather minimal. There is no support for + communicators or process topologies. + + + It does not require the Python interpreter to be modified or + recompiled, but does not permit interactive parallel runs. + + + General (‘picklable’) Python objects of any type can be + communicated. There is good support for numeric arrays, + practically full MPI bandwidth can be achieved. + + * pyMPI(3) + + + It rebuilds the Python interpreter providing a built-in module + for message passing. It does permit interactive parallel + runs, which are useful for learning and debugging. + + + It provides an interface suitable for basic parallel + programming. There is not full support for defining new + communicators or process topologies. + + + General (picklable) Python objects can be messaged between + processors. There is not support for numeric arrays. + + * Scientific Python(4) + + + It provides a collection of Python modules that are useful for + scientific computing. + + + There is an interface to MPI and BSP (‘Bulk Synchronous + Parallel programming’). + + + The interface is simple but incomplete and does not resemble + the MPI specification. There is support for numeric arrays. + +Additionally, we would like to mention some available tools for +scientific computing and software development with Python. + + + NumPy(5) is a package that provides array manipulation and + computational capabilities similar to those found in IDL, MATLAB, + or Octave. Using NumPy, it is possible to write many efficient + numerical data processing applications directly in Python without + using any C, C++ or Fortran code. + + + SciPy(6) is an open source library of scientific tools for Python, + gathering a variety of high level science and engineering modules + together as a single package. It includes modules for graphics and + plotting, optimization, integration, special functions, signal and + image processing, genetic algorithms, ODE solvers, and others. + + + Cython(7) is a language that makes writing C extensions for the + Python language as easy as Python itself. The Cython language is + very close to the Python language, but Cython additionally supports + calling C functions and declaring C types on variables and class + attributes. This allows the compiler to generate very efficient C + code from Cython code. This makes Cython the ideal language for + wrapping for external C libraries, and for fast C modules that + speed up the execution of Python code. + + + SWIG(8) is a software development tool that connects programs + written in C and C++ with a variety of high-level programming + languages like Perl, Tcl/Tk, Ruby and Python. Issuing header files + to SWIG is the simplest approach to interfacing C/C++ libraries + from a Python module. + +(mpi-std1) MPI Forum. MPI: A Message Passing Interface Standard. +International Journal of Supercomputer Applications, volume 8, number +3-4, pages 159-416, 1994. + +(mpi-std2) MPI Forum. MPI: A Message Passing Interface Standard. High +Performance Computing Applications, volume 12, number 1-2, pages 1-299, +1998. + +(mpi-using) William Gropp, Ewing Lusk, and Anthony Skjellum. Using MPI: +portable parallel programming with the message-passing interface. MIT +Press, 1994. + +(mpi-ref) Mark Snir, Steve Otto, Steven Huss-Lederman, David Walker, and +Jack Dongarra. MPI - The Complete Reference, volume 1, The MPI Core. +MIT Press, 2nd. edition, 1998. + +(mpi-mpich) W. Gropp, E. Lusk, N. Doss, and A. Skjellum. A +high-performance, portable implementation of the MPI message passing +interface standard. Parallel Computing, 22(6):789-828, September 1996. + +(mpi-openmpi) Edgar Gabriel, Graham E. Fagg, George Bosilca, Thara +Angskun, Jack J. Dongarra, Jeffrey M. Squyres, Vishal Sahay, Prabhanjan +Kambadur, Brian Barrett, Andrew Lumsdaine, Ralph H. Castain, David J. +Daniel, Richard L. Graham, and Timothy S. Woodall. Open MPI: Goals, +Concept, and Design of a Next Generation MPI Implementation. In +Proceedings, 11th European PVM/MPI Users’ Group Meeting, Budapest, +Hungary, September 2004. + +(Hinsen97) Konrad Hinsen. The Molecular Modelling Toolkit: a case study +of a large scientific application in Python. In Proceedings of the 6th +International Python Conference, pages 29-35, San Jose, Ca., October +1997. + +(Beazley97) David M. Beazley and Peter S. Lomdahl. Feeding a +large-scale physics application to Python. In Proceedings of the 6th +International Python Conference, pages 21-29, San Jose, Ca., October +1997. + + ---------- Footnotes ---------- + + (1) +https://web.archive.org/web/20100614170656/http://www.osl.iu.edu/research/oompi/overview.php + + (2) https://github.com/daleroberts/pypar + + (3) https://sourceforge.net/projects/pympi/ + + (4) http://dirac.cnrs-orleans.fr/ScientificPython.html + + (5) https://numpy.org/ + + (6) https://scipy.org/ + + (7) https://cython.org/ + + (8) https://www.swig.org/ + + +File: mpi4py.info, Node: Overview, Next: Tutorial, Prev: Introduction, Up: Top + +2 Overview +********** + +MPI for Python provides an object oriented approach to message passing +which grounds on the standard MPI-2 C++ bindings. The interface was +designed with focus in translating MPI syntax and semantics of standard +MPI-2 bindings for C++ to Python. Any user of the standard C/C++ MPI +bindings should be able to use this module without need of learning a +new interface. + +* Menu: + +* Communicating Python Objects and Array Data:: +* Communicators:: +* Point-to-Point Communications:: +* Collective Communications:: +* Support for GPU-aware MPI:: +* Dynamic Process Management:: +* One-Sided Communications:: +* Parallel Input/Output:: +* Environmental Management:: + + +File: mpi4py.info, Node: Communicating Python Objects and Array Data, Next: Communicators, Up: Overview + +2.1 Communicating Python Objects and Array Data +=============================================== + +The Python standard library supports different mechanisms for data +persistence. Many of them rely on disk storage, but ‘pickling’ and +‘marshaling’ can also work with memory buffers. + +The pickle(1) modules provide user-extensible facilities to serialize +general Python objects using ASCII or binary formats. The marshal(2) +module provides facilities to serialize built-in Python objects using a +binary format specific to Python, but independent of machine +architecture issues. + +‘MPI for Python’ can communicate any built-in or user-defined Python +object taking advantage of the features provided by the pickle(3) +module. These facilities will be routinely used to build binary +representations of objects to communicate (at sending processes), and +restoring them back (at receiving processes). + +Although simple and general, the serialization approach (i.e., +‘pickling’ and ‘unpickling’) previously discussed imposes important +overheads in memory as well as processor usage, especially in the +scenario of objects with large memory footprints being communicated. +Pickling general Python objects, ranging from primitive or container +built-in types to user-defined classes, necessarily requires computer +resources. Processing is also needed for dispatching the appropriate +serialization method (that depends on the type of the object) and doing +the actual packing. Additional memory is always needed, and if its +total amount is not known ‘a priori’, many reallocations can occur. +Indeed, in the case of large numeric arrays, this is certainly +unacceptable and precludes communication of objects occupying half or +more of the available memory resources. + +‘MPI for Python’ supports direct communication of any object exporting +the single-segment buffer interface. This interface is a standard +Python mechanism provided by some types (e.g., strings and numeric +arrays), allowing access in the C side to a contiguous memory buffer +(i.e., address and length) containing the relevant data. This feature, +in conjunction with the capability of constructing user-defined MPI +datatypes describing complicated memory layouts, enables the +implementation of many algorithms involving multidimensional numeric +arrays (e.g., image processing, fast Fourier transforms, finite +difference schemes on structured Cartesian grids) directly in Python, +with negligible overhead, and almost as fast as compiled Fortran, C, or +C++ codes. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/pickle.html#module-pickle + + (2) https://docs.python.org/3/library/marshal.html#module-marshal + + (3) https://docs.python.org/3/library/pickle.html#module-pickle + + +File: mpi4py.info, Node: Communicators, Next: Point-to-Point Communications, Prev: Communicating Python Objects and Array Data, Up: Overview + +2.2 Communicators +================= + +In ‘MPI for Python’, *note Comm: 1e. is the base class of communicators. +The *note Intracomm: 1f. and *note Intercomm: 20. classes are subclasses +of the *note Comm: 1e. class. The *note Comm.Is_inter: 21. method (and +*note Comm.Is_intra: 22, provided for convenience but not part of the +MPI specification) is defined for communicator objects and can be used +to determine the particular communicator class. + +The two predefined intracommunicator instances are available: *note +COMM_SELF: 23. and *note COMM_WORLD: 24. From them, new communicators +can be created as needed. + +The number of processes in a communicator and the calling process rank +can be respectively obtained with methods *note Comm.Get_size: 25. and +*note Comm.Get_rank: 26. The associated process group can be retrieved +from a communicator by calling the *note Comm.Get_group: 27. method, +which returns an instance of the *note Group: 28. class. Set operations +with *note Group: 28. objects like like *note Group.Union: 29, *note +Group.Intersection: 2a. and *note Group.Difference: 2b. are fully +supported, as well as the creation of new communicators from these +groups using *note Comm.Create: 2c. and *note Intracomm.Create_group: +2d. + +New communicator instances can be obtained with the *note Comm.Clone: +2e, *note Comm.Dup: 2f. and *note Comm.Split: 30. methods, as well +methods *note Intracomm.Create_intercomm: 31. and *note Intercomm.Merge: +32. + +Virtual topologies (*note Cartcomm: 33, *note Graphcomm: 34. and *note +Distgraphcomm: 35. classes, which are specializations of the *note +Intracomm: 1f. class) are fully supported. New instances can be +obtained from intracommunicator instances with factory methods *note +Intracomm.Create_cart: 36. and *note Intracomm.Create_graph: 37. + + +File: mpi4py.info, Node: Point-to-Point Communications, Next: Collective Communications, Prev: Communicators, Up: Overview + +2.3 Point-to-Point Communications +================================= + +Point to point communication is a fundamental capability of message +passing systems. This mechanism enables the transmission of data +between a pair of processes, one side sending, the other receiving. + +MPI provides a set of ‘send’ and ‘receive’ functions allowing the +communication of ‘typed’ data with an associated ‘tag’. The type +information enables the conversion of data representation from one +architecture to another in the case of heterogeneous computing +environments; additionally, it allows the representation of +non-contiguous data layouts and user-defined datatypes, thus avoiding +the overhead of (otherwise unavoidable) packing/unpacking operations. +The tag information allows selectivity of messages at the receiving end. + +* Menu: + +* Blocking Communications:: +* Nonblocking Communications:: +* Persistent Communications:: + + +File: mpi4py.info, Node: Blocking Communications, Next: Nonblocking Communications, Up: Point-to-Point Communications + +2.3.1 Blocking Communications +----------------------------- + +MPI provides basic send and receive functions that are ‘blocking’. +These functions block the caller until the data buffers involved in the +communication can be safely reused by the application program. + +In ‘MPI for Python’, the *note Comm.Send: 3a, *note Comm.Recv: 3b. and +*note Comm.Sendrecv: 3c. methods of communicator objects provide support +for blocking point-to-point communications within *note Intracomm: 1f. +and *note Intercomm: 20. instances. These methods can communicate +memory buffers. The variants *note Comm.send: 3d, *note Comm.recv: 3e. +and *note Comm.sendrecv: 3f. can communicate general Python objects. + + +File: mpi4py.info, Node: Nonblocking Communications, Next: Persistent Communications, Prev: Blocking Communications, Up: Point-to-Point Communications + +2.3.2 Nonblocking Communications +-------------------------------- + +On many systems, performance can be significantly increased by +overlapping communication and computation. This is particularly true on +systems where communication can be executed autonomously by an +intelligent, dedicated communication controller. + +MPI provides ‘nonblocking’ send and receive functions. They allow the +possible overlap of communication and computation. Non-blocking +communication always come in two parts: posting functions, which begin +the requested operation; and test-for-completion functions, which allow +to discover whether the requested operation has completed. + +In ‘MPI for Python’, the *note Comm.Isend: 41. and *note Comm.Irecv: 42. +methods initiate send and receive operations, respectively. These +methods return a *note Request: 43. instance, uniquely identifying the +started operation. Its completion can be managed using the *note +Request.Test: 44, *note Request.Wait: 45. and *note Request.Cancel: 46. +methods. The management of *note Request: 43. objects and associated +memory buffers involved in communication requires a careful, rather +low-level coordination. Users must ensure that objects exposing their +memory buffers are not accessed at the Python level while they are +involved in nonblocking message-passing operations. + + +File: mpi4py.info, Node: Persistent Communications, Prev: Nonblocking Communications, Up: Point-to-Point Communications + +2.3.3 Persistent Communications +------------------------------- + +Often a communication with the same argument list is repeatedly executed +within an inner loop. In such cases, communication can be further +optimized by using persistent communication, a particular case of +nonblocking communication allowing the reduction of the overhead between +processes and communication controllers. Furthermore , this kind of +optimization can also alleviate the extra call overheads associated to +interpreted, dynamic languages like Python. + +In ‘MPI for Python’, the *note Comm.Send_init: 48. and *note +Comm.Recv_init: 49. methods create persistent requests for a send and +receive operation, respectively. These methods return an instance of +the *note Prequest: 4a. class, a subclass of the *note Request: 43. +class. The actual communication can be effectively started using the +*note Prequest.Start: 4b. method, and its completion can be managed as +previously described. + + +File: mpi4py.info, Node: Collective Communications, Next: Support for GPU-aware MPI, Prev: Point-to-Point Communications, Up: Overview + +2.4 Collective Communications +============================= + +Collective communications allow the transmittal of data between multiple +processes of a group simultaneously. The syntax and semantics of +collective functions is consistent with point-to-point communication. +Collective functions communicate ‘typed’ data, but messages are not +paired with an associated ‘tag’; selectivity of messages is implied in +the calling order. Additionally, collective functions come in blocking +versions only. + +The more commonly used collective communication operations are the +following. + + * Barrier synchronization across all group members. + + * Global communication functions + + + Broadcast data from one member to all members of a group. + + + Gather data from all members to one member of a group. + + + Scatter data from one member to all members of a group. + + * Global reduction operations such as sum, maximum, minimum, etc. + +In ‘MPI for Python’, the *note Comm.Bcast: 4d, *note Comm.Scatter: 4e, +*note Comm.Gather: 4f, *note Comm.Allgather: 50, *note Comm.Alltoall: +51. methods provide support for collective communications of memory +buffers. The lower-case variants *note Comm.bcast: 52, *note +Comm.scatter: 53, *note Comm.gather: 54, *note Comm.allgather: 55. and +*note Comm.alltoall: 56. can communicate general Python objects. The +vector variants (which can communicate different amounts of data to each +process) *note Comm.Scatterv: 57, *note Comm.Gatherv: 58, *note +Comm.Allgatherv: 59, *note Comm.Alltoallv: 5a. and *note Comm.Alltoallw: +5b. are also supported, they can only communicate objects exposing +memory buffers. + +Global reduction operations on memory buffers are accessible through the +*note Comm.Reduce: 5c, *note Comm.Reduce_scatter: 5d, *note +Comm.Allreduce: 5e, *note Intracomm.Scan: 5f. and *note +Intracomm.Exscan: 60. methods. The lower-case variants *note +Comm.reduce: 61, *note Comm.allreduce: 62, *note Intracomm.scan: 63. and +*note Intracomm.exscan: 64. can communicate general Python objects; +however, the actual required reduction computations are performed +sequentially at some process. All the predefined (i.e., *note SUM: 65, +*note PROD: 66, *note MAX: 67, etc.) reduction operations can be +applied. + + +File: mpi4py.info, Node: Support for GPU-aware MPI, Next: Dynamic Process Management, Prev: Collective Communications, Up: Overview + +2.5 Support for GPU-aware MPI +============================= + +Several MPI implementations, including Open MPI and MVAPICH, support +passing GPU pointers to MPI calls to avoid explicit data movement +between host and device. On the Python side, support for handling GPU +arrays have been implemented in many libraries related GPU computation +such as CuPy(1), Numba(2), PyTorch(3), and PyArrow(4). To maximize +interoperability across library boundaries, two kinds of zero-copy data +exchange protocols have been defined and agreed upon: DLPack(5) and CUDA +Array Interface (CAI)(6). + +‘MPI for Python’ provides an experimental support for GPU-aware MPI. +This feature requires: + + 1. mpi4py is built against a GPU-aware MPI library. + + 2. The Python GPU arrays are compliant with either of the protocols. + +See the *note Tutorial: 69. section for further information. We note +that + + * Whether or not a MPI call can work for GPU arrays depends on the + underlying MPI implementation, not on mpi4py. + + * This support is currently experimental and subject to change in the + future. + + ---------- Footnotes ---------- + + (1) https://cupy.dev/ + + (2) https://numba.pydata.org/ + + (3) https://pytorch.org/ + + (4) https://arrow.apache.org/docs/python/ + + (5) https://dmlc.github.io/dlpack/latest/python_spec.html#python-spec + + (6) +https://numba.readthedocs.io/en/stable/cuda/cuda_array_interface.html#cuda-array-interface + + +File: mpi4py.info, Node: Dynamic Process Management, Next: One-Sided Communications, Prev: Support for GPU-aware MPI, Up: Overview + +2.6 Dynamic Process Management +============================== + +In the context of the MPI-1 specification, a parallel application is +static; that is, no processes can be added to or deleted from a running +application after it has been started. Fortunately, this limitation was +addressed in MPI-2. The new specification added a process management +model providing a basic interface between an application and external +resources and process managers. + +This MPI-2 extension can be really useful, especially for sequential +applications built on top of parallel modules, or parallel applications +with a client/server model. The MPI-2 process model provides a +mechanism to create new processes and establish communication between +them and the existing MPI application. It also provides mechanisms to +establish communication between two existing MPI applications, even when +one did not ‘start’ the other. + +In ‘MPI for Python’, new independent process groups can be created by +calling the *note Intracomm.Spawn: 6b. method within an +intracommunicator. This call returns a new intercommunicator (i.e., an +*note Intercomm: 20. instance) at the parent process group. The child +process group can retrieve the matching intercommunicator by calling the +*note Comm.Get_parent: 6c. class method. At each side, the new +intercommunicator can be used to perform point to point and collective +communications between the parent and child groups of processes. + +Alternatively, disjoint groups of processes can establish communication +using a client/server approach. Any server application must first call +the *note Open_port: 6d. function to open a ‘port’ and the *note +Publish_name: 6e. function to publish a provided ‘service’, and next +call the *note Intracomm.Accept: 6f. method. Any client applications +can first find a published ‘service’ by calling the *note Lookup_name: +70. function, which returns the ‘port’ where a server can be contacted; +and next call the *note Intracomm.Connect: 71. method. Both *note +Intracomm.Accept: 6f. and *note Intracomm.Connect: 71. methods return an +*note Intercomm: 20. instance. When connection between client/server +processes is no longer needed, all of them must cooperatively call the +*note Comm.Disconnect: 72. method. Additionally, server applications +should release resources by calling the *note Unpublish_name: 73. and +*note Close_port: 74. functions. + + +File: mpi4py.info, Node: One-Sided Communications, Next: Parallel Input/Output, Prev: Dynamic Process Management, Up: Overview + +2.7 One-Sided Communications +============================ + +One-sided communications (also called ‘Remote Memory Access’, ‘RMA’) +supplements the traditional two-sided, send/receive based MPI +communication model with a one-sided, put/get based interface. +One-sided communication that can take advantage of the capabilities of +highly specialized network hardware. Additionally, this extension +lowers latency and software overhead in applications written using a +shared-memory-like paradigm. + +The MPI specification revolves around the use of objects called +‘windows’; they intuitively specify regions of a process’s memory that +have been made available for remote read and write operations. The +published memory blocks can be accessed through three functions for put +(remote send), get (remote write), and accumulate (remote update or +reduction) data items. A much larger number of functions support +different synchronization styles; the semantics of these synchronization +operations are fairly complex. + +In ‘MPI for Python’, one-sided operations are available by using +instances of the *note Win: 76. class. New window objects are created +by calling the *note Win.Create: 77. method at all processes within a +communicator and specifying a memory buffer . When a window instance is +no longer needed, the *note Win.Free: 78. method should be called. + +The three one-sided MPI operations for remote write, read and reduction +are available through calling the methods *note Win.Put: 79, *note +Win.Get: 7a, and *note Win.Accumulate: 7b. respectively within a *note +Win: 76. instance. These methods need an integer rank identifying the +target process and an integer offset relative the base address of the +remote memory block being accessed. + +The one-sided operations read, write, and reduction are implicitly +nonblocking, and must be synchronized by using two primary modes. +Active target synchronization requires the origin process to call the +*note Win.Start: 7c. and *note Win.Complete: 7d. methods at the origin +process, and target process cooperates by calling the *note Win.Post: +7e. and *note Win.Wait: 7f. methods. There is also a collective variant +provided by the *note Win.Fence: 80. method. Passive target +synchronization is more lenient, only the origin process calls the *note +Win.Lock: 81. and *note Win.Unlock: 82. methods. Locks are used to +protect remote accesses to the locked remote window and to protect local +load/store accesses to a locked local window. + + +File: mpi4py.info, Node: Parallel Input/Output, Next: Environmental Management, Prev: One-Sided Communications, Up: Overview + +2.8 Parallel Input/Output +========================= + +The POSIX standard provides a model of a widely portable file system. +However, the optimization needed for parallel input/output cannot be +achieved with this generic interface. In order to ensure efficiency and +scalability, the underlying parallel input/output system must provide a +high-level interface supporting partitioning of file data among +processes and a collective interface supporting complete transfers of +global data structures between process memories and files. +Additionally, further efficiencies can be gained via support for +asynchronous input/output, strided accesses to data, and control over +physical file layout on storage devices. This scenario motivated the +inclusion in the MPI-2 standard of a custom interface in order to +support more elaborated parallel input/output operations. + +The MPI specification for parallel input/output revolves around the use +objects called ‘files’. As defined by MPI, files are not just +contiguous byte streams. Instead, they are regarded as ordered +collections of ‘typed’ data items. MPI supports sequential or random +access to any integral set of these items. Furthermore, files are +opened collectively by a group of processes. + +The common patterns for accessing a shared file (broadcast, scatter, +gather, reduction) is expressed by using user-defined datatypes. +Compared to the communication patterns of point-to-point and collective +communications, this approach has the advantage of added flexibility and +expressiveness. Data access operations (read and write) are defined for +different kinds of positioning (using explicit offsets, individual file +pointers, and shared file pointers), coordination (non-collective and +collective), and synchronism (blocking, nonblocking, and split +collective with begin/end phases). + +In ‘MPI for Python’, all MPI input/output operations are performed +through instances of the *note File: 84. class. File handles are +obtained by calling the *note File.Open: 85. method at all processes +within a communicator and providing a file name and the intended access +mode. After use, they must be closed by calling the *note File.Close: +86. method. Files even can be deleted by calling method *note +File.Delete: 87. + +After creation, files are typically associated with a per-process +‘view’. The view defines the current set of data visible and accessible +from an open file as an ordered set of elementary datatypes. This data +layout can be set and queried with the *note File.Set_view: 88. and +*note File.Get_view: 89. methods respectively. + +Actual input/output operations are achieved by many methods combining +read and write calls with different behavior regarding positioning, +coordination, and synchronism. Summing up, ‘MPI for Python’ provides +the thirty (30) methods defined in MPI-2 for reading from or writing to +files using explicit offsets or file pointers (individual or shared), in +blocking or nonblocking and collective or noncollective versions. + + +File: mpi4py.info, Node: Environmental Management, Prev: Parallel Input/Output, Up: Overview + +2.9 Environmental Management +============================ + +* Menu: + +* Initialization and Exit:: +* Implementation Information:: +* Timers:: +* Error Handling:: + + +File: mpi4py.info, Node: Initialization and Exit, Next: Implementation Information, Up: Environmental Management + +2.9.1 Initialization and Exit +----------------------------- + +Module functions *note Init: 8c. or *note Init_thread: 8d. and *note +Finalize: 8e. provide MPI initialization and finalization respectively. +Module functions *note Is_initialized: 8f. and *note Is_finalized: 90. +provide the respective tests for initialization and finalization. + + Note: ‘MPI_Init()’ or ‘MPI_Init_thread()’ is actually called when + you import the *note MPI: 3. module from the *note mpi4py: 0. + package, but only if MPI is not already initialized. In such case, + calling *note Init: 8c. or *note Init_thread: 8d. from Python is + expected to generate an MPI error, and in turn an exception will be + raised. + + Note: ‘MPI_Finalize()’ is registered (by using Python C/API + function Py_AtExit()(1)) for being automatically called when Python + processes exit, but only if *note mpi4py: 0. actually initialized + MPI. Therefore, there is no need to call *note Finalize: 8e. from + Python to ensure MPI finalization. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/c-api/sys.html#c.Py_AtExit + + +File: mpi4py.info, Node: Implementation Information, Next: Timers, Prev: Initialization and Exit, Up: Environmental Management + +2.9.2 Implementation Information +-------------------------------- + + * The MPI version number can be retrieved from module function *note + Get_version: 92. It returns a two-integer tuple ‘(version, + subversion)’. + + * The *note Get_processor_name: 93. function can be used to access + the processor name. + + * The values of predefined attributes attached to the world + communicator can be obtained by calling the *note Comm.Get_attr: + 94. method within the *note COMM_WORLD: 24. instance. + + +File: mpi4py.info, Node: Timers, Next: Error Handling, Prev: Implementation Information, Up: Environmental Management + +2.9.3 Timers +------------ + +MPI timer functionalities are available through the *note Wtime: 96. and +*note Wtick: 97. functions. + + +File: mpi4py.info, Node: Error Handling, Prev: Timers, Up: Environmental Management + +2.9.4 Error Handling +-------------------- + +In order to facilitate handle sharing with other Python modules +interfacing MPI-based parallel libraries, the predefined MPI error +handlers *note ERRORS_RETURN: 99. and *note ERRORS_ARE_FATAL: 9a. can be +assigned to and retrieved from communicators using methods *note +Comm.Set_errhandler: 9b. and *note Comm.Get_errhandler: 9c, and +similarly for windows and files. New custom error handlers can be +created with *note Comm.Create_errhandler: 9d. + +When the predefined error handler *note ERRORS_RETURN: 99. is set, +errors returned from MPI calls within Python code will raise an instance +of the exception class *note Exception: 9e, which is a subclass of the +standard Python exception RuntimeError(1). + + Note: After import, mpi4py overrides the default MPI rules + governing inheritance of error handlers. The *note ERRORS_RETURN: + 99. error handler is set in the predefined *note COMM_SELF: 23. and + *note COMM_WORLD: 24. communicators, as well as any new *note Comm: + 1e, *note Win: 76, or *note File: 84. instance created through + mpi4py. If you ever pass such handles to C/C++/Fortran library + code, it is recommended to set the *note ERRORS_ARE_FATAL: 9a. + error handler on them to ensure MPI errors do not pass silently. + + Warning: Importing with ‘from mpi4py.MPI import *’ will cause a + name clashing with the standard Python Exception(2) base class. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/exceptions.html#RuntimeError + + (2) https://docs.python.org/3/library/exceptions.html#Exception + + +File: mpi4py.info, Node: Tutorial, Next: mpi4py, Prev: Overview, Up: Top + +3 Tutorial +********** + + Warning: Under construction. Contributions very welcome! + + Tip: Rolf Rabenseifner(1) at HLRS(2) developed a comprehensive + MPI-3.1/4.0 course with slides and a large set of exercises + including solutions. This material is available online(3) for + self-study. The slides and exercises show the C, Fortran, and + Python (mpi4py) interfaces. For performance reasons, most Python + exercises use NumPy arrays and communication routines involving + buffer-like objects. + + Tip: Victor Eijkhout(4) at TACC(5) authored the book ‘Parallel + Programming for Science and Engineering’. This book is available + online(6) in PDF and HTML(7) formats. The book covers parallel + programming with MPI and OpenMP in C/C++ and Fortran, and MPI in + Python using mpi4py. + +‘MPI for Python’ supports convenient, ‘pickle’-based communication of +generic Python object as well as fast, near C-speed, direct array data +communication of buffer-provider objects (e.g., NumPy arrays). + + * Communication of generic Python objects + + You have to use methods with ‘all-lowercase’ names, like *note + Comm.send: 3d, *note Comm.recv: 3e, *note Comm.bcast: 52, *note + Comm.scatter: 53, *note Comm.gather: 54. . An object to be sent is + passed as a parameter to the communication call, and the received + object is simply the return value. + + The *note Comm.isend: a1. and *note Comm.irecv: a2. methods return + *note Request: 43. instances; completion of these methods can be + managed using the *note Request.test: a3. and *note Request.wait: + a4. methods. + + The *note Comm.recv: 3e. and *note Comm.irecv: a2. methods may be + passed a buffer object that can be repeatedly used to receive + messages avoiding internal memory allocation. This buffer must be + sufficiently large to accommodate the transmitted messages; hence, + any buffer passed to *note Comm.recv: 3e. or *note Comm.irecv: a2. + must be at least as long as the ‘pickled’ data transmitted to the + receiver. + + Collective calls like *note Comm.scatter: 53, *note Comm.gather: + 54, *note Comm.allgather: 55, *note Comm.alltoall: 56. expect a + single value or a sequence of *note Comm.size: a5. elements at the + root or all process. They return a single value, a list of *note + Comm.size: a5. elements, or None(8). + + Note: ‘MPI for Python’ uses the ‘highest’ protocol version(9) + available in the Python runtime (see the HIGHEST_PROTOCOL(10) + constant in the pickle(11) module). The default protocol can + be changed at import time by setting the *note + MPI4PY_PICKLE_PROTOCOL: a6. environment variable, or at + runtime by assigning a different value to the *note PROTOCOL: + a7. attribute of the *note pickle: a8. object within the *note + MPI: 3. module. + + * Communication of buffer-like objects + + You have to use method names starting with an ‘upper-case’ letter, + like *note Comm.Send: 3a, *note Comm.Recv: 3b, *note Comm.Bcast: + 4d, *note Comm.Scatter: 4e, *note Comm.Gather: 4f. + + In general, buffer arguments to these calls must be explicitly + specified by using a 2/3-list/tuple like ‘[data, MPI.DOUBLE]’, or + ‘[data, count, MPI.DOUBLE]’ (the former one uses the byte-size of + ‘data’ and the extent of the MPI datatype to define ‘count’). + + For vector collectives communication operations like *note + Comm.Scatterv: 57. and *note Comm.Gatherv: 58, buffer arguments are + specified as ‘[data, count, displ, datatype]’, where ‘count’ and + ‘displ’ are sequences of integral values. + + Automatic MPI datatype discovery for NumPy/GPU arrays and PEP-3118 + buffers is supported, but limited to basic C types (all + C/C99-native signed/unsigned integral types and single/double + precision real/complex floating types) and availability of matching + datatypes in the underlying MPI implementation. In this case, the + buffer-provider object can be passed directly as a buffer argument, + the count and MPI datatype will be inferred. + + If mpi4py is built against a GPU-aware MPI implementation, GPU + arrays can be passed to upper-case methods as long as they have + either the ‘__dlpack__’ and ‘__dlpack_device__’ methods or the + ‘__cuda_array_interface__’ attribute that are compliant with the + respective standard specifications. Moreover, only C-contiguous or + Fortran-contiguous GPU arrays are supported. It is important to + note that GPU buffers must be fully ready before any MPI routines + operate on them to avoid race conditions. This can be ensured by + using the synchronization API of your array library. mpi4py does + not have access to any GPU-specific functionality and thus cannot + perform this operation automatically for users. + +* Menu: + +* Running Python scripts with MPI:: +* Point-to-Point Communication:: +* Collective Communication:: +* Input/Output (MPI-IO): Input/Output MPI-IO. +* Dynamic Process Management: Dynamic Process Management<2>. +* GPU-aware MPI + Python GPU arrays:: +* One-Sided Communication (RMA): One-Sided Communication RMA. +* Wrapping with SWIG:: +* Wrapping with F2Py:: + + ---------- Footnotes ---------- + + (1) https://www.hlrs.de/people/rolf-rabenseifner + + (2) https://www.hlrs.de/ + + (3) +https://www.hlrs.de/training/self-study-materials/mpi-course-material + + (4) https://tacc.utexas.edu/about/staff-directory/victor-eijkhout + + (5) https://tacc.utexas.edu/ + + (6) https://theartofhpc.com/pcse.html + + (7) https://theartofhpc.com/pcse/index.html + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/pickle.html#pickle-protocols + + (10) +https://docs.python.org/3/library/pickle.html#pickle.HIGHEST_PROTOCOL + + (11) https://docs.python.org/3/library/pickle.html#module-pickle + + +File: mpi4py.info, Node: Running Python scripts with MPI, Next: Point-to-Point Communication, Up: Tutorial + +3.1 Running Python scripts with MPI +=================================== + +Most MPI programs can be run with the command ‘mpiexec’. In practice, +running Python programs looks like: + + $ mpiexec -n 4 python script.py + +to run the program with 4 processors. + + +File: mpi4py.info, Node: Point-to-Point Communication, Next: Collective Communication, Prev: Running Python scripts with MPI, Up: Tutorial + +3.2 Point-to-Point Communication +================================ + + * Python objects (pickle(1) under the hood): + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = {'a': 7, 'b': 3.14} + comm.send(data, dest=1, tag=11) + elif rank == 1: + data = comm.recv(source=0, tag=11) + + * Python objects with non-blocking communication: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = {'a': 7, 'b': 3.14} + req = comm.isend(data, dest=1, tag=11) + req.wait() + elif rank == 1: + req = comm.irecv(source=0, tag=11) + data = req.wait() + + * NumPy arrays (the fast way!): + + from mpi4py import MPI + import numpy + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + # passing MPI datatypes explicitly + if rank == 0: + data = numpy.arange(1000, dtype='i') + comm.Send([data, MPI.INT], dest=1, tag=77) + elif rank == 1: + data = numpy.empty(1000, dtype='i') + comm.Recv([data, MPI.INT], source=0, tag=77) + + # automatic MPI datatype discovery + if rank == 0: + data = numpy.arange(100, dtype=numpy.float64) + comm.Send(data, dest=1, tag=13) + elif rank == 1: + data = numpy.empty(100, dtype=numpy.float64) + comm.Recv(data, source=0, tag=13) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/pickle.html#module-pickle + + +File: mpi4py.info, Node: Collective Communication, Next: Input/Output MPI-IO, Prev: Point-to-Point Communication, Up: Tutorial + +3.3 Collective Communication +============================ + + * Broadcasting a Python dictionary: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = {'key1' : [7, 2.72, 2+3j], + 'key2' : ( 'abc', 'xyz')} + else: + data = None + data = comm.bcast(data, root=0) + + * Scattering Python objects: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + if rank == 0: + data = [(i+1)**2 for i in range(size)] + else: + data = None + data = comm.scatter(data, root=0) + assert data == (rank+1)**2 + + * Gathering Python objects: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + data = (rank+1)**2 + data = comm.gather(data, root=0) + if rank == 0: + for i in range(size): + assert data[i] == (i+1)**2 + else: + assert data is None + + * Broadcasting a NumPy array: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = np.arange(100, dtype='i') + else: + data = np.empty(100, dtype='i') + comm.Bcast(data, root=0) + for i in range(100): + assert data[i] == i + + * Scattering NumPy arrays: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + sendbuf = None + if rank == 0: + sendbuf = np.empty([size, 100], dtype='i') + sendbuf.T[:,:] = range(size) + recvbuf = np.empty(100, dtype='i') + comm.Scatter(sendbuf, recvbuf, root=0) + assert np.allclose(recvbuf, rank) + + * Gathering NumPy arrays: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + sendbuf = np.zeros(100, dtype='i') + rank + recvbuf = None + if rank == 0: + recvbuf = np.empty([size, 100], dtype='i') + comm.Gather(sendbuf, recvbuf, root=0) + if rank == 0: + for i in range(size): + assert np.allclose(recvbuf[i,:], i) + + * Parallel matrix-vector product: + + from mpi4py import MPI + import numpy + + def matvec(comm, A, x): + m = A.shape[0] # local rows + p = comm.Get_size() + xg = numpy.zeros(m*p, dtype='d') + comm.Allgather([x, MPI.DOUBLE], + [xg, MPI.DOUBLE]) + y = numpy.dot(A, xg) + return y + + +File: mpi4py.info, Node: Input/Output MPI-IO, Next: Dynamic Process Management<2>, Prev: Collective Communication, Up: Tutorial + +3.4 Input/Output (MPI-IO) +========================= + + * Collective I/O with NumPy arrays: + + from mpi4py import MPI + import numpy as np + + amode = MPI.MODE_WRONLY|MPI.MODE_CREATE + comm = MPI.COMM_WORLD + fh = MPI.File.Open(comm, "./datafile.contig", amode) + + buffer = np.empty(10, dtype=np.int) + buffer[:] = comm.Get_rank() + + offset = comm.Get_rank()*buffer.nbytes + fh.Write_at_all(offset, buffer) + + fh.Close() + + * Non-contiguous Collective I/O with NumPy arrays and datatypes: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + size = comm.Get_size() + + amode = MPI.MODE_WRONLY|MPI.MODE_CREATE + fh = MPI.File.Open(comm, "./datafile.noncontig", amode) + + item_count = 10 + + buffer = np.empty(item_count, dtype='i') + buffer[:] = rank + + filetype = MPI.INT.Create_vector(item_count, 1, size) + filetype.Commit() + + displacement = MPI.INT.Get_size()*rank + fh.Set_view(displacement, filetype=filetype) + + fh.Write_all(buffer) + filetype.Free() + fh.Close() + + +File: mpi4py.info, Node: Dynamic Process Management<2>, Next: GPU-aware MPI + Python GPU arrays, Prev: Input/Output MPI-IO, Up: Tutorial + +3.5 Dynamic Process Management +============================== + + * Compute Pi - Master (or parent, or client) side: + + #!/usr/bin/env python + from mpi4py import MPI + import numpy + import sys + + comm = MPI.COMM_SELF.Spawn(sys.executable, + args=['cpi.py'], + maxprocs=5) + + N = numpy.array(100, 'i') + comm.Bcast([N, MPI.INT], root=MPI.ROOT) + PI = numpy.array(0.0, 'd') + comm.Reduce(None, [PI, MPI.DOUBLE], + op=MPI.SUM, root=MPI.ROOT) + print(PI) + + comm.Disconnect() + + * Compute Pi - Worker (or child, or server) side: + + #!/usr/bin/env python + from mpi4py import MPI + import numpy + + comm = MPI.Comm.Get_parent() + size = comm.Get_size() + rank = comm.Get_rank() + + N = numpy.array(0, dtype='i') + comm.Bcast([N, MPI.INT], root=0) + h = 1.0 / N; s = 0.0 + for i in range(rank, N, size): + x = h * (i + 0.5) + s += 4.0 / (1.0 + x**2) + PI = numpy.array(s * h, dtype='d') + comm.Reduce([PI, MPI.DOUBLE], None, + op=MPI.SUM, root=0) + + comm.Disconnect() + + +File: mpi4py.info, Node: GPU-aware MPI + Python GPU arrays, Next: One-Sided Communication RMA, Prev: Dynamic Process Management<2>, Up: Tutorial + +3.6 GPU-aware MPI + Python GPU arrays +===================================== + + * Reduce-to-all CuPy arrays: + + from mpi4py import MPI + import cupy as cp + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + sendbuf = cp.arange(10, dtype='i') + recvbuf = cp.empty_like(sendbuf) + cp.cuda.get_current_stream().synchronize() + comm.Allreduce(sendbuf, recvbuf) + + assert cp.allclose(recvbuf, sendbuf*size) + + +File: mpi4py.info, Node: One-Sided Communication RMA, Next: Wrapping with SWIG, Prev: GPU-aware MPI + Python GPU arrays, Up: Tutorial + +3.7 One-Sided Communication (RMA) +================================= + + * Read from (write to) the entire RMA window: + + import numpy as np + from mpi4py import MPI + from mpi4py.util import dtlib + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + datatype = MPI.FLOAT + np_dtype = dtlib.to_numpy_dtype(datatype) + itemsize = datatype.Get_size() + + N = 10 + win_size = N * itemsize if rank == 0 else 0 + win = MPI.Win.Allocate(win_size, comm=comm) + + buf = np.empty(N, dtype=np_dtype) + if rank == 0: + buf.fill(42) + win.Lock(rank=0) + win.Put(buf, target_rank=0) + win.Unlock(rank=0) + comm.Barrier() + else: + comm.Barrier() + win.Lock(rank=0) + win.Get(buf, target_rank=0) + win.Unlock(rank=0) + assert np.all(buf == 42) + + * Accessing a part of the RMA window using the ‘target’ argument, + which is defined as ‘(offset, count, datatype)’: + + import numpy as np + from mpi4py import MPI + from mpi4py.util import dtlib + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + datatype = MPI.FLOAT + np_dtype = dtlib.to_numpy_dtype(datatype) + itemsize = datatype.Get_size() + + N = comm.Get_size() + 1 + win_size = N * itemsize if rank == 0 else 0 + win = MPI.Win.Allocate( + size=win_size, + disp_unit=itemsize, + comm=comm, + ) + if rank == 0: + mem = np.frombuffer(win, dtype=np_dtype) + mem[:] = np.arange(len(mem), dtype=np_dtype) + comm.Barrier() + + buf = np.zeros(3, dtype=np_dtype) + target = (rank, 2, datatype) + win.Lock(rank=0) + win.Get(buf, target_rank=0, target=target) + win.Unlock(rank=0) + assert np.all(buf == [rank, rank+1, 0]) + + +File: mpi4py.info, Node: Wrapping with SWIG, Next: Wrapping with F2Py, Prev: One-Sided Communication RMA, Up: Tutorial + +3.8 Wrapping with SWIG +====================== + + * C source: + + /* file: helloworld.c */ + void sayhello(MPI_Comm comm) + { + int size, rank; + MPI_Comm_size(comm, &size); + MPI_Comm_rank(comm, &rank); + printf("Hello, World! " + "I am process %d of %d.\n", + rank, size); + } + + * SWIG interface file: + + // file: helloworld.i + %module helloworld + %{ + #include + #include "helloworld.c" + }% + + %include mpi4py/mpi4py.i + %mpi4py_typemap(Comm, MPI_Comm); + void sayhello(MPI_Comm comm); + + * Try it in the Python prompt: + + >>> from mpi4py import MPI + >>> import helloworld + >>> helloworld.sayhello(MPI.COMM_WORLD) + Hello, World! I am process 0 of 1. + + +File: mpi4py.info, Node: Wrapping with F2Py, Prev: Wrapping with SWIG, Up: Tutorial + +3.9 Wrapping with F2Py +====================== + + * Fortran 90 source: + + ! file: helloworld.f90 + subroutine sayhello(comm) + use mpi + implicit none + integer :: comm, rank, size, ierr + call MPI_Comm_size(comm, size, ierr) + call MPI_Comm_rank(comm, rank, ierr) + print *, 'Hello, World! I am process ',rank,' of ',size,'.' + end subroutine sayhello + + * Compiling example using f2py + + $ f2py -c --f90exec=mpif90 helloworld.f90 -m helloworld + + * Try it in the Python prompt: + + >>> from mpi4py import MPI + >>> import helloworld + >>> fcomm = MPI.COMM_WORLD.py2f() + >>> helloworld.sayhello(fcomm) + Hello, World! I am process 0 of 1. + + +File: mpi4py.info, Node: mpi4py, Next: mpi4py MPI, Prev: Tutorial, Up: Top + +4 mpi4py +******** + +The ‘MPI for Python’ package. + +The ‘Message Passing Interface’ (MPI) is a standardized and portable +message-passing system designed to function on a wide variety of +parallel computers. The MPI standard defines the syntax and semantics +of library routines and allows users to write portable programs in the +main scientific programming languages (Fortran, C, or C++). Since its +release, the MPI specification has become the leading standard for +message-passing libraries for parallel computers. + +‘MPI for Python’ provides MPI bindings for the Python programming +language, allowing any Python program to exploit multiple processors. +This package build on the MPI specification and provides an object +oriented interface which closely follows MPI-2 C++ bindings. + +* Menu: + +* Runtime configuration options:: +* Environment variables:: +* Miscellaneous functions:: + + +File: mpi4py.info, Node: Runtime configuration options, Next: Environment variables, Up: mpi4py + +4.1 Runtime configuration options +================================= + + -- Data: mpi4py.rc + + This object has attributes exposing runtime configuration options + that become effective at import time of the *note MPI: 3. module. + +Attributes Summary +.................. + +*note initialize: b6.Automatic MPI initialization at import + + +*note threads: b7. Request initialization with thread support + + +*note thread_level: b8.Level of thread support to request + + +*note finalize: b9.Automatic MPI finalization at exit + + +*note fast_reduce: ba.Use tree-based reductions for objects + + +*note recv_mprobe: bb.Use matched probes to receive objects + + +*note irecv_bufsz: bc.Default buffer size in bytes for *note irecv(): a2. + + +*note errors: bd. Error handling policy + + +Attributes Documentation +........................ + + -- Attribute: mpi4py.rc.initialize + + Automatic MPI initialization at import. + + + Type: bool(1) + + + Default: True(2) + + See also + ........ + + *note MPI4PY_RC_INITIALIZE: be. + + -- Attribute: mpi4py.rc.threads + + Request initialization with thread support. + + + Type: bool(3) + + + Default: True(4) + + See also + ........ + + *note MPI4PY_RC_THREADS: bf. + + -- Attribute: mpi4py.rc.thread_level + + Level of thread support to request. + + + Type: str(5) + + + Default: ‘"multiple"’ + + + Choices: ‘"multiple"’, ‘"serialized"’, ‘"funneled"’, ‘"single"’ + + See also + ........ + + *note MPI4PY_RC_THREAD_LEVEL: c0. + + -- Attribute: mpi4py.rc.finalize + + Automatic MPI finalization at exit. + + + Type: None(6) or bool(7) + + + Default: None(8) + + See also + ........ + + *note MPI4PY_RC_FINALIZE: c1. + + -- Attribute: mpi4py.rc.fast_reduce + + Use tree-based reductions for objects. + + + Type: bool(9) + + + Default: True(10) + + See also + ........ + + *note MPI4PY_RC_FAST_REDUCE: c2. + + -- Attribute: mpi4py.rc.recv_mprobe + + Use matched probes to receive objects. + + + Type: bool(11) + + + Default: True(12) + + See also + ........ + + *note MPI4PY_RC_RECV_MPROBE: c3. + + -- Attribute: mpi4py.rc.irecv_bufsz + + Default buffer size in bytes for *note irecv(): a2. + + + Type: int(13) + + + Default: ‘32768’ + + See also + ........ + + *note MPI4PY_RC_IRECV_BUFSZ: c4. + + Added in version 4.0.0. + + -- Attribute: mpi4py.rc.errors + + Error handling policy. + + + Type: str(14) + + + Default: ‘"exception"’ + + + Choices: ‘"exception"’, ‘"default"’, ‘"abort"’, ‘"fatal"’ + + See also + ........ + + *note MPI4PY_RC_ERRORS: c5. + +Example +....... + +MPI for Python features automatic initialization and finalization of the +MPI execution environment. By using the *note mpi4py.rc: b5. object, +MPI initialization and finalization can be handled programmatically: + + import mpi4py + mpi4py.rc.initialize = False # do not initialize MPI automatically + mpi4py.rc.finalize = False # do not finalize MPI automatically + + from mpi4py import MPI # import the 'MPI' module + + MPI.Init() # manual initialization of the MPI environment + ... # your finest code here ... + MPI.Finalize() # manual finalization of the MPI environment + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#bool + + (2) https://docs.python.org/3/library/constants.html#True + + (3) https://docs.python.org/3/library/functions.html#bool + + (4) https://docs.python.org/3/library/constants.html#True + + (5) https://docs.python.org/3/library/stdtypes.html#str + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/functions.html#bool + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/functions.html#bool + + (10) https://docs.python.org/3/library/constants.html#True + + (11) https://docs.python.org/3/library/functions.html#bool + + (12) https://docs.python.org/3/library/constants.html#True + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: Environment variables, Next: Miscellaneous functions, Prev: Runtime configuration options, Up: mpi4py + +4.2 Environment variables +========================= + +The following environment variables override the corresponding +attributes of the *note mpi4py.rc: b5. and *note MPI.pickle: a8. objects +at import time of the *note MPI: 3. module. + + Note: For variables of boolean type, accepted values are ‘0’ and + ‘1’ (interpreted as False(1) and True(2), respectively), and + strings specifying a YAML boolean(3) value (case-insensitive). + + -- Environment Variable: MPI4PY_RC_INITIALIZE + + + Type: bool(4) + + + Default: True(5) + + Whether to automatically initialize MPI at import time of the *note + mpi4py.MPI: 3. module. + + See also + ........ + + *note mpi4py.rc.initialize: b6. + + Added in version 4.0.0. + + -- Environment Variable: MPI4PY_RC_FINALIZE + + + Type: None(6) | bool(7) + + + Default: None(8) + + + Choices: None(9), True(10), False(11) + + Whether to automatically finalize MPI at exit time of the Python + process. + + See also + ........ + + *note mpi4py.rc.finalize: b9. + + Added in version 4.0.0. + + -- Environment Variable: MPI4PY_RC_THREADS + + + Type: bool(12) + + + Default: True(13) + + Whether to initialize MPI with thread support. + + See also + ........ + + *note mpi4py.rc.threads: b7. + + Added in version 3.1.0. + + -- Environment Variable: MPI4PY_RC_THREAD_LEVEL + + + Default: ‘"multiple"’ + + + Choices: ‘"single"’, ‘"funneled"’, ‘"serialized"’, ‘"multiple"’ + + The level of required thread support. + + See also + ........ + + *note mpi4py.rc.thread_level: b8. + + Added in version 3.1.0. + + -- Environment Variable: MPI4PY_RC_FAST_REDUCE + + + Type: bool(14) + + + Default: True(15) + + Whether to use tree-based reductions for objects. + + See also + ........ + + *note mpi4py.rc.fast_reduce: ba. + + Added in version 3.1.0. + + -- Environment Variable: MPI4PY_RC_RECV_MPROBE + + + Type: bool(16) + + + Default: True(17) + + Whether to use matched probes to receive objects. + + See also + ........ + + *note mpi4py.rc.recv_mprobe: bb. + + -- Environment Variable: MPI4PY_RC_IRECV_BUFSZ + + + Type: bool(18) + + + Default: True(19) + + Default buffer size in bytes for *note irecv(): a2. + + See also + ........ + + *note mpi4py.rc.irecv_bufsz: bc. + + Added in version 4.0.0. + + -- Environment Variable: MPI4PY_RC_ERRORS + + + Default: ‘"exception"’ + + + Choices: ‘"exception"’, ‘"default"’, ‘"abort"’, ‘"fatal"’ + + Controls default MPI error handling policy. + + See also + ........ + + *note mpi4py.rc.errors: bd. + + Added in version 3.1.0. + + -- Environment Variable: MPI4PY_PICKLE_PROTOCOL + + + Type: int(20) + + + Default: pickle.HIGHEST_PROTOCOL(21) + + Controls the default pickle protocol to use when communicating + Python objects. + + See also + ........ + + *note PROTOCOL: a7. attribute of the *note MPI.pickle: a8. object + within the *note MPI: 3. module. + + Added in version 3.1.0. + + -- Environment Variable: MPI4PY_PICKLE_THRESHOLD + + + Type: int(22) + + + Default: ‘262144’ + + Controls the default buffer size threshold for switching from + in-band to out-of-band buffer handling when using pickle protocol + version 5 or higher. + + See also + ........ + + *note THRESHOLD: c8. attribute of the *note MPI.pickle: a8. object + within the *note MPI: 3. module. + + Added in version 3.1.2. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#False + + (2) https://docs.python.org/3/library/constants.html#True + + (3) https://yaml.org/type/bool.html + + (4) https://docs.python.org/3/library/functions.html#bool + + (5) https://docs.python.org/3/library/constants.html#True + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/functions.html#bool + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/constants.html#True + + (11) https://docs.python.org/3/library/constants.html#False + + (12) https://docs.python.org/3/library/functions.html#bool + + (13) https://docs.python.org/3/library/constants.html#True + + (14) https://docs.python.org/3/library/functions.html#bool + + (15) https://docs.python.org/3/library/constants.html#True + + (16) https://docs.python.org/3/library/functions.html#bool + + (17) https://docs.python.org/3/library/constants.html#True + + (18) https://docs.python.org/3/library/functions.html#bool + + (19) https://docs.python.org/3/library/constants.html#True + + (20) https://docs.python.org/3/library/functions.html#int + + (21) +https://docs.python.org/3/library/pickle.html#pickle.HIGHEST_PROTOCOL + + (22) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: Miscellaneous functions, Prev: Environment variables, Up: mpi4py + +4.3 Miscellaneous functions +=========================== + + -- Function: mpi4py.profile (name, *, path=None) + + Support for the MPI profiling interface. + + + Parameters: + + * ‘name’ (str(1)) – Name of the profiler library to load. + + * ‘path’ (sequence(2) of str(3), ‘optional’) – Additional paths + to search for the profiler. + + + Return type: None(4) + + -- Function: mpi4py.get_include () + + Return the directory in the package that contains header files. + + Extension modules that need to compile against mpi4py should use + this function to locate the appropriate include directory. Using + Python distutils (or perhaps NumPy distutils): + + import mpi4py + Extension('extension_name', ... + include_dirs=[..., mpi4py.get_include()]) + + + Return type: str(5) + + -- Function: mpi4py.get_config () + + Return a dictionary with information about MPI. + + Changed in version 4.0.0: By default, this function returns an + empty dictionary. However, downstream packagers and distributors + may alter such behavior. To that end, MPI information must be + provided under an ‘mpi’ section within a UTF-8 encoded INI-style + configuration file ‘mpi.cfg’ located at the top-level package + directory. The configuration file is read and parsed using the + configparser(6) module. + + + Return type: dict(7)[str(8), str(9)] + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + (2) https://docs.python.org/3/glossary.html#term-sequence + + (3) https://docs.python.org/3/library/stdtypes.html#str + + (4) https://docs.python.org/3/library/constants.html#None + + (5) https://docs.python.org/3/library/stdtypes.html#str + + (6) +https://docs.python.org/3/library/configparser.html#module-configparser + + (7) https://docs.python.org/3/library/stdtypes.html#dict + + (8) https://docs.python.org/3/library/stdtypes.html#str + + (9) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI, Next: mpi4py typing, Prev: mpi4py, Up: Top + +5 mpi4py.MPI +************ + +* Menu: + +* Classes:: +* Functions:: +* Attributes:: + + +File: mpi4py.info, Node: Classes, Next: Functions, Up: mpi4py MPI + +5.1 Classes +=========== + +Ancillary +......... + +*note Datatype: d0.Datatype object. + + +*note Status: d1.Status object. + + +*note Request: 43.Request handler. + + +*note Prequest: 4a.Persistent request handler. + + +*note Grequest: d2.Generalized request handler. + + +*note Op: d3. Reduction operation. + + +*note Group: 28.Group of processes. + + +*note Info: d4.Info object. + + +*note Session: d5.Session context. + + +Communication +............. + +*note Comm: 1e.Communication context. + + +*note Intracomm: 1f.Intracommunicator. + + +*note Topocomm: d6.Topology intracommunicator. + + +*note Cartcomm: 33.Cartesian topology intracommunicator. + + +*note Graphcomm: 34.General graph topology intracommunicator. + + +*note Distgraphcomm: 35.Distributed graph topology intracommunicator. + + +*note Intercomm: 20.Intercommunicator. + + +*note Message: d7.Matched message. + + +One-sided operations +.................... + +*note Win: 76. Remote memory access context. + + +Input/Output +............ + +*note File: 84.File I/O context. + + +Error handling +.............. + +*note Errhandler: d8.Error handler. + + +*note Exception: 9e.Exception class. + + +Auxiliary +......... + +*note Pickle: d9.Pickle/unpickle Python objects. + + +*note buffer: da.Buffer. + + + +File: mpi4py.info, Node: Functions, Next: Attributes, Prev: Classes, Up: mpi4py MPI + +5.2 Functions +============= + +Version inquiry +............... + +*note Get_version: 92.()Obtain the version number of the MPI standard. + + +*note Get_library_version: dc.()Obtain the version string of the MPI library. + + +Initialization and finalization +............................... + +*note Init: 8c.()Initialize the MPI execution environment. + + +*note Init_thread: 8d.([required])Initialize the MPI execution environment. + + +*note Finalize: 8e.()Terminate the MPI execution environment. + + +*note Is_initialized: 8f.()Indicate whether *note Init: 8c. has been called. + + +*note Is_finalized: 90.()Indicate whether *note Finalize: 8e. has completed. + + +*note Query_thread: dd.()Return the level of thread support provided by the MPI library. + + +*note Is_thread_main: de.()Indicate whether this thread called *note Init: 8c. or *note Init_thread: 8d. + + +Memory allocation +................. + +*note Alloc_mem: df.(size[,Allocate memory for message passing and remote memory access. +info]) + +*note Free_mem: e0.(mem)Free memory allocated with *note Alloc_mem: df. + + +Address manipulation +.................... + +*note Get_address: e1.(location)Get the address of a location in memory. + + +*note Aint_add: e2.(base,Return the sum of base address and displacement. +disp) + +*note Aint_diff: e3.(addr1,Return the difference between absolute addresses. +addr2) + +Timer +..... + +*note Wtick: 97.()Return the resolution of *note Wtime: 96. + + +*note Wtime: 96.()Return an elapsed time on the calling processor. + + +Error handling +.............. + +*note Get_error_class: e4.(errorcode)Convert an ‘error code’ into an ‘error class’. + + +*note Get_error_string: e5.(errorcode)Return the ‘error string’ for a given ‘error class’ or ‘error code’. + + +*note Add_error_class: e6.()Add an ‘error class’ to the known error classes. + + +*note Add_error_code: e7.(errorclass)Add an ‘error code’ to an ‘error class’. + + +*note Add_error_string: e8.(errorcode,Associate an ‘error string’ with an ‘error class’ or ‘error code’. +string) + +*note Remove_error_class: e9.(errorclass)Remove an ‘error class’ from the known error classes. + + +*note Remove_error_code: ea.(errorcode)Remove an ‘error code’ from the known error codes. + + +*note Remove_error_string: eb.(errorcode)Remove ‘error string’ association from ‘error class’ or ‘error code’. + + +Dynamic process management +.......................... + +*note Open_port: 6d.([info])Return an address used to connect group of processes. + + +*note Close_port: 74.(port_name)Close a port. + + +*note Publish_name: 6e.(service_name,Publish a service name. +port_name[, +info]) + +*note Unpublish_name: 73.(service_name,Unpublish a service name. +port_name[, +info]) + +*note Lookup_name: 70.(service_name[,Lookup a port name given a service name. +info]) + +Miscellanea +........... + +*note Attach_buffer: ec.(buf)Attach a user-provided buffer for sending in buffered mode. + + +*note Detach_buffer: ed.()Remove an existing attached buffer. + + +*note Flush_buffer: ee.()Block until all buffered messages have been transmitted. + + +*note Iflush_buffer: ef.()Nonblocking flush for buffered messages. + + +*note Compute_dims: f0.(nnodes,Return a balanced distribution of processes per coordinate direction. +dims) + +*note Get_processor_name: 93.()Obtain the name of the calling processor. + + +*note Register_datarep: f1.(datarep,Register user-defined data representations. +read_fn, +write_fn, +...) + +*note Pcontrol: f2.(level)Control profiling. + + +Utilities +......... + +*note get_vendor: f3.()Information about the underlying MPI implementation. + + + +File: mpi4py.info, Node: Attributes, Prev: Functions, Up: mpi4py MPI + +5.3 Attributes +============== + +*note UNDEFINED: f5.Constant ‘UNDEFINED’ of type int(1) + + +*note ANY_SOURCE: f6.Constant ‘ANY_SOURCE’ of type int(2) + + +*note ANY_TAG: f7.Constant ‘ANY_TAG’ of type int(3) + + +*note PROC_NULL: f8.Constant ‘PROC_NULL’ of type int(4) + + +*note ROOT: f9.Constant ‘ROOT’ of type int(5) + + +*note BOTTOM: fa.Constant ‘BOTTOM’ of type *note BottomType: fb. + + +*note IN_PLACE: fc.Constant ‘IN_PLACE’ of type *note InPlaceType: fd. + + +*note BUFFER_AUTOMATIC: fe.Constant ‘BUFFER_AUTOMATIC’ of type *note BufferAutomaticType: ff. + + +*note KEYVAL_INVALID: 100.Constant ‘KEYVAL_INVALID’ of type int(6) + + +*note TAG_UB: 101.Constant ‘TAG_UB’ of type int(7) + + +*note IO: 102. Constant ‘IO’ of type int(8) + + +*note WTIME_IS_GLOBAL: 103.Constant ‘WTIME_IS_GLOBAL’ of type int(9) + + +*note UNIVERSE_SIZE: 104.Constant ‘UNIVERSE_SIZE’ of type int(10) + + +*note APPNUM: 105.Constant ‘APPNUM’ of type int(11) + + +*note LASTUSEDCODE: 106.Constant ‘LASTUSEDCODE’ of type int(12) + + +*note WIN_BASE: 107.Constant ‘WIN_BASE’ of type int(13) + + +*note WIN_SIZE: 108.Constant ‘WIN_SIZE’ of type int(14) + + +*note WIN_DISP_UNIT: 109.Constant ‘WIN_DISP_UNIT’ of type int(15) + + +*note WIN_CREATE_FLAVOR: 10a.Constant ‘WIN_CREATE_FLAVOR’ of type int(16) + + +*note WIN_FLAVOR: 10b.Constant ‘WIN_FLAVOR’ of type int(17) + + +*note WIN_MODEL: 10c.Constant ‘WIN_MODEL’ of type int(18) + + +*note SUCCESS: 10d.Constant ‘SUCCESS’ of type int(19) + + +*note ERR_LASTCODE: 10e.Constant ‘ERR_LASTCODE’ of type int(20) + + +*note ERR_COMM: 10f.Constant ‘ERR_COMM’ of type int(21) + + +*note ERR_GROUP: 110.Constant ‘ERR_GROUP’ of type int(22) + + +*note ERR_TYPE: 111.Constant ‘ERR_TYPE’ of type int(23) + + +*note ERR_REQUEST: 112.Constant ‘ERR_REQUEST’ of type int(24) + + +*note ERR_OP: 113.Constant ‘ERR_OP’ of type int(25) + + +*note ERR_ERRHANDLER: 114.Constant ‘ERR_ERRHANDLER’ of type int(26) + + +*note ERR_BUFFER: 115.Constant ‘ERR_BUFFER’ of type int(27) + + +*note ERR_COUNT: 116.Constant ‘ERR_COUNT’ of type int(28) + + +*note ERR_TAG: 117.Constant ‘ERR_TAG’ of type int(29) + + +*note ERR_RANK: 118.Constant ‘ERR_RANK’ of type int(30) + + +*note ERR_ROOT: 119.Constant ‘ERR_ROOT’ of type int(31) + + +*note ERR_TRUNCATE: 11a.Constant ‘ERR_TRUNCATE’ of type int(32) + + +*note ERR_IN_STATUS: 11b.Constant ‘ERR_IN_STATUS’ of type int(33) + + +*note ERR_PENDING: 11c.Constant ‘ERR_PENDING’ of type int(34) + + +*note ERR_TOPOLOGY: 11d.Constant ‘ERR_TOPOLOGY’ of type int(35) + + +*note ERR_DIMS: 11e.Constant ‘ERR_DIMS’ of type int(36) + + +*note ERR_ARG: 11f.Constant ‘ERR_ARG’ of type int(37) + + +*note ERR_OTHER: 120.Constant ‘ERR_OTHER’ of type int(38) + + +*note ERR_UNKNOWN: 121.Constant ‘ERR_UNKNOWN’ of type int(39) + + +*note ERR_INTERN: 122.Constant ‘ERR_INTERN’ of type int(40) + + +*note ERR_INFO: 123.Constant ‘ERR_INFO’ of type int(41) + + +*note ERR_FILE: 124.Constant ‘ERR_FILE’ of type int(42) + + +*note ERR_WIN: 125.Constant ‘ERR_WIN’ of type int(43) + + +*note ERR_KEYVAL: 126.Constant ‘ERR_KEYVAL’ of type int(44) + + +*note ERR_INFO_KEY: 127.Constant ‘ERR_INFO_KEY’ of type int(45) + + +*note ERR_INFO_VALUE: 128.Constant ‘ERR_INFO_VALUE’ of type int(46) + + +*note ERR_INFO_NOKEY: 129.Constant ‘ERR_INFO_NOKEY’ of type int(47) + + +*note ERR_ACCESS: 12a.Constant ‘ERR_ACCESS’ of type int(48) + + +*note ERR_AMODE: 12b.Constant ‘ERR_AMODE’ of type int(49) + + +*note ERR_BAD_FILE: 12c.Constant ‘ERR_BAD_FILE’ of type int(50) + + +*note ERR_FILE_EXISTS: 12d.Constant ‘ERR_FILE_EXISTS’ of type int(51) + + +*note ERR_FILE_IN_USE: 12e.Constant ‘ERR_FILE_IN_USE’ of type int(52) + + +*note ERR_NO_SPACE: 12f.Constant ‘ERR_NO_SPACE’ of type int(53) + + +*note ERR_NO_SUCH_FILE: 130.Constant ‘ERR_NO_SUCH_FILE’ of type int(54) + + +*note ERR_IO: 131.Constant ‘ERR_IO’ of type int(55) + + +*note ERR_READ_ONLY: 132.Constant ‘ERR_READ_ONLY’ of type int(56) + + +*note ERR_CONVERSION: 133.Constant ‘ERR_CONVERSION’ of type int(57) + + +*note ERR_DUP_DATAREP: 134.Constant ‘ERR_DUP_DATAREP’ of type int(58) + + +*note ERR_UNSUPPORTED_DATAREP: 135.Constant ‘ERR_UNSUPPORTED_DATAREP’ of type int(59) + + +*note ERR_UNSUPPORTED_OPERATION: 136.Constant ‘ERR_UNSUPPORTED_OPERATION’ of type int(60) + + +*note ERR_NAME: 137.Constant ‘ERR_NAME’ of type int(61) + + +*note ERR_NO_MEM: 138.Constant ‘ERR_NO_MEM’ of type int(62) + + +*note ERR_NOT_SAME: 139.Constant ‘ERR_NOT_SAME’ of type int(63) + + +*note ERR_PORT: 13a.Constant ‘ERR_PORT’ of type int(64) + + +*note ERR_QUOTA: 13b.Constant ‘ERR_QUOTA’ of type int(65) + + +*note ERR_SERVICE: 13c.Constant ‘ERR_SERVICE’ of type int(66) + + +*note ERR_SPAWN: 13d.Constant ‘ERR_SPAWN’ of type int(67) + + +*note ERR_BASE: 13e.Constant ‘ERR_BASE’ of type int(68) + + +*note ERR_SIZE: 13f.Constant ‘ERR_SIZE’ of type int(69) + + +*note ERR_DISP: 140.Constant ‘ERR_DISP’ of type int(70) + + +*note ERR_ASSERT: 141.Constant ‘ERR_ASSERT’ of type int(71) + + +*note ERR_LOCKTYPE: 142.Constant ‘ERR_LOCKTYPE’ of type int(72) + + +*note ERR_RMA_CONFLICT: 143.Constant ‘ERR_RMA_CONFLICT’ of type int(73) + + +*note ERR_RMA_SYNC: 144.Constant ‘ERR_RMA_SYNC’ of type int(74) + + +*note ERR_RMA_RANGE: 145.Constant ‘ERR_RMA_RANGE’ of type int(75) + + +*note ERR_RMA_ATTACH: 146.Constant ‘ERR_RMA_ATTACH’ of type int(76) + + +*note ERR_RMA_SHARED: 147.Constant ‘ERR_RMA_SHARED’ of type int(77) + + +*note ERR_RMA_FLAVOR: 148.Constant ‘ERR_RMA_FLAVOR’ of type int(78) + + +*note ORDER_C: 149.Constant ‘ORDER_C’ of type int(79) + + +*note ORDER_F: 14a.Constant ‘ORDER_F’ of type int(80) + + +*note ORDER_FORTRAN: 14b.Constant ‘ORDER_FORTRAN’ of type int(81) + + +*note TYPECLASS_INTEGER: 14c.Constant ‘TYPECLASS_INTEGER’ of type int(82) + + +*note TYPECLASS_REAL: 14d.Constant ‘TYPECLASS_REAL’ of type int(83) + + +*note TYPECLASS_COMPLEX: 14e.Constant ‘TYPECLASS_COMPLEX’ of type int(84) + + +*note DISTRIBUTE_NONE: 14f.Constant ‘DISTRIBUTE_NONE’ of type int(85) + + +*note DISTRIBUTE_BLOCK: 150.Constant ‘DISTRIBUTE_BLOCK’ of type int(86) + + +*note DISTRIBUTE_CYCLIC: 151.Constant ‘DISTRIBUTE_CYCLIC’ of type int(87) + + +*note DISTRIBUTE_DFLT_DARG: 152.Constant ‘DISTRIBUTE_DFLT_DARG’ of type int(88) + + +*note COMBINER_NAMED: 153.Constant ‘COMBINER_NAMED’ of type int(89) + + +*note COMBINER_DUP: 154.Constant ‘COMBINER_DUP’ of type int(90) + + +*note COMBINER_CONTIGUOUS: 155.Constant ‘COMBINER_CONTIGUOUS’ of type int(91) + + +*note COMBINER_VECTOR: 156.Constant ‘COMBINER_VECTOR’ of type int(92) + + +*note COMBINER_HVECTOR: 157.Constant ‘COMBINER_HVECTOR’ of type int(93) + + +*note COMBINER_INDEXED: 158.Constant ‘COMBINER_INDEXED’ of type int(94) + + +*note COMBINER_HINDEXED: 159.Constant ‘COMBINER_HINDEXED’ of type int(95) + + +*note COMBINER_INDEXED_BLOCK: 15a.Constant ‘COMBINER_INDEXED_BLOCK’ of type int(96) + + +*note COMBINER_HINDEXED_BLOCK: 15b.Constant ‘COMBINER_HINDEXED_BLOCK’ of type int(97) + + +*note COMBINER_STRUCT: 15c.Constant ‘COMBINER_STRUCT’ of type int(98) + + +*note COMBINER_SUBARRAY: 15d.Constant ‘COMBINER_SUBARRAY’ of type int(99) + + +*note COMBINER_DARRAY: 15e.Constant ‘COMBINER_DARRAY’ of type int(100) + + +*note COMBINER_RESIZED: 15f.Constant ‘COMBINER_RESIZED’ of type int(101) + + +*note COMBINER_VALUE_INDEX: 160.Constant ‘COMBINER_VALUE_INDEX’ of type int(102) + + +*note COMBINER_F90_REAL: 161.Constant ‘COMBINER_F90_REAL’ of type int(103) + + +*note COMBINER_F90_COMPLEX: 162.Constant ‘COMBINER_F90_COMPLEX’ of type int(104) + + +*note COMBINER_F90_INTEGER: 163.Constant ‘COMBINER_F90_INTEGER’ of type int(105) + + +*note IDENT: 164.Constant ‘IDENT’ of type int(106) + + +*note CONGRUENT: 165.Constant ‘CONGRUENT’ of type int(107) + + +*note SIMILAR: 166.Constant ‘SIMILAR’ of type int(108) + + +*note UNEQUAL: 167.Constant ‘UNEQUAL’ of type int(109) + + +*note CART: 168.Constant ‘CART’ of type int(110) + + +*note GRAPH: 169.Constant ‘GRAPH’ of type int(111) + + +*note DIST_GRAPH: 16a.Constant ‘DIST_GRAPH’ of type int(112) + + +*note UNWEIGHTED: 16b.Constant ‘UNWEIGHTED’ of type int(113) + + +*note WEIGHTS_EMPTY: 16c.Constant ‘WEIGHTS_EMPTY’ of type int(114) + + +*note COMM_TYPE_SHARED: 16d.Constant ‘COMM_TYPE_SHARED’ of type int(115) + + +*note BSEND_OVERHEAD: 16e.Constant ‘BSEND_OVERHEAD’ of type int(116) + + +*note WIN_FLAVOR_CREATE: 16f.Constant ‘WIN_FLAVOR_CREATE’ of type int(117) + + +*note WIN_FLAVOR_ALLOCATE: 170.Constant ‘WIN_FLAVOR_ALLOCATE’ of type int(118) + + +*note WIN_FLAVOR_DYNAMIC: 171.Constant ‘WIN_FLAVOR_DYNAMIC’ of type int(119) + + +*note WIN_FLAVOR_SHARED: 172.Constant ‘WIN_FLAVOR_SHARED’ of type int(120) + + +*note WIN_SEPARATE: 173.Constant ‘WIN_SEPARATE’ of type int(121) + + +*note WIN_UNIFIED: 174.Constant ‘WIN_UNIFIED’ of type int(122) + + +*note MODE_NOCHECK: 175.Constant ‘MODE_NOCHECK’ of type int(123) + + +*note MODE_NOSTORE: 176.Constant ‘MODE_NOSTORE’ of type int(124) + + +*note MODE_NOPUT: 177.Constant ‘MODE_NOPUT’ of type int(125) + + +*note MODE_NOPRECEDE: 178.Constant ‘MODE_NOPRECEDE’ of type int(126) + + +*note MODE_NOSUCCEED: 179.Constant ‘MODE_NOSUCCEED’ of type int(127) + + +*note LOCK_EXCLUSIVE: 17a.Constant ‘LOCK_EXCLUSIVE’ of type int(128) + + +*note LOCK_SHARED: 17b.Constant ‘LOCK_SHARED’ of type int(129) + + +*note MODE_RDONLY: 17c.Constant ‘MODE_RDONLY’ of type int(130) + + +*note MODE_WRONLY: 17d.Constant ‘MODE_WRONLY’ of type int(131) + + +*note MODE_RDWR: 17e.Constant ‘MODE_RDWR’ of type int(132) + + +*note MODE_CREATE: 17f.Constant ‘MODE_CREATE’ of type int(133) + + +*note MODE_EXCL: 180.Constant ‘MODE_EXCL’ of type int(134) + + +*note MODE_DELETE_ON_CLOSE: 181.Constant ‘MODE_DELETE_ON_CLOSE’ of type int(135) + + +*note MODE_UNIQUE_OPEN: 182.Constant ‘MODE_UNIQUE_OPEN’ of type int(136) + + +*note MODE_SEQUENTIAL: 183.Constant ‘MODE_SEQUENTIAL’ of type int(137) + + +*note MODE_APPEND: 184.Constant ‘MODE_APPEND’ of type int(138) + + +*note SEEK_SET: 185.Constant ‘SEEK_SET’ of type int(139) + + +*note SEEK_CUR: 186.Constant ‘SEEK_CUR’ of type int(140) + + +*note SEEK_END: 187.Constant ‘SEEK_END’ of type int(141) + + +*note DISPLACEMENT_CURRENT: 188.Constant ‘DISPLACEMENT_CURRENT’ of type int(142) + + +*note DISP_CUR: 189.Constant ‘DISP_CUR’ of type int(143) + + +*note THREAD_SINGLE: 18a.Constant ‘THREAD_SINGLE’ of type int(144) + + +*note THREAD_FUNNELED: 18b.Constant ‘THREAD_FUNNELED’ of type int(145) + + +*note THREAD_SERIALIZED: 18c.Constant ‘THREAD_SERIALIZED’ of type int(146) + + +*note THREAD_MULTIPLE: 18d.Constant ‘THREAD_MULTIPLE’ of type int(147) + + +*note VERSION: 18e.Constant ‘VERSION’ of type int(148) + + +*note SUBVERSION: 18f.Constant ‘SUBVERSION’ of type int(149) + + +*note MAX_PROCESSOR_NAME: 190.Constant ‘MAX_PROCESSOR_NAME’ of type int(150) + + +*note MAX_ERROR_STRING: 191.Constant ‘MAX_ERROR_STRING’ of type int(151) + + +*note MAX_PORT_NAME: 192.Constant ‘MAX_PORT_NAME’ of type int(152) + + +*note MAX_INFO_KEY: 193.Constant ‘MAX_INFO_KEY’ of type int(153) + + +*note MAX_INFO_VAL: 194.Constant ‘MAX_INFO_VAL’ of type int(154) + + +*note MAX_OBJECT_NAME: 195.Constant ‘MAX_OBJECT_NAME’ of type int(155) + + +*note MAX_DATAREP_STRING: 196.Constant ‘MAX_DATAREP_STRING’ of type int(156) + + +*note MAX_LIBRARY_VERSION_STRING: 197.Constant ‘MAX_LIBRARY_VERSION_STRING’ of type int(157) + + +*note DATATYPE_NULL: 198.Object ‘DATATYPE_NULL’ of type *note Datatype: d0. + + +*note PACKED: 199.Object ‘PACKED’ of type *note Datatype: d0. + + +*note BYTE: 19a.Object ‘BYTE’ of type *note Datatype: d0. + + +*note AINT: 19b.Object ‘AINT’ of type *note Datatype: d0. + + +*note OFFSET: 19c.Object ‘OFFSET’ of type *note Datatype: d0. + + +*note COUNT: 19d.Object ‘COUNT’ of type *note Datatype: d0. + + +*note CHAR: 19e.Object ‘CHAR’ of type *note Datatype: d0. + + +*note WCHAR: 19f.Object ‘WCHAR’ of type *note Datatype: d0. + + +*note SIGNED_CHAR: 1a0.Object ‘SIGNED_CHAR’ of type *note Datatype: d0. + + +*note SHORT: 1a1.Object ‘SHORT’ of type *note Datatype: d0. + + +*note INT: 1a2.Object ‘INT’ of type *note Datatype: d0. + + +*note LONG: 1a3.Object ‘LONG’ of type *note Datatype: d0. + + +*note LONG_LONG: 1a4.Object ‘LONG_LONG’ of type *note Datatype: d0. + + +*note UNSIGNED_CHAR: 1a5.Object ‘UNSIGNED_CHAR’ of type *note Datatype: d0. + + +*note UNSIGNED_SHORT: 1a6.Object ‘UNSIGNED_SHORT’ of type *note Datatype: d0. + + +*note UNSIGNED: 1a7.Object ‘UNSIGNED’ of type *note Datatype: d0. + + +*note UNSIGNED_LONG: 1a8.Object ‘UNSIGNED_LONG’ of type *note Datatype: d0. + + +*note UNSIGNED_LONG_LONG: 1a9.Object ‘UNSIGNED_LONG_LONG’ of type *note Datatype: d0. + + +*note FLOAT: 1aa.Object ‘FLOAT’ of type *note Datatype: d0. + + +*note DOUBLE: 1ab.Object ‘DOUBLE’ of type *note Datatype: d0. + + +*note LONG_DOUBLE: 1ac.Object ‘LONG_DOUBLE’ of type *note Datatype: d0. + + +*note C_BOOL: 1ad.Object ‘C_BOOL’ of type *note Datatype: d0. + + +*note INT8_T: 1ae.Object ‘INT8_T’ of type *note Datatype: d0. + + +*note INT16_T: 1af.Object ‘INT16_T’ of type *note Datatype: d0. + + +*note INT32_T: 1b0.Object ‘INT32_T’ of type *note Datatype: d0. + + +*note INT64_T: 1b1.Object ‘INT64_T’ of type *note Datatype: d0. + + +*note UINT8_T: 1b2.Object ‘UINT8_T’ of type *note Datatype: d0. + + +*note UINT16_T: 1b3.Object ‘UINT16_T’ of type *note Datatype: d0. + + +*note UINT32_T: 1b4.Object ‘UINT32_T’ of type *note Datatype: d0. + + +*note UINT64_T: 1b5.Object ‘UINT64_T’ of type *note Datatype: d0. + + +*note C_COMPLEX: 1b6.Object ‘C_COMPLEX’ of type *note Datatype: d0. + + +*note C_FLOAT_COMPLEX: 1b7.Object ‘C_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +*note C_DOUBLE_COMPLEX: 1b8.Object ‘C_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note C_LONG_DOUBLE_COMPLEX: 1b9.Object ‘C_LONG_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note CXX_BOOL: 1ba.Object ‘CXX_BOOL’ of type *note Datatype: d0. + + +*note CXX_FLOAT_COMPLEX: 1bb.Object ‘CXX_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +*note CXX_DOUBLE_COMPLEX: 1bc.Object ‘CXX_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note CXX_LONG_DOUBLE_COMPLEX: 1bd.Object ‘CXX_LONG_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note SHORT_INT: 1be.Object ‘SHORT_INT’ of type *note Datatype: d0. + + +*note INT_INT: 1bf.Object ‘INT_INT’ of type *note Datatype: d0. + + +*note TWOINT: 1c0.Object ‘TWOINT’ of type *note Datatype: d0. + + +*note LONG_INT: 1c1.Object ‘LONG_INT’ of type *note Datatype: d0. + + +*note FLOAT_INT: 1c2.Object ‘FLOAT_INT’ of type *note Datatype: d0. + + +*note DOUBLE_INT: 1c3.Object ‘DOUBLE_INT’ of type *note Datatype: d0. + + +*note LONG_DOUBLE_INT: 1c4.Object ‘LONG_DOUBLE_INT’ of type *note Datatype: d0. + + +*note CHARACTER: 1c5.Object ‘CHARACTER’ of type *note Datatype: d0. + + +*note LOGICAL: 1c6.Object ‘LOGICAL’ of type *note Datatype: d0. + + +*note INTEGER: 1c7.Object ‘INTEGER’ of type *note Datatype: d0. + + +*note REAL: 1c8.Object ‘REAL’ of type *note Datatype: d0. + + +*note DOUBLE_PRECISION: 1c9.Object ‘DOUBLE_PRECISION’ of type *note Datatype: d0. + + +*note COMPLEX: 1ca.Object ‘COMPLEX’ of type *note Datatype: d0. + + +*note DOUBLE_COMPLEX: 1cb.Object ‘DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note LOGICAL1: 1cc.Object ‘LOGICAL1’ of type *note Datatype: d0. + + +*note LOGICAL2: 1cd.Object ‘LOGICAL2’ of type *note Datatype: d0. + + +*note LOGICAL4: 1ce.Object ‘LOGICAL4’ of type *note Datatype: d0. + + +*note LOGICAL8: 1cf.Object ‘LOGICAL8’ of type *note Datatype: d0. + + +*note INTEGER1: 1d0.Object ‘INTEGER1’ of type *note Datatype: d0. + + +*note INTEGER2: 1d1.Object ‘INTEGER2’ of type *note Datatype: d0. + + +*note INTEGER4: 1d2.Object ‘INTEGER4’ of type *note Datatype: d0. + + +*note INTEGER8: 1d3.Object ‘INTEGER8’ of type *note Datatype: d0. + + +*note INTEGER16: 1d4.Object ‘INTEGER16’ of type *note Datatype: d0. + + +*note REAL2: 1d5.Object ‘REAL2’ of type *note Datatype: d0. + + +*note REAL4: 1d6.Object ‘REAL4’ of type *note Datatype: d0. + + +*note REAL8: 1d7.Object ‘REAL8’ of type *note Datatype: d0. + + +*note REAL16: 1d8.Object ‘REAL16’ of type *note Datatype: d0. + + +*note COMPLEX4: 1d9.Object ‘COMPLEX4’ of type *note Datatype: d0. + + +*note COMPLEX8: 1da.Object ‘COMPLEX8’ of type *note Datatype: d0. + + +*note COMPLEX16: 1db.Object ‘COMPLEX16’ of type *note Datatype: d0. + + +*note COMPLEX32: 1dc.Object ‘COMPLEX32’ of type *note Datatype: d0. + + +*note UNSIGNED_INT: 1dd.Object ‘UNSIGNED_INT’ of type *note Datatype: d0. + + +*note SIGNED_SHORT: 1de.Object ‘SIGNED_SHORT’ of type *note Datatype: d0. + + +*note SIGNED_INT: 1df.Object ‘SIGNED_INT’ of type *note Datatype: d0. + + +*note SIGNED_LONG: 1e0.Object ‘SIGNED_LONG’ of type *note Datatype: d0. + + +*note SIGNED_LONG_LONG: 1e1.Object ‘SIGNED_LONG_LONG’ of type *note Datatype: d0. + + +*note BOOL: 1e2.Object ‘BOOL’ of type *note Datatype: d0. + + +*note SINT8_T: 1e3.Object ‘SINT8_T’ of type *note Datatype: d0. + + +*note SINT16_T: 1e4.Object ‘SINT16_T’ of type *note Datatype: d0. + + +*note SINT32_T: 1e5.Object ‘SINT32_T’ of type *note Datatype: d0. + + +*note SINT64_T: 1e6.Object ‘SINT64_T’ of type *note Datatype: d0. + + +*note F_BOOL: 1e7.Object ‘F_BOOL’ of type *note Datatype: d0. + + +*note F_INT: 1e8.Object ‘F_INT’ of type *note Datatype: d0. + + +*note F_FLOAT: 1e9.Object ‘F_FLOAT’ of type *note Datatype: d0. + + +*note F_DOUBLE: 1ea.Object ‘F_DOUBLE’ of type *note Datatype: d0. + + +*note F_COMPLEX: 1eb.Object ‘F_COMPLEX’ of type *note Datatype: d0. + + +*note F_FLOAT_COMPLEX: 1ec.Object ‘F_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +*note F_DOUBLE_COMPLEX: 1ed.Object ‘F_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note REQUEST_NULL: 1ee.Object ‘REQUEST_NULL’ of type *note Request: 43. + + +*note MESSAGE_NULL: 1ef.Object ‘MESSAGE_NULL’ of type *note Message: d7. + + +*note MESSAGE_NO_PROC: 1f0.Object ‘MESSAGE_NO_PROC’ of type *note Message: d7. + + +*note OP_NULL: 1f1.Object ‘OP_NULL’ of type *note Op: d3. + + +*note MAX: 67. Object ‘MAX’ of type *note Op: d3. + + +*note MIN: 1f2.Object ‘MIN’ of type *note Op: d3. + + +*note SUM: 65. Object ‘SUM’ of type *note Op: d3. + + +*note PROD: 66.Object ‘PROD’ of type *note Op: d3. + + +*note LAND: 1f3.Object ‘LAND’ of type *note Op: d3. + + +*note BAND: 1f4.Object ‘BAND’ of type *note Op: d3. + + +*note LOR: 1f5.Object ‘LOR’ of type *note Op: d3. + + +*note BOR: 1f6.Object ‘BOR’ of type *note Op: d3. + + +*note LXOR: 1f7.Object ‘LXOR’ of type *note Op: d3. + + +*note BXOR: 1f8.Object ‘BXOR’ of type *note Op: d3. + + +*note MAXLOC: 1f9.Object ‘MAXLOC’ of type *note Op: d3. + + +*note MINLOC: 1fa.Object ‘MINLOC’ of type *note Op: d3. + + +*note REPLACE: 1fb.Object ‘REPLACE’ of type *note Op: d3. + + +*note NO_OP: 1fc.Object ‘NO_OP’ of type *note Op: d3. + + +*note GROUP_NULL: 1fd.Object ‘GROUP_NULL’ of type *note Group: 28. + + +*note GROUP_EMPTY: 1fe.Object ‘GROUP_EMPTY’ of type *note Group: 28. + + +*note INFO_NULL: 1ff.Object ‘INFO_NULL’ of type *note Info: d4. + + +*note INFO_ENV: 200.Object ‘INFO_ENV’ of type *note Info: d4. + + +*note ERRHANDLER_NULL: 201.Object ‘ERRHANDLER_NULL’ of type *note Errhandler: d8. + + +*note ERRORS_RETURN: 99.Object ‘ERRORS_RETURN’ of type *note Errhandler: d8. + + +*note ERRORS_ARE_FATAL: 9a.Object ‘ERRORS_ARE_FATAL’ of type *note Errhandler: d8. + + +*note COMM_NULL: 202.Object ‘COMM_NULL’ of type *note Comm: 1e. + + +*note COMM_SELF: 23.Object ‘COMM_SELF’ of type *note Intracomm: 1f. + + +*note COMM_WORLD: 24.Object ‘COMM_WORLD’ of type *note Intracomm: 1f. + + +*note WIN_NULL: 203.Object ‘WIN_NULL’ of type *note Win: 76. + + +*note FILE_NULL: 204.Object ‘FILE_NULL’ of type *note File: 84. + + +*note pickle: a8.Object ‘pickle’ of type *note Pickle: d9. + + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/functions.html#int + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/functions.html#int + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/functions.html#int + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/functions.html#int + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/functions.html#int + + (28) https://docs.python.org/3/library/functions.html#int + + (29) https://docs.python.org/3/library/functions.html#int + + (30) https://docs.python.org/3/library/functions.html#int + + (31) https://docs.python.org/3/library/functions.html#int + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/functions.html#int + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/functions.html#int + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/functions.html#int + + (38) https://docs.python.org/3/library/functions.html#int + + (39) https://docs.python.org/3/library/functions.html#int + + (40) https://docs.python.org/3/library/functions.html#int + + (41) https://docs.python.org/3/library/functions.html#int + + (42) https://docs.python.org/3/library/functions.html#int + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/functions.html#int + + (45) https://docs.python.org/3/library/functions.html#int + + (46) https://docs.python.org/3/library/functions.html#int + + (47) https://docs.python.org/3/library/functions.html#int + + (48) https://docs.python.org/3/library/functions.html#int + + (49) https://docs.python.org/3/library/functions.html#int + + (50) https://docs.python.org/3/library/functions.html#int + + (51) https://docs.python.org/3/library/functions.html#int + + (52) https://docs.python.org/3/library/functions.html#int + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/functions.html#int + + (55) https://docs.python.org/3/library/functions.html#int + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/functions.html#int + + (58) https://docs.python.org/3/library/functions.html#int + + (59) https://docs.python.org/3/library/functions.html#int + + (60) https://docs.python.org/3/library/functions.html#int + + (61) https://docs.python.org/3/library/functions.html#int + + (62) https://docs.python.org/3/library/functions.html#int + + (63) https://docs.python.org/3/library/functions.html#int + + (64) https://docs.python.org/3/library/functions.html#int + + (65) https://docs.python.org/3/library/functions.html#int + + (66) https://docs.python.org/3/library/functions.html#int + + (67) https://docs.python.org/3/library/functions.html#int + + (68) https://docs.python.org/3/library/functions.html#int + + (69) https://docs.python.org/3/library/functions.html#int + + (70) https://docs.python.org/3/library/functions.html#int + + (71) https://docs.python.org/3/library/functions.html#int + + (72) https://docs.python.org/3/library/functions.html#int + + (73) https://docs.python.org/3/library/functions.html#int + + (74) https://docs.python.org/3/library/functions.html#int + + (75) https://docs.python.org/3/library/functions.html#int + + (76) https://docs.python.org/3/library/functions.html#int + + (77) https://docs.python.org/3/library/functions.html#int + + (78) https://docs.python.org/3/library/functions.html#int + + (79) https://docs.python.org/3/library/functions.html#int + + (80) https://docs.python.org/3/library/functions.html#int + + (81) https://docs.python.org/3/library/functions.html#int + + (82) https://docs.python.org/3/library/functions.html#int + + (83) https://docs.python.org/3/library/functions.html#int + + (84) https://docs.python.org/3/library/functions.html#int + + (85) https://docs.python.org/3/library/functions.html#int + + (86) https://docs.python.org/3/library/functions.html#int + + (87) https://docs.python.org/3/library/functions.html#int + + (88) https://docs.python.org/3/library/functions.html#int + + (89) https://docs.python.org/3/library/functions.html#int + + (90) https://docs.python.org/3/library/functions.html#int + + (91) https://docs.python.org/3/library/functions.html#int + + (92) https://docs.python.org/3/library/functions.html#int + + (93) https://docs.python.org/3/library/functions.html#int + + (94) https://docs.python.org/3/library/functions.html#int + + (95) https://docs.python.org/3/library/functions.html#int + + (96) https://docs.python.org/3/library/functions.html#int + + (97) https://docs.python.org/3/library/functions.html#int + + (98) https://docs.python.org/3/library/functions.html#int + + (99) https://docs.python.org/3/library/functions.html#int + + (100) https://docs.python.org/3/library/functions.html#int + + (101) https://docs.python.org/3/library/functions.html#int + + (102) https://docs.python.org/3/library/functions.html#int + + (103) https://docs.python.org/3/library/functions.html#int + + (104) https://docs.python.org/3/library/functions.html#int + + (105) https://docs.python.org/3/library/functions.html#int + + (106) https://docs.python.org/3/library/functions.html#int + + (107) https://docs.python.org/3/library/functions.html#int + + (108) https://docs.python.org/3/library/functions.html#int + + (109) https://docs.python.org/3/library/functions.html#int + + (110) https://docs.python.org/3/library/functions.html#int + + (111) https://docs.python.org/3/library/functions.html#int + + (112) https://docs.python.org/3/library/functions.html#int + + (113) https://docs.python.org/3/library/functions.html#int + + (114) https://docs.python.org/3/library/functions.html#int + + (115) https://docs.python.org/3/library/functions.html#int + + (116) https://docs.python.org/3/library/functions.html#int + + (117) https://docs.python.org/3/library/functions.html#int + + (118) https://docs.python.org/3/library/functions.html#int + + (119) https://docs.python.org/3/library/functions.html#int + + (120) https://docs.python.org/3/library/functions.html#int + + (121) https://docs.python.org/3/library/functions.html#int + + (122) https://docs.python.org/3/library/functions.html#int + + (123) https://docs.python.org/3/library/functions.html#int + + (124) https://docs.python.org/3/library/functions.html#int + + (125) https://docs.python.org/3/library/functions.html#int + + (126) https://docs.python.org/3/library/functions.html#int + + (127) https://docs.python.org/3/library/functions.html#int + + (128) https://docs.python.org/3/library/functions.html#int + + (129) https://docs.python.org/3/library/functions.html#int + + (130) https://docs.python.org/3/library/functions.html#int + + (131) https://docs.python.org/3/library/functions.html#int + + (132) https://docs.python.org/3/library/functions.html#int + + (133) https://docs.python.org/3/library/functions.html#int + + (134) https://docs.python.org/3/library/functions.html#int + + (135) https://docs.python.org/3/library/functions.html#int + + (136) https://docs.python.org/3/library/functions.html#int + + (137) https://docs.python.org/3/library/functions.html#int + + (138) https://docs.python.org/3/library/functions.html#int + + (139) https://docs.python.org/3/library/functions.html#int + + (140) https://docs.python.org/3/library/functions.html#int + + (141) https://docs.python.org/3/library/functions.html#int + + (142) https://docs.python.org/3/library/functions.html#int + + (143) https://docs.python.org/3/library/functions.html#int + + (144) https://docs.python.org/3/library/functions.html#int + + (145) https://docs.python.org/3/library/functions.html#int + + (146) https://docs.python.org/3/library/functions.html#int + + (147) https://docs.python.org/3/library/functions.html#int + + (148) https://docs.python.org/3/library/functions.html#int + + (149) https://docs.python.org/3/library/functions.html#int + + (150) https://docs.python.org/3/library/functions.html#int + + (151) https://docs.python.org/3/library/functions.html#int + + (152) https://docs.python.org/3/library/functions.html#int + + (153) https://docs.python.org/3/library/functions.html#int + + (154) https://docs.python.org/3/library/functions.html#int + + (155) https://docs.python.org/3/library/functions.html#int + + (156) https://docs.python.org/3/library/functions.html#int + + (157) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py typing, Next: mpi4py futures, Prev: mpi4py MPI, Up: Top + +6 mpi4py.typing +*************** + +Added in version 4.0.0. + +This module provides type aliases(1) used to add type hints(2) to the +various functions and methods within the *note MPI: 3. module. + +See also +........ + +Module typing(3) + + Documentation of the typing(4) standard module. + +Types Summary +------------- + +*note SupportsBuffer: 207.Python buffer protocol. + + +*note SupportsDLPack: 208.DLPack data interchange protocol. + + +*note SupportsCAI: 209.CUDA Array Interface (CAI) protocol. + + +*note Buffer: 20a.Buffer-like object. + + +*note Bottom: 20b.Start of the address range. + + +*note InPlace: 20c.In-place buffer argument. + + +*note Aint: 20d.Address-sized integral type. + + +*note Count: 20e.Integral type for counts. + + +*note Displ: 20f.Integral type for displacements. + + +*note Offset: 210.Integral type for offsets. + + +*note TypeSpec: 211.Datatype specification. + + +*note BufSpec: 212.Buffer specification. + + +*note BufSpecB: 213.Buffer specification (block). + + +*note BufSpecV: 214.Buffer specification (vector). + + +*note BufSpecW: 215.Buffer specification (generalized). + + +*note TargetSpec: 216.Target specification. + + +Types Documentation +------------------- + + -- Data: mpi4py.typing.SupportsBuffer = + + Python buffer protocol. + + See also + ........ + + Buffer Protocol(5) + + -- Data: mpi4py.typing.SupportsDLPack = + + DLPack data interchange protocol. + + See also + ........ + + Python Specification for DLPack(6) + + -- Data: mpi4py.typing.SupportsCAI = + + CUDA Array Interface (CAI) protocol. + + See also + ........ + + CUDA Array Interface (Version 3)(7) + + -- Data: mpi4py.typing.Buffer + + Buffer-like object. + + alias of *note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209. + + -- Data: mpi4py.typing.Bottom + + Start of the address range. + + alias of *note BottomType: fb. | None(8) + + -- Data: mpi4py.typing.InPlace + + In-place buffer argument. + + alias of *note InPlaceType: fd. | None(9) + + -- Data: mpi4py.typing.Aint = + + Address-sized integral type. + + alias of numbers.Integral(10) + + -- Data: mpi4py.typing.Count = + + Integral type for counts. + + alias of numbers.Integral(11) + + -- Data: mpi4py.typing.Displ = + + Integral type for displacements. + + alias of numbers.Integral(12) + + -- Data: mpi4py.typing.Offset = + + Integral type for offsets. + + alias of numbers.Integral(13) + + -- Data: mpi4py.typing.TypeSpec + + Datatype specification. + + alias of *note Datatype: d0. | str(14) + + -- Data: mpi4py.typing.BufSpec + + Buffer specification. + + * *note Buffer: 20a. + + * Tuple[*note Buffer: 20a, *note Count: 20e.] + + * Tuple[*note Buffer: 20a, *note TypeSpec: 211.] + + * Tuple[*note Buffer: 20a, *note Count: 20e, *note TypeSpec: + 211.] + + * Tuple[*note Bottom: 20b, *note Count: 20e, *note Datatype: + d0.] + + alias of *note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209. | Tuple(15)[*note SupportsBuffer: 207. | + *note SupportsDLPack: 208. | *note SupportsCAI: 209, Integral(16)] + | Tuple(17)[*note SupportsBuffer: 207. | *note SupportsDLPack: 208. + | *note SupportsCAI: 209, *note Datatype: d0. | str(18)] | + Tuple(19)[*note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209, Integral(20), *note Datatype: d0. | + str(21)] | Tuple(22)[*note BottomType: fb. | None(23), + Integral(24), *note Datatype: d0.] | List(25)[Any(26)] + + -- Data: mpi4py.typing.BufSpecB + + Buffer specification (block). + + * *note Buffer: 20a. + + * Tuple[*note Buffer: 20a, *note Count: 20e.] + + * Tuple[*note Buffer: 20a, *note TypeSpec: 211.] + + * Tuple[*note Buffer: 20a, *note Count: 20e, *note TypeSpec: + 211.] + + alias of *note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209. | Tuple(27)[*note SupportsBuffer: 207. | + *note SupportsDLPack: 208. | *note SupportsCAI: 209, Integral(28)] + | Tuple(29)[*note SupportsBuffer: 207. | *note SupportsDLPack: 208. + | *note SupportsCAI: 209, *note Datatype: d0. | str(30)] | + Tuple(31)[*note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209, Integral(32), *note Datatype: d0. | + str(33)] | List(34)[Any(35)] + + -- Data: mpi4py.typing.BufSpecV + + Buffer specification (vector). + + * *note Buffer: 20a. + + * Tuple[*note Buffer: 20a, Sequence[*note Count: 20e.]] + + * Tuple[*note Buffer: 20a, Tuple[Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.]]] + + * Tuple[*note Buffer: 20a, *note TypeSpec: 211.] + + * Tuple[*note Buffer: 20a, Sequence[*note Count: 20e.], *note + TypeSpec: 211.] + + * Tuple[*note Buffer: 20a, Tuple[Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.]], *note TypeSpec: 211.] + + * Tuple[*note Buffer: 20a, Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.], *note TypeSpec: 211.] + + * Tuple[*note Bottom: 20b, Tuple[Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.]], *note Datatype: d0.] + + * Tuple[*note Bottom: 20b, Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.], *note Datatype: d0.] + + alias of *note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209. | Tuple(36)[*note SupportsBuffer: 207. | + *note SupportsDLPack: 208. | *note SupportsCAI: 209, + Sequence(37)[Integral(38)]] | Tuple(39)[*note SupportsBuffer: 207. + | *note SupportsDLPack: 208. | *note SupportsCAI: 209, + Tuple(40)[Sequence(41)[Integral(42)], Sequence(43)[Integral(44)]]] + | Tuple(45)[*note SupportsBuffer: 207. | *note SupportsDLPack: 208. + | *note SupportsCAI: 209, *note Datatype: d0. | str(46)] | + Tuple(47)[*note SupportsBuffer: 207. | *note SupportsDLPack: 208. | + *note SupportsCAI: 209, Sequence(48)[Integral(49)], *note Datatype: + d0. | str(50)] | Tuple(51)[*note SupportsBuffer: 207. | *note + SupportsDLPack: 208. | *note SupportsCAI: 209, + Tuple(52)[Sequence(53)[Integral(54)], Sequence(55)[Integral(56)]], + *note Datatype: d0. | str(57)] | Tuple(58)[*note SupportsBuffer: + 207. | *note SupportsDLPack: 208. | *note SupportsCAI: 209, + Sequence(59)[Integral(60)], Sequence(61)[Integral(62)], *note + Datatype: d0. | str(63)] | Tuple(64)[*note BottomType: fb. | + None(65), Tuple(66)[Sequence(67)[Integral(68)], + Sequence(69)[Integral(70)]], *note Datatype: d0.] | Tuple(71)[*note + BottomType: fb. | None(72), Sequence(73)[Integral(74)], + Sequence(75)[Integral(76)], *note Datatype: d0.] | + List(77)[Any(78)] + + -- Data: mpi4py.typing.BufSpecW + + Buffer specification (generalized). + + * Tuple[*note Buffer: 20a, Sequence[*note Datatype: d0.]] + + * Tuple[*note Buffer: 20a, Tuple[Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.]], Sequence[*note Datatype: d0.]] + + * Tuple[*note Buffer: 20a, Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.], Sequence[*note Datatype: d0.]] + + * Tuple[*note Bottom: 20b, Tuple[Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.]], Sequence[*note Datatype: d0.]] + + * Tuple[*note Bottom: 20b, Sequence[*note Count: 20e.], + Sequence[*note Displ: 20f.], Sequence[*note Datatype: d0.]] + + alias of Tuple(79)[*note SupportsBuffer: 207. | *note + SupportsDLPack: 208. | *note SupportsCAI: 209, Sequence(80)[*note + Datatype: d0.]] | Tuple(81)[*note SupportsBuffer: 207. | *note + SupportsDLPack: 208. | *note SupportsCAI: 209, + Tuple(82)[Sequence(83)[Integral(84)], Sequence(85)[Integral(86)]], + Sequence(87)[*note Datatype: d0.]] | Tuple(88)[*note + SupportsBuffer: 207. | *note SupportsDLPack: 208. | *note + SupportsCAI: 209, Sequence(89)[Integral(90)], + Sequence(91)[Integral(92)], Sequence(93)[*note Datatype: d0.]] | + Tuple(94)[*note BottomType: fb. | None(95), + Tuple(96)[Sequence(97)[Integral(98)], Sequence(99)[Integral(100)]], + Sequence(101)[*note Datatype: d0.]] | Tuple(102)[*note BottomType: + fb. | None(103), Sequence(104)[Integral(105)], + Sequence(106)[Integral(107)], Sequence(108)[*note Datatype: d0.]] | + List(109)[Any(110)] + + -- Data: mpi4py.typing.TargetSpec + + Target specification. + + * *note Displ: 20f. + + * Tuple[()] + + * Tuple[*note Displ: 20f.] + + * Tuple[*note Displ: 20f, *note Count: 20e.] + + * Tuple[*note Displ: 20f, *note Count: 20e, *note Datatype: d0.] + + alias of Integral(111) | Tuple(112) | Tuple(113)[Integral(114)] | + Tuple(115)[Integral(116), Integral(117)] | + Tuple(118)[Integral(119), Integral(120), *note Datatype: d0. | + str(121)] | List(122)[Any(123)] + + -- Data: mpi4py.typing.S = TypeVar("S") + + Invariant TypeVar(124). + + -- Data: mpi4py.typing.T = TypeVar("T") + + Invariant TypeVar(125). + + -- Data: mpi4py.typing.U = TypeVar("U") + + Invariant TypeVar(126). + + -- Data: mpi4py.typing.V = TypeVar("V") + + Invariant TypeVar(127). + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/glossary.html#term-type-alias + + (2) https://docs.python.org/3/glossary.html#term-type-hint + + (3) https://docs.python.org/3/library/typing.html#module-typing + + (4) https://docs.python.org/3/library/typing.html#module-typing + + (5) https://docs.python.org/3/c-api/buffer.html#bufferobjects + + (6) https://dmlc.github.io/dlpack/latest/python_spec.html#python-spec + + (7) +https://numba.readthedocs.io/en/stable/cuda/cuda_array_interface.html#cuda-array-interface + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (11) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (12) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (13) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (14) https://docs.python.org/3/library/stdtypes.html#str + + (15) https://docs.python.org/3/library/typing.html#typing.Tuple + + (16) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (17) https://docs.python.org/3/library/typing.html#typing.Tuple + + (18) https://docs.python.org/3/library/stdtypes.html#str + + (19) https://docs.python.org/3/library/typing.html#typing.Tuple + + (20) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (21) https://docs.python.org/3/library/stdtypes.html#str + + (22) https://docs.python.org/3/library/typing.html#typing.Tuple + + (23) https://docs.python.org/3/library/constants.html#None + + (24) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (25) https://docs.python.org/3/library/typing.html#typing.List + + (26) https://docs.python.org/3/library/typing.html#typing.Any + + (27) https://docs.python.org/3/library/typing.html#typing.Tuple + + (28) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (29) https://docs.python.org/3/library/typing.html#typing.Tuple + + (30) https://docs.python.org/3/library/stdtypes.html#str + + (31) https://docs.python.org/3/library/typing.html#typing.Tuple + + (32) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (33) https://docs.python.org/3/library/stdtypes.html#str + + (34) https://docs.python.org/3/library/typing.html#typing.List + + (35) https://docs.python.org/3/library/typing.html#typing.Any + + (36) https://docs.python.org/3/library/typing.html#typing.Tuple + + (37) https://docs.python.org/3/library/typing.html#typing.Sequence + + (38) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (39) https://docs.python.org/3/library/typing.html#typing.Tuple + + (40) https://docs.python.org/3/library/typing.html#typing.Tuple + + (41) https://docs.python.org/3/library/typing.html#typing.Sequence + + (42) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (43) https://docs.python.org/3/library/typing.html#typing.Sequence + + (44) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (45) https://docs.python.org/3/library/typing.html#typing.Tuple + + (46) https://docs.python.org/3/library/stdtypes.html#str + + (47) https://docs.python.org/3/library/typing.html#typing.Tuple + + (48) https://docs.python.org/3/library/typing.html#typing.Sequence + + (49) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (50) https://docs.python.org/3/library/stdtypes.html#str + + (51) https://docs.python.org/3/library/typing.html#typing.Tuple + + (52) https://docs.python.org/3/library/typing.html#typing.Tuple + + (53) https://docs.python.org/3/library/typing.html#typing.Sequence + + (54) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (55) https://docs.python.org/3/library/typing.html#typing.Sequence + + (56) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (57) https://docs.python.org/3/library/stdtypes.html#str + + (58) https://docs.python.org/3/library/typing.html#typing.Tuple + + (59) https://docs.python.org/3/library/typing.html#typing.Sequence + + (60) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (61) https://docs.python.org/3/library/typing.html#typing.Sequence + + (62) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (63) https://docs.python.org/3/library/stdtypes.html#str + + (64) https://docs.python.org/3/library/typing.html#typing.Tuple + + (65) https://docs.python.org/3/library/constants.html#None + + (66) https://docs.python.org/3/library/typing.html#typing.Tuple + + (67) https://docs.python.org/3/library/typing.html#typing.Sequence + + (68) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (69) https://docs.python.org/3/library/typing.html#typing.Sequence + + (70) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (71) https://docs.python.org/3/library/typing.html#typing.Tuple + + (72) https://docs.python.org/3/library/constants.html#None + + (73) https://docs.python.org/3/library/typing.html#typing.Sequence + + (74) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (75) https://docs.python.org/3/library/typing.html#typing.Sequence + + (76) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (77) https://docs.python.org/3/library/typing.html#typing.List + + (78) https://docs.python.org/3/library/typing.html#typing.Any + + (79) https://docs.python.org/3/library/typing.html#typing.Tuple + + (80) https://docs.python.org/3/library/typing.html#typing.Sequence + + (81) https://docs.python.org/3/library/typing.html#typing.Tuple + + (82) https://docs.python.org/3/library/typing.html#typing.Tuple + + (83) https://docs.python.org/3/library/typing.html#typing.Sequence + + (84) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (85) https://docs.python.org/3/library/typing.html#typing.Sequence + + (86) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (87) https://docs.python.org/3/library/typing.html#typing.Sequence + + (88) https://docs.python.org/3/library/typing.html#typing.Tuple + + (89) https://docs.python.org/3/library/typing.html#typing.Sequence + + (90) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (91) https://docs.python.org/3/library/typing.html#typing.Sequence + + (92) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (93) https://docs.python.org/3/library/typing.html#typing.Sequence + + (94) https://docs.python.org/3/library/typing.html#typing.Tuple + + (95) https://docs.python.org/3/library/constants.html#None + + (96) https://docs.python.org/3/library/typing.html#typing.Tuple + + (97) https://docs.python.org/3/library/typing.html#typing.Sequence + + (98) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (99) https://docs.python.org/3/library/typing.html#typing.Sequence + + (100) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (101) https://docs.python.org/3/library/typing.html#typing.Sequence + + (102) https://docs.python.org/3/library/typing.html#typing.Tuple + + (103) https://docs.python.org/3/library/constants.html#None + + (104) https://docs.python.org/3/library/typing.html#typing.Sequence + + (105) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (106) https://docs.python.org/3/library/typing.html#typing.Sequence + + (107) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (108) https://docs.python.org/3/library/typing.html#typing.Sequence + + (109) https://docs.python.org/3/library/typing.html#typing.List + + (110) https://docs.python.org/3/library/typing.html#typing.Any + + (111) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (112) https://docs.python.org/3/library/typing.html#typing.Tuple + + (113) https://docs.python.org/3/library/typing.html#typing.Tuple + + (114) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (115) https://docs.python.org/3/library/typing.html#typing.Tuple + + (116) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (117) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (118) https://docs.python.org/3/library/typing.html#typing.Tuple + + (119) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (120) https://docs.python.org/3/library/numbers.html#numbers.Integral + + (121) https://docs.python.org/3/library/stdtypes.html#str + + (122) https://docs.python.org/3/library/typing.html#typing.List + + (123) https://docs.python.org/3/library/typing.html#typing.Any + + (124) https://docs.python.org/3/library/typing.html#typing.TypeVar + + (125) https://docs.python.org/3/library/typing.html#typing.TypeVar + + (126) https://docs.python.org/3/library/typing.html#typing.TypeVar + + (127) https://docs.python.org/3/library/typing.html#typing.TypeVar + + +File: mpi4py.info, Node: mpi4py futures, Next: mpi4py util, Prev: mpi4py typing, Up: Top + +7 mpi4py.futures +**************** + +Added in version 3.0.0. + +This package provides a high-level interface for asynchronously +executing callables on a pool of worker processes using MPI for +inter-process communication. + +The *note mpi4py.futures: 2. package is based on concurrent.futures(1) +from the Python standard library. More precisely, *note mpi4py.futures: +2. provides the *note MPIPoolExecutor: 21d. class as a concrete +implementation of the abstract class Executor(2). The submit()(3) +interface schedules a callable to be executed asynchronously and returns +a Future(4) object representing the execution of the callable. +Future(5) instances can be queried for the call result or exception. +Sets of Future(6) instances can be passed to the wait()(7) and +as_completed()(8) functions. + +See also +........ + +Module concurrent.futures(9) + + Documentation of the concurrent.futures(10) standard module. + +* Menu: + +* MPIPoolExecutor:: +* MPICommExecutor:: +* Command line:: +* Parallel tasks:: +* Utilities:: +* Examples:: +* Citation:: + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures + + (2) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor + + (3) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor.submit + + (4) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + (5) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + (6) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + (7) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.wait + + (8) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completed + + (9) +https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures + + (10) +https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures + + +File: mpi4py.info, Node: MPIPoolExecutor, Next: MPICommExecutor, Up: mpi4py futures + +7.1 MPIPoolExecutor +=================== + +The *note MPIPoolExecutor: 21d. class uses a pool of MPI processes to +execute calls asynchronously. By performing computations in separate +processes, it allows to side-step the global interpreter lock(1) but +also means that only picklable objects can be executed and returned. +The __main__(2) module must be importable by worker processes, thus +*note MPIPoolExecutor: 21d. instances may not work in the interactive +interpreter. + +*note MPIPoolExecutor: 21d. takes advantage of the dynamic process +management features introduced in the MPI-2 standard. In particular, +the *note MPI.Intracomm.Spawn: 6b. method of *note MPI.COMM_SELF: 23. is +used in the master (or parent) process to spawn new worker (or child) +processes running a Python interpreter. The master process uses a +separate thread (one for each *note MPIPoolExecutor: 21d. instance) to +communicate back and forth with the workers. The worker processes serve +the execution of tasks in the main (and only) thread until they are +signaled for completion. + + Note: The worker processes must import the main script in order to + ‘unpickle’ any callable defined in the __main__(3) module and + submitted from the master process. Furthermore, the callables may + need access to other global variables. At the worker processes, + *note mpi4py.futures: 2. executes the main script code (using the + runpy(4) module) under the ‘__worker__’ namespace to define the + __main__(5) module. The __main__(6) and ‘__worker__’ modules are + added to sys.modules(7) (both at the master and worker processes) + to ensure proper ‘pickling’ and ‘unpickling’. + + Warning: During the initial import phase at the workers, the main + script cannot create and use new *note MPIPoolExecutor: 21d. + instances. Otherwise, each worker would attempt to spawn a new + pool of workers, leading to infinite recursion. *note + mpi4py.futures: 2. detects such recursive attempts to spawn new + workers and aborts the MPI execution environment. As the main + script code is run under the ‘__worker__’ namespace, the easiest + way to avoid spawn recursion is using the idiom ‘if __name__ == + '__main__': ...’ in the main script. + + -- Class: mpi4py.futures.MPIPoolExecutor (max_workers=None, + initializer=None, initargs=(), **kwargs) + + An Executor(8) subclass that executes calls asynchronously using a + pool of at most ‘max_workers’ processes. If ‘max_workers’ is + None(9) or not given, its value is determined from the *note + MPI4PY_FUTURES_MAX_WORKERS: 21f. environment variable if set, or + the MPI universe size if set, otherwise a single worker process is + spawned. If ‘max_workers’ is lower than or equal to ‘0’, then a + ValueError(10) will be raised. + + ‘initializer’ is an optional callable that is called at the start + of each worker process before executing any tasks; ‘initargs’ is a + tuple of arguments passed to the initializer. If ‘initializer’ + raises an exception, all pending tasks and any attempt to submit + new tasks to the pool will raise a BrokenExecutor(11) exception. + + Other parameters: + + * ‘python_exe’: Path to the Python interpreter executable used + to spawn worker processes, otherwise sys.executable(12) is + used. + + * ‘python_args’: list(13) or iterable with additional command + line flags to pass to the Python executable. Command line + flags determined from inspection of sys.flags(14), + sys.warnoptions(15) and sys._xoptions(16) in are passed + unconditionally. + + * ‘mpi_info’: dict(17) or iterable yielding ‘(key, value)’ + pairs. These ‘(key, value)’ pairs are passed (through an + *note MPI.Info: d4. object) to the *note MPI.Intracomm.Spawn: + 6b. call used to spawn worker processes. This mechanism + allows telling the MPI runtime system where and how to start + the processes. Check the documentation of the backend MPI + implementation about the set of keys it interprets and the + corresponding format for values. + + * ‘globals’: dict(18) or iterable yielding ‘(name, value)’ pairs + to initialize the main module namespace in worker processes. + + * ‘main’: If set to False(19), do not import the __main__(20) + module in worker processes. Setting ‘main’ to False(21) + prevents worker processes from accessing definitions in the + parent __main__(22) namespace. + + * ‘path’: list(23) or iterable with paths to append to + sys.path(24) in worker processes to extend the module search + path(25). + + * ‘wdir’: Path to set the current working directory in worker + processes using os.chdir()(26). The initial working directory + is set by the MPI implementation. Quality MPI implementations + should honor a ‘wdir’ info key passed through ‘mpi_info’, + although such feature is not mandatory. + + * ‘env’: dict(27) or iterable yielding ‘(name, value)’ pairs + with environment variables to update os.environ(28) in worker + processes. The initial environment is set by the MPI + implementation. MPI implementations may allow setting the + initial environment through ‘mpi_info’, however such feature + is not required nor recommended by the MPI standard. + + * ‘use_pkl5’: If set to True(29), use ‘pickle5’ with out-of-band + buffers for interprocess communication. If ‘use_pkl5’ is set + to None(30) or not given, its value is determined from the + *note MPI4PY_FUTURES_USE_PKL5: 220. environment variable. + Using ‘pickle5’ with out-of-band buffers may benefit + applications dealing with large buffer-like objects like NumPy + arrays. See *note mpi4py.util.pkl5: 8. for additional + information. + + * ‘backoff’: float(31) value specifying the maximum number of + seconds a worker thread or process suspends execution with + time.sleep()(32) while idle-waiting. If not set, its value is + determined from the *note MPI4PY_FUTURES_BACKOFF: 221. + environment variable if set, otherwise the default value of + 0.001 seconds is used. Lower values will reduce latency and + increase execution throughput for very short-lived tasks, + albeit at the expense of spinning CPU cores and increased + energy consumption. + + -- Method: submit (func, *args, **kwargs) + + Schedule the callable, ‘func’, to be executed as ‘func(*args, + **kwargs)’ and returns a Future(33) object representing the + execution of the callable. + + executor = MPIPoolExecutor(max_workers=1) + future = executor.submit(pow, 321, 1234) + print(future.result()) + + -- Method: map (func, *iterables, timeout=None, chunksize=1, + **kwargs) + + Equivalent to map(func, *iterables)(34) except ‘func’ is + executed asynchronously and several calls to ‘func’ may be + made concurrently, out-of-order, in separate processes. The + returned iterator raises a TimeoutError(35) if __next__()(36) + is called and the result isn’t available after ‘timeout’ + seconds from the original call to *note map(): 223. ‘timeout’ + can be an int or a float. If ‘timeout’ is not specified or + None(37), there is no limit to the wait time. If a call + raises an exception, then that exception will be raised when + its value is retrieved from the iterator. This method chops + ‘iterables’ into a number of chunks which it submits to the + pool as separate tasks. The (approximate) size of these + chunks can be specified by setting ‘chunksize’ to a positive + integer. For very long iterables, using a large value for + ‘chunksize’ can significantly improve performance compared to + the default size of one. By default, the returned iterator + yields results in-order, waiting for successive tasks to + complete . This behavior can be changed by passing the + keyword argument ‘unordered’ as True(38), then the result + iterator will yield a result as soon as any of the tasks + complete. + + executor = MPIPoolExecutor(max_workers=3) + for result in executor.map(pow, [2]*32, range(32)): + print(result) + + -- Method: starmap (func, iterable, timeout=None, chunksize=1, + **kwargs) + + Equivalent to itertools.starmap(func, iterable)(39). Used + instead of *note map(): 223. when argument parameters are + already grouped in tuples from a single iterable (the data has + been “pre-zipped”). *note map(func, *iterable): 223. is + equivalent to *note starmap(func, zip(*iterable)): 224. + + executor = MPIPoolExecutor(max_workers=3) + iterable = ((2, n) for n in range(32)) + for result in executor.starmap(pow, iterable): + print(result) + + -- Method: shutdown (wait=True, cancel_futures=False) + + Signal the executor that it should free any resources that it + is using when the currently pending futures are done + executing. Calls to *note submit(): 222. and *note map(): + 223. made after *note shutdown(): 225. will raise + RuntimeError(40). + + If ‘wait’ is True(41) then this method will not return until + all the pending futures are done executing and the resources + associated with the executor have been freed. If ‘wait’ is + False(42) then this method will return immediately and the + resources associated with the executor will be freed when all + pending futures are done executing. Regardless of the value + of ‘wait’, the entire Python program will not exit until all + pending futures are done executing. + + If ‘cancel_futures’ is True(43), this method will cancel all + pending futures that the executor has not started running. + Any futures that are completed or running won’t be cancelled, + regardless of the value of ‘cancel_futures’. + + You can avoid having to call this method explicitly if you use + the with(44) statement, which will shutdown the executor + instance (waiting as if *note shutdown(): 225. were called + with ‘wait’ set to True(45)). + + import time + with MPIPoolExecutor(max_workers=1) as executor: + future = executor.submit(time.sleep, 2) + assert future.done() + + -- Method: bootup (wait=True) + + Signal the executor that it should allocate eagerly any + required resources (in particular, MPI worker processes). If + ‘wait’ is True(46), then *note bootup(): 226. will not return + until the executor resources are ready to process submissions. + Resources are automatically allocated in the first call to + *note submit(): 222, thus calling *note bootup(): 226. + explicitly is seldom needed. + + -- Attribute: num_workers + + Number or worker processes in the pool. + + -- Environment Variable: MPI4PY_FUTURES_MAX_WORKERS + + If the ‘max_workers’ parameter to *note MPIPoolExecutor: 21d. is + None(47) or not given, the *note MPI4PY_FUTURES_MAX_WORKERS: 21f. + environment variable provides a fallback value for the maximum + number of MPI worker processes to spawn. + + Added in version 3.1.0. + + -- Environment Variable: MPI4PY_FUTURES_USE_PKL5 + + If the ‘use_pkl5’ keyword argument to *note MPIPoolExecutor: 21d. + is None(48) or not given, the *note MPI4PY_FUTURES_USE_PKL5: 220. + environment variable provides a fallback value for whether the + executor should use ‘pickle5’ with out-of-band buffers for + interprocess communication. Accepted values are ‘0’ and ‘1’ + (interpreted as False(49) and True(50), respectively), and strings + specifying a YAML boolean(51) value (case-insensitive). Using + ‘pickle5’ with out-of-band buffers may benefit applications dealing + with large buffer-like objects like NumPy arrays. See *note + mpi4py.util.pkl5: 8. for additional information. + + Added in version 4.0.0. + + -- Environment Variable: MPI4PY_FUTURES_BACKOFF + + If the ‘backoff’ keyword argument to *note MPIPoolExecutor: 21d. is + not given, the *note MPI4PY_FUTURES_BACKOFF: 221. environment + variable can be set to a float(52) value specifying the maximum + number of seconds a worker thread or process suspends execution + with time.sleep()(53) while idle-waiting. If not set, the default + backoff value is 0.001 seconds. Lower values will reduce latency + and increase execution throughput for very short-lived tasks, + albeit at the expense of spinning CPU cores and increased energy + consumption. + + Added in version 4.0.0. + + Note: As the master process uses a separate thread to perform MPI + communication with the workers, the backend MPI implementation + should provide support for *note MPI.THREAD_MULTIPLE: 18d. + However, some popular MPI implementations do not support yet + concurrent MPI calls from multiple threads. Additionally, users + may decide to initialize MPI with a lower level of thread support. + If the level of thread support in the backend MPI is less than + *note MPI.THREAD_MULTIPLE: 18d, *note mpi4py.futures: 2. will use a + global lock to serialize MPI calls. If the level of thread support + is less than *note MPI.THREAD_SERIALIZED: 18c, *note + mpi4py.futures: 2. will emit a RuntimeWarning(54). + + Warning: If the level of thread support in the backend MPI is less + than *note MPI.THREAD_SERIALIZED: 18c. (i.e, it is either *note + MPI.THREAD_SINGLE: 18a. or *note MPI.THREAD_FUNNELED: 18b.), in + theory *note mpi4py.futures: 2. cannot be used. Rather than + raising an exception, *note mpi4py.futures: 2. emits a warning and + takes a “cross-fingers” attitude to continue execution in the hope + that serializing MPI calls with a global lock will actually work. + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/glossary.html#term-global-interpreter-lock + + (2) https://docs.python.org/3/library/__main__.html#module-__main__ + + (3) https://docs.python.org/3/library/__main__.html#module-__main__ + + (4) https://docs.python.org/3/library/runpy.html#module-runpy + + (5) https://docs.python.org/3/library/__main__.html#module-__main__ + + (6) https://docs.python.org/3/library/__main__.html#module-__main__ + + (7) https://docs.python.org/3/library/sys.html#sys.modules + + (8) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Executor + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/exceptions.html#ValueError + + (11) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.BrokenExecutor + + (12) https://docs.python.org/3/library/sys.html#sys.executable + + (13) https://docs.python.org/3/library/stdtypes.html#list + + (14) https://docs.python.org/3/library/sys.html#sys.flags + + (15) https://docs.python.org/3/library/sys.html#sys.warnoptions + + (16) https://docs.python.org/3/library/sys.html#sys._xoptions + + (17) https://docs.python.org/3/library/stdtypes.html#dict + + (18) https://docs.python.org/3/library/stdtypes.html#dict + + (19) https://docs.python.org/3/library/constants.html#False + + (20) https://docs.python.org/3/library/__main__.html#module-__main__ + + (21) https://docs.python.org/3/library/constants.html#False + + (22) https://docs.python.org/3/library/__main__.html#module-__main__ + + (23) https://docs.python.org/3/library/stdtypes.html#list + + (24) https://docs.python.org/3/library/sys.html#sys.path + + (25) https://docs.python.org/3/tutorial/modules.html#tut-searchpath + + (26) https://docs.python.org/3/library/os.html#os.chdir + + (27) https://docs.python.org/3/library/stdtypes.html#dict + + (28) https://docs.python.org/3/library/os.html#os.environ + + (29) https://docs.python.org/3/library/constants.html#True + + (30) https://docs.python.org/3/library/constants.html#None + + (31) https://docs.python.org/3/library/functions.html#float + + (32) https://docs.python.org/3/library/time.html#time.sleep + + (33) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + (34) https://docs.python.org/3/library/functions.html#map + + (35) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.TimeoutError + + (36) +https://docs.python.org/3/library/stdtypes.html#iterator.__next__ + + (37) https://docs.python.org/3/library/constants.html#None + + (38) https://docs.python.org/3/library/constants.html#True + + (39) +https://docs.python.org/3/library/itertools.html#itertools.starmap + + (40) https://docs.python.org/3/library/exceptions.html#RuntimeError + + (41) https://docs.python.org/3/library/constants.html#True + + (42) https://docs.python.org/3/library/constants.html#False + + (43) https://docs.python.org/3/library/constants.html#True + + (44) https://docs.python.org/3/reference/compound_stmts.html#with + + (45) https://docs.python.org/3/library/constants.html#True + + (46) https://docs.python.org/3/library/constants.html#True + + (47) https://docs.python.org/3/library/constants.html#None + + (48) https://docs.python.org/3/library/constants.html#None + + (49) https://docs.python.org/3/library/constants.html#False + + (50) https://docs.python.org/3/library/constants.html#True + + (51) https://yaml.org/type/bool.html + + (52) https://docs.python.org/3/library/functions.html#float + + (53) https://docs.python.org/3/library/time.html#time.sleep + + (54) https://docs.python.org/3/library/exceptions.html#RuntimeWarning + + +File: mpi4py.info, Node: MPICommExecutor, Next: Command line, Prev: MPIPoolExecutor, Up: mpi4py futures + +7.2 MPICommExecutor +=================== + +Legacy MPI-1 implementations (as well as some vendor MPI-2 +implementations) do not support the dynamic process management features +introduced in the MPI-2 standard. Additionally, job schedulers and +batch systems in supercomputing facilities may pose additional +complications to applications using the ‘MPI_Comm_spawn()’ routine. + +With these issues in mind, *note mpi4py.futures: 2. supports an +additional, more traditional, SPMD-like usage pattern requiring MPI-1 +calls only. Python applications are started the usual way, e.g., using +the ‘mpiexec’ command. Python code should make a collective call to the +*note MPICommExecutor: 229. context manager to partition the set of MPI +processes within a MPI communicator in one master processes and many +workers processes. The master process gets access to an *note +MPIPoolExecutor: 21d. instance to submit tasks. Meanwhile, the worker +process follow a different execution path and team-up to execute the +tasks submitted from the master. + +Besides alleviating the lack of dynamic process management features in +legacy MPI-1 or partial MPI-2 implementations, the *note +MPICommExecutor: 229. context manager may be useful in classic MPI-based +Python applications willing to take advantage of the simple, task-based, +master/worker approach available in the *note mpi4py.futures: 2. +package. + + -- Class: mpi4py.futures.MPICommExecutor (comm=None, root=0) + + Context manager for *note MPIPoolExecutor: 21d. This context + manager splits a MPI (intra)communicator ‘comm’ (defaults to *note + MPI.COMM_WORLD: 24. if not provided or None(1)) in two disjoint + sets: a single master process (with rank ‘root’ in ‘comm’) and the + remaining worker processes. These sets are then connected through + an intercommunicator. The target of the with(2) statement is + assigned either an *note MPIPoolExecutor: 21d. instance (at the + master) or None(3) (at the workers). + + from mpi4py import MPI + from mpi4py.futures import MPICommExecutor + + with MPICommExecutor(MPI.COMM_WORLD, root=0) as executor: + if executor is not None: + future = executor.submit(abs, -42) + assert future.result() == 42 + answer = set(executor.map(abs, [-42, 42])) + assert answer == {42} + + Warning: If *note MPICommExecutor: 229. is passed a communicator of + size one (e.g., *note MPI.COMM_SELF: 23.), then the executor + instance assigned to the target of the with(4) statement will + execute all submitted tasks in a single worker thread, thus + ensuring that task execution still progress asynchronously. + However, the GIL(5) will prevent the main and worker threads from + running concurrently in multicore processors. Moreover, the thread + context switching may harm noticeably the performance of CPU-bound + tasks. In case of I/O-bound tasks, the GIL(6) is not usually an + issue, however, as a single worker thread is used, it progress one + task at a time. We advice against using *note MPICommExecutor: + 229. with communicators of size one and suggest refactoring your + code to use instead a ThreadPoolExecutor(7). + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/reference/compound_stmts.html#with + + (3) https://docs.python.org/3/library/constants.html#None + + (4) https://docs.python.org/3/reference/compound_stmts.html#with + + (5) https://docs.python.org/3/glossary.html#term-GIL + + (6) https://docs.python.org/3/glossary.html#term-GIL + + (7) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor + + +File: mpi4py.info, Node: Command line, Next: Parallel tasks, Prev: MPICommExecutor, Up: mpi4py futures + +7.3 Command line +================ + +Recalling the issues related to the lack of support for dynamic process +management features in MPI implementations, *note mpi4py.futures: 2. +supports an alternative usage pattern where Python code (either from +scripts, modules, or zip files) is run under command line control of the +*note mpi4py.futures: 2. package by passing ‘-m mpi4py.futures’ to the +‘python’ executable. The ‘mpi4py.futures’ invocation should be passed a +‘pyfile’ path to a script (or a zipfile/directory containing a +‘__main__.py’ file). Additionally, ‘mpi4py.futures’ accepts ‘-m MOD’ to +execute a module named ‘mod’, ‘-c CMD’ to execute a command string +‘cmd’, or even ‘-’ to read commands from standard input (sys.stdin(1)). +Summarizing, ‘mpi4py.futures’ can be invoked in the following ways: + + * ‘$ mpiexec -n NUMPROCS python -m mpi4py.futures PYFILE [arg] ...’ + + * ‘$ mpiexec -n NUMPROCS python -m mpi4py.futures -m MOD [arg] ...’ + + * ‘$ mpiexec -n NUMPROCS python -m mpi4py.futures -c CMD [arg] ...’ + + * ‘$ mpiexec -n NUMPROCS python -m mpi4py.futures - [arg] ...’ + +Before starting the main script execution, *note mpi4py.futures: 2. +splits *note MPI.COMM_WORLD: 24. in one master (the process with rank 0 +in *note MPI.COMM_WORLD: 24.) and ‘numprocs - 1’ workers and connects +them through an MPI intercommunicator. Afterwards, the master process +proceeds with the execution of the user script code, which eventually +creates *note MPIPoolExecutor: 21d. instances to submit tasks. +Meanwhile, the worker processes follow a different execution path to +serve the master. Upon successful termination of the main script at the +master, the entire MPI execution environment exists gracefully. In case +of any unhandled exception in the main script, the master process calls +‘MPI.COMM_WORLD.Abort(1)’ to prevent deadlocks and force termination of +entire MPI execution environment. + + Warning: Running scripts under command line control of *note + mpi4py.futures: 2. is quite similar to executing a single-process + application that spawn additional workers as required. However, + there is a very important difference users should be aware of. All + *note MPIPoolExecutor: 21d. instances created at the master will + share the pool of workers. Tasks submitted at the master from many + different executors will be scheduled for execution in random order + as soon as a worker is idle. Any executor can easily starve all + the workers (e.g., by calling *note MPIPoolExecutor.map(): 223. + with long iterables). If that ever happens, submissions from other + executors will not be serviced until free workers are available. + +See also +........ + +Command line(2) + + Documentation on Python command line interface. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/sys.html#sys.stdin + + (2) https://docs.python.org/3/using/cmdline.html#using-on-cmdline + + +File: mpi4py.info, Node: Parallel tasks, Next: Utilities, Prev: Command line, Up: mpi4py futures + +7.4 Parallel tasks +================== + +The *note mpi4py.futures: 2. package favors an embarrassingly parallel +execution model involving a series of sequential tasks independent of +each other and executed asynchronously. Albeit unnatural, *note +MPIPoolExecutor: 21d. can still be used for handling workloads involving +parallel tasks, where worker processes communicate and coordinate each +other via MPI. + + -- Function: mpi4py.futures.get_comm_workers () + + Access an intracommunicator grouping MPI worker processes. + +Executing parallel tasks with *note mpi4py.futures: 2. requires +following some rules, cf. highlighted lines in example *note cpi.py: +22d. : + + * Use *note MPIPoolExecutor.num_workers: 227. to determine the number + of worker processes in the executor and ‘submit exactly one + callable per worker process’ using the *note + MPIPoolExecutor.submit(): 222. method. + + * The submitted callable must use *note get_comm_workers(): 22c. to + access an intracommunicator grouping MPI worker processes. + Afterwards, it is highly recommended calling the *note Barrier(): + 22e. method on the communicator. The barrier synchronization + ensures that every worker process is executing the submitted + callable exactly once. Afterwards, the parallel task can safely + perform any kind of point-to-point or collective operation using + the returned communicator. + + * The Future(1) instances returned by *note MPIPoolExecutor.submit(): + 222. should be collected in a sequence. Use wait()(2) with the + sequence of Future(3) instances to ensure logical completion of the + parallel task. + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + (2) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.wait + + (3) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + +File: mpi4py.info, Node: Utilities, Next: Examples, Prev: Parallel tasks, Up: mpi4py futures + +7.5 Utilities +============= + +The *note mpi4py.futures: 2. package provides additional utilities for +handling Future(1) instances. + + -- Function: mpi4py.futures.collect (fs) + + Gather a collection of futures in a new future. + + + Parameters: ‘fs’ – Collection of futures. + + + Returns: New future producing as result a list with results from + ‘fs’. + + -- Function: mpi4py.futures.compose (future, resulthook=None, + excepthook=None) + + Compose the completion of a future with result and exception + handlers. + + + Parameters: + + * ‘future’ – Input future instance. + + * ‘resulthook’ – Function to be called once the input future + completes with success. Once the input future finish running + with success, its result value is the input argument for + ‘resulthook’. The result of ‘resulthook’ is set as the result + of the output future. If ‘resulthook’ is ‘None’, the output + future is completed directly with the result of the input + future. + + * ‘excepthook’ – Function to be called once the input future + completes with failure. Once the input future finish running + with failure, its exception value is the input argument for + ‘excepthook’. If ‘excepthook’ returns an Exception(2) + instance, it is set as the exception of the output future. + Otherwise, the result of ‘excepthook’ is set as the result of + the output future. If ‘excepthook’ is ‘None’, the output + future is set as failed with the exception from the input + future. + + + Returns: Output future instance to be completed once the input + future is completed and either ‘resulthook’ or ‘excepthook’ finish + executing. + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future + + (2) https://docs.python.org/3/library/exceptions.html#Exception + + +File: mpi4py.info, Node: Examples, Next: Citation, Prev: Utilities, Up: mpi4py futures + +7.6 Examples +============ + +* Menu: + +* Computing the Julia set:: +* Computing Pi (parallel task): Computing Pi parallel task. + + +File: mpi4py.info, Node: Computing the Julia set, Next: Computing Pi parallel task, Up: Examples + +7.6.1 Computing the Julia set +----------------------------- + +The following *note julia.py: 234. script computes the Julia set(1) and +dumps an image to disk in binary PGM(2) format. The code starts by +importing *note MPIPoolExecutor: 21d. from the *note mpi4py.futures: 2. +package. Next, some global constants and functions implement the +computation of the Julia set. The computations are protected with the +standard ‘if __name__ == '__main__': ...’ idiom. The image is computed +by whole scanlines submitting all these tasks at once using the *note +map: 223. method. The result iterator yields scanlines in-order as the +tasks complete. Finally, each scanline is dumped to disk. + + + from mpi4py.futures import MPIPoolExecutor + + x0, x1, w = -2.0, +2.0, 640*2 + y0, y1, h = -1.5, +1.5, 480*2 + dx = (x1 - x0) / w + dy = (y1 - y0) / h + + c = complex(0, 0.65) + + def julia(x, y): + z = complex(x, y) + n = 255 + while abs(z) < 3 and n > 1: + z = z**2 + c + n -= 1 + return n + + def julia_line(k): + line = bytearray(w) + y = y1 - k * dy + for j in range(w): + x = x0 + j * dx + line[j] = julia(x, y) + return line + + if __name__ == '__main__': + + with MPIPoolExecutor() as executor: + image = executor.map(julia_line, range(h)) + with open('julia.pgm', 'wb') as f: + f.write(b'P5 %d %d %d\n' % (w, h, 255)) + for line in image: + f.write(line) + +LiteralBlock: ‘julia.py’ + +The recommended way to execute the script is by using the ‘mpiexec’ +command specifying one MPI process (master) and (optional but +recommended) the desired MPI universe size, which determines the number +of additional dynamically spawned processes (workers). The MPI universe +size is provided either by a batch system or set by the user via +command-line arguments to ‘mpiexec’ or environment variables. Below we +provide examples for MPICH and Open MPI implementations (3). In all of +these examples, the ‘mpiexec’ command launches a single master process +running the Python interpreter and executing the main script. When +required, *note mpi4py.futures: 2. spawns the pool of 16 worker +processes. The master submits tasks to the workers and waits for the +results. The workers receive incoming tasks, execute them, and send +back the results to the master. + +When using MPICH implementation or its derivatives based on the Hydra +process manager, users can set the MPI universe size via the ‘-usize’ +argument to ‘mpiexec’: + + $ mpiexec -n 1 -usize 17 python julia.py + +or, alternatively, by setting the ‘MPIEXEC_UNIVERSE_SIZE’ environment +variable: + + $ env MPIEXEC_UNIVERSE_SIZE=17 mpiexec -n 1 python julia.py + +In the Open MPI implementation, the MPI universe size can be set via the +‘-host’ argument to ‘mpiexec’: + + $ mpiexec -n 1 -host localhost:17 python julia.py + +Another way to specify the number of workers is to use the *note +mpi4py.futures: 2.-specific environment variable *note +MPI4PY_FUTURES_MAX_WORKERS: 21f.: + + $ env MPI4PY_FUTURES_MAX_WORKERS=16 mpiexec -n 1 python julia.py + +Note that in this case, the MPI universe size is ignored. + +Alternatively, users may decide to execute the script in a more +traditional way, that is, all the MPI processes are started at once. +The user script is run under command-line control of *note +mpi4py.futures: 2. passing the -m(4) flag to the ‘python’ executable: + + $ mpiexec -n 17 python -m mpi4py.futures julia.py + +As explained previously, the 17 processes are partitioned in one master +and 16 workers. The master process executes the main script while the +workers execute the tasks submitted by the master. + + ---------- Footnotes ---------- + + (1) https://en.wikipedia.org/wiki/Julia_set + + (2) https://netpbm.sourceforge.net/doc/pgm.html + + (3) When using an MPI implementation other than MPICH or Open MPI, +please check the documentation of the implementation and/or batch system +for the ways to specify the desired MPI universe size. + + (4) https://docs.python.org/3/using/cmdline.html#using-on-cmdline + + +File: mpi4py.info, Node: Computing Pi parallel task, Prev: Computing the Julia set, Up: Examples + +7.6.2 Computing Pi (parallel task) +---------------------------------- + +The number \pi can be approximated via numerical integration with the +simple midpoint rule, that is: + + \pi = \int_{0}^{1} \frac{4}{1+x^2} \,dx \approx \frac{1}{n} \sum_{i=1}^{n} \frac{4}{1 + \left[\frac{1}{n} \left(i-\frac{1}{2}\right) \right]^2} . + +The following *note cpi.py: 22d. script computes such approximations +using *note mpi4py.futures: 2. with a parallel task involving a +collective reduction operation. Highlighted lines correspond to the +rules discussed in *note Parallel tasks: 22b. + + + import math + import sys + from mpi4py.futures import MPIPoolExecutor, wait + from mpi4py.futures import get_comm_workers + + + def compute_pi(n): + # Access intracommunicator and synchronize + comm = get_comm_workers() + comm.Barrier() + + rank = comm.Get_rank() + size = comm.Get_size() + + # Local computation + h = 1.0 / n + s = 0.0 + for i in range(rank + 1, n + 1, size): + x = h * (i - 0.5) + s += 4.0 / (1.0 + x**2) + pi_partial = s * h + + # Parallel reduce-to-all + pi = comm.allreduce(pi_partial) + + # All workers return the same value + return pi + + + if __name__ == '__main__': + n = int(sys.argv[1]) if len(sys.argv) > 1 else 256 + + with MPIPoolExecutor() as executor: + # Submit exactly one callable per worker + P = executor.num_workers + fs = [executor.submit(compute_pi, n) for _ in range(P)] + + # Wait for all workers to finish + wait(fs) + + # Get result from the first future object. + # In this particular example, due to using reduce-to-all, + # all the other future objects hold the same result value. + pi = fs[0].result() + print( + f"pi: {pi:.16f}, error: {abs(pi - math.pi):.3e}", + f"({n:d} intervals, {P:d} workers)", + ) + +LiteralBlock: ‘cpi.py’ + +To run in modern MPI-2 mode: + + $ env MPI4PY_FUTURES_MAX_WORKERS=4 mpiexec -n 1 python cpi.py 128 + pi: 3.1415977398528137, error: 5.086e-06 (128 intervals, 4 workers) + + $ env MPI4PY_FUTURES_MAX_WORKERS=8 mpiexec -n 1 python cpi.py 512 + pi: 3.1415929714812316, error: 3.179e-07 (512 intervals, 8 workers) + +To run in legacy MPI-1 mode: + + $ mpiexec -n 5 python -m mpi4py.futures cpi.py 128 + pi: 3.1415977398528137, error: 5.086e-06 (128 intervals, 4 workers) + + $ mpiexec -n 9 python -m mpi4py.futures cpi.py 512 + pi: 3.1415929714812316, error: 3.179e-07 (512 intervals, 8 workers) + + +File: mpi4py.info, Node: Citation, Prev: Examples, Up: mpi4py futures + +7.7 Citation +============ + +If *note mpi4py.futures: 2. been significant to a project that leads to +an academic publication, please acknowledge our work by citing the +following article *note [mpi4py-futures]: 237.: + +(mpi4py-futures) M. Rogowski, S. Aseeri, D. Keyes, and L. Dalcin, +‘mpi4py.futures: MPI-Based Asynchronous Task Execution for Python’, IEEE +Transactions on Parallel and Distributed Systems, 34(2):611-622, 2023. +‘https://doi.org/10.1109/TPDS.2022.3225481’ + + +File: mpi4py.info, Node: mpi4py util, Next: mpi4py run, Prev: mpi4py futures, Up: Top + +8 mpi4py.util +************* + +Added in version 3.1.0. + +The *note mpi4py.util: 6. package collects miscellaneous utilities +within the intersection of Python and MPI. + +* Menu: + +* mpi4py.util.dtlib: mpi4py util dtlib. +* mpi4py.util.pkl5: mpi4py util pkl5. +* mpi4py.util.pool: mpi4py util pool. +* mpi4py.util.sync: mpi4py util sync. + + +File: mpi4py.info, Node: mpi4py util dtlib, Next: mpi4py util pkl5, Up: mpi4py util + +8.1 mpi4py.util.dtlib +===================== + +Added in version 3.1.0. + +The *note mpi4py.util.dtlib: 7. module provides converter routines +between NumPy and MPI datatypes. + + -- Function: mpi4py.util.dtlib.from_numpy_dtype (dtype) + + Convert NumPy datatype to MPI datatype. + + + Parameters: ‘dtype’ (DTypeLike(1)) – NumPy dtype-like object. + + + Return type: *note Datatype: d0. + + -- Function: mpi4py.util.dtlib.to_numpy_dtype (datatype) + + Convert MPI datatype to NumPy datatype. + + + Parameters: ‘datatype’ (*note Datatype: d0.) – MPI datatype. + + + Return type: dtype(2)[Any(3)] + + ---------- Footnotes ---------- + + (1) +https://numpy.org/doc/stable/reference/typing.html#numpy.typing.DTypeLike + + (2) +https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype + + (3) https://docs.python.org/3/library/typing.html#typing.Any + + +File: mpi4py.info, Node: mpi4py util pkl5, Next: mpi4py util pool, Prev: mpi4py util dtlib, Up: mpi4py util + +8.2 mpi4py.util.pkl5 +==================== + +Added in version 3.1.0. + +pickle(1) protocol 5 (see PEP 574(2)) introduced support for out-of-band +buffers, allowing for more efficient handling of certain object types +with large memory footprints. + +MPI for Python uses the traditional in-band handling of buffers. This +approach is appropriate for communicating non-buffer Python objects, or +buffer-like objects with small memory footprints. For point-to-point +communication, in-band buffer handling allows for the communication of a +pickled stream with a single MPI message, at the expense of additional +CPU and memory overhead in the pickling and unpickling steps. + +The *note mpi4py.util.pkl5: 8. module provides communicator wrapper +classes reimplementing pickle-based point-to-point and collective +communication methods using pickle protocol 5. Handling out-of-band +buffers necessarily involves multiple MPI messages, thus increasing +latency and hurting performance in case of small size data. However, in +case of large size data, the zero-copy savings of out-of-band buffer +handling more than offset the extra latency costs. Additionally, these +wrapper methods overcome the infamous 2 GiB message count limit (MPI-1 +to MPI-3). + + Note: Support for pickle protocol 5 is available in the pickle(3) + module within the Python standard library since Python 3.8. + Previous Python 3 releases can use the ‘pickle5’ backport, which is + available on PyPI(4) and can be installed with: + + python -m pip install pickle5 + + -- Class: mpi4py.util.pkl5.Request + + Request. + + Custom request class for nonblocking communications. + + Note: *note Request: 240. is not a subclass of *note + mpi4py.MPI.Request: 43. + + -- Method: Free () + + Free a communication request. + + + Return type: None(5) + + -- Method: free () + + Free a communication request. + + + Return type: None(6) + + -- Method: cancel () + + Cancel a communication request. + + + Return type: None(7) + + -- Method: get_status (status=None) + + Non-destructive test for the completion of a request. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(8)) + + + Return type: bool(9) + + -- Method: test (status=None) + + Test for the completion of a request. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(10)) + + + Return type: tuple(11)[bool(12), Any(13) | None(14)] + + -- Method: wait (status=None) + + Wait for a request to complete. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(15)) + + + Return type: Any(16) + + -- Method: classmethod get_status_all (requests, statuses=None) + + Non-destructive test for the completion of all requests. + + + Classmethod: + + -- Method: classmethod testall (requests, statuses=None) + + Test for the completion of all requests. + + + Classmethod: + + -- Method: classmethod waitall (requests, statuses=None) + + Wait for all requests to complete. + + + Classmethod: + + -- Class: mpi4py.util.pkl5.Message + + Message. + + Custom message class for matching probes. + + Note: *note Message: 24a. is not a subclass of *note + mpi4py.MPI.Message: d7. + + -- Method: free () + + Do nothing. + + + Return type: None(17) + + -- Method: recv (status=None) + + Blocking receive of matched message. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(18)) + + + Return type: Any(19) + + -- Method: irecv () + + Nonblocking receive of matched message. + + + Return type: *note Request: 240. + + -- Method: classmethod probe (comm, source=ANY_SOURCE, + tag=ANY_TAG, status=None) + + Blocking test for a matched message. + + + Classmethod: + + -- Method: classmethod iprobe (comm, source=ANY_SOURCE, + tag=ANY_TAG, status=None) + + Nonblocking test for a matched message. + + + Classmethod: + + -- Class: mpi4py.util.pkl5.Comm + + Communicator. + + Base communicator wrapper class. + + -- Method: send (obj, dest, tag=0) + + Blocking send in standard mode. + + + Parameters: + + * ‘obj’ (Any(20)) + + * ‘dest’ (int(21)) + + * ‘tag’ (int(22)) + + + Return type: None(23) + + -- Method: bsend (obj, dest, tag=0) + + Blocking send in buffered mode. + + + Parameters: + + * ‘obj’ (Any(24)) + + * ‘dest’ (int(25)) + + * ‘tag’ (int(26)) + + + Return type: None(27) + + -- Method: ssend (obj, dest, tag=0) + + Blocking send in synchronous mode. + + + Parameters: + + * ‘obj’ (Any(28)) + + * ‘dest’ (int(29)) + + * ‘tag’ (int(30)) + + + Return type: None(31) + + -- Method: isend (obj, dest, tag=0) + + Nonblocking send in standard mode. + + + Parameters: + + * ‘obj’ (Any(32)) + + * ‘dest’ (int(33)) + + * ‘tag’ (int(34)) + + + Return type: *note Request: 240. + + -- Method: ibsend (obj, dest, tag=0) + + Nonblocking send in buffered mode. + + + Parameters: + + * ‘obj’ (Any(35)) + + * ‘dest’ (int(36)) + + * ‘tag’ (int(37)) + + + Return type: *note Request: 240. + + -- Method: issend (obj, dest, tag=0) + + Nonblocking send in synchronous mode. + + + Parameters: + + * ‘obj’ (Any(38)) + + * ‘dest’ (int(39)) + + * ‘tag’ (int(40)) + + + Return type: *note Request: 240. + + -- Method: recv (buf=None, source=ANY_SOURCE, tag=ANY_TAG, + status=None) + + Blocking receive. + + + Parameters: + + * ‘buf’ (*note Buffer: 20a.‘ | ’None(41)) + + * ‘source’ (int(42)) + + * ‘tag’ (int(43)) + + * ‘status’ (*note Status: d1.‘ | ’None(44)) + + + Return type: Any + + -- Method: irecv (buf=None, source=ANY_SOURCE, tag=ANY_TAG) + + Nonblocking receive. + + Warning: This method cannot be supported reliably and + raises RuntimeError(45). + + + Parameters: + + * ‘buf’ (*note Buffer: 20a.‘ | ’None(46)) + + * ‘source’ (int(47)) + + * ‘tag’ (int(48)) + + + Return type: *note Request: 240. + + -- Method: sendrecv (sendobj, dest, sendtag=0, recvbuf=None, + source=ANY_SOURCE, recvtag=ANY_TAG, status=None) + + Send and receive. + + + Parameters: + + * ‘sendobj’ (‘Any’) + + * ‘dest’ (int(49)) + + * ‘sendtag’ (int(50)) + + * ‘recvbuf’ (*note Buffer: 20a.‘ | ’None(51)) + + * ‘source’ (int(52)) + + * ‘recvtag’ (int(53)) + + * ‘status’ (*note Status: d1.‘ | ’None(54)) + + + Return type: Any + + -- Method: mprobe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Blocking test for a matched message. + + + Parameters: + + * ‘source’ (int(55)) + + * ‘tag’ (int(56)) + + * ‘status’ (*note Status: d1.‘ | ’None(57)) + + + Return type: *note Message: 24a. + + -- Method: improbe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Nonblocking test for a matched message. + + + Parameters: + + * ‘source’ (int(58)) + + * ‘tag’ (int(59)) + + * ‘status’ (*note Status: d1.‘ | ’None(60)) + + + Return type: *note Message: 24a. | None(61) + + -- Method: bcast (obj, root=0) + + Broadcast. + + Added in version 3.1.0. + + + Parameters: + + * ‘obj’ (Any(62)) + + * ‘root’ (int(63)) + + + Return type: Any(64) + + -- Method: gather (sendobj, root=0) + + Gather. + + Added in version 4.0.0. + + + Parameters: + + * ‘sendobj’ (Any(65)) + + * ‘root’ (int(66)) + + + Return type: list(67)[Any(68)] | None(69) + + -- Method: scatter (sendobj, root=0) + + Scatter. + + Added in version 4.0.0. + + + Parameters: + + * ‘sendobj’ (Sequence(70)‘[’Any(71)‘] ’‘| ’None(72)) + + * ‘root’ (int(73)) + + + Return type: Any(74) + + -- Method: allgather (sendobj) + + Gather to All. + + Added in version 4.0.0. + + + Parameters: ‘sendobj’ (Any(75)) + + + Return type: list(76)[Any(77)] + + -- Method: alltoall (sendobj) + + All to All Scatter/Gather. + + Added in version 4.0.0. + + + Parameters: ‘sendobj’ (Sequence(78)‘[’Any(79)‘]’) + + + Return type: list(80)[Any(81)] + + -- Class: mpi4py.util.pkl5.Intracomm + + Intracommunicator. + + Intracommunicator wrapper class. + + -- Class: mpi4py.util.pkl5.Intercomm + + Intercommunicator. + + Intercommunicator wrapper class. + +* Menu: + +* Examples: Examples<2>. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/pickle.html#module-pickle + + (2) https://peps.python.org/pep-0574/ + + (3) https://docs.python.org/3/library/pickle.html#module-pickle + + (4) https://pypi.org/project/pickle5/ + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/functions.html#bool + + (10) https://docs.python.org/3/library/constants.html#None + + (11) https://docs.python.org/3/library/stdtypes.html#tuple + + (12) https://docs.python.org/3/library/functions.html#bool + + (13) https://docs.python.org/3/library/typing.html#typing.Any + + (14) https://docs.python.org/3/library/constants.html#None + + (15) https://docs.python.org/3/library/constants.html#None + + (16) https://docs.python.org/3/library/typing.html#typing.Any + + (17) https://docs.python.org/3/library/constants.html#None + + (18) https://docs.python.org/3/library/constants.html#None + + (19) https://docs.python.org/3/library/typing.html#typing.Any + + (20) https://docs.python.org/3/library/typing.html#typing.Any + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/constants.html#None + + (24) https://docs.python.org/3/library/typing.html#typing.Any + + (25) https://docs.python.org/3/library/functions.html#int + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/constants.html#None + + (28) https://docs.python.org/3/library/typing.html#typing.Any + + (29) https://docs.python.org/3/library/functions.html#int + + (30) https://docs.python.org/3/library/functions.html#int + + (31) https://docs.python.org/3/library/constants.html#None + + (32) https://docs.python.org/3/library/typing.html#typing.Any + + (33) https://docs.python.org/3/library/functions.html#int + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/typing.html#typing.Any + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/functions.html#int + + (38) https://docs.python.org/3/library/typing.html#typing.Any + + (39) https://docs.python.org/3/library/functions.html#int + + (40) https://docs.python.org/3/library/functions.html#int + + (41) https://docs.python.org/3/library/constants.html#None + + (42) https://docs.python.org/3/library/functions.html#int + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/constants.html#None + + (45) https://docs.python.org/3/library/exceptions.html#RuntimeError + + (46) https://docs.python.org/3/library/constants.html#None + + (47) https://docs.python.org/3/library/functions.html#int + + (48) https://docs.python.org/3/library/functions.html#int + + (49) https://docs.python.org/3/library/functions.html#int + + (50) https://docs.python.org/3/library/functions.html#int + + (51) https://docs.python.org/3/library/constants.html#None + + (52) https://docs.python.org/3/library/functions.html#int + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/constants.html#None + + (55) https://docs.python.org/3/library/functions.html#int + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/constants.html#None + + (58) https://docs.python.org/3/library/functions.html#int + + (59) https://docs.python.org/3/library/functions.html#int + + (60) https://docs.python.org/3/library/constants.html#None + + (61) https://docs.python.org/3/library/constants.html#None + + (62) https://docs.python.org/3/library/typing.html#typing.Any + + (63) https://docs.python.org/3/library/functions.html#int + + (64) https://docs.python.org/3/library/typing.html#typing.Any + + (65) https://docs.python.org/3/library/typing.html#typing.Any + + (66) https://docs.python.org/3/library/functions.html#int + + (67) https://docs.python.org/3/library/stdtypes.html#list + + (68) https://docs.python.org/3/library/typing.html#typing.Any + + (69) https://docs.python.org/3/library/constants.html#None + + (70) https://docs.python.org/3/library/typing.html#typing.Sequence + + (71) https://docs.python.org/3/library/typing.html#typing.Any + + (72) https://docs.python.org/3/library/constants.html#None + + (73) https://docs.python.org/3/library/functions.html#int + + (74) https://docs.python.org/3/library/typing.html#typing.Any + + (75) https://docs.python.org/3/library/typing.html#typing.Any + + (76) https://docs.python.org/3/library/stdtypes.html#list + + (77) https://docs.python.org/3/library/typing.html#typing.Any + + (78) https://docs.python.org/3/library/typing.html#typing.Sequence + + (79) https://docs.python.org/3/library/typing.html#typing.Any + + (80) https://docs.python.org/3/library/stdtypes.html#list + + (81) https://docs.python.org/3/library/typing.html#typing.Any + + +File: mpi4py.info, Node: Examples<2>, Up: mpi4py util pkl5 + +8.2.1 Examples +-------------- + + + import numpy as np + from mpi4py import MPI + from mpi4py.util import pkl5 + + comm = pkl5.Intracomm(MPI.COMM_WORLD) # comm wrapper + size = comm.Get_size() + rank = comm.Get_rank() + dst = (rank + 1) % size + src = (rank - 1) % size + + sobj = np.full(1024**3, rank, dtype='i4') # > 4 GiB + sreq = comm.isend(sobj, dst, tag=42) + robj = comm.recv (None, src, tag=42) + sreq.Free() + + assert np.min(robj) == src + assert np.max(robj) == src + +LiteralBlock: ‘test-pkl5-1.py’ + + + import numpy as np + from mpi4py import MPI + from mpi4py.util import pkl5 + + comm = pkl5.Intracomm(MPI.COMM_WORLD) # comm wrapper + size = comm.Get_size() + rank = comm.Get_rank() + dst = (rank + 1) % size + src = (rank - 1) % size + + sobj = np.full(1024**3, rank, dtype='i4') # > 4 GiB + sreq = comm.isend(sobj, dst, tag=42) + + status = MPI.Status() + rmsg = comm.mprobe(status=status) + assert status.Get_source() == src + assert status.Get_tag() == 42 + rreq = rmsg.irecv() + robj = rreq.wait() + + sreq.Free() + assert np.max(robj) == src + assert np.min(robj) == src + +LiteralBlock: ‘test-pkl5-2.py’ + + +File: mpi4py.info, Node: mpi4py util pool, Next: mpi4py util sync, Prev: mpi4py util pkl5, Up: mpi4py util + +8.3 mpi4py.util.pool +==================== + +Added in version 4.0.0. + +See also +........ + +This module intends to be a drop-in replacement for the +multiprocessing.pool(1) interface from the Python standard library. The +*note Pool: 266. class exposed here is implemented as a thin wrapper +around *note MPIPoolExecutor: 21d. + + Note: The *note mpi4py.futures: 2. package offers a higher level + interface for asynchronously pushing tasks to MPI worker process, + allowing for a clear separation between submitting tasks and + waiting for the results. + + -- Class: mpi4py.util.pool.Pool + + Pool using MPI processes as workers. + + -- Method: __init__ (processes=None, initializer=None, + initargs=(), **kwargs) + + Initialize a new Pool instance. + + + Parameters: + + * ‘processes’ (int(2)‘ | ’None(3)) – Number of worker + processes. + + * ‘initializer’ (Callable(4)‘[’‘[’‘...’‘]’‘, ’None(5)‘] ’‘| + ’None(6)) – An callable used to initialize workers + processes. + + * ‘initargs’ (Iterable(7)‘[’Any(8)‘]’) – A tuple of + arguments to pass to the initializer. + + * ‘kwargs’ (Any(9)) + + + Return type: None(10) + + Note: Additional keyword arguments are passed down to the + *note MPIPoolExecutor: 21d. constructor. + + Warning: The ‘maxtasksperchild’ and ‘context’ arguments + of multiprocessing.pool.Pool(11) are not supported. + Specifying ‘maxtasksperchild’ or ‘context’ with a value + other than None(12) will issue a warning of category + UserWarning(13). + + -- Method: apply (func, args=(), kwds={}) + + Call ‘func’ with arguments ‘args’ and keyword arguments + ‘kwds’. + + Equivalent to ‘func(*args, **kwds)’. + + + Parameters: + + * ‘func’ (Callable(14)‘[’‘[’‘...’‘]’‘, ’*note T: 218.‘]’) + + * ‘args’ (Iterable(15)‘[’Any(16)‘]’) + + * ‘kwds’ (Mapping(17)‘[’str(18)‘, ’Any(19)‘]’) + + + Return type: *note T: 218. + + -- Method: apply_async (func, args=(), kwds={}, callback=None, + error_callback=None) + + Asynchronous version of *note apply(): 268. returning *note + ApplyResult: 26a. + + + Parameters: + + * ‘func’ (‘Callable’‘[’‘...’‘, ’*note T: 218.‘]’) + + * ‘args’ (‘Iterable’‘[’‘Any’‘]’) + + * ‘kwds’ (‘Mapping’‘[’str(20)‘, ’‘Any’‘]’) + + * ‘callback’ (‘Callable’‘[’‘[’*note T: 218.‘]’‘, + ’object(21)‘] ’‘| ’None(22)) + + * ‘error_callback’ (‘Callable’‘[’‘[’BaseException(23)‘]’‘, + ’object(24)‘] ’‘| ’None(25)) + + + Return type: *note AsyncResult: 26b.[*note T: 218.] + + -- Method: map (func, iterable, chunksize=None) + + Apply ‘func’ to each element in ‘iterable’. + + Equivalent to ‘list(map(func, iterable))’. + + Block until all results are ready and return them in a + list(26). + + The ‘iterable’ is choped into a number of chunks which are + submitted as separate tasks. The (approximate) size of these + chunks can be specified by setting ‘chunksize’ to a positive + integer. + + Consider using *note imap(): 26d. or *note imap_unordered(): + 26e. with explicit ‘chunksize’ for better efficiency. + + + Parameters: + + * ‘func’ (Callable(27)‘[’‘[’*note S: 217.‘]’‘, ’*note T: + 218.‘]’) + + * ‘iterable’ (Iterable(28)‘[’*note S: 217.‘]’) + + * ‘chunksize’ (int(29)‘ | ’None(30)) + + + Return type: list(31)[*note T: 218.] + + -- Method: map_async (func, iterable, chunksize=None, + callback=None, error_callback=None) + + Asynchronous version of *note map(): 26c. returning *note + MapResult: 270. + + + Parameters: + + * ‘func’ (‘Callable’‘[’‘[’*note S: 217.‘]’‘, ’*note T: + 218.‘]’) + + * ‘iterable’ (‘Iterable’‘[’*note S: 217.‘]’) + + * ‘chunksize’ (int(32)‘ | ’None(33)) + + * ‘callback’ (‘Callable’‘[’‘[’*note T: 218.‘]’‘, + ’None(34)‘] ’‘| ’None(35)) + + * ‘error_callback’ (‘Callable’‘[’‘[’BaseException(36)‘]’‘, + ’None(37)‘] ’‘| ’None(38)) + + + Return type: *note MapResult: 270.[*note T: 218.] + + -- Method: imap (func, iterable, chunksize=1) + + Like *note map(): 26c. but return an iterator(39). + + Equivalent to ‘map(func, iterable)’. + + + Parameters: + + * ‘func’ (Callable(40)‘[’‘[’*note S: 217.‘]’‘, ’*note T: + 218.‘]’) + + * ‘iterable’ (Iterable(41)‘[’*note S: 217.‘]’) + + * ‘chunksize’ (int(42)) + + + Return type: Iterator(43)[*note T: 218.] + + -- Method: imap_unordered (func, iterable, chunksize=1) + + Like *note imap(): 26d. but ordering of results is arbitrary. + + + Parameters: + + * ‘func’ (Callable(44)‘[’‘[’*note S: 217.‘]’‘, ’*note T: + 218.‘]’) + + * ‘iterable’ (Iterable(45)‘[’*note S: 217.‘]’) + + * ‘chunksize’ (int(46)) + + + Return type: Iterator(47)[*note T: 218.] + + -- Method: starmap (func, iterable, chunksize=None) + + Apply ‘func’ to each argument tuple in ‘iterable’. + + Equivalent to ‘list(itertools.starmap(func, iterable))’. + + Block until all results are ready and return them in a + list(48). + + The ‘iterable’ is choped into a number of chunks which are + submitted as separate tasks. The (approximate) size of these + chunks can be specified by setting ‘chunksize’ to a positive + integer. + + Consider using *note istarmap(): 272. or *note + istarmap_unordered(): 273. with explicit ‘chunksize’ for + better efficiency. + + + Parameters: + + * ‘func’ (Callable(49)‘[’‘[’‘...’‘]’‘, ’*note T: 218.‘]’) + + * ‘iterable’ (Iterable(50)‘[’Iterable(51)‘[’Any(52)‘]’‘]’) + + * ‘chunksize’ (int(53)‘ | ’None(54)) + + + Return type: list(55)[*note T: 218.] + + -- Method: starmap_async (func, iterable, chunksize=None, + callback=None, error_callback=None) + + Asynchronous version of *note starmap(): 271. returning *note + MapResult: 270. + + + Parameters: + + * ‘func’ (‘Callable’‘[’‘...’‘, ’*note T: 218.‘]’) + + * ‘iterable’ (‘Iterable’‘[’‘Iterable’‘[’‘Any’‘]’‘]’) + + * ‘chunksize’ (int(56)‘ | ’None(57)) + + * ‘callback’ (‘Callable’‘[’‘[’*note T: 218.‘]’‘, + ’None(58)‘] ’‘| ’None(59)) + + * ‘error_callback’ (‘Callable’‘[’‘[’BaseException(60)‘]’‘, + ’None(61)‘] ’‘| ’None(62)) + + + Return type: *note MapResult: 270.[*note T: 218.] + + -- Method: istarmap (func, iterable, chunksize=1) + + Like *note starmap(): 271. but return an iterator(63). + + Equivalent to ‘itertools.starmap(func, iterable)’. + + + Parameters: + + * ‘func’ (Callable(64)‘[’‘[’‘...’‘]’‘, ’*note T: 218.‘]’) + + * ‘iterable’ (Iterable(65)‘[’Iterable(66)‘[’Any(67)‘]’‘]’) + + * ‘chunksize’ (int(68)) + + + Return type: Iterator(69)[*note T: 218.] + + -- Method: istarmap_unordered (func, iterable, chunksize=1) + + Like *note istarmap(): 272. but ordering of results is + arbitrary. + + + Parameters: + + * ‘func’ (Callable(70)‘[’‘[’‘...’‘]’‘, ’*note T: 218.‘]’) + + * ‘iterable’ (Iterable(71)‘[’Iterable(72)‘[’Any(73)‘]’‘]’) + + * ‘chunksize’ (int(74)) + + + Return type: Iterator(75)[*note T: 218.] + + -- Method: close () + + Prevent any more tasks from being submitted to the pool. + + + Return type: None(76) + + -- Method: terminate () + + Stop the worker processes without completing pending tasks. + + + Return type: None(77) + + -- Method: join () + + Wait for the worker processes to exit. + + + Return type: None(78) + + -- Class: mpi4py.util.pool.ThreadPool + + Bases: *note Pool: 266. + + Pool using threads as workers. + + -- Class: mpi4py.util.pool.AsyncResult + + Asynchronous result. + + -- Method: get (timeout=None) + + Return the result when it arrives. + + If ‘timeout’ is not None(79) and the result does not arrive + within ‘timeout’ seconds then raise TimeoutError(80). + + If the remote call raised an exception then that exception + will be reraised. + + + Parameters: ‘timeout’ (float(81)‘ | ’None(82)) + + + Return type: *note T: 218. + + -- Method: wait (timeout=None) + + Wait until the result is available or ‘timeout’ seconds pass. + + + Parameters: ‘timeout’ (float(83)‘ | ’None(84)) + + + Return type: None(85) + + -- Method: ready () + + Return whether the call has completed. + + + Return type: bool(86) + + -- Method: successful () + + Return whether the call completed without raising an + exception. + + If the result is not ready then raise ValueError(87). + + + Return type: bool(88) + + -- Class: mpi4py.util.pool.ApplyResult + + Bases: *note AsyncResult: 26b. + + Result type of *note apply_async(): 269. + + -- Class: mpi4py.util.pool.MapResult + + Bases: *note AsyncResult: 26b. + + Result type of *note map_async(): 26f. and *note starmap_async(): + 274. + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.pool + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/constants.html#None + + (4) https://docs.python.org/3/library/typing.html#typing.Callable + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/typing.html#typing.Iterable + + (8) https://docs.python.org/3/library/typing.html#typing.Any + + (9) https://docs.python.org/3/library/typing.html#typing.Any + + (10) https://docs.python.org/3/library/constants.html#None + + (11) +https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/exceptions.html#UserWarning + + (14) https://docs.python.org/3/library/typing.html#typing.Callable + + (15) https://docs.python.org/3/library/typing.html#typing.Iterable + + (16) https://docs.python.org/3/library/typing.html#typing.Any + + (17) https://docs.python.org/3/library/typing.html#typing.Mapping + + (18) https://docs.python.org/3/library/stdtypes.html#str + + (19) https://docs.python.org/3/library/typing.html#typing.Any + + (20) https://docs.python.org/3/library/stdtypes.html#str + + (21) https://docs.python.org/3/library/functions.html#object + + (22) https://docs.python.org/3/library/constants.html#None + + (23) https://docs.python.org/3/library/exceptions.html#BaseException + + (24) https://docs.python.org/3/library/functions.html#object + + (25) https://docs.python.org/3/library/constants.html#None + + (26) https://docs.python.org/3/library/stdtypes.html#list + + (27) https://docs.python.org/3/library/typing.html#typing.Callable + + (28) https://docs.python.org/3/library/typing.html#typing.Iterable + + (29) https://docs.python.org/3/library/functions.html#int + + (30) https://docs.python.org/3/library/constants.html#None + + (31) https://docs.python.org/3/library/stdtypes.html#list + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/constants.html#None + + (34) https://docs.python.org/3/library/constants.html#None + + (35) https://docs.python.org/3/library/constants.html#None + + (36) https://docs.python.org/3/library/exceptions.html#BaseException + + (37) https://docs.python.org/3/library/constants.html#None + + (38) https://docs.python.org/3/library/constants.html#None + + (39) https://docs.python.org/3/glossary.html#term-iterator + + (40) https://docs.python.org/3/library/typing.html#typing.Callable + + (41) https://docs.python.org/3/library/typing.html#typing.Iterable + + (42) https://docs.python.org/3/library/functions.html#int + + (43) https://docs.python.org/3/library/typing.html#typing.Iterator + + (44) https://docs.python.org/3/library/typing.html#typing.Callable + + (45) https://docs.python.org/3/library/typing.html#typing.Iterable + + (46) https://docs.python.org/3/library/functions.html#int + + (47) https://docs.python.org/3/library/typing.html#typing.Iterator + + (48) https://docs.python.org/3/library/stdtypes.html#list + + (49) https://docs.python.org/3/library/typing.html#typing.Callable + + (50) https://docs.python.org/3/library/typing.html#typing.Iterable + + (51) https://docs.python.org/3/library/typing.html#typing.Iterable + + (52) https://docs.python.org/3/library/typing.html#typing.Any + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/constants.html#None + + (55) https://docs.python.org/3/library/stdtypes.html#list + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/constants.html#None + + (58) https://docs.python.org/3/library/constants.html#None + + (59) https://docs.python.org/3/library/constants.html#None + + (60) https://docs.python.org/3/library/exceptions.html#BaseException + + (61) https://docs.python.org/3/library/constants.html#None + + (62) https://docs.python.org/3/library/constants.html#None + + (63) https://docs.python.org/3/glossary.html#term-iterator + + (64) https://docs.python.org/3/library/typing.html#typing.Callable + + (65) https://docs.python.org/3/library/typing.html#typing.Iterable + + (66) https://docs.python.org/3/library/typing.html#typing.Iterable + + (67) https://docs.python.org/3/library/typing.html#typing.Any + + (68) https://docs.python.org/3/library/functions.html#int + + (69) https://docs.python.org/3/library/typing.html#typing.Iterator + + (70) https://docs.python.org/3/library/typing.html#typing.Callable + + (71) https://docs.python.org/3/library/typing.html#typing.Iterable + + (72) https://docs.python.org/3/library/typing.html#typing.Iterable + + (73) https://docs.python.org/3/library/typing.html#typing.Any + + (74) https://docs.python.org/3/library/functions.html#int + + (75) https://docs.python.org/3/library/typing.html#typing.Iterator + + (76) https://docs.python.org/3/library/constants.html#None + + (77) https://docs.python.org/3/library/constants.html#None + + (78) https://docs.python.org/3/library/constants.html#None + + (79) https://docs.python.org/3/library/constants.html#None + + (80) https://docs.python.org/3/library/exceptions.html#TimeoutError + + (81) https://docs.python.org/3/library/functions.html#float + + (82) https://docs.python.org/3/library/constants.html#None + + (83) https://docs.python.org/3/library/functions.html#float + + (84) https://docs.python.org/3/library/constants.html#None + + (85) https://docs.python.org/3/library/constants.html#None + + (86) https://docs.python.org/3/library/functions.html#bool + + (87) https://docs.python.org/3/library/exceptions.html#ValueError + + (88) https://docs.python.org/3/library/functions.html#bool + + +File: mpi4py.info, Node: mpi4py util sync, Prev: mpi4py util pool, Up: mpi4py util + +8.4 mpi4py.util.sync +==================== + +Added in version 4.0.0. + +The *note mpi4py.util.sync: a. module provides parallel synchronization +utilities. + +* Menu: + +* Sequential execution:: +* Global counter:: +* Mutual exclusion:: +* Condition variable:: +* Semaphore object:: +* Examples: Examples<3>. + + +File: mpi4py.info, Node: Sequential execution, Next: Global counter, Up: mpi4py util sync + +8.4.1 Sequential execution +-------------------------- + + -- Class: mpi4py.util.sync.Sequential + + Sequential execution. + + Context manager for sequential execution within a group of MPI + processes. + + The implementation is based in MPI-1 point-to-point communication. + A process with rank ‘i’ waits in a blocking receive until the + previous process rank ‘i-1’ finish executing and signals the next + rank ‘i’ with a send. + + -- Method: __init__ (comm, tag=0) + + Initialize sequential execution. + + + Parameters: + + * ‘comm’ (*note Intracomm: 1f.) – Intracommunicator + context. + + * ‘tag’ (int(1)) – Tag for point-to-point communication. + + + Return type: None(2) + + -- Method: __enter__ () + + Enter sequential execution. + + + Return type: Self(3) + + -- Method: __exit__ (*exc) + + Exit sequential execution. + + + Parameters: ‘exc’ (object(4)) + + + Return type: None(5) + + -- Method: begin () + + Begin sequential execution. + + + Return type: None(6) + + -- Method: end () + + End sequential execution. + + + Return type: None(7) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#object + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: Global counter, Next: Mutual exclusion, Prev: Sequential execution, Up: mpi4py util sync + +8.4.2 Global counter +-------------------- + + -- Class: mpi4py.util.sync.Counter + + Global counter. + + Produce consecutive values within a group of MPI processes. The + counter interface is close to that of itertools.count(1). + + The implementation is based in MPI-3 one-sided operations. A root + process (typically rank ‘0’) holds the counter, and its value is + queried and incremented with an atomic RMA ‘fetch-and-add’ + operation. + + -- Method: __init__ (start=0, step=1, *, typecode='i', + comm=COMM_SELF, info=INFO_NULL, root=0) + + Initialize global counter. + + + Parameters: + + * ‘start’ (int(2)) – Start value. + + * ‘step’ (int(3)) – Increment value. + + * ‘typecode’ (str(4)) – Type code as defined in the + array(5) module. + + * ‘comm’ (*note Intracomm: 1f.) – Intracommunicator + context. + + * ‘info’ (*note Info: d4.) – Info object for RMA context + creation. + + * ‘root’ (int(6)) – Process rank holding the counter + memory. + + + Return type: None(7) + + -- Method: __iter__ () + + Implement ‘iter(self)’. + + + Return type: Self(8) + + -- Method: __next__ () + + Implement ‘next(self)’. + + + Return type: int(9) + + -- Method: next (incr=None) + + Return current value and increment. + + + Parameters: ‘incr’ (int(10)‘ | ’None(11)) – Increment value. + + + Returns: The counter value before incrementing. + + + Return type: int(12) + + -- Method: free () + + Free counter resources. + + + Return type: None(13) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/itertools.html#itertools.count + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/functions.html#int + + (4) https://docs.python.org/3/library/stdtypes.html#str + + (5) https://docs.python.org/3/library/array.html#module-array + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/typing.html#typing.Self + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/constants.html#None + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: Mutual exclusion, Next: Condition variable, Prev: Global counter, Up: mpi4py util sync + +8.4.3 Mutual exclusion +---------------------- + + -- Class: mpi4py.util.sync.Mutex + + Mutual exclusion. + + Establish a critical section or mutual exclusion among MPI + processes. + + The mutex interface is close to that of threading.Lock(1) and + threading.RLock(2), allowing the use of either recursive or + non-recursive mutual exclusion. However, a mutex should be used + within a group of MPI processes, not threads. + + In non-recursive mode, the semantics of *note Mutex: 28e. are + somewhat different than these of threading.Lock(3): + + * Once acquired, a mutex is held and owned by a process until + released. + + * Trying to acquire a mutex already held raises RuntimeError(4). + + * Trying to release a mutex not yet held raises RuntimeError(5). + + This mutex implementation uses the scalable and fair spinlock + algorithm from *note [mcs-paper]: 28f. and took inspiration from + the MPI-3 RMA implementation of *note [uam-book]: 290. + + -- Method: __init__ (*, recursive=False, comm=COMM_SELF, + info=INFO_NULL) + + Initialize mutex object. + + + Parameters: + + * ‘comm’ (*note Intracomm: 1f.) – Intracommunicator + context. + + * ‘recursive’ (bool(6)) – Whether to allow recursive + acquisition. + + * ‘info’ (*note Info: d4.) – Info object for RMA context + creation. + + + Return type: None(7) + + -- Method: __enter__ () + + Acquire mutex. + + + Return type: Self(8) + + -- Method: __exit__ (*exc) + + Release mutex. + + + Parameters: ‘exc’ (object(9)) + + + Return type: None(10) + + -- Method: acquire (blocking=True) + + Acquire mutex, blocking or non-blocking. + + + Parameters: ‘blocking’ (bool(11)) – If True(12), block until + the mutex is held. + + + Returns: True(13) if the mutex is held, False(14) otherwise. + + + Return type: bool(15) + + -- Method: release () + + Release mutex. + + + Return type: None(16) + + -- Method: locked () + + Return whether the mutex is held. + + + Return type: bool(17) + + -- Method: count () + + Return the recursion count. + + + Return type: int(18) + + -- Method: free () + + Free mutex resources. + + + Return type: None(19) + +(mcs-paper) John M. Mellor-Crummey and Michael L. Scott. Algorithms for +scalable synchronization on shared-memory multiprocessors. ACM +Transactions on Computer Systems, 9(1):21-65, February 1991. +‘https://doi.org/10.1145/103727.103729’ + +(uam-book) William Gropp, Torsten Hoefler, Rajeev Thakur, Ewing Lusk. +Using Advanced MPI - Modern Features of the Message-Passing Interface. +Chapter 4, Section 4.7, Pages 130-131. The MIT Press, November 2014. +‘https://mitpress.mit.edu/9780262527637/using-advanced-mpi/’ + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/threading.html#threading.Lock + + (2) https://docs.python.org/3/library/threading.html#threading.RLock + + (3) https://docs.python.org/3/library/threading.html#threading.Lock + + (4) https://docs.python.org/3/library/exceptions.html#RuntimeError + + (5) https://docs.python.org/3/library/exceptions.html#RuntimeError + + (6) https://docs.python.org/3/library/functions.html#bool + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/typing.html#typing.Self + + (9) https://docs.python.org/3/library/functions.html#object + + (10) https://docs.python.org/3/library/constants.html#None + + (11) https://docs.python.org/3/library/functions.html#bool + + (12) https://docs.python.org/3/library/constants.html#True + + (13) https://docs.python.org/3/library/constants.html#True + + (14) https://docs.python.org/3/library/constants.html#False + + (15) https://docs.python.org/3/library/functions.html#bool + + (16) https://docs.python.org/3/library/constants.html#None + + (17) https://docs.python.org/3/library/functions.html#bool + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: Condition variable, Next: Semaphore object, Prev: Mutual exclusion, Up: mpi4py util sync + +8.4.4 Condition variable +------------------------ + + -- Class: mpi4py.util.sync.Condition + + Condition variable. + + A condition variable allows one or more MPI processes to wait until + they are notified by another processes. + + The condition variable interface is close to that of + threading.Condition(1), allowing the use of either recursive or + non-recursive mutual exclusion. However, the condition variable + should be used within a group of MPI processes, not threads. + + This condition variable implementation uses a MPI-3 RMA-based + scalable and fair circular queue algorithm to track the set of + waiting processes. + + -- Method: __init__ (mutex=None, *, recursive=True, + comm=COMM_SELF, info=INFO_NULL) + + Initialize condition variable. + + + Parameters: + + * ‘mutex’ (*note Mutex: 28e.‘ | ’None(2)) – Mutual + exclusion object. + + * ‘recursive’ (bool(3)) – Whether to allow recursive + acquisition. + + * ‘comm’ (*note Intracomm: 1f.) – Intracommunicator + context. + + * ‘info’ (*note Info: d4.) – Info object for RMA context + creation. + + + Return type: None(4) + + -- Method: __enter__ () + + Acquire the underlying mutex. + + + Return type: Self(5) + + -- Method: __exit__ (*exc) + + Release the underlying mutex. + + + Parameters: ‘exc’ (object(6)) + + + Return type: None(7) + + -- Method: acquire (blocking=True) + + Acquire the underlying mutex. + + + Parameters: ‘blocking’ (bool(8)) + + + Return type: bool(9) + + -- Method: release () + + Release the underlying mutex. + + + Return type: None(10) + + -- Method: locked () + + Return whether the underlying mutex is held. + + + Return type: bool(11) + + -- Method: wait () + + Wait until notified by another process. + + + Returns: Always True(12). + + + Return type: Literal(13)[True] + + -- Method: wait_for (predicate) + + Wait until a predicate evaluates to True(14). + + + Parameters: ‘predicate’ (Callable(15)‘[’‘[’‘]’‘, ’*note T: + 218.‘]’) – callable returning a boolean. + + + Returns: The result of predicate once it evaluates to + True(16). + + + Return type: *note T: 218. + + -- Method: notify (n=1) + + Wake up one or more processes waiting on this condition. + + + Parameters: ‘n’ (int(17)) – Maximum number of processes to + wake up. + + + Returns: The actual number of processes woken up. + + + Return type: int(18) + + -- Method: notify_all () + + Wake up all processes waiting on this condition. + + + Returns: The actual number of processes woken up. + + + Return type: int(19) + + -- Method: free () + + Free condition resources. + + + Return type: None(20) + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/threading.html#threading.Condition + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/functions.html#bool + + (4) https://docs.python.org/3/library/constants.html#None + + (5) https://docs.python.org/3/library/typing.html#typing.Self + + (6) https://docs.python.org/3/library/functions.html#object + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/functions.html#bool + + (9) https://docs.python.org/3/library/functions.html#bool + + (10) https://docs.python.org/3/library/constants.html#None + + (11) https://docs.python.org/3/library/functions.html#bool + + (12) https://docs.python.org/3/library/constants.html#True + + (13) https://docs.python.org/3/library/typing.html#typing.Literal + + (14) https://docs.python.org/3/library/constants.html#True + + (15) https://docs.python.org/3/library/typing.html#typing.Callable + + (16) https://docs.python.org/3/library/constants.html#True + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/functions.html#int + + (20) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: Semaphore object, Next: Examples<3>, Prev: Condition variable, Up: mpi4py util sync + +8.4.5 Semaphore object +---------------------- + + -- Class: mpi4py.util.sync.Semaphore + + Semaphore object. + + A semaphore object manages an internal counter which is decremented + by each *note acquire(): 2a8. call and incremented by each *note + release(): 2a9. call. The internal counter never reaches a value + below zero; when *note acquire(): 2a8. finds that it is zero, it + blocks and waits until some other process calls *note release(): + 2a9. + + The semaphore interface is close to that of threading.Semaphore(1) + and threading.BoundedSemaphore(2), allowing the use of either + bounded (default) or unbounded semaphores. With a bounded + semaphore, the internal counter never exceeds its initial value; + otherwise *note release(): 2a9. raises ValueError(3). + + This semaphore implementation uses a global *note Counter: 287. and + a *note Condition: 29a. variable to handle waiting and and + notification. + + -- Method: __init__ (value=1, *, bounded=True, comm=COMM_SELF, + info=INFO_NULL) + + Initialize semaphore object. + + + Parameters: + + * ‘value’ (int(4)) – Initial value for internal counter. + + * ‘bounded’ (bool(5)) – Bound internal counter to initial + value. + + * ‘comm’ (*note Intracomm: 1f.) – Intracommunicator + context. + + * ‘info’ (*note Info: d4.) – Info object for RMA context + creation. + + + Return type: None(6) + + -- Method: __enter__ () + + Acquire semaphore. + + + Return type: Self(7) + + -- Method: __exit__ (*exc) + + Release semaphore. + + + Parameters: ‘exc’ (object(8)) + + + Return type: None(9) + + -- Method: acquire (blocking=True) + + Acquire semaphore, decrementing the internal counter by one. + + + Parameters: ‘blocking’ (bool(10)) – If True(11), block until + the semaphore is acquired. + + + Returns: True(12) if the semaphore is acquired, False(13) + otherwise. + + + Return type: bool(14) + + -- Method: release (n=1) + + Release semaphore, incrementing the internal counter by one or + more. + + + Parameters: ‘n’ (int(15)) – Increment for the internal + counter. + + + Return type: None(16) + + -- Method: free () + + Free semaphore resources. + + + Return type: None(17) + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/threading.html#threading.Semaphore + + (2) +https://docs.python.org/3/library/threading.html#threading.BoundedSemaphore + + (3) https://docs.python.org/3/library/exceptions.html#ValueError + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#bool + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/typing.html#typing.Self + + (8) https://docs.python.org/3/library/functions.html#object + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/functions.html#bool + + (11) https://docs.python.org/3/library/constants.html#True + + (12) https://docs.python.org/3/library/constants.html#True + + (13) https://docs.python.org/3/library/constants.html#False + + (14) https://docs.python.org/3/library/functions.html#bool + + (15) https://docs.python.org/3/library/functions.html#int + + (16) https://docs.python.org/3/library/constants.html#None + + (17) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: Examples<3>, Prev: Semaphore object, Up: mpi4py util sync + +8.4.6 Examples +-------------- + + + from mpi4py import MPI + from mpi4py.util.sync import Counter, Sequential + + comm = MPI.COMM_WORLD + + counter = Counter(comm) + with Sequential(comm): + value = next(counter) + counter.free() + + assert comm.rank == value + +LiteralBlock: ‘test-sync-1.py’ + + + from mpi4py import MPI + from mpi4py.util.sync import Counter, Mutex + + comm = MPI.COMM_WORLD + + mutex = Mutex(comm) + counter = Counter(comm) + with mutex: + value = next(counter) + counter.free() + mutex.free() + + assert ( + list(range(comm.size)) == + sorted(comm.allgather(value)) + ) + +LiteralBlock: ‘test-sync-2.py’ + + +File: mpi4py.info, Node: mpi4py run, Next: mpi4py bench, Prev: mpi4py util, Up: Top + +9 mpi4py.run +************ + +Added in version 3.0.0. + +At import time, *note mpi4py: 0. initializes the MPI execution +environment calling ‘MPI_Init_thread()’ and installs an exit hook to +automatically call ‘MPI_Finalize()’ just before the Python process +terminates. Additionally, *note mpi4py: 0. overrides the default *note +ERRORS_ARE_FATAL: 9a. error handler in favor of *note ERRORS_RETURN: 99, +which allows translating MPI errors in Python exceptions. These +departures from standard MPI behavior may be controversial, but are +quite convenient within the highly dynamic Python programming +environment. Third-party code using *note mpi4py: 0. can just ‘from +mpi4py import MPI’ and perform MPI calls without the tedious +initialization/finalization handling. MPI errors, once translated +automatically to Python exceptions, can be dealt with the common +try(1)…except(2)…finally(3) clauses; unhandled MPI exceptions will print +a traceback which helps in locating problems in source code. + +Unfortunately, the interplay of automatic MPI finalization and unhandled +exceptions may lead to deadlocks. In unattended runs, these deadlocks +will drain the battery of your laptop, or burn precious allocation hours +in your supercomputing facility. + +* Menu: + +* Exceptions and deadlocks:: +* Command line: Command line<2>. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/reference/compound_stmts.html#try + + (2) https://docs.python.org/3/reference/compound_stmts.html#except + + (3) https://docs.python.org/3/reference/compound_stmts.html#finally + + +File: mpi4py.info, Node: Exceptions and deadlocks, Next: Command line<2>, Up: mpi4py run + +9.1 Exceptions and deadlocks +============================ + +Consider the following snippet of Python code. Assume this code is +stored in a standard Python script file and run with ‘mpiexec’ in two or +more processes. + + + from mpi4py import MPI + assert MPI.COMM_WORLD.Get_size() > 1 + rank = MPI.COMM_WORLD.Get_rank() + if rank == 0: + 1/0 + MPI.COMM_WORLD.send(None, dest=1, tag=42) + elif rank == 1: + MPI.COMM_WORLD.recv(source=0, tag=42) + +LiteralBlock: ‘deadlock.py’ + +Process 0 raises ZeroDivisionError(1) exception before performing a send +call to process 1. As the exception is not handled, the Python +interpreter running in process 0 will proceed to exit with non-zero +status. However, as *note mpi4py: 0. installed a finalizer hook to call +‘MPI_Finalize()’ before exit, process 0 will block waiting for other +processes to also enter the ‘MPI_Finalize()’ call. Meanwhile, process 1 +will block waiting for a message to arrive from process 0, thus never +reaching to ‘MPI_Finalize()’. The whole MPI execution environment is +irremediably in a deadlock state. + +To alleviate this issue, *note mpi4py: 0. offers a simple, alternative +command line execution mechanism based on using the -m(2) flag and +implemented with the runpy(3) module. To use this features, Python code +should be run passing ‘-m mpi4py’ in the command line invoking the +Python interpreter. In case of unhandled exceptions, the finalizer hook +will call ‘MPI_Abort()’ on the ‘MPI_COMM_WORLD’ communicator, thus +effectively aborting the MPI execution environment. + + Warning: When a process is forced to abort, resources (e.g. open + files) are not cleaned-up and any registered finalizers (either + with the atexit(4) module, the Python C/API function + Py_AtExit()(5), or even the C standard library function ‘atexit()’) + will not be executed. Thus, aborting execution is an extremely + impolite way of ensuring process termination. However, MPI + provides no other mechanism to recover from a deadlock state. + + ---------- Footnotes ---------- + + (1) +https://docs.python.org/3/library/exceptions.html#ZeroDivisionError + + (2) https://docs.python.org/3/using/cmdline.html#using-on-cmdline + + (3) https://docs.python.org/3/library/runpy.html#module-runpy + + (4) https://docs.python.org/3/library/atexit.html#module-atexit + + (5) https://docs.python.org/3/c-api/sys.html#c.Py_AtExit + + +File: mpi4py.info, Node: Command line<2>, Prev: Exceptions and deadlocks, Up: mpi4py run + +9.2 Command line +================ + +The use of ‘-m mpi4py’ to execute Python code on the command line +resembles that of the Python interpreter. + + * ‘mpiexec -n NUMPROCS python -m mpi4py PYFILE [arg] ...’ + + * ‘mpiexec -n NUMPROCS python -m mpi4py -m MOD [arg] ...’ + + * ‘mpiexec -n NUMPROCS python -m mpi4py -c CMD [arg] ...’ + + * ‘mpiexec -n NUMPROCS python -m mpi4py - [arg] ...’ + + -- Describe: + + Execute the Python code contained in ‘pyfile’, which must be a + filesystem path referring to either a Python file, a directory + containing a ‘__main__.py’ file, or a zipfile containing a + ‘__main__.py’ file. + + -- Program Option: -m + + Search sys.path(1) for the named module ‘mod’ and execute its + contents. + + -- Program Option: -c + + Execute the Python code in the ‘cmd’ string command. + + -- Describe: - + + Read commands from standard input (sys.stdin(2)). + +See also +........ + +Command line(3) + + Documentation on Python command line interface. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/sys.html#sys.path + + (2) https://docs.python.org/3/library/sys.html#sys.stdin + + (3) https://docs.python.org/3/using/cmdline.html#using-on-cmdline + + +File: mpi4py.info, Node: mpi4py bench, Next: Reference, Prev: mpi4py run, Up: Top + +10 mpi4py.bench +*************** + +Added in version 3.0.0. + + +File: mpi4py.info, Node: Reference, Next: Citation<2>, Prev: mpi4py bench, Up: Top + +11 Reference +************ + +*note mpi4py.MPI: 3.Message Passing Interface. + + +* Menu: + +* mpi4py.MPI: mpi4py MPI<2>. + + +File: mpi4py.info, Node: mpi4py MPI<2>, Up: Reference + +11.1 mpi4py.MPI +=============== + +Message Passing Interface. + +Classes +....... + +*note BottomType: fb.Type of *note BOTTOM: fa. + + +*note BufferAutomaticType: ff.Type of *note BUFFER_AUTOMATIC: fe. + + +*note Cartcomm: 33.Cartesian topology intracommunicator. + + +*note Comm: 1e.Communication context. + + +*note Datatype: d0.Datatype object. + + +*note Distgraphcomm: 35.Distributed graph topology intracommunicator. + + +*note Errhandler: d8.Error handler. + + +*note File: 84.File I/O context. + + +*note Graphcomm: 34.General graph topology intracommunicator. + + +*note Grequest: d2.Generalized request handler. + + +*note Group: 28.Group of processes. + + +*note InPlaceType: fd.Type of *note IN_PLACE: fc. + + +*note Info: d4.Info object. + + +*note Intercomm: 20.Intercommunicator. + + +*note Intracomm: 1f.Intracommunicator. + + +*note Message: d7.Matched message. + + +*note Op: d3. Reduction operation. + + +*note Pickle: d9.Pickle/unpickle Python objects. + + +*note Prequest: 4a.Persistent request handler. + + +*note Request: 43.Request handler. + + +*note Session: d5.Session context. + + +*note Status: d1.Status object. + + +*note Topocomm: d6.Topology intracommunicator. + + +*note Win: 76. Remote memory access context. + + +*note buffer: da.Buffer. + + +*note memory: 2bc.alias of *note buffer: da. + + +* Menu: + +* mpi4py.MPI.BottomType: mpi4py MPI BottomType. +* mpi4py.MPI.BufferAutomaticType: mpi4py MPI BufferAutomaticType. +* mpi4py.MPI.Cartcomm: mpi4py MPI Cartcomm. +* mpi4py.MPI.Comm: mpi4py MPI Comm. +* mpi4py.MPI.Datatype: mpi4py MPI Datatype. +* mpi4py.MPI.Distgraphcomm: mpi4py MPI Distgraphcomm. +* mpi4py.MPI.Errhandler: mpi4py MPI Errhandler. +* mpi4py.MPI.File: mpi4py MPI File. +* mpi4py.MPI.Graphcomm: mpi4py MPI Graphcomm. +* mpi4py.MPI.Grequest: mpi4py MPI Grequest. +* mpi4py.MPI.Group: mpi4py MPI Group. +* mpi4py.MPI.InPlaceType: mpi4py MPI InPlaceType. +* mpi4py.MPI.Info: mpi4py MPI Info. +* mpi4py.MPI.Intercomm: mpi4py MPI Intercomm. +* mpi4py.MPI.Intracomm: mpi4py MPI Intracomm. +* mpi4py.MPI.Message: mpi4py MPI Message. +* mpi4py.MPI.Op: mpi4py MPI Op. +* mpi4py.MPI.Pickle: mpi4py MPI Pickle. +* mpi4py.MPI.Prequest: mpi4py MPI Prequest. +* mpi4py.MPI.Request: mpi4py MPI Request. +* mpi4py.MPI.Session: mpi4py MPI Session. +* mpi4py.MPI.Status: mpi4py MPI Status. +* mpi4py.MPI.Topocomm: mpi4py MPI Topocomm. +* mpi4py.MPI.Win: mpi4py MPI Win. +* mpi4py.MPI.buffer: mpi4py MPI buffer. +* mpi4py.MPI.memory: mpi4py MPI memory. +* mpi4py.MPI.Exception: mpi4py MPI Exception. +* mpi4py.MPI.Add_error_class: mpi4py MPI Add_error_class. +* mpi4py.MPI.Add_error_code: mpi4py MPI Add_error_code. +* mpi4py.MPI.Add_error_string: mpi4py MPI Add_error_string. +* mpi4py.MPI.Aint_add: mpi4py MPI Aint_add. +* mpi4py.MPI.Aint_diff: mpi4py MPI Aint_diff. +* mpi4py.MPI.Alloc_mem: mpi4py MPI Alloc_mem. +* mpi4py.MPI.Attach_buffer: mpi4py MPI Attach_buffer. +* mpi4py.MPI.Close_port: mpi4py MPI Close_port. +* mpi4py.MPI.Compute_dims: mpi4py MPI Compute_dims. +* mpi4py.MPI.Detach_buffer: mpi4py MPI Detach_buffer. +* mpi4py.MPI.Finalize: mpi4py MPI Finalize. +* mpi4py.MPI.Flush_buffer: mpi4py MPI Flush_buffer. +* mpi4py.MPI.Free_mem: mpi4py MPI Free_mem. +* mpi4py.MPI.Get_address: mpi4py MPI Get_address. +* mpi4py.MPI.Get_error_class: mpi4py MPI Get_error_class. +* mpi4py.MPI.Get_error_string: mpi4py MPI Get_error_string. +* mpi4py.MPI.Get_hw_resource_info: mpi4py MPI Get_hw_resource_info. +* mpi4py.MPI.Get_library_version: mpi4py MPI Get_library_version. +* mpi4py.MPI.Get_processor_name: mpi4py MPI Get_processor_name. +* mpi4py.MPI.Get_version: mpi4py MPI Get_version. +* mpi4py.MPI.Iflush_buffer: mpi4py MPI Iflush_buffer. +* mpi4py.MPI.Init: mpi4py MPI Init. +* mpi4py.MPI.Init_thread: mpi4py MPI Init_thread. +* mpi4py.MPI.Is_finalized: mpi4py MPI Is_finalized. +* mpi4py.MPI.Is_initialized: mpi4py MPI Is_initialized. +* mpi4py.MPI.Is_thread_main: mpi4py MPI Is_thread_main. +* mpi4py.MPI.Lookup_name: mpi4py MPI Lookup_name. +* mpi4py.MPI.Open_port: mpi4py MPI Open_port. +* mpi4py.MPI.Pcontrol: mpi4py MPI Pcontrol. +* mpi4py.MPI.Publish_name: mpi4py MPI Publish_name. +* mpi4py.MPI.Query_thread: mpi4py MPI Query_thread. +* mpi4py.MPI.Register_datarep: mpi4py MPI Register_datarep. +* mpi4py.MPI.Remove_error_class: mpi4py MPI Remove_error_class. +* mpi4py.MPI.Remove_error_code: mpi4py MPI Remove_error_code. +* mpi4py.MPI.Remove_error_string: mpi4py MPI Remove_error_string. +* mpi4py.MPI.Unpublish_name: mpi4py MPI Unpublish_name. +* mpi4py.MPI.Wtick: mpi4py MPI Wtick. +* mpi4py.MPI.Wtime: mpi4py MPI Wtime. +* mpi4py.MPI.get_vendor: mpi4py MPI get_vendor. +* mpi4py.MPI.UNDEFINED: mpi4py MPI UNDEFINED. +* mpi4py.MPI.ANY_SOURCE: mpi4py MPI ANY_SOURCE. +* mpi4py.MPI.ANY_TAG: mpi4py MPI ANY_TAG. +* mpi4py.MPI.PROC_NULL: mpi4py MPI PROC_NULL. +* mpi4py.MPI.ROOT: mpi4py MPI ROOT. +* mpi4py.MPI.BOTTOM: mpi4py MPI BOTTOM. +* mpi4py.MPI.IN_PLACE: mpi4py MPI IN_PLACE. +* mpi4py.MPI.KEYVAL_INVALID: mpi4py MPI KEYVAL_INVALID. +* mpi4py.MPI.TAG_UB: mpi4py MPI TAG_UB. +* mpi4py.MPI.IO: mpi4py MPI IO. +* mpi4py.MPI.WTIME_IS_GLOBAL: mpi4py MPI WTIME_IS_GLOBAL. +* mpi4py.MPI.UNIVERSE_SIZE: mpi4py MPI UNIVERSE_SIZE. +* mpi4py.MPI.APPNUM: mpi4py MPI APPNUM. +* mpi4py.MPI.LASTUSEDCODE: mpi4py MPI LASTUSEDCODE. +* mpi4py.MPI.WIN_BASE: mpi4py MPI WIN_BASE. +* mpi4py.MPI.WIN_SIZE: mpi4py MPI WIN_SIZE. +* mpi4py.MPI.WIN_DISP_UNIT: mpi4py MPI WIN_DISP_UNIT. +* mpi4py.MPI.WIN_CREATE_FLAVOR: mpi4py MPI WIN_CREATE_FLAVOR. +* mpi4py.MPI.WIN_FLAVOR: mpi4py MPI WIN_FLAVOR. +* mpi4py.MPI.WIN_MODEL: mpi4py MPI WIN_MODEL. +* mpi4py.MPI.SUCCESS: mpi4py MPI SUCCESS. +* mpi4py.MPI.ERR_LASTCODE: mpi4py MPI ERR_LASTCODE. +* mpi4py.MPI.ERR_TYPE: mpi4py MPI ERR_TYPE. +* mpi4py.MPI.ERR_REQUEST: mpi4py MPI ERR_REQUEST. +* mpi4py.MPI.ERR_OP: mpi4py MPI ERR_OP. +* mpi4py.MPI.ERR_GROUP: mpi4py MPI ERR_GROUP. +* mpi4py.MPI.ERR_INFO: mpi4py MPI ERR_INFO. +* mpi4py.MPI.ERR_ERRHANDLER: mpi4py MPI ERR_ERRHANDLER. +* mpi4py.MPI.ERR_SESSION: mpi4py MPI ERR_SESSION. +* mpi4py.MPI.ERR_COMM: mpi4py MPI ERR_COMM. +* mpi4py.MPI.ERR_WIN: mpi4py MPI ERR_WIN. +* mpi4py.MPI.ERR_FILE: mpi4py MPI ERR_FILE. +* mpi4py.MPI.ERR_BUFFER: mpi4py MPI ERR_BUFFER. +* mpi4py.MPI.ERR_COUNT: mpi4py MPI ERR_COUNT. +* mpi4py.MPI.ERR_TAG: mpi4py MPI ERR_TAG. +* mpi4py.MPI.ERR_RANK: mpi4py MPI ERR_RANK. +* mpi4py.MPI.ERR_ROOT: mpi4py MPI ERR_ROOT. +* mpi4py.MPI.ERR_TRUNCATE: mpi4py MPI ERR_TRUNCATE. +* mpi4py.MPI.ERR_IN_STATUS: mpi4py MPI ERR_IN_STATUS. +* mpi4py.MPI.ERR_PENDING: mpi4py MPI ERR_PENDING. +* mpi4py.MPI.ERR_TOPOLOGY: mpi4py MPI ERR_TOPOLOGY. +* mpi4py.MPI.ERR_DIMS: mpi4py MPI ERR_DIMS. +* mpi4py.MPI.ERR_ARG: mpi4py MPI ERR_ARG. +* mpi4py.MPI.ERR_OTHER: mpi4py MPI ERR_OTHER. +* mpi4py.MPI.ERR_UNKNOWN: mpi4py MPI ERR_UNKNOWN. +* mpi4py.MPI.ERR_INTERN: mpi4py MPI ERR_INTERN. +* mpi4py.MPI.ERR_KEYVAL: mpi4py MPI ERR_KEYVAL. +* mpi4py.MPI.ERR_NO_MEM: mpi4py MPI ERR_NO_MEM. +* mpi4py.MPI.ERR_INFO_KEY: mpi4py MPI ERR_INFO_KEY. +* mpi4py.MPI.ERR_INFO_VALUE: mpi4py MPI ERR_INFO_VALUE. +* mpi4py.MPI.ERR_INFO_NOKEY: mpi4py MPI ERR_INFO_NOKEY. +* mpi4py.MPI.ERR_SPAWN: mpi4py MPI ERR_SPAWN. +* mpi4py.MPI.ERR_PORT: mpi4py MPI ERR_PORT. +* mpi4py.MPI.ERR_SERVICE: mpi4py MPI ERR_SERVICE. +* mpi4py.MPI.ERR_NAME: mpi4py MPI ERR_NAME. +* mpi4py.MPI.ERR_PROC_ABORTED: mpi4py MPI ERR_PROC_ABORTED. +* mpi4py.MPI.ERR_BASE: mpi4py MPI ERR_BASE. +* mpi4py.MPI.ERR_SIZE: mpi4py MPI ERR_SIZE. +* mpi4py.MPI.ERR_DISP: mpi4py MPI ERR_DISP. +* mpi4py.MPI.ERR_ASSERT: mpi4py MPI ERR_ASSERT. +* mpi4py.MPI.ERR_LOCKTYPE: mpi4py MPI ERR_LOCKTYPE. +* mpi4py.MPI.ERR_RMA_CONFLICT: mpi4py MPI ERR_RMA_CONFLICT. +* mpi4py.MPI.ERR_RMA_SYNC: mpi4py MPI ERR_RMA_SYNC. +* mpi4py.MPI.ERR_RMA_RANGE: mpi4py MPI ERR_RMA_RANGE. +* mpi4py.MPI.ERR_RMA_ATTACH: mpi4py MPI ERR_RMA_ATTACH. +* mpi4py.MPI.ERR_RMA_SHARED: mpi4py MPI ERR_RMA_SHARED. +* mpi4py.MPI.ERR_RMA_FLAVOR: mpi4py MPI ERR_RMA_FLAVOR. +* mpi4py.MPI.ERR_BAD_FILE: mpi4py MPI ERR_BAD_FILE. +* mpi4py.MPI.ERR_NO_SUCH_FILE: mpi4py MPI ERR_NO_SUCH_FILE. +* mpi4py.MPI.ERR_FILE_EXISTS: mpi4py MPI ERR_FILE_EXISTS. +* mpi4py.MPI.ERR_FILE_IN_USE: mpi4py MPI ERR_FILE_IN_USE. +* mpi4py.MPI.ERR_AMODE: mpi4py MPI ERR_AMODE. +* mpi4py.MPI.ERR_ACCESS: mpi4py MPI ERR_ACCESS. +* mpi4py.MPI.ERR_READ_ONLY: mpi4py MPI ERR_READ_ONLY. +* mpi4py.MPI.ERR_NO_SPACE: mpi4py MPI ERR_NO_SPACE. +* mpi4py.MPI.ERR_QUOTA: mpi4py MPI ERR_QUOTA. +* mpi4py.MPI.ERR_NOT_SAME: mpi4py MPI ERR_NOT_SAME. +* mpi4py.MPI.ERR_IO: mpi4py MPI ERR_IO. +* mpi4py.MPI.ERR_UNSUPPORTED_OPERATION: mpi4py MPI ERR_UNSUPPORTED_OPERATION. +* mpi4py.MPI.ERR_UNSUPPORTED_DATAREP: mpi4py MPI ERR_UNSUPPORTED_DATAREP. +* mpi4py.MPI.ERR_CONVERSION: mpi4py MPI ERR_CONVERSION. +* mpi4py.MPI.ERR_DUP_DATAREP: mpi4py MPI ERR_DUP_DATAREP. +* mpi4py.MPI.ERR_VALUE_TOO_LARGE: mpi4py MPI ERR_VALUE_TOO_LARGE. +* mpi4py.MPI.ERR_REVOKED: mpi4py MPI ERR_REVOKED. +* mpi4py.MPI.ERR_PROC_FAILED: mpi4py MPI ERR_PROC_FAILED. +* mpi4py.MPI.ERR_PROC_FAILED_PENDING: mpi4py MPI ERR_PROC_FAILED_PENDING. +* mpi4py.MPI.ORDER_C: mpi4py MPI ORDER_C. +* mpi4py.MPI.ORDER_FORTRAN: mpi4py MPI ORDER_FORTRAN. +* mpi4py.MPI.ORDER_F: mpi4py MPI ORDER_F. +* mpi4py.MPI.TYPECLASS_INTEGER: mpi4py MPI TYPECLASS_INTEGER. +* mpi4py.MPI.TYPECLASS_REAL: mpi4py MPI TYPECLASS_REAL. +* mpi4py.MPI.TYPECLASS_COMPLEX: mpi4py MPI TYPECLASS_COMPLEX. +* mpi4py.MPI.DISTRIBUTE_NONE: mpi4py MPI DISTRIBUTE_NONE. +* mpi4py.MPI.DISTRIBUTE_BLOCK: mpi4py MPI DISTRIBUTE_BLOCK. +* mpi4py.MPI.DISTRIBUTE_CYCLIC: mpi4py MPI DISTRIBUTE_CYCLIC. +* mpi4py.MPI.DISTRIBUTE_DFLT_DARG: mpi4py MPI DISTRIBUTE_DFLT_DARG. +* mpi4py.MPI.COMBINER_NAMED: mpi4py MPI COMBINER_NAMED. +* mpi4py.MPI.COMBINER_DUP: mpi4py MPI COMBINER_DUP. +* mpi4py.MPI.COMBINER_CONTIGUOUS: mpi4py MPI COMBINER_CONTIGUOUS. +* mpi4py.MPI.COMBINER_VECTOR: mpi4py MPI COMBINER_VECTOR. +* mpi4py.MPI.COMBINER_HVECTOR: mpi4py MPI COMBINER_HVECTOR. +* mpi4py.MPI.COMBINER_INDEXED: mpi4py MPI COMBINER_INDEXED. +* mpi4py.MPI.COMBINER_HINDEXED: mpi4py MPI COMBINER_HINDEXED. +* mpi4py.MPI.COMBINER_INDEXED_BLOCK: mpi4py MPI COMBINER_INDEXED_BLOCK. +* mpi4py.MPI.COMBINER_HINDEXED_BLOCK: mpi4py MPI COMBINER_HINDEXED_BLOCK. +* mpi4py.MPI.COMBINER_STRUCT: mpi4py MPI COMBINER_STRUCT. +* mpi4py.MPI.COMBINER_SUBARRAY: mpi4py MPI COMBINER_SUBARRAY. +* mpi4py.MPI.COMBINER_DARRAY: mpi4py MPI COMBINER_DARRAY. +* mpi4py.MPI.COMBINER_RESIZED: mpi4py MPI COMBINER_RESIZED. +* mpi4py.MPI.COMBINER_VALUE_INDEX: mpi4py MPI COMBINER_VALUE_INDEX. +* mpi4py.MPI.COMBINER_F90_INTEGER: mpi4py MPI COMBINER_F90_INTEGER. +* mpi4py.MPI.COMBINER_F90_REAL: mpi4py MPI COMBINER_F90_REAL. +* mpi4py.MPI.COMBINER_F90_COMPLEX: mpi4py MPI COMBINER_F90_COMPLEX. +* mpi4py.MPI.F_SOURCE: mpi4py MPI F_SOURCE. +* mpi4py.MPI.F_TAG: mpi4py MPI F_TAG. +* mpi4py.MPI.F_ERROR: mpi4py MPI F_ERROR. +* mpi4py.MPI.F_STATUS_SIZE: mpi4py MPI F_STATUS_SIZE. +* mpi4py.MPI.IDENT: mpi4py MPI IDENT. +* mpi4py.MPI.CONGRUENT: mpi4py MPI CONGRUENT. +* mpi4py.MPI.SIMILAR: mpi4py MPI SIMILAR. +* mpi4py.MPI.UNEQUAL: mpi4py MPI UNEQUAL. +* mpi4py.MPI.CART: mpi4py MPI CART. +* mpi4py.MPI.GRAPH: mpi4py MPI GRAPH. +* mpi4py.MPI.DIST_GRAPH: mpi4py MPI DIST_GRAPH. +* mpi4py.MPI.UNWEIGHTED: mpi4py MPI UNWEIGHTED. +* mpi4py.MPI.WEIGHTS_EMPTY: mpi4py MPI WEIGHTS_EMPTY. +* mpi4py.MPI.COMM_TYPE_SHARED: mpi4py MPI COMM_TYPE_SHARED. +* mpi4py.MPI.COMM_TYPE_HW_GUIDED: mpi4py MPI COMM_TYPE_HW_GUIDED. +* mpi4py.MPI.COMM_TYPE_HW_UNGUIDED: mpi4py MPI COMM_TYPE_HW_UNGUIDED. +* mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED. +* mpi4py.MPI.BSEND_OVERHEAD: mpi4py MPI BSEND_OVERHEAD. +* mpi4py.MPI.BUFFER_AUTOMATIC: mpi4py MPI BUFFER_AUTOMATIC. +* mpi4py.MPI.WIN_FLAVOR_CREATE: mpi4py MPI WIN_FLAVOR_CREATE. +* mpi4py.MPI.WIN_FLAVOR_ALLOCATE: mpi4py MPI WIN_FLAVOR_ALLOCATE. +* mpi4py.MPI.WIN_FLAVOR_DYNAMIC: mpi4py MPI WIN_FLAVOR_DYNAMIC. +* mpi4py.MPI.WIN_FLAVOR_SHARED: mpi4py MPI WIN_FLAVOR_SHARED. +* mpi4py.MPI.WIN_SEPARATE: mpi4py MPI WIN_SEPARATE. +* mpi4py.MPI.WIN_UNIFIED: mpi4py MPI WIN_UNIFIED. +* mpi4py.MPI.MODE_NOCHECK: mpi4py MPI MODE_NOCHECK. +* mpi4py.MPI.MODE_NOSTORE: mpi4py MPI MODE_NOSTORE. +* mpi4py.MPI.MODE_NOPUT: mpi4py MPI MODE_NOPUT. +* mpi4py.MPI.MODE_NOPRECEDE: mpi4py MPI MODE_NOPRECEDE. +* mpi4py.MPI.MODE_NOSUCCEED: mpi4py MPI MODE_NOSUCCEED. +* mpi4py.MPI.LOCK_EXCLUSIVE: mpi4py MPI LOCK_EXCLUSIVE. +* mpi4py.MPI.LOCK_SHARED: mpi4py MPI LOCK_SHARED. +* mpi4py.MPI.MODE_RDONLY: mpi4py MPI MODE_RDONLY. +* mpi4py.MPI.MODE_WRONLY: mpi4py MPI MODE_WRONLY. +* mpi4py.MPI.MODE_RDWR: mpi4py MPI MODE_RDWR. +* mpi4py.MPI.MODE_CREATE: mpi4py MPI MODE_CREATE. +* mpi4py.MPI.MODE_EXCL: mpi4py MPI MODE_EXCL. +* mpi4py.MPI.MODE_DELETE_ON_CLOSE: mpi4py MPI MODE_DELETE_ON_CLOSE. +* mpi4py.MPI.MODE_UNIQUE_OPEN: mpi4py MPI MODE_UNIQUE_OPEN. +* mpi4py.MPI.MODE_SEQUENTIAL: mpi4py MPI MODE_SEQUENTIAL. +* mpi4py.MPI.MODE_APPEND: mpi4py MPI MODE_APPEND. +* mpi4py.MPI.SEEK_SET: mpi4py MPI SEEK_SET. +* mpi4py.MPI.SEEK_CUR: mpi4py MPI SEEK_CUR. +* mpi4py.MPI.SEEK_END: mpi4py MPI SEEK_END. +* mpi4py.MPI.DISPLACEMENT_CURRENT: mpi4py MPI DISPLACEMENT_CURRENT. +* mpi4py.MPI.DISP_CUR: mpi4py MPI DISP_CUR. +* mpi4py.MPI.THREAD_SINGLE: mpi4py MPI THREAD_SINGLE. +* mpi4py.MPI.THREAD_FUNNELED: mpi4py MPI THREAD_FUNNELED. +* mpi4py.MPI.THREAD_SERIALIZED: mpi4py MPI THREAD_SERIALIZED. +* mpi4py.MPI.THREAD_MULTIPLE: mpi4py MPI THREAD_MULTIPLE. +* mpi4py.MPI.VERSION: mpi4py MPI VERSION. +* mpi4py.MPI.SUBVERSION: mpi4py MPI SUBVERSION. +* mpi4py.MPI.MAX_PROCESSOR_NAME: mpi4py MPI MAX_PROCESSOR_NAME. +* mpi4py.MPI.MAX_ERROR_STRING: mpi4py MPI MAX_ERROR_STRING. +* mpi4py.MPI.MAX_PORT_NAME: mpi4py MPI MAX_PORT_NAME. +* mpi4py.MPI.MAX_INFO_KEY: mpi4py MPI MAX_INFO_KEY. +* mpi4py.MPI.MAX_INFO_VAL: mpi4py MPI MAX_INFO_VAL. +* mpi4py.MPI.MAX_OBJECT_NAME: mpi4py MPI MAX_OBJECT_NAME. +* mpi4py.MPI.MAX_DATAREP_STRING: mpi4py MPI MAX_DATAREP_STRING. +* mpi4py.MPI.MAX_LIBRARY_VERSION_STRING: mpi4py MPI MAX_LIBRARY_VERSION_STRING. +* mpi4py.MPI.MAX_PSET_NAME_LEN: mpi4py MPI MAX_PSET_NAME_LEN. +* mpi4py.MPI.MAX_STRINGTAG_LEN: mpi4py MPI MAX_STRINGTAG_LEN. +* mpi4py.MPI.DATATYPE_NULL: mpi4py MPI DATATYPE_NULL. +* mpi4py.MPI.PACKED: mpi4py MPI PACKED. +* mpi4py.MPI.BYTE: mpi4py MPI BYTE. +* mpi4py.MPI.AINT: mpi4py MPI AINT. +* mpi4py.MPI.OFFSET: mpi4py MPI OFFSET. +* mpi4py.MPI.COUNT: mpi4py MPI COUNT. +* mpi4py.MPI.CHAR: mpi4py MPI CHAR. +* mpi4py.MPI.WCHAR: mpi4py MPI WCHAR. +* mpi4py.MPI.SIGNED_CHAR: mpi4py MPI SIGNED_CHAR. +* mpi4py.MPI.SHORT: mpi4py MPI SHORT. +* mpi4py.MPI.INT: mpi4py MPI INT. +* mpi4py.MPI.LONG: mpi4py MPI LONG. +* mpi4py.MPI.LONG_LONG: mpi4py MPI LONG_LONG. +* mpi4py.MPI.UNSIGNED_CHAR: mpi4py MPI UNSIGNED_CHAR. +* mpi4py.MPI.UNSIGNED_SHORT: mpi4py MPI UNSIGNED_SHORT. +* mpi4py.MPI.UNSIGNED: mpi4py MPI UNSIGNED. +* mpi4py.MPI.UNSIGNED_LONG: mpi4py MPI UNSIGNED_LONG. +* mpi4py.MPI.UNSIGNED_LONG_LONG: mpi4py MPI UNSIGNED_LONG_LONG. +* mpi4py.MPI.FLOAT: mpi4py MPI FLOAT. +* mpi4py.MPI.DOUBLE: mpi4py MPI DOUBLE. +* mpi4py.MPI.LONG_DOUBLE: mpi4py MPI LONG_DOUBLE. +* mpi4py.MPI.C_BOOL: mpi4py MPI C_BOOL. +* mpi4py.MPI.INT8_T: mpi4py MPI INT8_T. +* mpi4py.MPI.INT16_T: mpi4py MPI INT16_T. +* mpi4py.MPI.INT32_T: mpi4py MPI INT32_T. +* mpi4py.MPI.INT64_T: mpi4py MPI INT64_T. +* mpi4py.MPI.UINT8_T: mpi4py MPI UINT8_T. +* mpi4py.MPI.UINT16_T: mpi4py MPI UINT16_T. +* mpi4py.MPI.UINT32_T: mpi4py MPI UINT32_T. +* mpi4py.MPI.UINT64_T: mpi4py MPI UINT64_T. +* mpi4py.MPI.C_COMPLEX: mpi4py MPI C_COMPLEX. +* mpi4py.MPI.C_FLOAT_COMPLEX: mpi4py MPI C_FLOAT_COMPLEX. +* mpi4py.MPI.C_DOUBLE_COMPLEX: mpi4py MPI C_DOUBLE_COMPLEX. +* mpi4py.MPI.C_LONG_DOUBLE_COMPLEX: mpi4py MPI C_LONG_DOUBLE_COMPLEX. +* mpi4py.MPI.CXX_BOOL: mpi4py MPI CXX_BOOL. +* mpi4py.MPI.CXX_FLOAT_COMPLEX: mpi4py MPI CXX_FLOAT_COMPLEX. +* mpi4py.MPI.CXX_DOUBLE_COMPLEX: mpi4py MPI CXX_DOUBLE_COMPLEX. +* mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX: mpi4py MPI CXX_LONG_DOUBLE_COMPLEX. +* mpi4py.MPI.SHORT_INT: mpi4py MPI SHORT_INT. +* mpi4py.MPI.INT_INT: mpi4py MPI INT_INT. +* mpi4py.MPI.TWOINT: mpi4py MPI TWOINT. +* mpi4py.MPI.LONG_INT: mpi4py MPI LONG_INT. +* mpi4py.MPI.FLOAT_INT: mpi4py MPI FLOAT_INT. +* mpi4py.MPI.DOUBLE_INT: mpi4py MPI DOUBLE_INT. +* mpi4py.MPI.LONG_DOUBLE_INT: mpi4py MPI LONG_DOUBLE_INT. +* mpi4py.MPI.CHARACTER: mpi4py MPI CHARACTER. +* mpi4py.MPI.LOGICAL: mpi4py MPI LOGICAL. +* mpi4py.MPI.INTEGER: mpi4py MPI INTEGER. +* mpi4py.MPI.REAL: mpi4py MPI REAL. +* mpi4py.MPI.DOUBLE_PRECISION: mpi4py MPI DOUBLE_PRECISION. +* mpi4py.MPI.COMPLEX: mpi4py MPI COMPLEX. +* mpi4py.MPI.DOUBLE_COMPLEX: mpi4py MPI DOUBLE_COMPLEX. +* mpi4py.MPI.LOGICAL1: mpi4py MPI LOGICAL1. +* mpi4py.MPI.LOGICAL2: mpi4py MPI LOGICAL2. +* mpi4py.MPI.LOGICAL4: mpi4py MPI LOGICAL4. +* mpi4py.MPI.LOGICAL8: mpi4py MPI LOGICAL8. +* mpi4py.MPI.INTEGER1: mpi4py MPI INTEGER1. +* mpi4py.MPI.INTEGER2: mpi4py MPI INTEGER2. +* mpi4py.MPI.INTEGER4: mpi4py MPI INTEGER4. +* mpi4py.MPI.INTEGER8: mpi4py MPI INTEGER8. +* mpi4py.MPI.INTEGER16: mpi4py MPI INTEGER16. +* mpi4py.MPI.REAL2: mpi4py MPI REAL2. +* mpi4py.MPI.REAL4: mpi4py MPI REAL4. +* mpi4py.MPI.REAL8: mpi4py MPI REAL8. +* mpi4py.MPI.REAL16: mpi4py MPI REAL16. +* mpi4py.MPI.COMPLEX4: mpi4py MPI COMPLEX4. +* mpi4py.MPI.COMPLEX8: mpi4py MPI COMPLEX8. +* mpi4py.MPI.COMPLEX16: mpi4py MPI COMPLEX16. +* mpi4py.MPI.COMPLEX32: mpi4py MPI COMPLEX32. +* mpi4py.MPI.UNSIGNED_INT: mpi4py MPI UNSIGNED_INT. +* mpi4py.MPI.SIGNED_SHORT: mpi4py MPI SIGNED_SHORT. +* mpi4py.MPI.SIGNED_INT: mpi4py MPI SIGNED_INT. +* mpi4py.MPI.SIGNED_LONG: mpi4py MPI SIGNED_LONG. +* mpi4py.MPI.SIGNED_LONG_LONG: mpi4py MPI SIGNED_LONG_LONG. +* mpi4py.MPI.BOOL: mpi4py MPI BOOL. +* mpi4py.MPI.SINT8_T: mpi4py MPI SINT8_T. +* mpi4py.MPI.SINT16_T: mpi4py MPI SINT16_T. +* mpi4py.MPI.SINT32_T: mpi4py MPI SINT32_T. +* mpi4py.MPI.SINT64_T: mpi4py MPI SINT64_T. +* mpi4py.MPI.F_BOOL: mpi4py MPI F_BOOL. +* mpi4py.MPI.F_INT: mpi4py MPI F_INT. +* mpi4py.MPI.F_FLOAT: mpi4py MPI F_FLOAT. +* mpi4py.MPI.F_DOUBLE: mpi4py MPI F_DOUBLE. +* mpi4py.MPI.F_COMPLEX: mpi4py MPI F_COMPLEX. +* mpi4py.MPI.F_FLOAT_COMPLEX: mpi4py MPI F_FLOAT_COMPLEX. +* mpi4py.MPI.F_DOUBLE_COMPLEX: mpi4py MPI F_DOUBLE_COMPLEX. +* mpi4py.MPI.REQUEST_NULL: mpi4py MPI REQUEST_NULL. +* mpi4py.MPI.MESSAGE_NULL: mpi4py MPI MESSAGE_NULL. +* mpi4py.MPI.MESSAGE_NO_PROC: mpi4py MPI MESSAGE_NO_PROC. +* mpi4py.MPI.OP_NULL: mpi4py MPI OP_NULL. +* mpi4py.MPI.MAX: mpi4py MPI MAX. +* mpi4py.MPI.MIN: mpi4py MPI MIN. +* mpi4py.MPI.SUM: mpi4py MPI SUM. +* mpi4py.MPI.PROD: mpi4py MPI PROD. +* mpi4py.MPI.LAND: mpi4py MPI LAND. +* mpi4py.MPI.BAND: mpi4py MPI BAND. +* mpi4py.MPI.LOR: mpi4py MPI LOR. +* mpi4py.MPI.BOR: mpi4py MPI BOR. +* mpi4py.MPI.LXOR: mpi4py MPI LXOR. +* mpi4py.MPI.BXOR: mpi4py MPI BXOR. +* mpi4py.MPI.MAXLOC: mpi4py MPI MAXLOC. +* mpi4py.MPI.MINLOC: mpi4py MPI MINLOC. +* mpi4py.MPI.REPLACE: mpi4py MPI REPLACE. +* mpi4py.MPI.NO_OP: mpi4py MPI NO_OP. +* mpi4py.MPI.GROUP_NULL: mpi4py MPI GROUP_NULL. +* mpi4py.MPI.GROUP_EMPTY: mpi4py MPI GROUP_EMPTY. +* mpi4py.MPI.INFO_NULL: mpi4py MPI INFO_NULL. +* mpi4py.MPI.INFO_ENV: mpi4py MPI INFO_ENV. +* mpi4py.MPI.ERRHANDLER_NULL: mpi4py MPI ERRHANDLER_NULL. +* mpi4py.MPI.ERRORS_RETURN: mpi4py MPI ERRORS_RETURN. +* mpi4py.MPI.ERRORS_ABORT: mpi4py MPI ERRORS_ABORT. +* mpi4py.MPI.ERRORS_ARE_FATAL: mpi4py MPI ERRORS_ARE_FATAL. +* mpi4py.MPI.SESSION_NULL: mpi4py MPI SESSION_NULL. +* mpi4py.MPI.COMM_NULL: mpi4py MPI COMM_NULL. +* mpi4py.MPI.COMM_SELF: mpi4py MPI COMM_SELF. +* mpi4py.MPI.COMM_WORLD: mpi4py MPI COMM_WORLD. +* mpi4py.MPI.WIN_NULL: mpi4py MPI WIN_NULL. +* mpi4py.MPI.FILE_NULL: mpi4py MPI FILE_NULL. +* mpi4py.MPI.pickle: mpi4py MPI pickle. + + +File: mpi4py.info, Node: mpi4py MPI BottomType, Next: mpi4py MPI BufferAutomaticType, Up: mpi4py MPI<2> + +11.1.1 mpi4py.MPI.BottomType +---------------------------- + + -- Class: mpi4py.MPI.BottomType + + Bases: int(1) + + Type of *note BOTTOM: fa. + + -- Method: static __new__ (cls) + + + Return type: Self(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + +File: mpi4py.info, Node: mpi4py MPI BufferAutomaticType, Next: mpi4py MPI Cartcomm, Prev: mpi4py MPI BottomType, Up: mpi4py MPI<2> + +11.1.2 mpi4py.MPI.BufferAutomaticType +------------------------------------- + + -- Class: mpi4py.MPI.BufferAutomaticType + + Bases: int(1) + + Type of *note BUFFER_AUTOMATIC: fe. + + -- Method: static __new__ (cls) + + + Return type: Self(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + +File: mpi4py.info, Node: mpi4py MPI Cartcomm, Next: mpi4py MPI Comm, Prev: mpi4py MPI BufferAutomaticType, Up: mpi4py MPI<2> + +11.1.3 mpi4py.MPI.Cartcomm +-------------------------- + + -- Class: mpi4py.MPI.Cartcomm + + Bases: *note Topocomm: d6. + + Cartesian topology intracommunicator. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Cartcomm: 33.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Get_cart_rank: 2c6.(coords)Translate logical coordinates to ranks. + + + *note Get_coords: 2c7.(rank)Translate ranks to logical coordinates. + + + *note Get_dim: 2c8.()Return number of dimensions. + + + *note Get_topo: 2c9.()Return information on the cartesian topology. + + + *note Shift: 2ca.(direction,Return a process ranks for data shifting with *note Sendrecv: 3c. + disp) + + *note Sub: 2cb.(remain_dims)Return a lower-dimensional Cartesian topology. + + + Attributes Summary + .................. + + *note coords: 2cc.Coordinates. + + + *note dim: 2cd.Number of dimensions. + + + *note dims: 2ce.Dimensions. + + + *note ndim: 2cf.Number of dimensions. + + + *note periods: 2d0.Periodicity. + + + *note topo: 2d1.Topology information. + + + Methods Documentation + ..................... + + -- Method: Get_cart_rank (coords) + + Translate logical coordinates to ranks. + + + Parameters: ‘coords’ (Sequence(3)‘[’int(4)‘]’) + + + Return type: int(5) + + -- Method: Get_coords (rank) + + Translate ranks to logical coordinates. + + + Parameters: ‘rank’ (int(6)) + + + Return type: list(7)[int(8)] + + -- Method: Get_dim () + + Return number of dimensions. + + + Return type: int(9) + + -- Method: Get_topo () + + Return information on the cartesian topology. + + + Return type: tuple(10)[list(11)[int(12)], list(13)[int(14)], + list(15)[int(16)]] + + -- Method: Shift (direction, disp) + + Return a process ranks for data shifting with *note Sendrecv: + 3c. + + + Parameters: + + * ‘direction’ (int(17)) + + * ‘disp’ (int(18)) + + + Return type: tuple(19)[int(20), int(21)] + + -- Method: Sub (remain_dims) + + Return a lower-dimensional Cartesian topology. + + + Parameters: ‘remain_dims’ (Sequence(22)‘[’bool(23)‘]’) + + + Return type: *note Cartcomm: 33. + + Attributes Documentation + ........................ + + -- Attribute: coords + + Coordinates. + + -- Attribute: dim + + Number of dimensions. + + -- Attribute: dims + + Dimensions. + + -- Attribute: ndim + + Number of dimensions. + + -- Attribute: periods + + Periodicity. + + -- Attribute: topo + + Topology information. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/typing.html#typing.Sequence + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/stdtypes.html#list + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/stdtypes.html#tuple + + (11) https://docs.python.org/3/library/stdtypes.html#list + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/stdtypes.html#list + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/stdtypes.html#list + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/stdtypes.html#tuple + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/typing.html#typing.Sequence + + (23) https://docs.python.org/3/library/functions.html#bool + + +File: mpi4py.info, Node: mpi4py MPI Comm, Next: mpi4py MPI Datatype, Prev: mpi4py MPI Cartcomm, Up: mpi4py MPI<2> + +11.1.4 mpi4py.MPI.Comm +---------------------- + + -- Class: mpi4py.MPI.Comm + + Bases: object(1) + + Communication context. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Comm: 1e.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Abort: 2d5.([errorcode])Terminate the MPI execution environment. + + + *note Ack_failed: 2d6.([num_to_ack])Acknowledge failures on a communicator. + + + *note Agree: 2d7.(flag)Blocking agreement. + + + *note Allgather: 50.(sendbuf,Gather to All. + recvbuf) + + *note Allgather_init: 2d8.(sendbuf,Persistent Gather to All. + recvbuf[, + info]) + + *note Allgatherv: 59.(sendbuf,Gather to All Vector. + recvbuf) + + *note Allgatherv_init: 2d9.(sendbuf,Persistent Gather to All Vector. + recvbuf[, + info]) + + *note Allreduce: 5e.(sendbuf,Reduce to All. + recvbuf[, + op]) + + *note Allreduce_init: 2da.(sendbuf,Persistent Reduce to All. + recvbuf[, + op, info]) + + *note Alltoall: 51.(sendbuf,All to All Scatter/Gather. + recvbuf) + + *note Alltoall_init: 2db.(sendbuf,Persistent All to All Scatter/Gather. + recvbuf[, + info]) + + *note Alltoallv: 5a.(sendbuf,All to All Scatter/Gather Vector. + recvbuf) + + *note Alltoallv_init: 2dc.(sendbuf,Persistent All to All Scatter/Gather Vector. + recvbuf[, + info]) + + *note Alltoallw: 5b.(sendbuf,All to All Scatter/Gather General. + recvbuf) + + *note Alltoallw_init: 2dd.(sendbuf,Persistent All to All Scatter/Gather General. + recvbuf[, + info]) + + *note Attach_buffer: 2de.(buf)Attach a user-provided buffer for sending in buffered mode. + + + *note Barrier: 22e.()Barrier synchronization. + + + *note Barrier_init: 2df.([info])Persistent Barrier. + + + *note Bcast: 4d.(buf[,Broadcast data from one process to all other processes. + root]) + + *note Bcast_init: 2e0.(buf[,Persistent Broadcast. + root, info]) + + *note Bsend: 2e1.(buf,Blocking send in buffered mode. + dest[, tag]) + + *note Bsend_init: 2e2.(buf,Persistent request for a send in buffered mode. + dest[, tag]) + + *note Call_errhandler: 2e3.(errorcode)Call the error handler installed on a communicator. + + + *note Clone: 2e.()Clone an existing communicator. + + + *note Compare: 2e4.(comm)Compare two communicators. + + + *note Create: 2c.(group)Create communicator from group. + + + *note Create_errhandler: 9d.(errhandler_fn)Create a new error handler for communicators. + + + *note Create_keyval: 2e5.([copy_fn,Create a new attribute key for communicators. + delete_fn, + nopython]) + + *note Delete_attr: 2e6.(keyval)Delete attribute value associated with a key. + + + *note Detach_buffer: 2e7.()Remove an existing attached buffer. + + + *note Disconnect: 72.()Disconnect from a communicator. + + + *note Dup: 2f.([info])Duplicate a communicator. + + + *note Dup_with_info: 2e8.(info)Duplicate a communicator with hints. + + + *note Flush_buffer: 2e9.()Block until all buffered messages have been transmitted. + + + *note Free: 2ea.()Free a communicator. + + + *note Free_keyval: 2eb.(keyval)Free an attribute key for communicators. + + + *note Gather: 4f.(sendbuf,Gather data to one process from all other processes. + recvbuf[, + root]) + + *note Gather_init: 2ec.(sendbuf,Persistent Gather. + recvbuf[, + root, info]) + + *note Gatherv: 58.(sendbuf,Gather Vector. + recvbuf[, + root]) + + *note Gatherv_init: 2ed.(sendbuf,Persistent Gather Vector. + recvbuf[, + root, info]) + + *note Get_attr: 94.(keyval)Retrieve attribute value by key. + + + *note Get_errhandler: 9c.()Get the error handler for a communicator. + + + *note Get_failed: 2ee.()Extract the group of failed processes. + + + *note Get_group: 27.()Access the group associated with a communicator. + + + *note Get_info: 2ef.()Return the current hints for a communicator. + + + *note Get_name: 2f0.()Get the print name for this communicator. + + + *note Get_parent: 6c.()Return the parent intercommunicator for this process. + + + *note Get_rank: 26.()Return the rank of this process in a communicator. + + + *note Get_size: 25.()Return the number of processes in a communicator. + + + *note Get_topology: 2f1.()Return the type of topology (if any) associated with a communicator. + + + *note Iagree: 2f2.(flag)Nonblocking agreement. + + + *note Iallgather: 2f3.(sendbuf,Nonblocking Gather to All. + recvbuf) + + *note Iallgatherv: 2f4.(sendbuf,Nonblocking Gather to All Vector. + recvbuf) + + *note Iallreduce: 2f5.(sendbuf,Nonblocking Reduce to All. + recvbuf[, + op]) + + *note Ialltoall: 2f6.(sendbuf,Nonblocking All to All Scatter/Gather. + recvbuf) + + *note Ialltoallv: 2f7.(sendbuf,Nonblocking All to All Scatter/Gather Vector. + recvbuf) + + *note Ialltoallw: 2f8.(sendbuf,Nonblocking All to All Scatter/Gather General. + recvbuf) + + *note Ibarrier: 2f9.()Nonblocking Barrier. + + + *note Ibcast: 2fa.(buf[,Nonblocking Broadcast. + root]) + + *note Ibsend: 2fb.(buf,Nonblocking send in buffered mode. + dest[, tag]) + + *note Idup: 2fc.([info])Nonblocking duplicate a communicator. + + + *note Idup_with_info: 2fd.(info)Nonblocking duplicate a communicator with hints. + + + *note Iflush_buffer: 2fe.()Nonblocking flush for buffered messages. + + + *note Igather: 2ff.(sendbuf,Nonblocking Gather. + recvbuf[, + root]) + + *note Igatherv: 300.(sendbuf,Nonblocking Gather Vector. + recvbuf[, + root]) + + *note Improbe: 301.([source,Nonblocking test for a matched message. + tag, + status]) + + *note Iprobe: 302.([source,Nonblocking test for a message. + tag, + status]) + + *note Irecv: 42.(buf[,Nonblocking receive. + source, + tag]) + + *note Ireduce: 303.(sendbuf,Nonblocking Reduce to Root. + recvbuf[, + op, root]) + + *note Ireduce_scatter: 304.(sendbuf,Nonblocking Reduce-Scatter (vector version). + recvbuf[, + ...]) + + *note Ireduce_scatter_block: 305.(sendbuf,Nonblocking Reduce-Scatter Block (regular, non-vector version). + recvbuf[, + op]) + + *note Irsend: 306.(buf,Nonblocking send in ready mode. + dest[, tag]) + + *note Is_inter: 21.()Return whether the communicator is an intercommunicator. + + + *note Is_intra: 22.()Return whether the communicator is an intracommunicator. + + + *note Is_revoked: 307.()Indicate whether the communicator has been revoked. + + + *note Iscatter: 308.(sendbuf,Nonblocking Scatter. + recvbuf[, + root]) + + *note Iscatterv: 309.(sendbuf,Nonblocking Scatter Vector. + recvbuf[, + root]) + + *note Isend: 41.(buf,Nonblocking send. + dest[, tag]) + + *note Isendrecv: 30a.(sendbuf,Nonblocking send and receive. + dest[, + sendtag, + recvbuf, + ...]) + + *note Isendrecv_replace: 30b.(buf,Send and receive a message. + dest[, + sendtag, + ...]) + + *note Ishrink: 30c.()Nonblocking shrink a communicator to remove all failed processes. + + + *note Issend: 30d.(buf,Nonblocking send in synchronous mode. + dest[, tag]) + + *note Join: 30e.(fd)Interconnect two processes connected by a socket. + + + *note Mprobe: 30f.([source,Blocking test for a matched message. + tag, + status]) + + *note Precv_init: 310.(buf,Create request for a partitioned recv operation. + partitions[, + source, tag, + info]) + + *note Probe: 311.([source,Blocking test for a message. + tag, + status]) + + *note Psend_init: 312.(buf,Create request for a partitioned send operation. + partitions, + dest[, tag, + info]) + + *note Recv: 3b.(buf[,Blocking receive. + source, tag, + status]) + + *note Recv_init: 49.(buf[,Create a persistent request for a receive. + source, + tag]) + + *note Reduce: 5c.(sendbuf,Reduce to Root. + recvbuf[, + op, root]) + + *note Reduce_init: 313.(sendbuf,Persistent Reduce to Root. + recvbuf[, + op, root, + info]) + + *note Reduce_scatter: 5d.(sendbuf,Reduce-Scatter (vector version). + recvbuf[, + ...]) + + *note Reduce_scatter_block: 314.(sendbuf,Reduce-Scatter Block (regular, non-vector version). + recvbuf[, + op]) + + *note Reduce_scatter_block_init: 315.(sendbuf,Persistent Reduce-Scatter Block (regular, non-vector version). + recvbuf) + + *note Reduce_scatter_init: 316.(sendbuf,Persistent Reduce-Scatter (vector version). + recvbuf[, + ...]) + + *note Revoke: 317.()Revoke a communicator. + + + *note Rsend: 318.(buf,Blocking send in ready mode. + dest[, tag]) + + *note Rsend_init: 319.(buf,Persistent request for a send in ready mode. + dest[, tag]) + + *note Scatter: 4e.(sendbuf,Scatter data from one process to all other processes. + recvbuf[, + root]) + + *note Scatter_init: 31a.(sendbuf,Persistent Scatter. + recvbuf[, + root, info]) + + *note Scatterv: 57.(sendbuf,Scatter Vector. + recvbuf[, + root]) + + *note Scatterv_init: 31b.(sendbuf,Persistent Scatter Vector. + recvbuf[, + root, info]) + + *note Send: 3a.(buf,Blocking send. + dest[, tag]) + + *note Send_init: 48.(buf,Create a persistent request for a standard send. + dest[, tag]) + + *note Sendrecv: 3c.(sendbuf,Send and receive a message. + dest[, + sendtag, + recvbuf, + ...]) + + *note Sendrecv_replace: 31c.(buf,Send and receive a message. + dest[, + sendtag, + ...]) + + *note Set_attr: 31d.(keyval,Store attribute value associated with a key. + attrval) + + *note Set_errhandler: 9b.(errhandler)Set the error handler for a communicator. + + + *note Set_info: 31e.(info)Set new values for the hints associated with a communicator. + + + *note Set_name: 31f.(name)Set the print name for this communicator. + + + *note Shrink: 320.()Shrink a communicator to remove all failed processes. + + + *note Split: 30.([color,Split communicator by color and key. + key]) + + *note Split_type: 321.(split_type[,Split communicator by split type. + key, info]) + + *note Ssend: 322.(buf,Blocking send in synchronous mode. + dest[, tag]) + + *note Ssend_init: 323.(buf,Persistent request for a send in synchronous mode. + dest[, tag]) + + *note allgather: 55.(sendobj)Gather to All. + + + *note allreduce: 62.(sendobj[,Reduce to All. + op]) + + *note alltoall: 56.(sendobj)All to All Scatter/Gather. + + + *note barrier: 324.()Barrier synchronization. + + + *note bcast: 52.(obj[,Broadcast. + root]) + + *note bsend: 325.(obj,Send in buffered mode. + dest[, tag]) + + *note f2py: 326.(arg) + + *note free: 327.()Call *note Free: 2ea. if not null or predefined. + + + *note fromhandle: 328.(handle)Create object from MPI handle. + + + *note gather: 54.(sendobj[,Gather. + root]) + + *note ibsend: 329.(obj,Nonblocking send in buffered mode. + dest[, tag]) + + *note improbe: 32a.([source,Nonblocking test for a matched message. + tag, + status]) + + *note iprobe: 32b.([source,Nonblocking test for a message. + tag, + status]) + + *note irecv: a2.([buf,Nonblocking receive. + source, + tag]) + + *note isend: a1.(obj,Nonblocking send. + dest[, tag]) + + *note issend: 32c.(obj,Nonblocking send in synchronous mode. + dest[, tag]) + + *note mprobe: 32d.([source,Blocking test for a matched message. + tag, + status]) + + *note probe: 32e.([source,Blocking test for a message. + tag, + status]) + + *note py2f: 32f.() + + *note recv: 3e.([buf,Receive. + source, tag, + status]) + + *note reduce: 61.(sendobj[,Reduce to Root. + op, root]) + + *note scatter: 53.(sendobj[,Scatter. + root]) + + *note send: 3d.(obj,Send in standard mode. + dest[, tag]) + + *note sendrecv: 3f.(sendobj,Send and Receive. + dest[, + sendtag, + recvbuf, + ...]) + + *note ssend: 330.(obj,Send in synchronous mode. + dest[, tag]) + + Attributes Summary + .................. + + *note group: 331.Group. + + + *note handle: 332.MPI handle. + + + *note info: 333.Info hints. + + + *note is_inter: 334.Is intercommunicator. + + + *note is_intra: 335.Is intracommunicator. + + + *note is_topo: 336.Is a topology. + + + *note name: 337.Print name. + + + *note rank: 338.Rank of this process. + + + *note size: a5.Number of processes. + + + *note topology: 339.Topology type. + + + Methods Documentation + ..................... + + -- Method: Abort (errorcode=0) + + Terminate the MPI execution environment. + + Warning: The invocation of this method prevents the + execution of various Python exit and cleanup mechanisms. + Use this method as a last resort to prevent parallel + deadlocks in case of unrecoverable errors. + + + Parameters: ‘errorcode’ (int(4)) + + + Return type: NoReturn(5) + + -- Method: Ack_failed (num_to_ack=None) + + Acknowledge failures on a communicator. + + + Parameters: ‘num_to_ack’ (int(6)‘ | ’None(7)) + + + Return type: int(8) + + -- Method: Agree (flag) + + Blocking agreement. + + + Parameters: ‘flag’ (int(9)) + + + Return type: int(10) + + -- Method: Allgather (sendbuf, recvbuf) + + Gather to All. + + Gather data from all processes and broadcast the combined data + to all other processes. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: None(11) + + -- Method: Allgather_init (sendbuf, recvbuf, info=INFO_NULL) + + Persistent Gather to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Allgatherv (sendbuf, recvbuf) + + Gather to All Vector. + + Gather data from all processes and send it to all other + processes providing different amounts of data and + displacements. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: None(12) + + -- Method: Allgatherv_init (sendbuf, recvbuf, info=INFO_NULL) + + Persistent Gather to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Allreduce (sendbuf, recvbuf, op=SUM) + + Reduce to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + + Return type: None(13) + + -- Method: Allreduce_init (sendbuf, recvbuf, op=SUM, + info=INFO_NULL) + + Persistent Reduce to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Alltoall (sendbuf, recvbuf) + + All to All Scatter/Gather. + + Send data to all processes and recv data from all processes. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: None(14) + + -- Method: Alltoall_init (sendbuf, recvbuf, info=INFO_NULL) + + Persistent All to All Scatter/Gather. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Alltoallv (sendbuf, recvbuf) + + All to All Scatter/Gather Vector. + + Send data to all processes and recv data from all processes + providing different amounts of data and displacements. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: None(15) + + -- Method: Alltoallv_init (sendbuf, recvbuf, info=INFO_NULL) + + Persistent All to All Scatter/Gather Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Alltoallw (sendbuf, recvbuf) + + All to All Scatter/Gather General. + + Send/recv data to/from all processes allowing the + specification of different counts, displacements, and + datatypes for each dest/source. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecW: 215.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecW: 215.) + + + Return type: None(16) + + -- Method: Alltoallw_init (sendbuf, recvbuf, info=INFO_NULL) + + Persistent All to All Scatter/Gather General. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecW: 215.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecW: 215.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Attach_buffer (buf) + + Attach a user-provided buffer for sending in buffered mode. + + + Parameters: ‘buf’ (*note Buffer: 20a.‘ | ’None(17)) + + + Return type: None(18) + + -- Method: Barrier () + + Barrier synchronization. + + + Return type: None(19) + + -- Method: Barrier_init (info=INFO_NULL) + + Persistent Barrier. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Bcast (buf, root=0) + + Broadcast data from one process to all other processes. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘root’ (int(20)) + + + Return type: None(21) + + -- Method: Bcast_init (buf, root=0, info=INFO_NULL) + + Persistent Broadcast. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘root’ (int(22)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Bsend (buf, dest, tag=0) + + Blocking send in buffered mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(23)) + + * ‘tag’ (int(24)) + + + Return type: None(25) + + -- Method: Bsend_init (buf, dest, tag=0) + + Persistent request for a send in buffered mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(26)) + + * ‘tag’ (int(27)) + + + Return type: *note Request: 43. + + -- Method: Call_errhandler (errorcode) + + Call the error handler installed on a communicator. + + + Parameters: ‘errorcode’ (int(28)) + + + Return type: None(29) + + -- Method: Clone () + + Clone an existing communicator. + + + Return type: Self(30) + + -- Method: Compare (comm) + + Compare two communicators. + + + Parameters: ‘comm’ (*note Comm: 1e.) + + + Return type: int(31) + + -- Method: Create (group) + + Create communicator from group. + + + Parameters: ‘group’ (*note Group: 28.) + + + Return type: *note Comm: 1e. + + -- Method: classmethod Create_errhandler (errhandler_fn) + + Create a new error handler for communicators. + + + Parameters: ‘errhandler_fn’ (Callable(32)‘[’‘[’*note Comm: + 1e.‘, ’int(33)‘]’‘, ’None(34)‘]’) + + + Return type: *note Errhandler: d8. + + -- Method: classmethod Create_keyval (copy_fn=None, + delete_fn=None, nopython=False) + + Create a new attribute key for communicators. + + + Parameters: + + * ‘copy_fn’ (Callable(35)‘[’‘[’*note Comm: 1e.‘, ’int(36)‘, + ’Any(37)‘]’‘, ’Any(38)‘] ’‘| ’None(39)) + + * ‘delete_fn’ (Callable(40)‘[’‘[’*note Comm: 1e.‘, + ’int(41)‘, ’Any(42)‘]’‘, ’None(43)‘] ’‘| ’None(44)) + + * ‘nopython’ (bool(45)) + + + Return type: int(46) + + -- Method: Delete_attr (keyval) + + Delete attribute value associated with a key. + + + Parameters: ‘keyval’ (int(47)) + + + Return type: None(48) + + -- Method: Detach_buffer () + + Remove an existing attached buffer. + + + Return type: *note Buffer: 20a. | None(49) + + -- Method: Disconnect () + + Disconnect from a communicator. + + + Return type: None(50) + + -- Method: Dup (info=None) + + Duplicate a communicator. + + + Parameters: ‘info’ (*note Info: d4.‘ | ’None(51)) + + + Return type: Self(52) + + -- Method: Dup_with_info (info) + + Duplicate a communicator with hints. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: Self(53) + + -- Method: Flush_buffer () + + Block until all buffered messages have been transmitted. + + + Return type: None(54) + + -- Method: Free () + + Free a communicator. + + + Return type: None(55) + + -- Method: classmethod Free_keyval (keyval) + + Free an attribute key for communicators. + + + Parameters: ‘keyval’ (int(56)) + + + Return type: int(57) + + -- Method: Gather (sendbuf, recvbuf, root=0) + + Gather data to one process from all other processes. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.‘ | ’None(58)) + + * ‘root’ (int(59)) + + + Return type: None(60) + + -- Method: Gather_init (sendbuf, recvbuf, root=0, info=INFO_NULL) + + Persistent Gather. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.‘ | ’None(61)) + + * ‘root’ (int(62)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Gatherv (sendbuf, recvbuf, root=0) + + Gather Vector. + + Gather data to one process from all other processes providing + different amounts of data and displacements. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.‘ | ’None(63)) + + * ‘root’ (int(64)) + + + Return type: None(65) + + -- Method: Gatherv_init (sendbuf, recvbuf, root=0, info=INFO_NULL) + + Persistent Gather Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.‘ | ’None(66)) + + * ‘root’ (int(67)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Get_attr (keyval) + + Retrieve attribute value by key. + + + Parameters: ‘keyval’ (int(68)) + + + Return type: int(69) | Any(70) | None(71) + + -- Method: Get_errhandler () + + Get the error handler for a communicator. + + + Return type: *note Errhandler: d8. + + -- Method: Get_failed () + + Extract the group of failed processes. + + + Return type: *note Group: 28. + + -- Method: Get_group () + + Access the group associated with a communicator. + + + Return type: *note Group: 28. + + -- Method: Get_info () + + Return the current hints for a communicator. + + + Return type: *note Info: d4. + + -- Method: Get_name () + + Get the print name for this communicator. + + + Return type: str(72) + + -- Method: classmethod Get_parent () + + Return the parent intercommunicator for this process. + + + Return type: *note Intercomm: 20. + + -- Method: Get_rank () + + Return the rank of this process in a communicator. + + + Return type: int(73) + + -- Method: Get_size () + + Return the number of processes in a communicator. + + + Return type: int(74) + + -- Method: Get_topology () + + Return the type of topology (if any) associated with a + communicator. + + + Return type: int(75) + + -- Method: Iagree (flag) + + Nonblocking agreement. + + + Parameters: ‘flag’ (*note Buffer: 20a.) + + + Return type: *note Request: 43. + + -- Method: Iallgather (sendbuf, recvbuf) + + Nonblocking Gather to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: *note Request: 43. + + -- Method: Iallgatherv (sendbuf, recvbuf) + + Nonblocking Gather to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: *note Request: 43. + + -- Method: Iallreduce (sendbuf, recvbuf, op=SUM) + + Nonblocking Reduce to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Ialltoall (sendbuf, recvbuf) + + Nonblocking All to All Scatter/Gather. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: *note Request: 43. + + -- Method: Ialltoallv (sendbuf, recvbuf) + + Nonblocking All to All Scatter/Gather Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: *note Request: 43. + + -- Method: Ialltoallw (sendbuf, recvbuf) + + Nonblocking All to All Scatter/Gather General. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecW: 215.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecW: 215.) + + + Return type: *note Request: 43. + + -- Method: Ibarrier () + + Nonblocking Barrier. + + + Return type: *note Request: 43. + + -- Method: Ibcast (buf, root=0) + + Nonblocking Broadcast. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘root’ (int(76)) + + + Return type: *note Request: 43. + + -- Method: Ibsend (buf, dest, tag=0) + + Nonblocking send in buffered mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(77)) + + * ‘tag’ (int(78)) + + + Return type: *note Request: 43. + + -- Method: Idup (info=None) + + Nonblocking duplicate a communicator. + + + Parameters: ‘info’ (*note Info: d4.‘ | ’None(79)) + + + Return type: tuple(80)[Self(81), *note Request: 43.] + + -- Method: Idup_with_info (info) + + Nonblocking duplicate a communicator with hints. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: tuple(82)[Self(83), *note Request: 43.] + + -- Method: Iflush_buffer () + + Nonblocking flush for buffered messages. + + + Return type: *note Request: 43. + + -- Method: Igather (sendbuf, recvbuf, root=0) + + Nonblocking Gather. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecB: 213.‘ | ’None(84)) + + * ‘root’ (int(85)) + + + Return type: *note Request: 43. + + -- Method: Igatherv (sendbuf, recvbuf, root=0) + + Nonblocking Gather Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpecV: 214.‘ | ’None(86)) + + * ‘root’ (int(87)) + + + Return type: *note Request: 43. + + -- Method: Improbe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Nonblocking test for a matched message. + + + Parameters: + + * ‘source’ (int(88)) + + * ‘tag’ (int(89)) + + * ‘status’ (*note Status: d1.‘ | ’None(90)) + + + Return type: *note Message: d7. | None(91) + + -- Method: Iprobe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Nonblocking test for a message. + + + Parameters: + + * ‘source’ (int(92)) + + * ‘tag’ (int(93)) + + * ‘status’ (*note Status: d1.‘ | ’None(94)) + + + Return type: bool(95) + + -- Method: Irecv (buf, source=ANY_SOURCE, tag=ANY_TAG) + + Nonblocking receive. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘source’ (int(96)) + + * ‘tag’ (int(97)) + + + Return type: *note Request: 43. + + -- Method: Ireduce (sendbuf, recvbuf, op=SUM, root=0) + + Nonblocking Reduce to Root. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’None(98)) + + * ‘op’ (*note Op: d3.) + + * ‘root’ (int(99)) + + + Return type: *note Request: 43. + + -- Method: Ireduce_scatter (sendbuf, recvbuf, recvcounts=None, + op=SUM) + + Nonblocking Reduce-Scatter (vector version). + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘recvcounts’ (‘Sequence’‘[’int(100)‘] ’‘| ’None(101)) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Ireduce_scatter_block (sendbuf, recvbuf, op=SUM) + + Nonblocking Reduce-Scatter Block (regular, non-vector + version). + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note BufSpecB: 213.) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Irsend (buf, dest, tag=0) + + Nonblocking send in ready mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(102)) + + * ‘tag’ (int(103)) + + + Return type: *note Request: 43. + + -- Method: Is_inter () + + Return whether the communicator is an intercommunicator. + + + Return type: bool(104) + + -- Method: Is_intra () + + Return whether the communicator is an intracommunicator. + + + Return type: bool(105) + + -- Method: Is_revoked () + + Indicate whether the communicator has been revoked. + + + Return type: bool(106) + + -- Method: Iscatter (sendbuf, recvbuf, root=0) + + Nonblocking Scatter. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’None(107)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘root’ (int(108)) + + + Return type: *note Request: 43. + + -- Method: Iscatterv (sendbuf, recvbuf, root=0) + + Nonblocking Scatter Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.‘ | ’None(109)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘root’ (int(110)) + + + Return type: *note Request: 43. + + -- Method: Isend (buf, dest, tag=0) + + Nonblocking send. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(111)) + + * ‘tag’ (int(112)) + + + Return type: *note Request: 43. + + -- Method: Isendrecv (sendbuf, dest, sendtag=0, recvbuf=None, + source=ANY_SOURCE, recvtag=ANY_TAG) + + Nonblocking send and receive. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘dest’ (int(113)) + + * ‘sendtag’ (int(114)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’None(115)) + + * ‘source’ (int(116)) + + * ‘recvtag’ (int(117)) + + + Return type: *note Request: 43. + + -- Method: Isendrecv_replace (buf, dest, sendtag=0, + source=ANY_SOURCE, recvtag=ANY_TAG) + + Send and receive a message. + + Note: This function is guaranteed not to deadlock in + situations where pairs of blocking sends and receives may + deadlock. + + Caution: A common mistake when using this function is to + mismatch the tags with the source and destination ranks, + which can result in deadlock. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(118)) + + * ‘sendtag’ (int(119)) + + * ‘source’ (int(120)) + + * ‘recvtag’ (int(121)) + + + Return type: *note Request: 43. + + -- Method: Ishrink () + + Nonblocking shrink a communicator to remove all failed + processes. + + + Return type: tuple(122)[*note Comm: 1e, *note Request: 43.] + + -- Method: Issend (buf, dest, tag=0) + + Nonblocking send in synchronous mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(123)) + + * ‘tag’ (int(124)) + + + Return type: *note Request: 43. + + -- Method: classmethod Join (fd) + + Interconnect two processes connected by a socket. + + + Parameters: ‘fd’ (int(125)) + + + Return type: *note Intercomm: 20. + + -- Method: Mprobe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Blocking test for a matched message. + + + Parameters: + + * ‘source’ (int(126)) + + * ‘tag’ (int(127)) + + * ‘status’ (*note Status: d1.‘ | ’None(128)) + + + Return type: *note Message: d7. + + -- Method: Precv_init (buf, partitions, source=ANY_SOURCE, + tag=ANY_TAG, info=INFO_NULL) + + Create request for a partitioned recv operation. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘partitions’ (int(129)) + + * ‘source’ (int(130)) + + * ‘tag’ (int(131)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Probe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Blocking test for a message. + + Note: This function blocks until the message arrives. + + + Parameters: + + * ‘source’ (int(132)) + + * ‘tag’ (int(133)) + + * ‘status’ (*note Status: d1.‘ | ’None(134)) + + + Return type: Literal(135)[True] + + -- Method: Psend_init (buf, partitions, dest, tag=0, + info=INFO_NULL) + + Create request for a partitioned send operation. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘partitions’ (int(136)) + + * ‘dest’ (int(137)) + + * ‘tag’ (int(138)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Recv (buf, source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Blocking receive. + + Note: This function blocks until the message is received. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘source’ (int(139)) + + * ‘tag’ (int(140)) + + * ‘status’ (*note Status: d1.‘ | ’None(141)) + + + Return type: None(142) + + -- Method: Recv_init (buf, source=ANY_SOURCE, tag=ANY_TAG) + + Create a persistent request for a receive. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘source’ (int(143)) + + * ‘tag’ (int(144)) + + + Return type: *note Prequest: 4a. + + -- Method: Reduce (sendbuf, recvbuf, op=SUM, root=0) + + Reduce to Root. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’None(145)) + + * ‘op’ (*note Op: d3.) + + * ‘root’ (int(146)) + + + Return type: None(147) + + -- Method: Reduce_init (sendbuf, recvbuf, op=SUM, root=0, + info=INFO_NULL) + + Persistent Reduce to Root. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’None(148)) + + * ‘op’ (*note Op: d3.) + + * ‘root’ (int(149)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Reduce_scatter (sendbuf, recvbuf, recvcounts=None, + op=SUM) + + Reduce-Scatter (vector version). + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘recvcounts’ (‘Sequence’‘[’int(150)‘] ’‘| ’None(151)) + + * ‘op’ (*note Op: d3.) + + + Return type: None(152) + + -- Method: Reduce_scatter_block (sendbuf, recvbuf, op=SUM) + + Reduce-Scatter Block (regular, non-vector version). + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note BufSpecB: 213.) + + * ‘op’ (*note Op: d3.) + + + Return type: None(153) + + -- Method: Reduce_scatter_block_init (sendbuf, recvbuf, op=SUM, + info=INFO_NULL) + + Persistent Reduce-Scatter Block (regular, non-vector version). + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note BufSpecB: 213.) + + * ‘op’ (*note Op: d3.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Reduce_scatter_init (sendbuf, recvbuf, recvcounts=None, + op=SUM, info=INFO_NULL) + + Persistent Reduce-Scatter (vector version). + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘recvcounts’ (‘Sequence’‘[’int(154)‘] ’‘| ’None(155)) + + * ‘op’ (*note Op: d3.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Revoke () + + Revoke a communicator. + + + Return type: None(156) + + -- Method: Rsend (buf, dest, tag=0) + + Blocking send in ready mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(157)) + + * ‘tag’ (int(158)) + + + Return type: None(159) + + -- Method: Rsend_init (buf, dest, tag=0) + + Persistent request for a send in ready mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(160)) + + * ‘tag’ (int(161)) + + + Return type: *note Request: 43. + + -- Method: Scatter (sendbuf, recvbuf, root=0) + + Scatter data from one process to all other processes. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’None(162)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘root’ (int(163)) + + + Return type: None(164) + + -- Method: Scatter_init (sendbuf, recvbuf, root=0, info=INFO_NULL) + + Persistent Scatter. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.‘ | ’None(165)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘root’ (int(166)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Scatterv (sendbuf, recvbuf, root=0) + + Scatter Vector. + + Scatter data from one process to all other processes providing + different amounts of data and displacements. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.‘ | ’None(167)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘root’ (int(168)) + + + Return type: None(169) + + -- Method: Scatterv_init (sendbuf, recvbuf, root=0, + info=INFO_NULL) + + Persistent Scatter Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.‘ | ’None(170)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘root’ (int(171)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Send (buf, dest, tag=0) + + Blocking send. + + Note: This function may block until the message is + received. Whether *note Send: 3a. blocks or not depends + on several factors and is implementation dependent. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(172)) + + * ‘tag’ (int(173)) + + + Return type: None(174) + + -- Method: Send_init (buf, dest, tag=0) + + Create a persistent request for a standard send. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(175)) + + * ‘tag’ (int(176)) + + + Return type: *note Prequest: 4a. + + -- Method: Sendrecv (sendbuf, dest, sendtag=0, recvbuf=None, + source=ANY_SOURCE, recvtag=ANY_TAG, status=None) + + Send and receive a message. + + Note: This function is guaranteed not to deadlock in + situations where pairs of blocking sends and receives may + deadlock. + + Caution: A common mistake when using this function is to + mismatch the tags with the source and destination ranks, + which can result in deadlock. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘dest’ (int(177)) + + * ‘sendtag’ (int(178)) + + * ‘recvbuf’ (*note BufSpec: 212.‘ | ’None(179)) + + * ‘source’ (int(180)) + + * ‘recvtag’ (int(181)) + + * ‘status’ (*note Status: d1.‘ | ’None(182)) + + + Return type: None(183) + + -- Method: Sendrecv_replace (buf, dest, sendtag=0, + source=ANY_SOURCE, recvtag=ANY_TAG, status=None) + + Send and receive a message. + + Note: This function is guaranteed not to deadlock in + situations where pairs of blocking sends and receives may + deadlock. + + Caution: A common mistake when using this function is to + mismatch the tags with the source and destination ranks, + which can result in deadlock. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(184)) + + * ‘sendtag’ (int(185)) + + * ‘source’ (int(186)) + + * ‘recvtag’ (int(187)) + + * ‘status’ (*note Status: d1.‘ | ’None(188)) + + + Return type: None(189) + + -- Method: Set_attr (keyval, attrval) + + Store attribute value associated with a key. + + + Parameters: + + * ‘keyval’ (int(190)) + + * ‘attrval’ (Any(191)) + + + Return type: None(192) + + -- Method: Set_errhandler (errhandler) + + Set the error handler for a communicator. + + + Parameters: ‘errhandler’ (*note Errhandler: d8.) + + + Return type: None(193) + + -- Method: Set_info (info) + + Set new values for the hints associated with a communicator. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: None(194) + + -- Method: Set_name (name) + + Set the print name for this communicator. + + + Parameters: ‘name’ (str(195)) + + + Return type: None(196) + + -- Method: Shrink () + + Shrink a communicator to remove all failed processes. + + + Return type: *note Comm: 1e. + + -- Method: Split (color=0, key=0) + + Split communicator by color and key. + + + Parameters: + + * ‘color’ (int(197)) + + * ‘key’ (int(198)) + + + Return type: *note Comm: 1e. + + -- Method: Split_type (split_type, key=0, info=INFO_NULL) + + Split communicator by split type. + + + Parameters: + + * ‘split_type’ (int(199)) + + * ‘key’ (int(200)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Comm: 1e. + + -- Method: Ssend (buf, dest, tag=0) + + Blocking send in synchronous mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(201)) + + * ‘tag’ (int(202)) + + + Return type: None(203) + + -- Method: Ssend_init (buf, dest, tag=0) + + Persistent request for a send in synchronous mode. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘dest’ (int(204)) + + * ‘tag’ (int(205)) + + + Return type: *note Request: 43. + + -- Method: allgather (sendobj) + + Gather to All. + + + Parameters: ‘sendobj’ (Any(206)) + + + Return type: list(207)[Any(208)] + + -- Method: allreduce (sendobj, op=SUM) + + Reduce to All. + + + Parameters: + + * ‘sendobj’ (Any(209)) + + * ‘op’ (*note Op: d3.‘ | ’Callable(210)‘[’‘[’Any(211)‘, + ’Any(212)‘]’‘, ’Any(213)‘]’) + + + Return type: Any(214) + + -- Method: alltoall (sendobj) + + All to All Scatter/Gather. + + + Parameters: ‘sendobj’ (Sequence(215)‘[’Any(216)‘]’) + + + Return type: list(217)[Any(218)] + + -- Method: barrier () + + Barrier synchronization. + + Note: This method is equivalent to *note Barrier: 22e. + + + Return type: None(219) + + -- Method: bcast (obj, root=0) + + Broadcast. + + + Parameters: + + * ‘obj’ (Any(220)) + + * ‘root’ (int(221)) + + + Return type: Any(222) + + -- Method: bsend (obj, dest, tag=0) + + Send in buffered mode. + + + Parameters: + + * ‘obj’ (Any(223)) + + * ‘dest’ (int(224)) + + * ‘tag’ (int(225)) + + + Return type: None(226) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(227)) + + + Return type: *note Comm: 1e. + + -- Method: free () + + Call *note Free: 2ea. if not null or predefined. + + + Return type: None(228) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(229)) + + + Return type: *note Comm: 1e. + + -- Method: gather (sendobj, root=0) + + Gather. + + + Parameters: + + * ‘sendobj’ (Any(230)) + + * ‘root’ (int(231)) + + + Return type: list(232)[Any(233)] | None(234) + + -- Method: ibsend (obj, dest, tag=0) + + Nonblocking send in buffered mode. + + + Parameters: + + * ‘obj’ (Any(235)) + + * ‘dest’ (int(236)) + + * ‘tag’ (int(237)) + + + Return type: *note Request: 43. + + -- Method: improbe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Nonblocking test for a matched message. + + + Parameters: + + * ‘source’ (int(238)) + + * ‘tag’ (int(239)) + + * ‘status’ (*note Status: d1.‘ | ’None(240)) + + + Return type: *note Message: d7. | None(241) + + -- Method: iprobe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Nonblocking test for a message. + + + Parameters: + + * ‘source’ (int(242)) + + * ‘tag’ (int(243)) + + * ‘status’ (*note Status: d1.‘ | ’None(244)) + + + Return type: bool(245) + + -- Method: irecv (buf=None, source=ANY_SOURCE, tag=ANY_TAG) + + Nonblocking receive. + + + Parameters: + + * ‘buf’ (*note Buffer: 20a.‘ | ’None(246)) + + * ‘source’ (int(247)) + + * ‘tag’ (int(248)) + + + Return type: *note Request: 43. + + -- Method: isend (obj, dest, tag=0) + + Nonblocking send. + + + Parameters: + + * ‘obj’ (Any(249)) + + * ‘dest’ (int(250)) + + * ‘tag’ (int(251)) + + + Return type: *note Request: 43. + + -- Method: issend (obj, dest, tag=0) + + Nonblocking send in synchronous mode. + + + Parameters: + + * ‘obj’ (Any(252)) + + * ‘dest’ (int(253)) + + * ‘tag’ (int(254)) + + + Return type: *note Request: 43. + + -- Method: mprobe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Blocking test for a matched message. + + + Parameters: + + * ‘source’ (int(255)) + + * ‘tag’ (int(256)) + + * ‘status’ (*note Status: d1.‘ | ’None(257)) + + + Return type: *note Message: d7. + + -- Method: probe (source=ANY_SOURCE, tag=ANY_TAG, status=None) + + Blocking test for a message. + + + Parameters: + + * ‘source’ (int(258)) + + * ‘tag’ (int(259)) + + * ‘status’ (*note Status: d1.‘ | ’None(260)) + + + Return type: Literal(261)[True] + + -- Method: py2f () + + + Return type: int(262) + + -- Method: recv (buf=None, source=ANY_SOURCE, tag=ANY_TAG, + status=None) + + Receive. + + + Parameters: + + * ‘buf’ (*note Buffer: 20a.‘ | ’None(263)) + + * ‘source’ (int(264)) + + * ‘tag’ (int(265)) + + * ‘status’ (*note Status: d1.‘ | ’None(266)) + + + Return type: Any + + -- Method: reduce (sendobj, op=SUM, root=0) + + Reduce to Root. + + + Parameters: + + * ‘sendobj’ (Any(267)) + + * ‘op’ (*note Op: d3.‘ | ’Callable(268)‘[’‘[’Any(269)‘, + ’Any(270)‘]’‘, ’Any(271)‘]’) + + * ‘root’ (int(272)) + + + Return type: Any(273) | None(274) + + -- Method: scatter (sendobj, root=0) + + Scatter. + + + Parameters: + + * ‘sendobj’ (Sequence(275)‘[’Any(276)‘] ’‘| ’None(277)) + + * ‘root’ (int(278)) + + + Return type: Any(279) + + -- Method: send (obj, dest, tag=0) + + Send in standard mode. + + + Parameters: + + * ‘obj’ (Any(280)) + + * ‘dest’ (int(281)) + + * ‘tag’ (int(282)) + + + Return type: None(283) + + -- Method: sendrecv (sendobj, dest, sendtag=0, recvbuf=None, + source=ANY_SOURCE, recvtag=ANY_TAG, status=None) + + Send and Receive. + + + Parameters: + + * ‘sendobj’ (‘Any’) + + * ‘dest’ (int(284)) + + * ‘sendtag’ (int(285)) + + * ‘recvbuf’ (*note Buffer: 20a.‘ | ’None(286)) + + * ‘source’ (int(287)) + + * ‘recvtag’ (int(288)) + + * ‘status’ (*note Status: d1.‘ | ’None(289)) + + + Return type: Any + + -- Method: ssend (obj, dest, tag=0) + + Send in synchronous mode. + + + Parameters: + + * ‘obj’ (Any(290)) + + * ‘dest’ (int(291)) + + * ‘tag’ (int(292)) + + + Return type: None(293) + + Attributes Documentation + ........................ + + -- Attribute: group + + Group. + + -- Attribute: handle + + MPI handle. + + -- Attribute: info + + Info hints. + + -- Attribute: is_inter + + Is intercommunicator. + + -- Attribute: is_intra + + Is intracommunicator. + + -- Attribute: is_topo + + Is a topology. + + -- Attribute: name + + Print name. + + -- Attribute: rank + + Rank of this process. + + -- Attribute: size + + Number of processes. + + -- Attribute: topology + + Topology type. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/typing.html#typing.NoReturn + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/constants.html#None + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/constants.html#None + + (15) https://docs.python.org/3/library/constants.html#None + + (16) https://docs.python.org/3/library/constants.html#None + + (17) https://docs.python.org/3/library/constants.html#None + + (18) https://docs.python.org/3/library/constants.html#None + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/constants.html#None + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/constants.html#None + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/functions.html#int + + (28) https://docs.python.org/3/library/functions.html#int + + (29) https://docs.python.org/3/library/constants.html#None + + (30) https://docs.python.org/3/library/typing.html#typing.Self + + (31) https://docs.python.org/3/library/functions.html#int + + (32) https://docs.python.org/3/library/typing.html#typing.Callable + + (33) https://docs.python.org/3/library/functions.html#int + + (34) https://docs.python.org/3/library/constants.html#None + + (35) https://docs.python.org/3/library/typing.html#typing.Callable + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/typing.html#typing.Any + + (38) https://docs.python.org/3/library/typing.html#typing.Any + + (39) https://docs.python.org/3/library/constants.html#None + + (40) https://docs.python.org/3/library/typing.html#typing.Callable + + (41) https://docs.python.org/3/library/functions.html#int + + (42) https://docs.python.org/3/library/typing.html#typing.Any + + (43) https://docs.python.org/3/library/constants.html#None + + (44) https://docs.python.org/3/library/constants.html#None + + (45) https://docs.python.org/3/library/functions.html#bool + + (46) https://docs.python.org/3/library/functions.html#int + + (47) https://docs.python.org/3/library/functions.html#int + + (48) https://docs.python.org/3/library/constants.html#None + + (49) https://docs.python.org/3/library/constants.html#None + + (50) https://docs.python.org/3/library/constants.html#None + + (51) https://docs.python.org/3/library/constants.html#None + + (52) https://docs.python.org/3/library/typing.html#typing.Self + + (53) https://docs.python.org/3/library/typing.html#typing.Self + + (54) https://docs.python.org/3/library/constants.html#None + + (55) https://docs.python.org/3/library/constants.html#None + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/functions.html#int + + (58) https://docs.python.org/3/library/constants.html#None + + (59) https://docs.python.org/3/library/functions.html#int + + (60) https://docs.python.org/3/library/constants.html#None + + (61) https://docs.python.org/3/library/constants.html#None + + (62) https://docs.python.org/3/library/functions.html#int + + (63) https://docs.python.org/3/library/constants.html#None + + (64) https://docs.python.org/3/library/functions.html#int + + (65) https://docs.python.org/3/library/constants.html#None + + (66) https://docs.python.org/3/library/constants.html#None + + (67) https://docs.python.org/3/library/functions.html#int + + (68) https://docs.python.org/3/library/functions.html#int + + (69) https://docs.python.org/3/library/functions.html#int + + (70) https://docs.python.org/3/library/typing.html#typing.Any + + (71) https://docs.python.org/3/library/constants.html#None + + (72) https://docs.python.org/3/library/stdtypes.html#str + + (73) https://docs.python.org/3/library/functions.html#int + + (74) https://docs.python.org/3/library/functions.html#int + + (75) https://docs.python.org/3/library/functions.html#int + + (76) https://docs.python.org/3/library/functions.html#int + + (77) https://docs.python.org/3/library/functions.html#int + + (78) https://docs.python.org/3/library/functions.html#int + + (79) https://docs.python.org/3/library/constants.html#None + + (80) https://docs.python.org/3/library/stdtypes.html#tuple + + (81) https://docs.python.org/3/library/typing.html#typing.Self + + (82) https://docs.python.org/3/library/stdtypes.html#tuple + + (83) https://docs.python.org/3/library/typing.html#typing.Self + + (84) https://docs.python.org/3/library/constants.html#None + + (85) https://docs.python.org/3/library/functions.html#int + + (86) https://docs.python.org/3/library/constants.html#None + + (87) https://docs.python.org/3/library/functions.html#int + + (88) https://docs.python.org/3/library/functions.html#int + + (89) https://docs.python.org/3/library/functions.html#int + + (90) https://docs.python.org/3/library/constants.html#None + + (91) https://docs.python.org/3/library/constants.html#None + + (92) https://docs.python.org/3/library/functions.html#int + + (93) https://docs.python.org/3/library/functions.html#int + + (94) https://docs.python.org/3/library/constants.html#None + + (95) https://docs.python.org/3/library/functions.html#bool + + (96) https://docs.python.org/3/library/functions.html#int + + (97) https://docs.python.org/3/library/functions.html#int + + (98) https://docs.python.org/3/library/constants.html#None + + (99) https://docs.python.org/3/library/functions.html#int + + (100) https://docs.python.org/3/library/functions.html#int + + (101) https://docs.python.org/3/library/constants.html#None + + (102) https://docs.python.org/3/library/functions.html#int + + (103) https://docs.python.org/3/library/functions.html#int + + (104) https://docs.python.org/3/library/functions.html#bool + + (105) https://docs.python.org/3/library/functions.html#bool + + (106) https://docs.python.org/3/library/functions.html#bool + + (107) https://docs.python.org/3/library/constants.html#None + + (108) https://docs.python.org/3/library/functions.html#int + + (109) https://docs.python.org/3/library/constants.html#None + + (110) https://docs.python.org/3/library/functions.html#int + + (111) https://docs.python.org/3/library/functions.html#int + + (112) https://docs.python.org/3/library/functions.html#int + + (113) https://docs.python.org/3/library/functions.html#int + + (114) https://docs.python.org/3/library/functions.html#int + + (115) https://docs.python.org/3/library/constants.html#None + + (116) https://docs.python.org/3/library/functions.html#int + + (117) https://docs.python.org/3/library/functions.html#int + + (118) https://docs.python.org/3/library/functions.html#int + + (119) https://docs.python.org/3/library/functions.html#int + + (120) https://docs.python.org/3/library/functions.html#int + + (121) https://docs.python.org/3/library/functions.html#int + + (122) https://docs.python.org/3/library/stdtypes.html#tuple + + (123) https://docs.python.org/3/library/functions.html#int + + (124) https://docs.python.org/3/library/functions.html#int + + (125) https://docs.python.org/3/library/functions.html#int + + (126) https://docs.python.org/3/library/functions.html#int + + (127) https://docs.python.org/3/library/functions.html#int + + (128) https://docs.python.org/3/library/constants.html#None + + (129) https://docs.python.org/3/library/functions.html#int + + (130) https://docs.python.org/3/library/functions.html#int + + (131) https://docs.python.org/3/library/functions.html#int + + (132) https://docs.python.org/3/library/functions.html#int + + (133) https://docs.python.org/3/library/functions.html#int + + (134) https://docs.python.org/3/library/constants.html#None + + (135) https://docs.python.org/3/library/typing.html#typing.Literal + + (136) https://docs.python.org/3/library/functions.html#int + + (137) https://docs.python.org/3/library/functions.html#int + + (138) https://docs.python.org/3/library/functions.html#int + + (139) https://docs.python.org/3/library/functions.html#int + + (140) https://docs.python.org/3/library/functions.html#int + + (141) https://docs.python.org/3/library/constants.html#None + + (142) https://docs.python.org/3/library/constants.html#None + + (143) https://docs.python.org/3/library/functions.html#int + + (144) https://docs.python.org/3/library/functions.html#int + + (145) https://docs.python.org/3/library/constants.html#None + + (146) https://docs.python.org/3/library/functions.html#int + + (147) https://docs.python.org/3/library/constants.html#None + + (148) https://docs.python.org/3/library/constants.html#None + + (149) https://docs.python.org/3/library/functions.html#int + + (150) https://docs.python.org/3/library/functions.html#int + + (151) https://docs.python.org/3/library/constants.html#None + + (152) https://docs.python.org/3/library/constants.html#None + + (153) https://docs.python.org/3/library/constants.html#None + + (154) https://docs.python.org/3/library/functions.html#int + + (155) https://docs.python.org/3/library/constants.html#None + + (156) https://docs.python.org/3/library/constants.html#None + + (157) https://docs.python.org/3/library/functions.html#int + + (158) https://docs.python.org/3/library/functions.html#int + + (159) https://docs.python.org/3/library/constants.html#None + + (160) https://docs.python.org/3/library/functions.html#int + + (161) https://docs.python.org/3/library/functions.html#int + + (162) https://docs.python.org/3/library/constants.html#None + + (163) https://docs.python.org/3/library/functions.html#int + + (164) https://docs.python.org/3/library/constants.html#None + + (165) https://docs.python.org/3/library/constants.html#None + + (166) https://docs.python.org/3/library/functions.html#int + + (167) https://docs.python.org/3/library/constants.html#None + + (168) https://docs.python.org/3/library/functions.html#int + + (169) https://docs.python.org/3/library/constants.html#None + + (170) https://docs.python.org/3/library/constants.html#None + + (171) https://docs.python.org/3/library/functions.html#int + + (172) https://docs.python.org/3/library/functions.html#int + + (173) https://docs.python.org/3/library/functions.html#int + + (174) https://docs.python.org/3/library/constants.html#None + + (175) https://docs.python.org/3/library/functions.html#int + + (176) https://docs.python.org/3/library/functions.html#int + + (177) https://docs.python.org/3/library/functions.html#int + + (178) https://docs.python.org/3/library/functions.html#int + + (179) https://docs.python.org/3/library/constants.html#None + + (180) https://docs.python.org/3/library/functions.html#int + + (181) https://docs.python.org/3/library/functions.html#int + + (182) https://docs.python.org/3/library/constants.html#None + + (183) https://docs.python.org/3/library/constants.html#None + + (184) https://docs.python.org/3/library/functions.html#int + + (185) https://docs.python.org/3/library/functions.html#int + + (186) https://docs.python.org/3/library/functions.html#int + + (187) https://docs.python.org/3/library/functions.html#int + + (188) https://docs.python.org/3/library/constants.html#None + + (189) https://docs.python.org/3/library/constants.html#None + + (190) https://docs.python.org/3/library/functions.html#int + + (191) https://docs.python.org/3/library/typing.html#typing.Any + + (192) https://docs.python.org/3/library/constants.html#None + + (193) https://docs.python.org/3/library/constants.html#None + + (194) https://docs.python.org/3/library/constants.html#None + + (195) https://docs.python.org/3/library/stdtypes.html#str + + (196) https://docs.python.org/3/library/constants.html#None + + (197) https://docs.python.org/3/library/functions.html#int + + (198) https://docs.python.org/3/library/functions.html#int + + (199) https://docs.python.org/3/library/functions.html#int + + (200) https://docs.python.org/3/library/functions.html#int + + (201) https://docs.python.org/3/library/functions.html#int + + (202) https://docs.python.org/3/library/functions.html#int + + (203) https://docs.python.org/3/library/constants.html#None + + (204) https://docs.python.org/3/library/functions.html#int + + (205) https://docs.python.org/3/library/functions.html#int + + (206) https://docs.python.org/3/library/typing.html#typing.Any + + (207) https://docs.python.org/3/library/stdtypes.html#list + + (208) https://docs.python.org/3/library/typing.html#typing.Any + + (209) https://docs.python.org/3/library/typing.html#typing.Any + + (210) https://docs.python.org/3/library/typing.html#typing.Callable + + (211) https://docs.python.org/3/library/typing.html#typing.Any + + (212) https://docs.python.org/3/library/typing.html#typing.Any + + (213) https://docs.python.org/3/library/typing.html#typing.Any + + (214) https://docs.python.org/3/library/typing.html#typing.Any + + (215) https://docs.python.org/3/library/typing.html#typing.Sequence + + (216) https://docs.python.org/3/library/typing.html#typing.Any + + (217) https://docs.python.org/3/library/stdtypes.html#list + + (218) https://docs.python.org/3/library/typing.html#typing.Any + + (219) https://docs.python.org/3/library/constants.html#None + + (220) https://docs.python.org/3/library/typing.html#typing.Any + + (221) https://docs.python.org/3/library/functions.html#int + + (222) https://docs.python.org/3/library/typing.html#typing.Any + + (223) https://docs.python.org/3/library/typing.html#typing.Any + + (224) https://docs.python.org/3/library/functions.html#int + + (225) https://docs.python.org/3/library/functions.html#int + + (226) https://docs.python.org/3/library/constants.html#None + + (227) https://docs.python.org/3/library/functions.html#int + + (228) https://docs.python.org/3/library/constants.html#None + + (229) https://docs.python.org/3/library/functions.html#int + + (230) https://docs.python.org/3/library/typing.html#typing.Any + + (231) https://docs.python.org/3/library/functions.html#int + + (232) https://docs.python.org/3/library/stdtypes.html#list + + (233) https://docs.python.org/3/library/typing.html#typing.Any + + (234) https://docs.python.org/3/library/constants.html#None + + (235) https://docs.python.org/3/library/typing.html#typing.Any + + (236) https://docs.python.org/3/library/functions.html#int + + (237) https://docs.python.org/3/library/functions.html#int + + (238) https://docs.python.org/3/library/functions.html#int + + (239) https://docs.python.org/3/library/functions.html#int + + (240) https://docs.python.org/3/library/constants.html#None + + (241) https://docs.python.org/3/library/constants.html#None + + (242) https://docs.python.org/3/library/functions.html#int + + (243) https://docs.python.org/3/library/functions.html#int + + (244) https://docs.python.org/3/library/constants.html#None + + (245) https://docs.python.org/3/library/functions.html#bool + + (246) https://docs.python.org/3/library/constants.html#None + + (247) https://docs.python.org/3/library/functions.html#int + + (248) https://docs.python.org/3/library/functions.html#int + + (249) https://docs.python.org/3/library/typing.html#typing.Any + + (250) https://docs.python.org/3/library/functions.html#int + + (251) https://docs.python.org/3/library/functions.html#int + + (252) https://docs.python.org/3/library/typing.html#typing.Any + + (253) https://docs.python.org/3/library/functions.html#int + + (254) https://docs.python.org/3/library/functions.html#int + + (255) https://docs.python.org/3/library/functions.html#int + + (256) https://docs.python.org/3/library/functions.html#int + + (257) https://docs.python.org/3/library/constants.html#None + + (258) https://docs.python.org/3/library/functions.html#int + + (259) https://docs.python.org/3/library/functions.html#int + + (260) https://docs.python.org/3/library/constants.html#None + + (261) https://docs.python.org/3/library/typing.html#typing.Literal + + (262) https://docs.python.org/3/library/functions.html#int + + (263) https://docs.python.org/3/library/constants.html#None + + (264) https://docs.python.org/3/library/functions.html#int + + (265) https://docs.python.org/3/library/functions.html#int + + (266) https://docs.python.org/3/library/constants.html#None + + (267) https://docs.python.org/3/library/typing.html#typing.Any + + (268) https://docs.python.org/3/library/typing.html#typing.Callable + + (269) https://docs.python.org/3/library/typing.html#typing.Any + + (270) https://docs.python.org/3/library/typing.html#typing.Any + + (271) https://docs.python.org/3/library/typing.html#typing.Any + + (272) https://docs.python.org/3/library/functions.html#int + + (273) https://docs.python.org/3/library/typing.html#typing.Any + + (274) https://docs.python.org/3/library/constants.html#None + + (275) https://docs.python.org/3/library/typing.html#typing.Sequence + + (276) https://docs.python.org/3/library/typing.html#typing.Any + + (277) https://docs.python.org/3/library/constants.html#None + + (278) https://docs.python.org/3/library/functions.html#int + + (279) https://docs.python.org/3/library/typing.html#typing.Any + + (280) https://docs.python.org/3/library/typing.html#typing.Any + + (281) https://docs.python.org/3/library/functions.html#int + + (282) https://docs.python.org/3/library/functions.html#int + + (283) https://docs.python.org/3/library/constants.html#None + + (284) https://docs.python.org/3/library/functions.html#int + + (285) https://docs.python.org/3/library/functions.html#int + + (286) https://docs.python.org/3/library/constants.html#None + + (287) https://docs.python.org/3/library/functions.html#int + + (288) https://docs.python.org/3/library/functions.html#int + + (289) https://docs.python.org/3/library/constants.html#None + + (290) https://docs.python.org/3/library/typing.html#typing.Any + + (291) https://docs.python.org/3/library/functions.html#int + + (292) https://docs.python.org/3/library/functions.html#int + + (293) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Datatype, Next: mpi4py MPI Distgraphcomm, Prev: mpi4py MPI Comm, Up: mpi4py MPI<2> + +11.1.5 mpi4py.MPI.Datatype +-------------------------- + + -- Class: mpi4py.MPI.Datatype + + Bases: object(1) + + Datatype object. + + -- Method: static __new__ (cls, datatype=None) + + + Parameters: ‘datatype’ (*note Datatype: d0.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Commit: 33d.()Commit the datatype. + + + *note Create_contiguous: 33e.(count)Create a contiguous datatype. + + + *note Create_darray: 33f.(size,Create a datatype for a distributed array on Cartesian process grids. + rank, + gsizes, + distribs, + ...) + + *note Create_f90_complex: 340.(p,Return a bounded complex datatype. + r) + + *note Create_f90_integer: 341.(r)Return a bounded integer datatype. + + + *note Create_f90_real: 342.(p,Return a bounded real datatype. + r) + + *note Create_hindexed: 343.(blocklengths,Create an indexed datatype. + displacements) + + *note Create_hindexed_block: 344.(blocklength,Create an indexed datatype with constant-sized blocks. + displacements) + + *note Create_hvector: 345.(count,Create a vector (strided) datatype with stride in bytes. + blocklength, + stride) + + *note Create_indexed: 346.(blocklengths,Create an indexed datatype. + displacements) + + *note Create_indexed_block: 347.(blocklength,Create an indexed datatype with constant-sized blocks. + displacements) + + *note Create_keyval: 348.([copy_fn,Create a new attribute key for datatypes. + delete_fn, + nopython]) + + *note Create_resized: 349.(lb,Create a datatype with a new lower bound and extent. + extent) + + *note Create_struct: 34a.(blocklengths,Create a general composite (struct) datatype. + displacements, + ...) + + *note Create_subarray: 34b.(sizes,Create a datatype for a subarray of a multidimensional array. + subsizes, + starts[, + order]) + + *note Create_vector: 34c.(count,Create a vector (strided) datatype. + blocklength, + stride) + + *note Delete_attr: 34d.(keyval)Delete attribute value associated with a key. + + + *note Dup: 34e.()Duplicate a datatype. + + + *note Free: 34f.()Free the datatype. + + + *note Free_keyval: 350.(keyval)Free an attribute key for datatypes. + + + *note Get_attr: 351.(keyval)Retrieve attribute value by key. + + + *note Get_contents: 352.()Return the input arguments used to create a datatype. + + + *note Get_envelope: 353.()Return the number of input arguments used to create a datatype. + + + *note Get_extent: 354.()Return lower bound and extent of datatype. + + + *note Get_name: 355.()Get the print name for this datatype. + + + *note Get_size: 356.()Return the number of bytes occupied by entries in the datatype. + + + *note Get_true_extent: 357.()Return the true lower bound and extent of a datatype. + + + *note Get_value_index: 358.(value,Return a predefined pair datatype. + index) + + *note Match_size: 359.(typeclass,Find a datatype matching a specified size in bytes. + size) + + *note Pack: 35a.(inbuf,Pack into contiguous memory according to datatype. + outbuf, + position, + comm) + + *note Pack_external: 35b.(datarep,Pack into contiguous memory according to datatype. + inbuf, + outbuf, + position) + + *note Pack_external_size: 35c.(datarep,Determine the amount of space needed to pack a message. + count) + + *note Pack_size: 35d.(count,Determine the amount of space needed to pack a message. + comm) + + *note Set_attr: 35e.(keyval,Store attribute value associated with a key. + attrval) + + *note Set_name: 35f.(name)Set the print name for this datatype. + + + *note Unpack: 360.(inbuf,Unpack from contiguous memory according to datatype. + position, + outbuf, + comm) + + *note Unpack_external: 361.(datarep,Unpack from contiguous memory according to datatype. + inbuf, + position, + outbuf) + + *note decode: 362.()Convenience method for decoding a datatype. + + + *note f2py: 363.(arg) + + *note free: 364.()Call *note Free: 34f. if not null or predefined. + + + *note fromcode: 365.(code)Get predefined MPI datatype from character code or type string. + + + *note fromhandle: 366.(handle)Create object from MPI handle. + + + *note py2f: 367.() + + *note tocode: 368.()Get character code or type string from predefined MPI datatype. + + + Attributes Summary + .................. + + *note combiner: 369.Combiner. + + + *note contents: 36a.Contents. + + + *note envelope: 36b.Envelope. + + + *note extent: 36c.Extent. + + + *note handle: 36d.MPI handle. + + + *note is_named: 36e.Is a named datatype. + + + *note is_predefined: 36f.Is a predefined datatype. + + + *note lb: 370. Lower bound. + + + *note name: 371.Print name. + + + *note size: 372.Size (in bytes). + + + *note true_extent: 373.True extent. + + + *note true_lb: 374.True lower bound. + + + *note true_ub: 375.True upper bound. + + + *note typechar: 376.Character code. + + + *note typestr: 377.Type string. + + + *note ub: 378. Upper bound. + + + Methods Documentation + ..................... + + -- Method: Commit () + + Commit the datatype. + + + Return type: Self(4) + + -- Method: Create_contiguous (count) + + Create a contiguous datatype. + + + Parameters: ‘count’ (int(5)) + + + Return type: Self(6) + + -- Method: Create_darray (size, rank, gsizes, distribs, dargs, + psizes, order=ORDER_C) + + Create a datatype for a distributed array on Cartesian process + grids. + + + Parameters: + + * ‘size’ (int(7)) + + * ‘rank’ (int(8)) + + * ‘gsizes’ (Sequence(9)‘[’int(10)‘]’) + + * ‘distribs’ (Sequence(11)‘[’int(12)‘]’) + + * ‘dargs’ (Sequence(13)‘[’int(14)‘]’) + + * ‘psizes’ (Sequence(15)‘[’int(16)‘]’) + + * ‘order’ (int(17)) + + + Return type: Self(18) + + -- Method: classmethod Create_f90_complex (p, r) + + Return a bounded complex datatype. + + + Parameters: + + * ‘p’ (int(19)) + + * ‘r’ (int(20)) + + + Return type: Self(21) + + -- Method: classmethod Create_f90_integer (r) + + Return a bounded integer datatype. + + + Parameters: ‘r’ (int(22)) + + + Return type: Self(23) + + -- Method: classmethod Create_f90_real (p, r) + + Return a bounded real datatype. + + + Parameters: + + * ‘p’ (int(24)) + + * ‘r’ (int(25)) + + + Return type: Self(26) + + -- Method: Create_hindexed (blocklengths, displacements) + + Create an indexed datatype. + + Note: Displacements are measured in bytes. + + + Parameters: + + * ‘blocklengths’ (Sequence(27)‘[’int(28)‘]’) + + * ‘displacements’ (Sequence(29)‘[’int(30)‘]’) + + + Return type: Self(31) + + -- Method: Create_hindexed_block (blocklength, displacements) + + Create an indexed datatype with constant-sized blocks. + + Note: Displacements are measured in bytes. + + + Parameters: + + * ‘blocklength’ (int(32)) + + * ‘displacements’ (Sequence(33)‘[’int(34)‘]’) + + + Return type: Self(35) + + -- Method: Create_hvector (count, blocklength, stride) + + Create a vector (strided) datatype with stride in bytes. + + + Parameters: + + * ‘count’ (int(36)) + + * ‘blocklength’ (int(37)) + + * ‘stride’ (int(38)) + + + Return type: Self(39) + + -- Method: Create_indexed (blocklengths, displacements) + + Create an indexed datatype. + + + Parameters: + + * ‘blocklengths’ (Sequence(40)‘[’int(41)‘]’) + + * ‘displacements’ (Sequence(42)‘[’int(43)‘]’) + + + Return type: Self(44) + + -- Method: Create_indexed_block (blocklength, displacements) + + Create an indexed datatype with constant-sized blocks. + + + Parameters: + + * ‘blocklength’ (int(45)) + + * ‘displacements’ (Sequence(46)‘[’int(47)‘]’) + + + Return type: Self(48) + + -- Method: classmethod Create_keyval (copy_fn=None, + delete_fn=None, nopython=False) + + Create a new attribute key for datatypes. + + + Parameters: + + * ‘copy_fn’ (Callable(49)‘[’‘[’*note Datatype: d0.‘, + ’int(50)‘, ’Any(51)‘]’‘, ’Any(52)‘] ’‘| ’None(53)) + + * ‘delete_fn’ (Callable(54)‘[’‘[’*note Datatype: d0.‘, + ’int(55)‘, ’Any(56)‘]’‘, ’None(57)‘] ’‘| ’None(58)) + + * ‘nopython’ (bool(59)) + + + Return type: int(60) + + -- Method: Create_resized (lb, extent) + + Create a datatype with a new lower bound and extent. + + + Parameters: + + * ‘lb’ (int(61)) + + * ‘extent’ (int(62)) + + + Return type: Self(63) + + -- Method: classmethod Create_struct (blocklengths, displacements, + datatypes) + + Create a general composite (struct) datatype. + + Note: Displacements are measured in bytes. + + + Parameters: + + * ‘blocklengths’ (Sequence(64)‘[’int(65)‘]’) + + * ‘displacements’ (Sequence(66)‘[’int(67)‘]’) + + * ‘datatypes’ (Sequence(68)‘[’*note Datatype: d0.‘]’) + + + Return type: Self(69) + + -- Method: Create_subarray (sizes, subsizes, starts, + order=ORDER_C) + + Create a datatype for a subarray of a multidimensional array. + + + Parameters: + + * ‘sizes’ (Sequence(70)‘[’int(71)‘]’) + + * ‘subsizes’ (Sequence(72)‘[’int(73)‘]’) + + * ‘starts’ (Sequence(74)‘[’int(75)‘]’) + + * ‘order’ (int(76)) + + + Return type: Self(77) + + -- Method: Create_vector (count, blocklength, stride) + + Create a vector (strided) datatype. + + + Parameters: + + * ‘count’ (int(78)) + + * ‘blocklength’ (int(79)) + + * ‘stride’ (int(80)) + + + Return type: Self(81) + + -- Method: Delete_attr (keyval) + + Delete attribute value associated with a key. + + + Parameters: ‘keyval’ (int(82)) + + + Return type: None(83) + + -- Method: Dup () + + Duplicate a datatype. + + + Return type: Self(84) + + -- Method: Free () + + Free the datatype. + + + Return type: None(85) + + -- Method: classmethod Free_keyval (keyval) + + Free an attribute key for datatypes. + + + Parameters: ‘keyval’ (int(86)) + + + Return type: int(87) + + -- Method: Get_attr (keyval) + + Retrieve attribute value by key. + + + Parameters: ‘keyval’ (int(88)) + + + Return type: int(89) | Any(90) | None(91) + + -- Method: Get_contents () + + Return the input arguments used to create a datatype. + + + Return type: tuple(92)[list(93)[int(94)], list(95)[int(96)], + list(97)[int(98)], list(99)[*note Datatype: d0.]] + + -- Method: Get_envelope () + + Return the number of input arguments used to create a + datatype. + + + Return type: tuple(100)[int(101), int(102), int(103), + int(104), int(105)] + + -- Method: Get_extent () + + Return lower bound and extent of datatype. + + + Return type: tuple(106)[int(107), int(108)] + + -- Method: Get_name () + + Get the print name for this datatype. + + + Return type: str(109) + + -- Method: Get_size () + + Return the number of bytes occupied by entries in the + datatype. + + + Return type: int(110) + + -- Method: Get_true_extent () + + Return the true lower bound and extent of a datatype. + + + Return type: tuple(111)[int(112), int(113)] + + -- Method: classmethod Get_value_index (value, index) + + Return a predefined pair datatype. + + + Parameters: + + * ‘value’ (*note Datatype: d0.) + + * ‘index’ (*note Datatype: d0.) + + + Return type: Self(114) + + -- Method: classmethod Match_size (typeclass, size) + + Find a datatype matching a specified size in bytes. + + + Parameters: + + * ‘typeclass’ (int(115)) + + * ‘size’ (int(116)) + + + Return type: Self(117) + + -- Method: Pack (inbuf, outbuf, position, comm) + + Pack into contiguous memory according to datatype. + + + Parameters: + + * ‘inbuf’ (*note BufSpec: 212.) + + * ‘outbuf’ (*note BufSpec: 212.) + + * ‘position’ (int(118)) + + * ‘comm’ (*note Comm: 1e.) + + + Return type: int(119) + + -- Method: Pack_external (datarep, inbuf, outbuf, position) + + Pack into contiguous memory according to datatype. + + Uses the portable data representation ‘external32’. + + + Parameters: + + * ‘datarep’ (str(120)) + + * ‘inbuf’ (*note BufSpec: 212.) + + * ‘outbuf’ (*note BufSpec: 212.) + + * ‘position’ (int(121)) + + + Return type: int(122) + + -- Method: Pack_external_size (datarep, count) + + Determine the amount of space needed to pack a message. + + Uses the portable data representation ‘external32’. + + Note: Returns an upper bound measured in bytes. + + + Parameters: + + * ‘datarep’ (str(123)) + + * ‘count’ (int(124)) + + + Return type: int(125) + + -- Method: Pack_size (count, comm) + + Determine the amount of space needed to pack a message. + + Note: Returns an upper bound measured in bytes. + + + Parameters: + + * ‘count’ (int(126)) + + * ‘comm’ (*note Comm: 1e.) + + + Return type: int(127) + + -- Method: Set_attr (keyval, attrval) + + Store attribute value associated with a key. + + + Parameters: + + * ‘keyval’ (int(128)) + + * ‘attrval’ (Any(129)) + + + Return type: None(130) + + -- Method: Set_name (name) + + Set the print name for this datatype. + + + Parameters: ‘name’ (str(131)) + + + Return type: None(132) + + -- Method: Unpack (inbuf, position, outbuf, comm) + + Unpack from contiguous memory according to datatype. + + + Parameters: + + * ‘inbuf’ (*note BufSpec: 212.) + + * ‘position’ (int(133)) + + * ‘outbuf’ (*note BufSpec: 212.) + + * ‘comm’ (*note Comm: 1e.) + + + Return type: int(134) + + -- Method: Unpack_external (datarep, inbuf, position, outbuf) + + Unpack from contiguous memory according to datatype. + + Uses the portable data representation ‘external32’. + + + Parameters: + + * ‘datarep’ (str(135)) + + * ‘inbuf’ (*note BufSpec: 212.) + + * ‘position’ (int(136)) + + * ‘outbuf’ (*note BufSpec: 212.) + + + Return type: int(137) + + -- Method: decode () + + Convenience method for decoding a datatype. + + + Return type: tuple(138)[*note Datatype: d0, str(139), + dict(140)[str(141), Any(142)]] + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(143)) + + + Return type: *note Datatype: d0. + + -- Method: free () + + Call *note Free: 34f. if not null or predefined. + + + Return type: None(144) + + -- Method: classmethod fromcode (code) + + Get predefined MPI datatype from character code or type + string. + + + Parameters: ‘code’ (str(145)) + + + Return type: *note Datatype: d0. + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(146)) + + + Return type: *note Datatype: d0. + + -- Method: py2f () + + + Return type: int(147) + + -- Method: tocode () + + Get character code or type string from predefined MPI + datatype. + + + Return type: str(148) + + Attributes Documentation + ........................ + + -- Attribute: combiner + + Combiner. + + -- Attribute: contents + + Contents. + + -- Attribute: envelope + + Envelope. + + -- Attribute: extent + + Extent. + + -- Attribute: handle + + MPI handle. + + -- Attribute: is_named + + Is a named datatype. + + -- Attribute: is_predefined + + Is a predefined datatype. + + -- Attribute: lb + + Lower bound. + + -- Attribute: name + + Print name. + + -- Attribute: size + + Size (in bytes). + + -- Attribute: true_extent + + True extent. + + -- Attribute: true_lb + + True lower bound. + + -- Attribute: true_ub + + True upper bound. + + -- Attribute: typechar + + Character code. + + -- Attribute: typestr + + Type string. + + -- Attribute: ub + + Upper bound. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/typing.html#typing.Self + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/typing.html#typing.Self + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/typing.html#typing.Sequence + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/typing.html#typing.Sequence + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/typing.html#typing.Sequence + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/typing.html#typing.Sequence + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/typing.html#typing.Self + + (19) https://docs.python.org/3/library/functions.html#int + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/typing.html#typing.Self + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/typing.html#typing.Self + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/functions.html#int + + (26) https://docs.python.org/3/library/typing.html#typing.Self + + (27) https://docs.python.org/3/library/typing.html#typing.Sequence + + (28) https://docs.python.org/3/library/functions.html#int + + (29) https://docs.python.org/3/library/typing.html#typing.Sequence + + (30) https://docs.python.org/3/library/functions.html#int + + (31) https://docs.python.org/3/library/typing.html#typing.Self + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/typing.html#typing.Sequence + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/typing.html#typing.Self + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/functions.html#int + + (38) https://docs.python.org/3/library/functions.html#int + + (39) https://docs.python.org/3/library/typing.html#typing.Self + + (40) https://docs.python.org/3/library/typing.html#typing.Sequence + + (41) https://docs.python.org/3/library/functions.html#int + + (42) https://docs.python.org/3/library/typing.html#typing.Sequence + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/typing.html#typing.Self + + (45) https://docs.python.org/3/library/functions.html#int + + (46) https://docs.python.org/3/library/typing.html#typing.Sequence + + (47) https://docs.python.org/3/library/functions.html#int + + (48) https://docs.python.org/3/library/typing.html#typing.Self + + (49) https://docs.python.org/3/library/typing.html#typing.Callable + + (50) https://docs.python.org/3/library/functions.html#int + + (51) https://docs.python.org/3/library/typing.html#typing.Any + + (52) https://docs.python.org/3/library/typing.html#typing.Any + + (53) https://docs.python.org/3/library/constants.html#None + + (54) https://docs.python.org/3/library/typing.html#typing.Callable + + (55) https://docs.python.org/3/library/functions.html#int + + (56) https://docs.python.org/3/library/typing.html#typing.Any + + (57) https://docs.python.org/3/library/constants.html#None + + (58) https://docs.python.org/3/library/constants.html#None + + (59) https://docs.python.org/3/library/functions.html#bool + + (60) https://docs.python.org/3/library/functions.html#int + + (61) https://docs.python.org/3/library/functions.html#int + + (62) https://docs.python.org/3/library/functions.html#int + + (63) https://docs.python.org/3/library/typing.html#typing.Self + + (64) https://docs.python.org/3/library/typing.html#typing.Sequence + + (65) https://docs.python.org/3/library/functions.html#int + + (66) https://docs.python.org/3/library/typing.html#typing.Sequence + + (67) https://docs.python.org/3/library/functions.html#int + + (68) https://docs.python.org/3/library/typing.html#typing.Sequence + + (69) https://docs.python.org/3/library/typing.html#typing.Self + + (70) https://docs.python.org/3/library/typing.html#typing.Sequence + + (71) https://docs.python.org/3/library/functions.html#int + + (72) https://docs.python.org/3/library/typing.html#typing.Sequence + + (73) https://docs.python.org/3/library/functions.html#int + + (74) https://docs.python.org/3/library/typing.html#typing.Sequence + + (75) https://docs.python.org/3/library/functions.html#int + + (76) https://docs.python.org/3/library/functions.html#int + + (77) https://docs.python.org/3/library/typing.html#typing.Self + + (78) https://docs.python.org/3/library/functions.html#int + + (79) https://docs.python.org/3/library/functions.html#int + + (80) https://docs.python.org/3/library/functions.html#int + + (81) https://docs.python.org/3/library/typing.html#typing.Self + + (82) https://docs.python.org/3/library/functions.html#int + + (83) https://docs.python.org/3/library/constants.html#None + + (84) https://docs.python.org/3/library/typing.html#typing.Self + + (85) https://docs.python.org/3/library/constants.html#None + + (86) https://docs.python.org/3/library/functions.html#int + + (87) https://docs.python.org/3/library/functions.html#int + + (88) https://docs.python.org/3/library/functions.html#int + + (89) https://docs.python.org/3/library/functions.html#int + + (90) https://docs.python.org/3/library/typing.html#typing.Any + + (91) https://docs.python.org/3/library/constants.html#None + + (92) https://docs.python.org/3/library/stdtypes.html#tuple + + (93) https://docs.python.org/3/library/stdtypes.html#list + + (94) https://docs.python.org/3/library/functions.html#int + + (95) https://docs.python.org/3/library/stdtypes.html#list + + (96) https://docs.python.org/3/library/functions.html#int + + (97) https://docs.python.org/3/library/stdtypes.html#list + + (98) https://docs.python.org/3/library/functions.html#int + + (99) https://docs.python.org/3/library/stdtypes.html#list + + (100) https://docs.python.org/3/library/stdtypes.html#tuple + + (101) https://docs.python.org/3/library/functions.html#int + + (102) https://docs.python.org/3/library/functions.html#int + + (103) https://docs.python.org/3/library/functions.html#int + + (104) https://docs.python.org/3/library/functions.html#int + + (105) https://docs.python.org/3/library/functions.html#int + + (106) https://docs.python.org/3/library/stdtypes.html#tuple + + (107) https://docs.python.org/3/library/functions.html#int + + (108) https://docs.python.org/3/library/functions.html#int + + (109) https://docs.python.org/3/library/stdtypes.html#str + + (110) https://docs.python.org/3/library/functions.html#int + + (111) https://docs.python.org/3/library/stdtypes.html#tuple + + (112) https://docs.python.org/3/library/functions.html#int + + (113) https://docs.python.org/3/library/functions.html#int + + (114) https://docs.python.org/3/library/typing.html#typing.Self + + (115) https://docs.python.org/3/library/functions.html#int + + (116) https://docs.python.org/3/library/functions.html#int + + (117) https://docs.python.org/3/library/typing.html#typing.Self + + (118) https://docs.python.org/3/library/functions.html#int + + (119) https://docs.python.org/3/library/functions.html#int + + (120) https://docs.python.org/3/library/stdtypes.html#str + + (121) https://docs.python.org/3/library/functions.html#int + + (122) https://docs.python.org/3/library/functions.html#int + + (123) https://docs.python.org/3/library/stdtypes.html#str + + (124) https://docs.python.org/3/library/functions.html#int + + (125) https://docs.python.org/3/library/functions.html#int + + (126) https://docs.python.org/3/library/functions.html#int + + (127) https://docs.python.org/3/library/functions.html#int + + (128) https://docs.python.org/3/library/functions.html#int + + (129) https://docs.python.org/3/library/typing.html#typing.Any + + (130) https://docs.python.org/3/library/constants.html#None + + (131) https://docs.python.org/3/library/stdtypes.html#str + + (132) https://docs.python.org/3/library/constants.html#None + + (133) https://docs.python.org/3/library/functions.html#int + + (134) https://docs.python.org/3/library/functions.html#int + + (135) https://docs.python.org/3/library/stdtypes.html#str + + (136) https://docs.python.org/3/library/functions.html#int + + (137) https://docs.python.org/3/library/functions.html#int + + (138) https://docs.python.org/3/library/stdtypes.html#tuple + + (139) https://docs.python.org/3/library/stdtypes.html#str + + (140) https://docs.python.org/3/library/stdtypes.html#dict + + (141) https://docs.python.org/3/library/stdtypes.html#str + + (142) https://docs.python.org/3/library/typing.html#typing.Any + + (143) https://docs.python.org/3/library/functions.html#int + + (144) https://docs.python.org/3/library/constants.html#None + + (145) https://docs.python.org/3/library/stdtypes.html#str + + (146) https://docs.python.org/3/library/functions.html#int + + (147) https://docs.python.org/3/library/functions.html#int + + (148) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Distgraphcomm, Next: mpi4py MPI Errhandler, Prev: mpi4py MPI Datatype, Up: mpi4py MPI<2> + +11.1.6 mpi4py.MPI.Distgraphcomm +------------------------------- + + -- Class: mpi4py.MPI.Distgraphcomm + + Bases: *note Topocomm: d6. + + Distributed graph topology intracommunicator. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Distgraphcomm: 35.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Get_dist_neighbors: 37c.()Return adjacency information for a distributed graph topology. + + + *note Get_dist_neighbors_count: 37d.()Return adjacency information for a distributed graph topology. + + + Methods Documentation + ..................... + + -- Method: Get_dist_neighbors () + + Return adjacency information for a distributed graph topology. + + + Return type: tuple(3)[list(4)[int(5)], list(6)[int(7)], + tuple(8)[list(9)[int(10)], list(11)[int(12)]] | None(13)] + + -- Method: Get_dist_neighbors_count () + + Return adjacency information for a distributed graph topology. + + + Return type: int(14) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/stdtypes.html#tuple + + (4) https://docs.python.org/3/library/stdtypes.html#list + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/stdtypes.html#list + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/stdtypes.html#tuple + + (9) https://docs.python.org/3/library/stdtypes.html#list + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/stdtypes.html#list + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Errhandler, Next: mpi4py MPI File, Prev: mpi4py MPI Distgraphcomm, Up: mpi4py MPI<2> + +11.1.7 mpi4py.MPI.Errhandler +---------------------------- + + -- Class: mpi4py.MPI.Errhandler + + Bases: object(1) + + Error handler. + + -- Method: static __new__ (cls, errhandler=None) + + + Parameters: ‘errhandler’ (*note Errhandler: d8.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Free: 381.()Free an error handler. + + + *note f2py: 382.(arg) + + *note free: 383.()Call *note Free: 381. if not null. + + + *note fromhandle: 384.(handle)Create object from MPI handle. + + + *note py2f: 385.() + + Attributes Summary + .................. + + *note handle: 386.MPI handle. + + + Methods Documentation + ..................... + + -- Method: Free () + + Free an error handler. + + + Return type: None(4) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(5)) + + + Return type: *note Errhandler: d8. + + -- Method: free () + + Call *note Free: 381. if not null. + + + Return type: None(6) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(7)) + + + Return type: *note Errhandler: d8. + + -- Method: py2f () + + + Return type: int(8) + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/constants.html#None + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI File, Next: mpi4py MPI Graphcomm, Prev: mpi4py MPI Errhandler, Up: mpi4py MPI<2> + +11.1.8 mpi4py.MPI.File +---------------------- + + -- Class: mpi4py.MPI.File + + Bases: object(1) + + File I/O context. + + -- Method: static __new__ (cls, file=None) + + + Parameters: ‘file’ (*note File: 84.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Call_errhandler: 38a.(errorcode)Call the error handler installed on a file. + + + *note Close: 86.()Close a file. + + + *note Create_errhandler: 38b.(errhandler_fn)Create a new error handler for files. + + + *note Delete: 87.(filename[,Delete a file. + info]) + + *note Get_amode: 38c.()Return the file access mode. + + + *note Get_atomicity: 38d.()Return the atomicity mode. + + + *note Get_byte_offset: 38e.(offset)Return the absolute byte position in the file. + + + *note Get_errhandler: 38f.()Get the error handler for a file. + + + *note Get_group: 390.()Access the group of processes that opened the file. + + + *note Get_info: 391.()Return the current hints for a file. + + + *note Get_position: 392.()Return the current position of the individual file pointer. + + + *note Get_position_shared: 393.()Return the current position of the shared file pointer. + + + *note Get_size: 394.()Return the file size. + + + *note Get_type_extent: 395.(datatype)Return the extent of datatype in the file. + + + *note Get_view: 89.()Return the file view. + + + *note Iread: 396.(buf)Nonblocking read using individual file pointer. + + + *note Iread_all: 397.(buf)Nonblocking collective read using individual file pointer. + + + *note Iread_at: 398.(offset,Nonblocking read using explicit offset. + buf) + + *note Iread_at_all: 399.(offset,Nonblocking collective read using explicit offset. + buf) + + *note Iread_shared: 39a.(buf)Nonblocking read using shared file pointer. + + + *note Iwrite: 39b.(buf)Nonblocking write using individual file pointer. + + + *note Iwrite_all: 39c.(buf)Nonblocking collective write using individual file pointer. + + + *note Iwrite_at: 39d.(offset,Nonblocking write using explicit offset. + buf) + + *note Iwrite_at_all: 39e.(offset,Nonblocking collective write using explicit offset. + buf) + + *note Iwrite_shared: 39f.(buf)Nonblocking write using shared file pointer. + + + *note Open: 85.(comm,Open a file. + filename[, + amode, + info]) + + *note Preallocate: 3a0.(size)Preallocate storage space for a file. + + + *note Read: 3a1.(buf[,Read using individual file pointer. + status]) + + *note Read_all: 3a2.(buf[,Collective read using individual file pointer. + status]) + + *note Read_all_begin: 3a3.(buf)Start a split collective read using individual file pointer. + + + *note Read_all_end: 3a4.(buf[,Complete a split collective read using individual file pointer. + status]) + + *note Read_at: 3a5.(offset,Read using explicit offset. + buf[, + status]) + + *note Read_at_all: 3a6.(offset,Collective read using explicit offset. + buf[, + status]) + + *note Read_at_all_begin: 3a7.(offset,Start a split collective read using explicit offset. + buf) + + *note Read_at_all_end: 3a8.(buf[,Complete a split collective read using explicit offset. + status]) + + *note Read_ordered: 3a9.(buf[,Collective read using shared file pointer. + status]) + + *note Read_ordered_begin: 3aa.(buf)Start a split collective read using shared file pointer. + + + *note Read_ordered_end: 3ab.(buf[,Complete a split collective read using shared file pointer. + status]) + + *note Read_shared: 3ac.(buf[,Read using shared file pointer. + status]) + + *note Seek: 3ad.(offset[,Update the individual file pointer. + whence]) + + *note Seek_shared: 3ae.(offset[,Update the shared file pointer. + whence]) + + *note Set_atomicity: 3af.(flag)Set the atomicity mode. + + + *note Set_errhandler: 3b0.(errhandler)Set the error handler for a file. + + + *note Set_info: 3b1.(info)Set new values for the hints associated with a file. + + + *note Set_size: 3b2.(size)Set the file size. + + + *note Set_view: 88.([disp,Set the file view. + etype, + filetype, + datarep, + info]) + + *note Sync: 3b3.()Causes all previous writes to be transferred to the storage device. + + + *note Write: 3b4.(buf[,Write using individual file pointer. + status]) + + *note Write_all: 3b5.(buf[,Collective write using individual file pointer. + status]) + + *note Write_all_begin: 3b6.(buf)Start a split collective write using individual file pointer. + + + *note Write_all_end: 3b7.(buf[,Complete a split collective write using individual file pointer. + status]) + + *note Write_at: 3b8.(offset,Write using explicit offset. + buf[, + status]) + + *note Write_at_all: 3b9.(offset,Collective write using explicit offset. + buf[, + status]) + + *note Write_at_all_begin: 3ba.(offset,Start a split collective write using explicit offset. + buf) + + *note Write_at_all_end: 3bb.(buf[,Complete a split collective write using explicit offset. + status]) + + *note Write_ordered: 3bc.(buf[,Collective write using shared file pointer. + status]) + + *note Write_ordered_begin: 3bd.(buf)Start a split collective write using shared file pointer. + + + *note Write_ordered_end: 3be.(buf[,Complete a split collective write using shared file pointer. + status]) + + *note Write_shared: 3bf.(buf[,Write using shared file pointer. + status]) + + *note f2py: 3c0.(arg) + + *note free: 3c1.()Call *note Close: 86. if not null. + + + *note fromhandle: 3c2.(handle)Create object from MPI handle. + + + *note py2f: 3c3.() + + Attributes Summary + .................. + + *note amode: 3c4.Access mode. + + + *note atomicity: 3c5.Atomicity mode. + + + *note group: 3c6.Group. + + + *note group_rank: 3c7.Group rank. + + + *note group_size: 3c8.Group size. + + + *note handle: 3c9.MPI handle. + + + *note info: 3ca.Info hints. + + + *note size: 3cb.Size (in bytes). + + + Methods Documentation + ..................... + + -- Method: Call_errhandler (errorcode) + + Call the error handler installed on a file. + + + Parameters: ‘errorcode’ (int(4)) + + + Return type: None(5) + + -- Method: Close () + + Close a file. + + + Return type: None(6) + + -- Method: classmethod Create_errhandler (errhandler_fn) + + Create a new error handler for files. + + + Parameters: ‘errhandler_fn’ (Callable(7)‘[’‘[’*note File: + 84.‘, ’int(8)‘]’‘, ’None(9)‘]’) + + + Return type: *note Errhandler: d8. + + -- Method: classmethod Delete (filename, info=INFO_NULL) + + Delete a file. + + + Parameters: + + * ‘filename’ (PathLike(10)‘ | ’str(11)‘ | ’bytes(12)) + + * ‘info’ (*note Info: d4.) + + + Return type: None(13) + + -- Method: Get_amode () + + Return the file access mode. + + + Return type: int(14) + + -- Method: Get_atomicity () + + Return the atomicity mode. + + + Return type: bool(15) + + -- Method: Get_byte_offset (offset) + + Return the absolute byte position in the file. + + Note: Input ‘offset’ is measured in etype units relative + to the current file view. + + + Parameters: ‘offset’ (int(16)) + + + Return type: int(17) + + -- Method: Get_errhandler () + + Get the error handler for a file. + + + Return type: *note Errhandler: d8. + + -- Method: Get_group () + + Access the group of processes that opened the file. + + + Return type: *note Group: 28. + + -- Method: Get_info () + + Return the current hints for a file. + + + Return type: *note Info: d4. + + -- Method: Get_position () + + Return the current position of the individual file pointer. + + Note: Position is measured in etype units relative to the + current file view. + + + Return type: int(18) + + -- Method: Get_position_shared () + + Return the current position of the shared file pointer. + + Note: Position is measured in etype units relative to the + current view. + + + Return type: int(19) + + -- Method: Get_size () + + Return the file size. + + + Return type: int(20) + + -- Method: Get_type_extent (datatype) + + Return the extent of datatype in the file. + + + Parameters: ‘datatype’ (*note Datatype: d0.) + + + Return type: int(21) + + -- Method: Get_view () + + Return the file view. + + + Return type: tuple(22)[int(23), *note Datatype: d0, *note + Datatype: d0, str(24)] + + -- Method: Iread (buf) + + Nonblocking read using individual file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iread_all (buf) + + Nonblocking collective read using individual file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iread_at (offset, buf) + + Nonblocking read using explicit offset. + + + Parameters: + + * ‘offset’ (int(25)) + + * ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iread_at_all (offset, buf) + + Nonblocking collective read using explicit offset. + + + Parameters: + + * ‘offset’ (int(26)) + + * ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iread_shared (buf) + + Nonblocking read using shared file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iwrite (buf) + + Nonblocking write using individual file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iwrite_all (buf) + + Nonblocking collective write using individual file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iwrite_at (offset, buf) + + Nonblocking write using explicit offset. + + + Parameters: + + * ‘offset’ (int(27)) + + * ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iwrite_at_all (offset, buf) + + Nonblocking collective write using explicit offset. + + + Parameters: + + * ‘offset’ (int(28)) + + * ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: Iwrite_shared (buf) + + Nonblocking write using shared file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: classmethod Open (comm, filename, amode=MODE_RDONLY, + info=INFO_NULL) + + Open a file. + + + Parameters: + + * ‘comm’ (*note Intracomm: 1f.) + + * ‘filename’ (PathLike(29)‘ | ’str(30)‘ | ’bytes(31)) + + * ‘amode’ (int(32)) + + * ‘info’ (*note Info: d4.) + + + Return type: Self(33) + + -- Method: Preallocate (size) + + Preallocate storage space for a file. + + + Parameters: ‘size’ (int(34)) + + + Return type: None(35) + + -- Method: Read (buf, status=None) + + Read using individual file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(36)) + + + Return type: None(37) + + -- Method: Read_all (buf, status=None) + + Collective read using individual file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(38)) + + + Return type: None(39) + + -- Method: Read_all_begin (buf) + + Start a split collective read using individual file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: None(40) + + -- Method: Read_all_end (buf, status=None) + + Complete a split collective read using individual file + pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(41)) + + + Return type: None(42) + + -- Method: Read_at (offset, buf, status=None) + + Read using explicit offset. + + + Parameters: + + * ‘offset’ (int(43)) + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(44)) + + + Return type: None(45) + + -- Method: Read_at_all (offset, buf, status=None) + + Collective read using explicit offset. + + + Parameters: + + * ‘offset’ (int(46)) + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(47)) + + + Return type: None(48) + + -- Method: Read_at_all_begin (offset, buf) + + Start a split collective read using explicit offset. + + + Parameters: + + * ‘offset’ (int(49)) + + * ‘buf’ (*note BufSpec: 212.) + + + Return type: None(50) + + -- Method: Read_at_all_end (buf, status=None) + + Complete a split collective read using explicit offset. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(51)) + + + Return type: None(52) + + -- Method: Read_ordered (buf, status=None) + + Collective read using shared file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(53)) + + + Return type: None(54) + + -- Method: Read_ordered_begin (buf) + + Start a split collective read using shared file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: None(55) + + -- Method: Read_ordered_end (buf, status=None) + + Complete a split collective read using shared file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(56)) + + + Return type: None(57) + + -- Method: Read_shared (buf, status=None) + + Read using shared file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(58)) + + + Return type: None(59) + + -- Method: Seek (offset, whence=SEEK_SET) + + Update the individual file pointer. + + + Parameters: + + * ‘offset’ (int(60)) + + * ‘whence’ (int(61)) + + + Return type: None(62) + + -- Method: Seek_shared (offset, whence=SEEK_SET) + + Update the shared file pointer. + + + Parameters: + + * ‘offset’ (int(63)) + + * ‘whence’ (int(64)) + + + Return type: None(65) + + -- Method: Set_atomicity (flag) + + Set the atomicity mode. + + + Parameters: ‘flag’ (bool(66)) + + + Return type: None(67) + + -- Method: Set_errhandler (errhandler) + + Set the error handler for a file. + + + Parameters: ‘errhandler’ (*note Errhandler: d8.) + + + Return type: None(68) + + -- Method: Set_info (info) + + Set new values for the hints associated with a file. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: None(69) + + -- Method: Set_size (size) + + Set the file size. + + + Parameters: ‘size’ (int(70)) + + + Return type: None(71) + + -- Method: Set_view (disp=0, etype=BYTE, filetype=None, + datarep='native', info=INFO_NULL) + + Set the file view. + + + Parameters: + + * ‘disp’ (int(72)) + + * ‘etype’ (*note Datatype: d0.) + + * ‘filetype’ (*note Datatype: d0.‘ | ’None(73)) + + * ‘datarep’ (str(74)) + + * ‘info’ (*note Info: d4.) + + + Return type: None(75) + + -- Method: Sync () + + Causes all previous writes to be transferred to the storage + device. + + + Return type: None(76) + + -- Method: Write (buf, status=None) + + Write using individual file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(77)) + + + Return type: None(78) + + -- Method: Write_all (buf, status=None) + + Collective write using individual file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(79)) + + + Return type: None(80) + + -- Method: Write_all_begin (buf) + + Start a split collective write using individual file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: None(81) + + -- Method: Write_all_end (buf, status=None) + + Complete a split collective write using individual file + pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(82)) + + + Return type: None(83) + + -- Method: Write_at (offset, buf, status=None) + + Write using explicit offset. + + + Parameters: + + * ‘offset’ (int(84)) + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(85)) + + + Return type: None(86) + + -- Method: Write_at_all (offset, buf, status=None) + + Collective write using explicit offset. + + + Parameters: + + * ‘offset’ (int(87)) + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(88)) + + + Return type: None(89) + + -- Method: Write_at_all_begin (offset, buf) + + Start a split collective write using explicit offset. + + + Parameters: + + * ‘offset’ (int(90)) + + * ‘buf’ (*note BufSpec: 212.) + + + Return type: None(91) + + -- Method: Write_at_all_end (buf, status=None) + + Complete a split collective write using explicit offset. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(92)) + + + Return type: None(93) + + -- Method: Write_ordered (buf, status=None) + + Collective write using shared file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(94)) + + + Return type: None(95) + + -- Method: Write_ordered_begin (buf) + + Start a split collective write using shared file pointer. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: None(96) + + -- Method: Write_ordered_end (buf, status=None) + + Complete a split collective write using shared file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(97)) + + + Return type: None(98) + + -- Method: Write_shared (buf, status=None) + + Write using shared file pointer. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(99)) + + + Return type: None(100) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(101)) + + + Return type: *note File: 84. + + -- Method: free () + + Call *note Close: 86. if not null. + + + Return type: None(102) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(103)) + + + Return type: *note File: 84. + + -- Method: py2f () + + + Return type: int(104) + + Attributes Documentation + ........................ + + -- Attribute: amode + + Access mode. + + -- Attribute: atomicity + + Atomicity mode. + + -- Attribute: group + + Group. + + -- Attribute: group_rank + + Group rank. + + -- Attribute: group_size + + Group size. + + -- Attribute: handle + + MPI handle. + + -- Attribute: info + + Info hints. + + -- Attribute: size + + Size (in bytes). + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/typing.html#typing.Callable + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/os.html#os.PathLike + + (11) https://docs.python.org/3/library/stdtypes.html#str + + (12) https://docs.python.org/3/library/stdtypes.html#bytes + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/functions.html#bool + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/functions.html#int + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/stdtypes.html#tuple + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/stdtypes.html#str + + (25) https://docs.python.org/3/library/functions.html#int + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/functions.html#int + + (28) https://docs.python.org/3/library/functions.html#int + + (29) https://docs.python.org/3/library/os.html#os.PathLike + + (30) https://docs.python.org/3/library/stdtypes.html#str + + (31) https://docs.python.org/3/library/stdtypes.html#bytes + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/typing.html#typing.Self + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/constants.html#None + + (36) https://docs.python.org/3/library/constants.html#None + + (37) https://docs.python.org/3/library/constants.html#None + + (38) https://docs.python.org/3/library/constants.html#None + + (39) https://docs.python.org/3/library/constants.html#None + + (40) https://docs.python.org/3/library/constants.html#None + + (41) https://docs.python.org/3/library/constants.html#None + + (42) https://docs.python.org/3/library/constants.html#None + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/constants.html#None + + (45) https://docs.python.org/3/library/constants.html#None + + (46) https://docs.python.org/3/library/functions.html#int + + (47) https://docs.python.org/3/library/constants.html#None + + (48) https://docs.python.org/3/library/constants.html#None + + (49) https://docs.python.org/3/library/functions.html#int + + (50) https://docs.python.org/3/library/constants.html#None + + (51) https://docs.python.org/3/library/constants.html#None + + (52) https://docs.python.org/3/library/constants.html#None + + (53) https://docs.python.org/3/library/constants.html#None + + (54) https://docs.python.org/3/library/constants.html#None + + (55) https://docs.python.org/3/library/constants.html#None + + (56) https://docs.python.org/3/library/constants.html#None + + (57) https://docs.python.org/3/library/constants.html#None + + (58) https://docs.python.org/3/library/constants.html#None + + (59) https://docs.python.org/3/library/constants.html#None + + (60) https://docs.python.org/3/library/functions.html#int + + (61) https://docs.python.org/3/library/functions.html#int + + (62) https://docs.python.org/3/library/constants.html#None + + (63) https://docs.python.org/3/library/functions.html#int + + (64) https://docs.python.org/3/library/functions.html#int + + (65) https://docs.python.org/3/library/constants.html#None + + (66) https://docs.python.org/3/library/functions.html#bool + + (67) https://docs.python.org/3/library/constants.html#None + + (68) https://docs.python.org/3/library/constants.html#None + + (69) https://docs.python.org/3/library/constants.html#None + + (70) https://docs.python.org/3/library/functions.html#int + + (71) https://docs.python.org/3/library/constants.html#None + + (72) https://docs.python.org/3/library/functions.html#int + + (73) https://docs.python.org/3/library/constants.html#None + + (74) https://docs.python.org/3/library/stdtypes.html#str + + (75) https://docs.python.org/3/library/constants.html#None + + (76) https://docs.python.org/3/library/constants.html#None + + (77) https://docs.python.org/3/library/constants.html#None + + (78) https://docs.python.org/3/library/constants.html#None + + (79) https://docs.python.org/3/library/constants.html#None + + (80) https://docs.python.org/3/library/constants.html#None + + (81) https://docs.python.org/3/library/constants.html#None + + (82) https://docs.python.org/3/library/constants.html#None + + (83) https://docs.python.org/3/library/constants.html#None + + (84) https://docs.python.org/3/library/functions.html#int + + (85) https://docs.python.org/3/library/constants.html#None + + (86) https://docs.python.org/3/library/constants.html#None + + (87) https://docs.python.org/3/library/functions.html#int + + (88) https://docs.python.org/3/library/constants.html#None + + (89) https://docs.python.org/3/library/constants.html#None + + (90) https://docs.python.org/3/library/functions.html#int + + (91) https://docs.python.org/3/library/constants.html#None + + (92) https://docs.python.org/3/library/constants.html#None + + (93) https://docs.python.org/3/library/constants.html#None + + (94) https://docs.python.org/3/library/constants.html#None + + (95) https://docs.python.org/3/library/constants.html#None + + (96) https://docs.python.org/3/library/constants.html#None + + (97) https://docs.python.org/3/library/constants.html#None + + (98) https://docs.python.org/3/library/constants.html#None + + (99) https://docs.python.org/3/library/constants.html#None + + (100) https://docs.python.org/3/library/constants.html#None + + (101) https://docs.python.org/3/library/functions.html#int + + (102) https://docs.python.org/3/library/constants.html#None + + (103) https://docs.python.org/3/library/functions.html#int + + (104) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Graphcomm, Next: mpi4py MPI Grequest, Prev: mpi4py MPI File, Up: mpi4py MPI<2> + +11.1.9 mpi4py.MPI.Graphcomm +--------------------------- + + -- Class: mpi4py.MPI.Graphcomm + + Bases: *note Topocomm: d6. + + General graph topology intracommunicator. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Graphcomm: 34.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Get_dims: 3cf.()Return the number of nodes and edges. + + + *note Get_neighbors: 3d0.(rank)Return list of neighbors of a process. + + + *note Get_neighbors_count: 3d1.(rank)Return number of neighbors of a process. + + + *note Get_topo: 3d2.()Return index and edges. + + + Attributes Summary + .................. + + *note dims: 3d3.Number of nodes and edges. + + + *note edges: 3d4.Edges. + + + *note index: 3d5.Index. + + + *note nedges: 3d6.Number of edges. + + + *note neighbors: 3d7.Neighbors. + + + *note nneighbors: 3d8.Number of neighbors. + + + *note nnodes: 3d9.Number of nodes. + + + *note topo: 3da.Topology information. + + + Methods Documentation + ..................... + + -- Method: Get_dims () + + Return the number of nodes and edges. + + + Return type: tuple(3)[int(4), int(5)] + + -- Method: Get_neighbors (rank) + + Return list of neighbors of a process. + + + Parameters: ‘rank’ (int(6)) + + + Return type: list(7)[int(8)] + + -- Method: Get_neighbors_count (rank) + + Return number of neighbors of a process. + + + Parameters: ‘rank’ (int(9)) + + + Return type: int(10) + + -- Method: Get_topo () + + Return index and edges. + + + Return type: tuple(11)[list(12)[int(13)], list(14)[int(15)]] + + Attributes Documentation + ........................ + + -- Attribute: dims + + Number of nodes and edges. + + -- Attribute: edges + + Edges. + + -- Attribute: index + + Index. + + -- Attribute: nedges + + Number of edges. + + -- Attribute: neighbors + + Neighbors. + + -- Attribute: nneighbors + + Number of neighbors. + + -- Attribute: nnodes + + Number of nodes. + + -- Attribute: topo + + Topology information. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/stdtypes.html#tuple + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/stdtypes.html#list + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/stdtypes.html#tuple + + (12) https://docs.python.org/3/library/stdtypes.html#list + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/stdtypes.html#list + + (15) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Grequest, Next: mpi4py MPI Group, Prev: mpi4py MPI Graphcomm, Up: mpi4py MPI<2> + +11.1.10 mpi4py.MPI.Grequest +--------------------------- + + -- Class: mpi4py.MPI.Grequest + + Bases: *note Request: 43. + + Generalized request handler. + + -- Method: static __new__ (cls, request=None) + + + Parameters: ‘request’ (*note Grequest: d2.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Complete: 3de.()Notify that a user-defined request is complete. + + + *note Start: 3df.([query_fn,Create and return a user-defined request. + free_fn, + cancel_fn, + args, ...]) + + *note complete: 3e0.([obj])Notify that a user-defined request is complete. + + + Methods Documentation + ..................... + + -- Method: Complete () + + Notify that a user-defined request is complete. + + + Return type: None(3) + + -- Method: classmethod Start (query_fn=None, free_fn=None, + cancel_fn=None, args=None, kwargs=None) + + Create and return a user-defined request. + + + Parameters: + + * ‘query_fn’ (Callable(4)‘[’‘[’‘...’‘]’‘, ’None(5)‘] ’‘| + ’None(6)) + + * ‘free_fn’ (Callable(7)‘[’‘[’‘...’‘]’‘, ’None(8)‘] ’‘| + ’None(9)) + + * ‘cancel_fn’ (Callable(10)‘[’‘[’‘...’‘]’‘, ’None(11)‘] ’‘| + ’None(12)) + + * ‘args’ (tuple(13)‘[’Any(14)‘] ’‘| ’None(15)) + + * ‘kwargs’ (dict(16)‘[’str(17)‘, ’Any(18)‘] ’‘| ’None(19)) + + + Return type: *note Grequest: d2. + + -- Method: complete (obj=None) + + Notify that a user-defined request is complete. + + + Parameters: ‘obj’ (Any(20)) + + + Return type: None(21) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/constants.html#None + + (4) https://docs.python.org/3/library/typing.html#typing.Callable + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/typing.html#typing.Callable + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/typing.html#typing.Callable + + (11) https://docs.python.org/3/library/constants.html#None + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/stdtypes.html#tuple + + (14) https://docs.python.org/3/library/typing.html#typing.Any + + (15) https://docs.python.org/3/library/constants.html#None + + (16) https://docs.python.org/3/library/stdtypes.html#dict + + (17) https://docs.python.org/3/library/stdtypes.html#str + + (18) https://docs.python.org/3/library/typing.html#typing.Any + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/typing.html#typing.Any + + (21) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Group, Next: mpi4py MPI InPlaceType, Prev: mpi4py MPI Grequest, Up: mpi4py MPI<2> + +11.1.11 mpi4py.MPI.Group +------------------------ + + -- Class: mpi4py.MPI.Group + + Bases: object(1) + + Group of processes. + + -- Method: static __new__ (cls, group=None) + + + Parameters: ‘group’ (*note Group: 28.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Compare: 3e4.(group)Compare two groups. + + + *note Create_from_session_pset: 3e5.(session,Create a new group from session and process set. + pset_name) + + *note Difference: 2b.(group1,Create a new group from the difference of two existing groups. + group2) + + *note Dup: 3e6.()Duplicate a group. + + + *note Excl: 3e7.(ranks)Create a new group by excluding listed members. + + + *note Free: 3e8.()Free a group. + + + *note Get_rank: 3e9.()Return the rank of this process in a group. + + + *note Get_size: 3ea.()Return the number of processes in a group. + + + *note Incl: 3eb.(ranks)Create a new group by including listed members. + + + *note Intersection: 2a.(group1,Create a new group from the intersection of two existing groups. + group2) + + *note Range_excl: 3ec.(ranks)Create a new group by excluding ranges of members. + + + *note Range_incl: 3ed.(ranks)Create a new group by including ranges of members. + + + *note Translate_ranks: 3ee.([ranks,Translate ranks in a group to those in another group. + group]) + + *note Union: 29.(group1,Create a new group from the union of two existing groups. + group2) + + *note f2py: 3ef.(arg) + + *note free: 3f0.()Call *note Free: 3e8. if not null or predefined. + + + *note fromhandle: 3f1.(handle)Create object from MPI handle. + + + *note py2f: 3f2.() + + Attributes Summary + .................. + + *note handle: 3f3.MPI handle. + + + *note rank: 3f4.Rank of this process. + + + *note size: 3f5.Number of processes. + + + Methods Documentation + ..................... + + -- Method: Compare (group) + + Compare two groups. + + + Parameters: ‘group’ (*note Group: 28.) + + + Return type: int(4) + + -- Method: classmethod Create_from_session_pset (session, + pset_name) + + Create a new group from session and process set. + + + Parameters: + + * ‘session’ (*note Session: d5.) + + * ‘pset_name’ (str(5)) + + + Return type: Self(6) + + -- Method: classmethod Difference (group1, group2) + + Create a new group from the difference of two existing groups. + + + Parameters: + + * ‘group1’ (*note Group: 28.) + + * ‘group2’ (*note Group: 28.) + + + Return type: Self(7) + + -- Method: Dup () + + Duplicate a group. + + + Return type: Self(8) + + -- Method: Excl (ranks) + + Create a new group by excluding listed members. + + + Parameters: ‘ranks’ (Sequence(9)‘[’int(10)‘]’) + + + Return type: Self(11) + + -- Method: Free () + + Free a group. + + + Return type: None(12) + + -- Method: Get_rank () + + Return the rank of this process in a group. + + + Return type: int(13) + + -- Method: Get_size () + + Return the number of processes in a group. + + + Return type: int(14) + + -- Method: Incl (ranks) + + Create a new group by including listed members. + + + Parameters: ‘ranks’ (Sequence(15)‘[’int(16)‘]’) + + + Return type: Self(17) + + -- Method: classmethod Intersection (group1, group2) + + Create a new group from the intersection of two existing + groups. + + + Parameters: + + * ‘group1’ (*note Group: 28.) + + * ‘group2’ (*note Group: 28.) + + + Return type: Self(18) + + -- Method: Range_excl (ranks) + + Create a new group by excluding ranges of members. + + + Parameters: ‘ranks’ (Sequence(19)‘[’tuple(20)‘[’int(21)‘, + ’int(22)‘, ’int(23)‘]’‘]’) + + + Return type: Self(24) + + -- Method: Range_incl (ranks) + + Create a new group by including ranges of members. + + + Parameters: ‘ranks’ (Sequence(25)‘[’tuple(26)‘[’int(27)‘, + ’int(28)‘, ’int(29)‘]’‘]’) + + + Return type: Self(30) + + -- Method: Translate_ranks (ranks=None, group=None) + + Translate ranks in a group to those in another group. + + + Parameters: + + * ‘ranks’ (Sequence(31)‘[’int(32)‘] ’‘| ’None(33)) + + * ‘group’ (*note Group: 28.‘ | ’None(34)) + + + Return type: list(35)[int(36)] + + -- Method: classmethod Union (group1, group2) + + Create a new group from the union of two existing groups. + + + Parameters: + + * ‘group1’ (*note Group: 28.) + + * ‘group2’ (*note Group: 28.) + + + Return type: Self(37) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(38)) + + + Return type: *note Group: 28. + + -- Method: free () + + Call *note Free: 3e8. if not null or predefined. + + + Return type: None(39) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(40)) + + + Return type: *note Group: 28. + + -- Method: py2f () + + + Return type: int(41) + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + -- Attribute: rank + + Rank of this process. + + -- Attribute: size + + Number of processes. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/stdtypes.html#str + + (6) https://docs.python.org/3/library/typing.html#typing.Self + + (7) https://docs.python.org/3/library/typing.html#typing.Self + + (8) https://docs.python.org/3/library/typing.html#typing.Self + + (9) https://docs.python.org/3/library/typing.html#typing.Sequence + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/typing.html#typing.Self + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/typing.html#typing.Sequence + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/typing.html#typing.Self + + (18) https://docs.python.org/3/library/typing.html#typing.Self + + (19) https://docs.python.org/3/library/typing.html#typing.Sequence + + (20) https://docs.python.org/3/library/stdtypes.html#tuple + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/typing.html#typing.Self + + (25) https://docs.python.org/3/library/typing.html#typing.Sequence + + (26) https://docs.python.org/3/library/stdtypes.html#tuple + + (27) https://docs.python.org/3/library/functions.html#int + + (28) https://docs.python.org/3/library/functions.html#int + + (29) https://docs.python.org/3/library/functions.html#int + + (30) https://docs.python.org/3/library/typing.html#typing.Self + + (31) https://docs.python.org/3/library/typing.html#typing.Sequence + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/constants.html#None + + (34) https://docs.python.org/3/library/constants.html#None + + (35) https://docs.python.org/3/library/stdtypes.html#list + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/typing.html#typing.Self + + (38) https://docs.python.org/3/library/functions.html#int + + (39) https://docs.python.org/3/library/constants.html#None + + (40) https://docs.python.org/3/library/functions.html#int + + (41) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI InPlaceType, Next: mpi4py MPI Info, Prev: mpi4py MPI Group, Up: mpi4py MPI<2> + +11.1.12 mpi4py.MPI.InPlaceType +------------------------------ + + -- Class: mpi4py.MPI.InPlaceType + + Bases: int(1) + + Type of *note IN_PLACE: fc. + + -- Method: static __new__ (cls) + + + Return type: Self(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + +File: mpi4py.info, Node: mpi4py MPI Info, Next: mpi4py MPI Intercomm, Prev: mpi4py MPI InPlaceType, Up: mpi4py MPI<2> + +11.1.13 mpi4py.MPI.Info +----------------------- + + -- Class: mpi4py.MPI.Info + + Bases: object(1) + + Info object. + + -- Method: static __new__ (cls, info=None) + + + Parameters: ‘info’ (*note Info: d4.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Create: 3fc.([items])Create a new info object. + + + *note Create_env: 3fd.([args])Create a new environment info object. + + + *note Delete: 3fe.(key)Remove a (key, value) pair from info. + + + *note Dup: 3ff.()Duplicate an existing info object. + + + *note Free: 400.()Free an info object. + + + *note Get: 401.(key)Retrieve the value associated with a key. + + + *note Get_nkeys: 402.()Return the number of currently defined keys in info. + + + *note Get_nthkey: 403.(n)Return the ‘n’-th defined key in info. + + + *note Set: 404.(key,Store a value associated with a key. + value) + + *note clear: 405.()Clear contents. + + + *note copy: 406.()Copy contents. + + + *note f2py: 407.(arg) + + *note free: 408.()Call *note Free: 400. if not null or predefined. + + + *note fromhandle: 409.(handle)Create object from MPI handle. + + + *note get: 40a.(key[,Retrieve value by key. + default]) + + *note items: 40b.()Return list of items. + + + *note keys: 40c.()Return list of keys. + + + *note pop: 40d.(key,Pop value by key. + *default) + + *note popitem: 40e.()Pop first item. + + + *note py2f: 40f.() + + *note update: 410.([items])Update contents. + + + *note values: 411.()Return list of values. + + + Attributes Summary + .................. + + *note handle: 412.MPI handle. + + + Methods Documentation + ..................... + + -- Method: classmethod Create (items=None) + + Create a new info object. + + + Parameters: ‘items’ (*note Info: d4.‘ | ’Mapping(4)‘[’str(5)‘, + ’str(6)‘] ’‘| ’Iterable(7)‘[’tuple(8)‘[’str(9)‘, ’str(10)‘]’‘] + ’‘| ’None(11)) + + + Return type: Self(12) + + -- Method: classmethod Create_env (args=None) + + Create a new environment info object. + + + Parameters: ‘args’ (Sequence(13)‘[’str(14)‘] ’‘| ’None(15)) + + + Return type: Self(16) + + -- Method: Delete (key) + + Remove a (key, value) pair from info. + + + Parameters: ‘key’ (str(17)) + + + Return type: None(18) + + -- Method: Dup () + + Duplicate an existing info object. + + + Return type: Self(19) + + -- Method: Free () + + Free an info object. + + + Return type: None(20) + + -- Method: Get (key) + + Retrieve the value associated with a key. + + + Parameters: ‘key’ (str(21)) + + + Return type: str(22) | None(23) + + -- Method: Get_nkeys () + + Return the number of currently defined keys in info. + + + Return type: int(24) + + -- Method: Get_nthkey (n) + + Return the ‘n’-th defined key in info. + + + Parameters: ‘n’ (int(25)) + + + Return type: str(26) + + -- Method: Set (key, value) + + Store a value associated with a key. + + + Parameters: + + * ‘key’ (str(27)) + + * ‘value’ (str(28)) + + + Return type: None(29) + + -- Method: clear () + + Clear contents. + + + Return type: None(30) + + -- Method: copy () + + Copy contents. + + + Return type: Self(31) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(32)) + + + Return type: *note Info: d4. + + -- Method: free () + + Call *note Free: 400. if not null or predefined. + + + Return type: None(33) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(34)) + + + Return type: *note Info: d4. + + -- Method: get (key, default=None) + + Retrieve value by key. + + + Parameters: + + * ‘key’ (str(35)) + + * ‘default’ (str(36)‘ | ’None(37)) + + + Return type: str(38) | None(39) + + -- Method: items () + + Return list of items. + + + Return type: list(40)[tuple(41)[str(42), str(43)]] + + -- Method: keys () + + Return list of keys. + + + Return type: list(44)[str(45)] + + -- Method: pop (key, *default) + + Pop value by key. + + + Parameters: + + * ‘key’ (str(46)) + + * ‘default’ (str(47)) + + + Return type: str(48) + + -- Method: popitem () + + Pop first item. + + + Return type: tuple(49)[str(50), str(51)] + + -- Method: py2f () + + + Return type: int(52) + + -- Method: update (items=(), **kwds) + + Update contents. + + + Parameters: + + * ‘items’ (*note Info: d4.‘ | ’Mapping(53)‘[’str(54)‘, + ’str(55)‘] ’‘| ’Iterable(56)‘[’tuple(57)‘[’str(58)‘, + ’str(59)‘]’‘]’) + + * ‘kwds’ (str(60)) + + + Return type: None(61) + + -- Method: values () + + Return list of values. + + + Return type: list(62)[str(63)] + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/typing.html#typing.Mapping + + (5) https://docs.python.org/3/library/stdtypes.html#str + + (6) https://docs.python.org/3/library/stdtypes.html#str + + (7) https://docs.python.org/3/library/typing.html#typing.Iterable + + (8) https://docs.python.org/3/library/stdtypes.html#tuple + + (9) https://docs.python.org/3/library/stdtypes.html#str + + (10) https://docs.python.org/3/library/stdtypes.html#str + + (11) https://docs.python.org/3/library/constants.html#None + + (12) https://docs.python.org/3/library/typing.html#typing.Self + + (13) https://docs.python.org/3/library/typing.html#typing.Sequence + + (14) https://docs.python.org/3/library/stdtypes.html#str + + (15) https://docs.python.org/3/library/constants.html#None + + (16) https://docs.python.org/3/library/typing.html#typing.Self + + (17) https://docs.python.org/3/library/stdtypes.html#str + + (18) https://docs.python.org/3/library/constants.html#None + + (19) https://docs.python.org/3/library/typing.html#typing.Self + + (20) https://docs.python.org/3/library/constants.html#None + + (21) https://docs.python.org/3/library/stdtypes.html#str + + (22) https://docs.python.org/3/library/stdtypes.html#str + + (23) https://docs.python.org/3/library/constants.html#None + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/functions.html#int + + (26) https://docs.python.org/3/library/stdtypes.html#str + + (27) https://docs.python.org/3/library/stdtypes.html#str + + (28) https://docs.python.org/3/library/stdtypes.html#str + + (29) https://docs.python.org/3/library/constants.html#None + + (30) https://docs.python.org/3/library/constants.html#None + + (31) https://docs.python.org/3/library/typing.html#typing.Self + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/constants.html#None + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/stdtypes.html#str + + (36) https://docs.python.org/3/library/stdtypes.html#str + + (37) https://docs.python.org/3/library/constants.html#None + + (38) https://docs.python.org/3/library/stdtypes.html#str + + (39) https://docs.python.org/3/library/constants.html#None + + (40) https://docs.python.org/3/library/stdtypes.html#list + + (41) https://docs.python.org/3/library/stdtypes.html#tuple + + (42) https://docs.python.org/3/library/stdtypes.html#str + + (43) https://docs.python.org/3/library/stdtypes.html#str + + (44) https://docs.python.org/3/library/stdtypes.html#list + + (45) https://docs.python.org/3/library/stdtypes.html#str + + (46) https://docs.python.org/3/library/stdtypes.html#str + + (47) https://docs.python.org/3/library/stdtypes.html#str + + (48) https://docs.python.org/3/library/stdtypes.html#str + + (49) https://docs.python.org/3/library/stdtypes.html#tuple + + (50) https://docs.python.org/3/library/stdtypes.html#str + + (51) https://docs.python.org/3/library/stdtypes.html#str + + (52) https://docs.python.org/3/library/functions.html#int + + (53) https://docs.python.org/3/library/typing.html#typing.Mapping + + (54) https://docs.python.org/3/library/stdtypes.html#str + + (55) https://docs.python.org/3/library/stdtypes.html#str + + (56) https://docs.python.org/3/library/typing.html#typing.Iterable + + (57) https://docs.python.org/3/library/stdtypes.html#tuple + + (58) https://docs.python.org/3/library/stdtypes.html#str + + (59) https://docs.python.org/3/library/stdtypes.html#str + + (60) https://docs.python.org/3/library/stdtypes.html#str + + (61) https://docs.python.org/3/library/constants.html#None + + (62) https://docs.python.org/3/library/stdtypes.html#list + + (63) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Intercomm, Next: mpi4py MPI Intracomm, Prev: mpi4py MPI Info, Up: mpi4py MPI<2> + +11.1.14 mpi4py.MPI.Intercomm +---------------------------- + + -- Class: mpi4py.MPI.Intercomm + + Bases: *note Comm: 1e. + + Intercommunicator. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Intercomm: 20.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Create_from_groups: 416.(local_group,Create communicator from group. + ...[, ...]) + + *note Get_remote_group: 417.()Access the remote group associated with the inter-communicator. + + + *note Get_remote_size: 418.()Intercommunicator remote size. + + + *note Merge: 32.([high])Merge intercommunicator into an intracommunicator. + + + Attributes Summary + .................. + + *note remote_group: 419.Remote group. + + + *note remote_size: 41a.Number of remote processes. + + + Methods Documentation + ..................... + + -- Method: classmethod Create_from_groups (local_group, + local_leader, remote_group, remote_leader, + stringtag='org.mpi4py', info=INFO_NULL, errhandler=None) + + Create communicator from group. + + + Parameters: + + * ‘local_group’ (*note Group: 28.) + + * ‘local_leader’ (int(3)) + + * ‘remote_group’ (*note Group: 28.) + + * ‘remote_leader’ (int(4)) + + * ‘stringtag’ (str(5)) + + * ‘info’ (*note Info: d4.) + + * ‘errhandler’ (*note Errhandler: d8.‘ | ’None(6)) + + + Return type: *note Intracomm: 1f. + + -- Method: Get_remote_group () + + Access the remote group associated with the + inter-communicator. + + + Return type: *note Group: 28. + + -- Method: Get_remote_size () + + Intercommunicator remote size. + + + Return type: int(7) + + -- Method: Merge (high=False) + + Merge intercommunicator into an intracommunicator. + + + Parameters: ‘high’ (bool(8)) + + + Return type: *note Intracomm: 1f. + + Attributes Documentation + ........................ + + -- Attribute: remote_group + + Remote group. + + -- Attribute: remote_size + + Number of remote processes. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/functions.html#int + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/stdtypes.html#str + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#bool + + +File: mpi4py.info, Node: mpi4py MPI Intracomm, Next: mpi4py MPI Message, Prev: mpi4py MPI Intercomm, Up: mpi4py MPI<2> + +11.1.15 mpi4py.MPI.Intracomm +---------------------------- + + -- Class: mpi4py.MPI.Intracomm + + Bases: *note Comm: 1e. + + Intracommunicator. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Intracomm: 1f.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Accept: 6f.(port_name[,Accept a request to form a new intercommunicator. + info, root]) + + *note Cart_map: 41e.(dims[,Determine optimal process placement on a Cartesian topology. + periods]) + + *note Connect: 71.(port_name[,Make a request to form a new intercommunicator. + info, root]) + + *note Create_cart: 36.(dims[,Create cartesian communicator. + periods, + reorder]) + + *note Create_dist_graph: 41f.(sources,Create distributed graph communicator. + degrees, + destinations) + + *note Create_dist_graph_adjacent: 420.(sources,Create distributed graph communicator. + destinations) + + *note Create_from_group: 421.(group[,Create communicator from group. + stringtag, + info, ...]) + + *note Create_graph: 37.(index,Create graph communicator. + edges[, + reorder]) + + *note Create_group: 2d.(group[,Create communicator from group. + tag]) + + *note Create_intercomm: 31.(local_leader,Create intercommunicator. + peer_comm, + ...) + + *note Exscan: 60.(sendbuf,Exclusive Scan. + recvbuf[, + op]) + + *note Exscan_init: 422.(sendbuf,Persistent Exclusive Scan. + recvbuf[, + op, info]) + + *note Graph_map: 423.(index,Determine optimal process placement on a graph topology. + edges) + + *note Iexscan: 424.(sendbuf,Inclusive Scan. + recvbuf[, + op]) + + *note Iscan: 425.(sendbuf,Inclusive Scan. + recvbuf[, + op]) + + *note Scan: 5f.(sendbuf,Inclusive Scan. + recvbuf[, + op]) + + *note Scan_init: 426.(sendbuf,Persistent Inclusive Scan. + recvbuf[, + op, info]) + + *note Spawn: 6b.(command[,Spawn instances of a single MPI application. + args, + maxprocs, + info, root, + ...]) + + *note Spawn_multiple: 427.(command[,Spawn instances of multiple MPI applications. + args, + maxprocs, + ...]) + + *note exscan: 64.(sendobj[,Exclusive Scan. + op]) + + *note scan: 63.(sendobj[,Inclusive Scan. + op]) + + Methods Documentation + ..................... + + -- Method: Accept (port_name, info=INFO_NULL, root=0) + + Accept a request to form a new intercommunicator. + + + Parameters: + + * ‘port_name’ (str(3)) + + * ‘info’ (*note Info: d4.) + + * ‘root’ (int(4)) + + + Return type: *note Intercomm: 20. + + -- Method: Cart_map (dims, periods=None) + + Determine optimal process placement on a Cartesian topology. + + + Parameters: + + * ‘dims’ (Sequence(5)‘[’int(6)‘]’) + + * ‘periods’ (Sequence(7)‘[’bool(8)‘] ’‘| ’None(9)) + + + Return type: int(10) + + -- Method: Connect (port_name, info=INFO_NULL, root=0) + + Make a request to form a new intercommunicator. + + + Parameters: + + * ‘port_name’ (str(11)) + + * ‘info’ (*note Info: d4.) + + * ‘root’ (int(12)) + + + Return type: *note Intercomm: 20. + + -- Method: Create_cart (dims, periods=None, reorder=False) + + Create cartesian communicator. + + + Parameters: + + * ‘dims’ (Sequence(13)‘[’int(14)‘]’) + + * ‘periods’ (Sequence(15)‘[’bool(16)‘] ’‘| ’None(17)) + + * ‘reorder’ (bool(18)) + + + Return type: *note Cartcomm: 33. + + -- Method: Create_dist_graph (sources, degrees, destinations, + weights=None, info=INFO_NULL, reorder=False) + + Create distributed graph communicator. + + + Parameters: + + * ‘sources’ (Sequence(19)‘[’int(20)‘]’) + + * ‘degrees’ (Sequence(21)‘[’int(22)‘]’) + + * ‘destinations’ (Sequence(23)‘[’int(24)‘]’) + + * ‘weights’ (Sequence(25)‘[’int(26)‘] ’‘| ’None(27)) + + * ‘info’ (*note Info: d4.) + + * ‘reorder’ (bool(28)) + + + Return type: *note Distgraphcomm: 35. + + -- Method: Create_dist_graph_adjacent (sources, destinations, + sourceweights=None, destweights=None, info=INFO_NULL, + reorder=False) + + Create distributed graph communicator. + + + Parameters: + + * ‘sources’ (Sequence(29)‘[’int(30)‘]’) + + * ‘destinations’ (Sequence(31)‘[’int(32)‘]’) + + * ‘sourceweights’ (Sequence(33)‘[’int(34)‘] ’‘| ’None(35)) + + * ‘destweights’ (Sequence(36)‘[’int(37)‘] ’‘| ’None(38)) + + * ‘info’ (*note Info: d4.) + + * ‘reorder’ (bool(39)) + + + Return type: *note Distgraphcomm: 35. + + -- Method: classmethod Create_from_group (group, + stringtag='org.mpi4py', info=INFO_NULL, errhandler=None) + + Create communicator from group. + + + Parameters: + + * ‘group’ (*note Group: 28.) + + * ‘stringtag’ (str(40)) + + * ‘info’ (*note Info: d4.) + + * ‘errhandler’ (*note Errhandler: d8.‘ | ’None(41)) + + + Return type: *note Intracomm: 1f. + + -- Method: Create_graph (index, edges, reorder=False) + + Create graph communicator. + + + Parameters: + + * ‘index’ (Sequence(42)‘[’int(43)‘]’) + + * ‘edges’ (Sequence(44)‘[’int(45)‘]’) + + * ‘reorder’ (bool(46)) + + + Return type: *note Graphcomm: 34. + + -- Method: Create_group (group, tag=0) + + Create communicator from group. + + + Parameters: + + * ‘group’ (*note Group: 28.) + + * ‘tag’ (int(47)) + + + Return type: *note Intracomm: 1f. + + -- Method: Create_intercomm (local_leader, peer_comm, + remote_leader, tag=0) + + Create intercommunicator. + + + Parameters: + + * ‘local_leader’ (int(48)) + + * ‘peer_comm’ (*note Intracomm: 1f.) + + * ‘remote_leader’ (int(49)) + + * ‘tag’ (int(50)) + + + Return type: *note Intercomm: 20. + + -- Method: Exscan (sendbuf, recvbuf, op=SUM) + + Exclusive Scan. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + + Return type: None(51) + + -- Method: Exscan_init (sendbuf, recvbuf, op=SUM, info=INFO_NULL) + + Persistent Exclusive Scan. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Graph_map (index, edges) + + Determine optimal process placement on a graph topology. + + + Parameters: + + * ‘index’ (Sequence(52)‘[’int(53)‘]’) + + * ‘edges’ (Sequence(54)‘[’int(55)‘]’) + + + Return type: int(56) + + -- Method: Iexscan (sendbuf, recvbuf, op=SUM) + + Inclusive Scan. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Iscan (sendbuf, recvbuf, op=SUM) + + Inclusive Scan. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Scan (sendbuf, recvbuf, op=SUM) + + Inclusive Scan. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + + Return type: None(57) + + -- Method: Scan_init (sendbuf, recvbuf, op=SUM, info=INFO_NULL) + + Persistent Inclusive Scan. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.‘ | ’*note InPlace: 20c.) + + * ‘recvbuf’ (*note BufSpec: 212.) + + * ‘op’ (*note Op: d3.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Spawn (command, args=None, maxprocs=1, info=INFO_NULL, + root=0, errcodes=None) + + Spawn instances of a single MPI application. + + + Parameters: + + * ‘command’ (str(58)) + + * ‘args’ (Sequence(59)‘[’str(60)‘] ’‘| ’None(61)) + + * ‘maxprocs’ (int(62)) + + * ‘info’ (*note Info: d4.) + + * ‘root’ (int(63)) + + * ‘errcodes’ (list(64)‘[’int(65)‘] ’‘| ’None(66)) + + + Return type: *note Intercomm: 20. + + -- Method: Spawn_multiple (command, args=None, maxprocs=None, + info=INFO_NULL, root=0, errcodes=None) + + Spawn instances of multiple MPI applications. + + + Parameters: + + * ‘command’ (Sequence(67)‘[’str(68)‘]’) + + * ‘args’ (Sequence(69)‘[’Sequence(70)‘[’str(71)‘]’‘] ’‘| + ’None(72)) + + * ‘maxprocs’ (Sequence(73)‘[’int(74)‘] ’‘| ’None(75)) + + * ‘info’ (Sequence(76)‘[’*note Info: d4.‘] ’‘| ’*note Info: + d4.) + + * ‘root’ (int(77)) + + * ‘errcodes’ (list(78)‘[’list(79)‘[’int(80)‘]’‘] ’‘| + ’None(81)) + + + Return type: *note Intercomm: 20. + + -- Method: exscan (sendobj, op=SUM) + + Exclusive Scan. + + + Parameters: + + * ‘sendobj’ (Any(82)) + + * ‘op’ (*note Op: d3.‘ | ’Callable(83)‘[’‘[’Any(84)‘, + ’Any(85)‘]’‘, ’Any(86)‘]’) + + + Return type: Any(87) + + -- Method: scan (sendobj, op=SUM) + + Inclusive Scan. + + + Parameters: + + * ‘sendobj’ (Any(88)) + + * ‘op’ (*note Op: d3.‘ | ’Callable(89)‘[’‘[’Any(90)‘, + ’Any(91)‘]’‘, ’Any(92)‘]’) + + + Return type: Any(93) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/stdtypes.html#str + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/typing.html#typing.Sequence + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/typing.html#typing.Sequence + + (8) https://docs.python.org/3/library/functions.html#bool + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/stdtypes.html#str + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/typing.html#typing.Sequence + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/typing.html#typing.Sequence + + (16) https://docs.python.org/3/library/functions.html#bool + + (17) https://docs.python.org/3/library/constants.html#None + + (18) https://docs.python.org/3/library/functions.html#bool + + (19) https://docs.python.org/3/library/typing.html#typing.Sequence + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/typing.html#typing.Sequence + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/typing.html#typing.Sequence + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/typing.html#typing.Sequence + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/constants.html#None + + (28) https://docs.python.org/3/library/functions.html#bool + + (29) https://docs.python.org/3/library/typing.html#typing.Sequence + + (30) https://docs.python.org/3/library/functions.html#int + + (31) https://docs.python.org/3/library/typing.html#typing.Sequence + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/typing.html#typing.Sequence + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/constants.html#None + + (36) https://docs.python.org/3/library/typing.html#typing.Sequence + + (37) https://docs.python.org/3/library/functions.html#int + + (38) https://docs.python.org/3/library/constants.html#None + + (39) https://docs.python.org/3/library/functions.html#bool + + (40) https://docs.python.org/3/library/stdtypes.html#str + + (41) https://docs.python.org/3/library/constants.html#None + + (42) https://docs.python.org/3/library/typing.html#typing.Sequence + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/typing.html#typing.Sequence + + (45) https://docs.python.org/3/library/functions.html#int + + (46) https://docs.python.org/3/library/functions.html#bool + + (47) https://docs.python.org/3/library/functions.html#int + + (48) https://docs.python.org/3/library/functions.html#int + + (49) https://docs.python.org/3/library/functions.html#int + + (50) https://docs.python.org/3/library/functions.html#int + + (51) https://docs.python.org/3/library/constants.html#None + + (52) https://docs.python.org/3/library/typing.html#typing.Sequence + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/typing.html#typing.Sequence + + (55) https://docs.python.org/3/library/functions.html#int + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/constants.html#None + + (58) https://docs.python.org/3/library/stdtypes.html#str + + (59) https://docs.python.org/3/library/typing.html#typing.Sequence + + (60) https://docs.python.org/3/library/stdtypes.html#str + + (61) https://docs.python.org/3/library/constants.html#None + + (62) https://docs.python.org/3/library/functions.html#int + + (63) https://docs.python.org/3/library/functions.html#int + + (64) https://docs.python.org/3/library/stdtypes.html#list + + (65) https://docs.python.org/3/library/functions.html#int + + (66) https://docs.python.org/3/library/constants.html#None + + (67) https://docs.python.org/3/library/typing.html#typing.Sequence + + (68) https://docs.python.org/3/library/stdtypes.html#str + + (69) https://docs.python.org/3/library/typing.html#typing.Sequence + + (70) https://docs.python.org/3/library/typing.html#typing.Sequence + + (71) https://docs.python.org/3/library/stdtypes.html#str + + (72) https://docs.python.org/3/library/constants.html#None + + (73) https://docs.python.org/3/library/typing.html#typing.Sequence + + (74) https://docs.python.org/3/library/functions.html#int + + (75) https://docs.python.org/3/library/constants.html#None + + (76) https://docs.python.org/3/library/typing.html#typing.Sequence + + (77) https://docs.python.org/3/library/functions.html#int + + (78) https://docs.python.org/3/library/stdtypes.html#list + + (79) https://docs.python.org/3/library/stdtypes.html#list + + (80) https://docs.python.org/3/library/functions.html#int + + (81) https://docs.python.org/3/library/constants.html#None + + (82) https://docs.python.org/3/library/typing.html#typing.Any + + (83) https://docs.python.org/3/library/typing.html#typing.Callable + + (84) https://docs.python.org/3/library/typing.html#typing.Any + + (85) https://docs.python.org/3/library/typing.html#typing.Any + + (86) https://docs.python.org/3/library/typing.html#typing.Any + + (87) https://docs.python.org/3/library/typing.html#typing.Any + + (88) https://docs.python.org/3/library/typing.html#typing.Any + + (89) https://docs.python.org/3/library/typing.html#typing.Callable + + (90) https://docs.python.org/3/library/typing.html#typing.Any + + (91) https://docs.python.org/3/library/typing.html#typing.Any + + (92) https://docs.python.org/3/library/typing.html#typing.Any + + (93) https://docs.python.org/3/library/typing.html#typing.Any + + +File: mpi4py.info, Node: mpi4py MPI Message, Next: mpi4py MPI Op, Prev: mpi4py MPI Intracomm, Up: mpi4py MPI<2> + +11.1.16 mpi4py.MPI.Message +-------------------------- + + -- Class: mpi4py.MPI.Message + + Bases: object(1) + + Matched message. + + -- Method: static __new__ (cls, message=None) + + + Parameters: ‘message’ (*note Message: d7.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Iprobe: 42b.(comm[,Nonblocking test for a matched message. + source, tag, + status]) + + *note Irecv: 42c.(buf)Nonblocking receive of matched message. + + + *note Probe: 42d.(comm[,Blocking test for a matched message. + source, tag, + status]) + + *note Recv: 42e.(buf[,Blocking receive of matched message. + status]) + + *note f2py: 42f.(arg) + + *note free: 430.()Do nothing. + + + *note fromhandle: 431.(handle)Create object from MPI handle. + + + *note iprobe: 432.(comm[,Nonblocking test for a matched message. + source, tag, + status]) + + *note irecv: 433.()Nonblocking receive of matched message. + + + *note probe: 434.(comm[,Blocking test for a matched message. + source, tag, + status]) + + *note py2f: 435.() + + *note recv: 436.([status])Blocking receive of matched message. + + + Attributes Summary + .................. + + *note handle: 437.MPI handle. + + + Methods Documentation + ..................... + + -- Method: classmethod Iprobe (comm, source=ANY_SOURCE, + tag=ANY_TAG, status=None) + + Nonblocking test for a matched message. + + + Parameters: + + * ‘comm’ (*note Comm: 1e.) + + * ‘source’ (int(4)) + + * ‘tag’ (int(5)) + + * ‘status’ (*note Status: d1.‘ | ’None(6)) + + + Return type: Self(7) | None(8) + + -- Method: Irecv (buf) + + Nonblocking receive of matched message. + + + Parameters: ‘buf’ (*note BufSpec: 212.) + + + Return type: *note Request: 43. + + -- Method: classmethod Probe (comm, source=ANY_SOURCE, + tag=ANY_TAG, status=None) + + Blocking test for a matched message. + + + Parameters: + + * ‘comm’ (*note Comm: 1e.) + + * ‘source’ (int(9)) + + * ‘tag’ (int(10)) + + * ‘status’ (*note Status: d1.‘ | ’None(11)) + + + Return type: Self(12) + + -- Method: Recv (buf, status=None) + + Blocking receive of matched message. + + + Parameters: + + * ‘buf’ (*note BufSpec: 212.) + + * ‘status’ (*note Status: d1.‘ | ’None(13)) + + + Return type: None(14) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(15)) + + + Return type: *note Message: d7. + + -- Method: free () + + Do nothing. + + + Return type: None(16) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(17)) + + + Return type: *note Message: d7. + + -- Method: classmethod iprobe (comm, source=ANY_SOURCE, + tag=ANY_TAG, status=None) + + Nonblocking test for a matched message. + + + Parameters: + + * ‘comm’ (*note Comm: 1e.) + + * ‘source’ (int(18)) + + * ‘tag’ (int(19)) + + * ‘status’ (*note Status: d1.‘ | ’None(20)) + + + Return type: Self(21) | None(22) + + -- Method: irecv () + + Nonblocking receive of matched message. + + + Return type: *note Request: 43. + + -- Method: classmethod probe (comm, source=ANY_SOURCE, + tag=ANY_TAG, status=None) + + Blocking test for a matched message. + + + Parameters: + + * ‘comm’ (*note Comm: 1e.) + + * ‘source’ (int(23)) + + * ‘tag’ (int(24)) + + * ‘status’ (*note Status: d1.‘ | ’None(25)) + + + Return type: Self(26) + + -- Method: py2f () + + + Return type: int(27) + + -- Method: recv (status=None) + + Blocking receive of matched message. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(28)) + + + Return type: Any(29) + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/typing.html#typing.Self + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/constants.html#None + + (12) https://docs.python.org/3/library/typing.html#typing.Self + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/constants.html#None + + (15) https://docs.python.org/3/library/functions.html#int + + (16) https://docs.python.org/3/library/constants.html#None + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/functions.html#int + + (20) https://docs.python.org/3/library/constants.html#None + + (21) https://docs.python.org/3/library/typing.html#typing.Self + + (22) https://docs.python.org/3/library/constants.html#None + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/constants.html#None + + (26) https://docs.python.org/3/library/typing.html#typing.Self + + (27) https://docs.python.org/3/library/functions.html#int + + (28) https://docs.python.org/3/library/constants.html#None + + (29) https://docs.python.org/3/library/typing.html#typing.Any + + +File: mpi4py.info, Node: mpi4py MPI Op, Next: mpi4py MPI Pickle, Prev: mpi4py MPI Message, Up: mpi4py MPI<2> + +11.1.17 mpi4py.MPI.Op +--------------------- + + -- Class: mpi4py.MPI.Op + + Bases: object(1) + + Reduction operation. + + -- Method: static __new__ (cls, op=None) + + + Parameters: ‘op’ (*note Op: d3.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Create: 43b.(function[,Create a user-defined reduction operation. + commute]) + + *note Free: 43c.()Free a user-defined reduction operation. + + + *note Is_commutative: 43d.()Query reduction operations for their commutativity. + + + *note Reduce_local: 43e.(inbuf,Apply a reduction operation to local data. + inoutbuf) + + *note f2py: 43f.(arg) + + *note free: 440.()Call *note Free: 43c. if not null or predefined. + + + *note fromhandle: 441.(handle)Create object from MPI handle. + + + *note py2f: 442.() + + Attributes Summary + .................. + + *note handle: 443.MPI handle. + + + *note is_commutative: 444.Is a commutative operation. + + + *note is_predefined: 445.Is a predefined operation. + + + Methods Documentation + ..................... + + -- Method: classmethod Create (function, commute=False) + + Create a user-defined reduction operation. + + + Parameters: + + * ‘function’ (Callable(4)‘[’‘[’*note Buffer: 20a.‘, ’*note + Buffer: 20a.‘, ’*note Datatype: d0.‘]’‘, ’None(5)‘]’) + + * ‘commute’ (bool(6)) + + + Return type: Self(7) + + -- Method: Free () + + Free a user-defined reduction operation. + + + Return type: None(8) + + -- Method: Is_commutative () + + Query reduction operations for their commutativity. + + + Return type: bool(9) + + -- Method: Reduce_local (inbuf, inoutbuf) + + Apply a reduction operation to local data. + + + Parameters: + + * ‘inbuf’ (*note BufSpec: 212.) + + * ‘inoutbuf’ (*note BufSpec: 212.) + + + Return type: None(10) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(11)) + + + Return type: *note Op: d3. + + -- Method: free () + + Call *note Free: 43c. if not null or predefined. + + + Return type: None(12) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(13)) + + + Return type: *note Op: d3. + + -- Method: py2f () + + + Return type: int(14) + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + -- Attribute: is_commutative + + Is a commutative operation. + + -- Attribute: is_predefined + + Is a predefined operation. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/typing.html#typing.Callable + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/functions.html#bool + + (7) https://docs.python.org/3/library/typing.html#typing.Self + + (8) https://docs.python.org/3/library/constants.html#None + + (9) https://docs.python.org/3/library/functions.html#bool + + (10) https://docs.python.org/3/library/constants.html#None + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Pickle, Next: mpi4py MPI Prequest, Prev: mpi4py MPI Op, Up: mpi4py MPI<2> + +11.1.18 mpi4py.MPI.Pickle +------------------------- + + -- Class: mpi4py.MPI.Pickle + + Bases: object(1) + + Pickle/unpickle Python objects. + + -- Method: static __new__ (cls, pickle=None) + + + Parameters: ‘pickle’ (*note Pickle: d9.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note dumps: 449.(obj)Serialize object to pickle data stream. + + + *note dumps_oob: 44a.(obj)Serialize object to pickle data stream and out-of-band buffers. + + + *note loads: 44b.(data)Deserialize object from pickle data stream. + + + *note loads_oob: 44c.(data,Deserialize object from pickle data stream and out-of-band buffers. + buffers) + + Attributes Summary + .................. + + *note PROTOCOL: a7.Protocol version. + + + *note THRESHOLD: c8.Out-of-band threshold. + + + Methods Documentation + ..................... + + -- Method: dumps (obj) + + Serialize object to pickle data stream. + + + Parameters: ‘obj’ (Any(4)) + + + Return type: bytes(5) + + -- Method: dumps_oob (obj) + + Serialize object to pickle data stream and out-of-band + buffers. + + + Parameters: ‘obj’ (Any(6)) + + + Return type: tuple(7)[bytes(8), list(9)[*note buffer: da.]] + + -- Method: loads (data) + + Deserialize object from pickle data stream. + + + Parameters: ‘data’ (*note Buffer: 20a.) + + + Return type: Any(10) + + -- Method: loads_oob (data, buffers) + + Deserialize object from pickle data stream and out-of-band + buffers. + + + Parameters: + + * ‘data’ (*note Buffer: 20a.) + + * ‘buffers’ (Iterable(11)‘[’*note Buffer: 20a.‘]’) + + + Return type: Any(12) + + Attributes Documentation + ........................ + + -- Attribute: PROTOCOL + + Protocol version. + + -- Attribute: THRESHOLD + + Out-of-band threshold. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/typing.html#typing.Any + + (5) https://docs.python.org/3/library/stdtypes.html#bytes + + (6) https://docs.python.org/3/library/typing.html#typing.Any + + (7) https://docs.python.org/3/library/stdtypes.html#tuple + + (8) https://docs.python.org/3/library/stdtypes.html#bytes + + (9) https://docs.python.org/3/library/stdtypes.html#list + + (10) https://docs.python.org/3/library/typing.html#typing.Any + + (11) https://docs.python.org/3/library/typing.html#typing.Iterable + + (12) https://docs.python.org/3/library/typing.html#typing.Any + + +File: mpi4py.info, Node: mpi4py MPI Prequest, Next: mpi4py MPI Request, Prev: mpi4py MPI Pickle, Up: mpi4py MPI<2> + +11.1.19 mpi4py.MPI.Prequest +--------------------------- + + -- Class: mpi4py.MPI.Prequest + + Bases: *note Request: 43. + + Persistent request handler. + + -- Method: static __new__ (cls, request=None) + + + Parameters: ‘request’ (*note Prequest: 4a.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Parrived: 450.(partition)Test partial completion of a partitioned receive operation. + + + *note Pready: 451.(partition)Mark a given partition as ready. + + + *note Pready_list: 452.(partitions)Mark a sequence of partitions as ready. + + + *note Pready_range: 453.(partition_low,Mark a range of partitions as ready. + partition_high) + + *note Start: 4b.()Initiate a communication with a persistent request. + + + *note Startall: 454.(requests)Start a collection of persistent requests. + + + Methods Documentation + ..................... + + -- Method: Parrived (partition) + + Test partial completion of a partitioned receive operation. + + + Parameters: ‘partition’ (int(3)) + + + Return type: bool(4) + + -- Method: Pready (partition) + + Mark a given partition as ready. + + + Parameters: ‘partition’ (int(5)) + + + Return type: None(6) + + -- Method: Pready_list (partitions) + + Mark a sequence of partitions as ready. + + + Parameters: ‘partitions’ (Sequence(7)‘[’int(8)‘]’) + + + Return type: None(9) + + -- Method: Pready_range (partition_low, partition_high) + + Mark a range of partitions as ready. + + + Parameters: + + * ‘partition_low’ (int(10)) + + * ‘partition_high’ (int(11)) + + + Return type: None(12) + + -- Method: Start () + + Initiate a communication with a persistent request. + + + Return type: None(13) + + -- Method: classmethod Startall (requests) + + Start a collection of persistent requests. + + + Parameters: ‘requests’ (list(14)‘[’*note Prequest: 4a.‘]’) + + + Return type: None(15) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/functions.html#int + + (4) https://docs.python.org/3/library/functions.html#bool + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/typing.html#typing.Sequence + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/stdtypes.html#list + + (15) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Request, Next: mpi4py MPI Session, Prev: mpi4py MPI Prequest, Up: mpi4py MPI<2> + +11.1.20 mpi4py.MPI.Request +-------------------------- + + -- Class: mpi4py.MPI.Request + + Bases: object(1) + + Request handler. + + -- Method: static __new__ (cls, request=None) + + + Parameters: ‘request’ (*note Request: 43.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Cancel: 46.()Cancel a request. + + + *note Free: 458.()Free a communication request. + + + *note Get_status: 459.([status])Non-destructive test for the completion of a request. + + + *note Get_status_all: 45a.(requests[,Non-destructive test for the completion of all requests. + statuses]) + + *note Get_status_any: 45b.(requests[,Non-destructive test for the completion of any requests. + status]) + + *note Get_status_some: 45c.(requests[,Non-destructive test for completion of some requests. + statuses]) + + *note Test: 44.([status])Test for the completion of a non-blocking operation. + + + *note Testall: 45d.(requests[,Test for completion of all previously initiated requests. + statuses]) + + *note Testany: 45e.(requests[,Test for completion of any previously initiated request. + status]) + + *note Testsome: 45f.(requests[,Test for completion of some previously initiated requests. + statuses]) + + *note Wait: 45.([status])Wait for a non-blocking operation to complete. + + + *note Waitall: 460.(requests[,Wait for all previously initiated requests to complete. + statuses]) + + *note Waitany: 461.(requests[,Wait for any previously initiated request to complete. + status]) + + *note Waitsome: 462.(requests[,Wait for some previously initiated requests to complete. + statuses]) + + *note cancel: 463.()Cancel a request. + + + *note f2py: 464.(arg) + + *note free: 465.()Call *note Free: 458. if not null. + + + *note fromhandle: 466.(handle)Create object from MPI handle. + + + *note get_status: 467.([status])Non-destructive test for the completion of a request. + + + *note get_status_all: 468.(requests[,Non-destructive test for the completion of all requests. + statuses]) + + *note get_status_any: 469.(requests[,Non-destructive test for the completion of any requests. + status]) + + *note get_status_some: 46a.(requests[,Non-destructive test for completion of some requests. + statuses]) + + *note py2f: 46b.() + + *note test: a3.([status])Test for the completion of a non-blocking operation. + + + *note testall: 46c.(requests[,Test for completion of all previously initiated requests. + statuses]) + + *note testany: 46d.(requests[,Test for completion of any previously initiated request. + status]) + + *note testsome: 46e.(requests[,Test for completion of some previously initiated requests. + statuses]) + + *note wait: a4.([status])Wait for a non-blocking operation to complete. + + + *note waitall: 46f.(requests[,Wait for all previously initiated requests to complete. + statuses]) + + *note waitany: 470.(requests[,Wait for any previously initiated request to complete. + status]) + + *note waitsome: 471.(requests[,Wait for some previously initiated requests to complete. + statuses]) + + Attributes Summary + .................. + + *note handle: 472.MPI handle. + + + Methods Documentation + ..................... + + -- Method: Cancel () + + Cancel a request. + + + Return type: None(4) + + -- Method: Free () + + Free a communication request. + + + Return type: None(5) + + -- Method: Get_status (status=None) + + Non-destructive test for the completion of a request. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(6)) + + + Return type: bool(7) + + -- Method: classmethod Get_status_all (requests, statuses=None) + + Non-destructive test for the completion of all requests. + + + Parameters: + + * ‘requests’ (Sequence(8)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(9)‘[’*note Status: d1.‘] ’‘| ’None(10)) + + + Return type: bool(11) + + -- Method: classmethod Get_status_any (requests, status=None) + + Non-destructive test for the completion of any requests. + + + Parameters: + + * ‘requests’ (Sequence(12)‘[’*note Request: 43.‘]’) + + * ‘status’ (*note Status: d1.‘ | ’None(13)) + + + Return type: tuple(14)[int(15), bool(16)] + + -- Method: classmethod Get_status_some (requests, statuses=None) + + Non-destructive test for completion of some requests. + + + Parameters: + + * ‘requests’ (Sequence(17)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(18)‘[’*note Status: d1.‘] ’‘| ’None(19)) + + + Return type: list(20)[int(21)] | None(22) + + -- Method: Test (status=None) + + Test for the completion of a non-blocking operation. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(23)) + + + Return type: bool(24) + + -- Method: classmethod Testall (requests, statuses=None) + + Test for completion of all previously initiated requests. + + + Parameters: + + * ‘requests’ (Sequence(25)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(26)‘[’*note Status: d1.‘] ’‘| ’None(27)) + + + Return type: bool(28) + + -- Method: classmethod Testany (requests, status=None) + + Test for completion of any previously initiated request. + + + Parameters: + + * ‘requests’ (Sequence(29)‘[’*note Request: 43.‘]’) + + * ‘status’ (*note Status: d1.‘ | ’None(30)) + + + Return type: tuple(31)[int(32), bool(33)] + + -- Method: classmethod Testsome (requests, statuses=None) + + Test for completion of some previously initiated requests. + + + Parameters: + + * ‘requests’ (Sequence(34)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(35)‘[’*note Status: d1.‘] ’‘| ’None(36)) + + + Return type: list(37)[int(38)] | None(39) + + -- Method: Wait (status=None) + + Wait for a non-blocking operation to complete. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(40)) + + + Return type: Literal(41)[True] + + -- Method: classmethod Waitall (requests, statuses=None) + + Wait for all previously initiated requests to complete. + + + Parameters: + + * ‘requests’ (Sequence(42)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(43)‘[’*note Status: d1.‘] ’‘| ’None(44)) + + + Return type: Literal(45)[True] + + -- Method: classmethod Waitany (requests, status=None) + + Wait for any previously initiated request to complete. + + + Parameters: + + * ‘requests’ (Sequence(46)‘[’*note Request: 43.‘]’) + + * ‘status’ (*note Status: d1.‘ | ’None(47)) + + + Return type: int(48) + + -- Method: classmethod Waitsome (requests, statuses=None) + + Wait for some previously initiated requests to complete. + + + Parameters: + + * ‘requests’ (Sequence(49)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(50)‘[’*note Status: d1.‘] ’‘| ’None(51)) + + + Return type: list(52)[int(53)] | None(54) + + -- Method: cancel () + + Cancel a request. + + + Return type: None(55) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(56)) + + + Return type: *note Request: 43. + + -- Method: free () + + Call *note Free: 458. if not null. + + + Return type: None(57) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(58)) + + + Return type: *note Request: 43. + + -- Method: get_status (status=None) + + Non-destructive test for the completion of a request. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(59)) + + + Return type: bool(60) + + -- Method: classmethod get_status_all (requests, statuses=None) + + Non-destructive test for the completion of all requests. + + + Parameters: + + * ‘requests’ (Sequence(61)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(62)‘[’*note Status: d1.‘] ’‘| ’None(63)) + + + Return type: bool(64) + + -- Method: classmethod get_status_any (requests, status=None) + + Non-destructive test for the completion of any requests. + + + Parameters: + + * ‘requests’ (Sequence(65)‘[’*note Request: 43.‘]’) + + * ‘status’ (*note Status: d1.‘ | ’None(66)) + + + Return type: tuple(67)[int(68), bool(69)] + + -- Method: classmethod get_status_some (requests, statuses=None) + + Non-destructive test for completion of some requests. + + + Parameters: + + * ‘requests’ (Sequence(70)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(71)‘[’*note Status: d1.‘] ’‘| ’None(72)) + + + Return type: list(73)[int(74)] | None(75) + + -- Method: py2f () + + + Return type: int(76) + + -- Method: test (status=None) + + Test for the completion of a non-blocking operation. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(77)) + + + Return type: tuple(78)[bool(79), Any(80) | None(81)] + + -- Method: classmethod testall (requests, statuses=None) + + Test for completion of all previously initiated requests. + + + Parameters: + + * ‘requests’ (Sequence(82)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(83)‘[’*note Status: d1.‘] ’‘| ’None(84)) + + + Return type: tuple(85)[bool(86), list(87)[Any(88)] | None(89)] + + -- Method: classmethod testany (requests, status=None) + + Test for completion of any previously initiated request. + + + Parameters: + + * ‘requests’ (Sequence(90)‘[’*note Request: 43.‘]’) + + * ‘status’ (*note Status: d1.‘ | ’None(91)) + + + Return type: tuple(92)[int(93), bool(94), Any(95) | None(96)] + + -- Method: classmethod testsome (requests, statuses=None) + + Test for completion of some previously initiated requests. + + + Parameters: + + * ‘requests’ (Sequence(97)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(98)‘[’*note Status: d1.‘] ’‘| ’None(99)) + + + Return type: tuple(100)[list(101)[int(102)] | None(103), + list(104)[Any(105)] | None(106)] + + -- Method: wait (status=None) + + Wait for a non-blocking operation to complete. + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(107)) + + + Return type: Any(108) + + -- Method: classmethod waitall (requests, statuses=None) + + Wait for all previously initiated requests to complete. + + + Parameters: + + * ‘requests’ (Sequence(109)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(110)‘[’*note Status: d1.‘] ’‘| + ’None(111)) + + + Return type: list(112)[Any(113)] + + -- Method: classmethod waitany (requests, status=None) + + Wait for any previously initiated request to complete. + + + Parameters: + + * ‘requests’ (Sequence(114)‘[’*note Request: 43.‘]’) + + * ‘status’ (*note Status: d1.‘ | ’None(115)) + + + Return type: tuple(116)[int(117), Any(118)] + + -- Method: classmethod waitsome (requests, statuses=None) + + Wait for some previously initiated requests to complete. + + + Parameters: + + * ‘requests’ (Sequence(119)‘[’*note Request: 43.‘]’) + + * ‘statuses’ (list(120)‘[’*note Status: d1.‘] ’‘| + ’None(121)) + + + Return type: tuple(122)[list(123)[int(124)] | None(125), + list(126)[Any(127)] | None(128)] + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/constants.html#None + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/functions.html#bool + + (8) https://docs.python.org/3/library/typing.html#typing.Sequence + + (9) https://docs.python.org/3/library/stdtypes.html#list + + (10) https://docs.python.org/3/library/constants.html#None + + (11) https://docs.python.org/3/library/functions.html#bool + + (12) https://docs.python.org/3/library/typing.html#typing.Sequence + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/stdtypes.html#tuple + + (15) https://docs.python.org/3/library/functions.html#int + + (16) https://docs.python.org/3/library/functions.html#bool + + (17) https://docs.python.org/3/library/typing.html#typing.Sequence + + (18) https://docs.python.org/3/library/stdtypes.html#list + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/stdtypes.html#list + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/constants.html#None + + (23) https://docs.python.org/3/library/constants.html#None + + (24) https://docs.python.org/3/library/functions.html#bool + + (25) https://docs.python.org/3/library/typing.html#typing.Sequence + + (26) https://docs.python.org/3/library/stdtypes.html#list + + (27) https://docs.python.org/3/library/constants.html#None + + (28) https://docs.python.org/3/library/functions.html#bool + + (29) https://docs.python.org/3/library/typing.html#typing.Sequence + + (30) https://docs.python.org/3/library/constants.html#None + + (31) https://docs.python.org/3/library/stdtypes.html#tuple + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/functions.html#bool + + (34) https://docs.python.org/3/library/typing.html#typing.Sequence + + (35) https://docs.python.org/3/library/stdtypes.html#list + + (36) https://docs.python.org/3/library/constants.html#None + + (37) https://docs.python.org/3/library/stdtypes.html#list + + (38) https://docs.python.org/3/library/functions.html#int + + (39) https://docs.python.org/3/library/constants.html#None + + (40) https://docs.python.org/3/library/constants.html#None + + (41) https://docs.python.org/3/library/typing.html#typing.Literal + + (42) https://docs.python.org/3/library/typing.html#typing.Sequence + + (43) https://docs.python.org/3/library/stdtypes.html#list + + (44) https://docs.python.org/3/library/constants.html#None + + (45) https://docs.python.org/3/library/typing.html#typing.Literal + + (46) https://docs.python.org/3/library/typing.html#typing.Sequence + + (47) https://docs.python.org/3/library/constants.html#None + + (48) https://docs.python.org/3/library/functions.html#int + + (49) https://docs.python.org/3/library/typing.html#typing.Sequence + + (50) https://docs.python.org/3/library/stdtypes.html#list + + (51) https://docs.python.org/3/library/constants.html#None + + (52) https://docs.python.org/3/library/stdtypes.html#list + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/constants.html#None + + (55) https://docs.python.org/3/library/constants.html#None + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/constants.html#None + + (58) https://docs.python.org/3/library/functions.html#int + + (59) https://docs.python.org/3/library/constants.html#None + + (60) https://docs.python.org/3/library/functions.html#bool + + (61) https://docs.python.org/3/library/typing.html#typing.Sequence + + (62) https://docs.python.org/3/library/stdtypes.html#list + + (63) https://docs.python.org/3/library/constants.html#None + + (64) https://docs.python.org/3/library/functions.html#bool + + (65) https://docs.python.org/3/library/typing.html#typing.Sequence + + (66) https://docs.python.org/3/library/constants.html#None + + (67) https://docs.python.org/3/library/stdtypes.html#tuple + + (68) https://docs.python.org/3/library/functions.html#int + + (69) https://docs.python.org/3/library/functions.html#bool + + (70) https://docs.python.org/3/library/typing.html#typing.Sequence + + (71) https://docs.python.org/3/library/stdtypes.html#list + + (72) https://docs.python.org/3/library/constants.html#None + + (73) https://docs.python.org/3/library/stdtypes.html#list + + (74) https://docs.python.org/3/library/functions.html#int + + (75) https://docs.python.org/3/library/constants.html#None + + (76) https://docs.python.org/3/library/functions.html#int + + (77) https://docs.python.org/3/library/constants.html#None + + (78) https://docs.python.org/3/library/stdtypes.html#tuple + + (79) https://docs.python.org/3/library/functions.html#bool + + (80) https://docs.python.org/3/library/typing.html#typing.Any + + (81) https://docs.python.org/3/library/constants.html#None + + (82) https://docs.python.org/3/library/typing.html#typing.Sequence + + (83) https://docs.python.org/3/library/stdtypes.html#list + + (84) https://docs.python.org/3/library/constants.html#None + + (85) https://docs.python.org/3/library/stdtypes.html#tuple + + (86) https://docs.python.org/3/library/functions.html#bool + + (87) https://docs.python.org/3/library/stdtypes.html#list + + (88) https://docs.python.org/3/library/typing.html#typing.Any + + (89) https://docs.python.org/3/library/constants.html#None + + (90) https://docs.python.org/3/library/typing.html#typing.Sequence + + (91) https://docs.python.org/3/library/constants.html#None + + (92) https://docs.python.org/3/library/stdtypes.html#tuple + + (93) https://docs.python.org/3/library/functions.html#int + + (94) https://docs.python.org/3/library/functions.html#bool + + (95) https://docs.python.org/3/library/typing.html#typing.Any + + (96) https://docs.python.org/3/library/constants.html#None + + (97) https://docs.python.org/3/library/typing.html#typing.Sequence + + (98) https://docs.python.org/3/library/stdtypes.html#list + + (99) https://docs.python.org/3/library/constants.html#None + + (100) https://docs.python.org/3/library/stdtypes.html#tuple + + (101) https://docs.python.org/3/library/stdtypes.html#list + + (102) https://docs.python.org/3/library/functions.html#int + + (103) https://docs.python.org/3/library/constants.html#None + + (104) https://docs.python.org/3/library/stdtypes.html#list + + (105) https://docs.python.org/3/library/typing.html#typing.Any + + (106) https://docs.python.org/3/library/constants.html#None + + (107) https://docs.python.org/3/library/constants.html#None + + (108) https://docs.python.org/3/library/typing.html#typing.Any + + (109) https://docs.python.org/3/library/typing.html#typing.Sequence + + (110) https://docs.python.org/3/library/stdtypes.html#list + + (111) https://docs.python.org/3/library/constants.html#None + + (112) https://docs.python.org/3/library/stdtypes.html#list + + (113) https://docs.python.org/3/library/typing.html#typing.Any + + (114) https://docs.python.org/3/library/typing.html#typing.Sequence + + (115) https://docs.python.org/3/library/constants.html#None + + (116) https://docs.python.org/3/library/stdtypes.html#tuple + + (117) https://docs.python.org/3/library/functions.html#int + + (118) https://docs.python.org/3/library/typing.html#typing.Any + + (119) https://docs.python.org/3/library/typing.html#typing.Sequence + + (120) https://docs.python.org/3/library/stdtypes.html#list + + (121) https://docs.python.org/3/library/constants.html#None + + (122) https://docs.python.org/3/library/stdtypes.html#tuple + + (123) https://docs.python.org/3/library/stdtypes.html#list + + (124) https://docs.python.org/3/library/functions.html#int + + (125) https://docs.python.org/3/library/constants.html#None + + (126) https://docs.python.org/3/library/stdtypes.html#list + + (127) https://docs.python.org/3/library/typing.html#typing.Any + + (128) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Session, Next: mpi4py MPI Status, Prev: mpi4py MPI Request, Up: mpi4py MPI<2> + +11.1.21 mpi4py.MPI.Session +-------------------------- + + -- Class: mpi4py.MPI.Session + + Bases: object(1) + + Session context. + + -- Method: static __new__ (cls, session=None) + + + Parameters: ‘session’ (*note Session: d5.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Attach_buffer: 476.(buf)Attach a user-provided buffer for sending in buffered mode. + + + *note Call_errhandler: 477.(errorcode)Call the error handler installed on a session. + + + *note Create_errhandler: 478.(errhandler_fn)Create a new error handler for sessions. + + + *note Create_group: 479.(pset_name)Create a new group from session and process set. + + + *note Detach_buffer: 47a.()Remove an existing attached buffer. + + + *note Finalize: 47b.()Finalize a session. + + + *note Flush_buffer: 47c.()Block until all buffered messages have been transmitted. + + + *note Get_errhandler: 47d.()Get the error handler for a session. + + + *note Get_info: 47e.()Return the current hints for a session. + + + *note Get_nth_pset: 47f.(n[,Name of the ‘n’-th process set. + info]) + + *note Get_num_psets: 480.([info])Number of available process sets. + + + *note Get_pset_info: 481.(pset_name)Return the current hints for a session and process set. + + + *note Iflush_buffer: 482.()Nonblocking flush for buffered messages. + + + *note Init: 483.([info,Create a new session. + errhandler]) + + *note Set_errhandler: 484.(errhandler)Set the error handler for a session. + + + *note f2py: 485.(arg) + + *note free: 486.()Call *note Finalize: 47b. if not null. + + + *note fromhandle: 487.(handle)Create object from MPI handle. + + + *note py2f: 488.() + + Attributes Summary + .................. + + *note handle: 489.MPI handle. + + + Methods Documentation + ..................... + + -- Method: Attach_buffer (buf) + + Attach a user-provided buffer for sending in buffered mode. + + + Parameters: ‘buf’ (*note Buffer: 20a.‘ | ’None(4)) + + + Return type: None(5) + + -- Method: Call_errhandler (errorcode) + + Call the error handler installed on a session. + + + Parameters: ‘errorcode’ (int(6)) + + + Return type: None(7) + + -- Method: classmethod Create_errhandler (errhandler_fn) + + Create a new error handler for sessions. + + + Parameters: ‘errhandler_fn’ (Callable(8)‘[’‘[’*note Session: + d5.‘, ’int(9)‘]’‘, ’None(10)‘]’) + + + Return type: *note Errhandler: d8. + + -- Method: Create_group (pset_name) + + Create a new group from session and process set. + + + Parameters: ‘pset_name’ (str(11)) + + + Return type: *note Group: 28. + + -- Method: Detach_buffer () + + Remove an existing attached buffer. + + + Return type: *note Buffer: 20a. | None(12) + + -- Method: Finalize () + + Finalize a session. + + + Return type: None(13) + + -- Method: Flush_buffer () + + Block until all buffered messages have been transmitted. + + + Return type: None(14) + + -- Method: Get_errhandler () + + Get the error handler for a session. + + + Return type: *note Errhandler: d8. + + -- Method: Get_info () + + Return the current hints for a session. + + + Return type: *note Info: d4. + + -- Method: Get_nth_pset (n, info=INFO_NULL) + + Name of the ‘n’-th process set. + + + Parameters: + + * ‘n’ (int(15)) + + * ‘info’ (*note Info: d4.) + + + Return type: str(16) + + -- Method: Get_num_psets (info=INFO_NULL) + + Number of available process sets. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: int(17) + + -- Method: Get_pset_info (pset_name) + + Return the current hints for a session and process set. + + + Parameters: ‘pset_name’ (str(18)) + + + Return type: *note Info: d4. + + -- Method: Iflush_buffer () + + Nonblocking flush for buffered messages. + + + Return type: *note Request: 43. + + -- Method: classmethod Init (info=INFO_NULL, errhandler=None) + + Create a new session. + + + Parameters: + + * ‘info’ (*note Info: d4.) + + * ‘errhandler’ (*note Errhandler: d8.‘ | ’None(19)) + + + Return type: Self(20) + + -- Method: Set_errhandler (errhandler) + + Set the error handler for a session. + + + Parameters: ‘errhandler’ (*note Errhandler: d8.) + + + Return type: None(21) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(22)) + + + Return type: *note Session: d5. + + -- Method: free () + + Call *note Finalize: 47b. if not null. + + + Return type: None(23) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(24)) + + + Return type: *note Session: d5. + + -- Method: py2f () + + + Return type: int(25) + + Attributes Documentation + ........................ + + -- Attribute: handle + + MPI handle. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/constants.html#None + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/typing.html#typing.Callable + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/constants.html#None + + (11) https://docs.python.org/3/library/stdtypes.html#str + + (12) https://docs.python.org/3/library/constants.html#None + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/constants.html#None + + (15) https://docs.python.org/3/library/functions.html#int + + (16) https://docs.python.org/3/library/stdtypes.html#str + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/stdtypes.html#str + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/typing.html#typing.Self + + (21) https://docs.python.org/3/library/constants.html#None + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/constants.html#None + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Status, Next: mpi4py MPI Topocomm, Prev: mpi4py MPI Session, Up: mpi4py MPI<2> + +11.1.22 mpi4py.MPI.Status +------------------------- + + -- Class: mpi4py.MPI.Status + + Bases: object(1) + + Status object. + + -- Method: static __new__ (cls, status=None) + + + Parameters: ‘status’ (*note Status: d1.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Get_count: 48d.([datatype])Get the number of ‘top level’ elements. + + + *note Get_elements: 48e.(datatype)Get the number of basic elements in a datatype. + + + *note Get_error: 48f.()Get message error. + + + *note Get_source: 490.()Get message source. + + + *note Get_tag: 491.()Get message tag. + + + *note Is_cancelled: 492.()Test to see if a request was cancelled. + + + *note Set_cancelled: 493.(flag)Set the cancelled state associated with a status. + + + *note Set_elements: 494.(datatype,Set the number of elements in a status. + count) + + *note Set_error: 495.(error)Set message error. + + + *note Set_source: 496.(source)Set message source. + + + *note Set_tag: 497.(tag)Set message tag. + + + *note f2py: 498.(arg) + + *note py2f: 499.() + + Attributes Summary + .................. + + *note cancelled: 49a.Cancelled state. + + + *note count: 49b.Byte count. + + + *note error: 49c.Message error. + + + *note source: 49d.Message source. + + + *note tag: 49e.Message tag. + + + Methods Documentation + ..................... + + -- Method: Get_count (datatype=BYTE) + + Get the number of ‘top level’ elements. + + + Parameters: ‘datatype’ (*note Datatype: d0.) + + + Return type: int(4) + + -- Method: Get_elements (datatype) + + Get the number of basic elements in a datatype. + + + Parameters: ‘datatype’ (*note Datatype: d0.) + + + Return type: int(5) + + -- Method: Get_error () + + Get message error. + + + Return type: int(6) + + -- Method: Get_source () + + Get message source. + + + Return type: int(7) + + -- Method: Get_tag () + + Get message tag. + + + Return type: int(8) + + -- Method: Is_cancelled () + + Test to see if a request was cancelled. + + + Return type: bool(9) + + -- Method: Set_cancelled (flag) + + Set the cancelled state associated with a status. + + Note: This method should be used only when implementing + query callback functions for generalized requests. + + + Parameters: ‘flag’ (bool(10)) + + + Return type: None(11) + + -- Method: Set_elements (datatype, count) + + Set the number of elements in a status. + + Note: This method should be only used when implementing + query callback functions for generalized requests. + + + Parameters: + + * ‘datatype’ (*note Datatype: d0.) + + * ‘count’ (int(12)) + + + Return type: None(13) + + -- Method: Set_error (error) + + Set message error. + + + Parameters: ‘error’ (int(14)) + + + Return type: None(15) + + -- Method: Set_source (source) + + Set message source. + + + Parameters: ‘source’ (int(16)) + + + Return type: None(17) + + -- Method: Set_tag (tag) + + Set message tag. + + + Parameters: ‘tag’ (int(18)) + + + Return type: None(19) + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (list(20)‘[’int(21)‘]’) + + + Return type: Self(22) + + -- Method: py2f () + + + Return type: list(23)[int(24)] + + Attributes Documentation + ........................ + + -- Attribute: cancelled + + Cancelled state. + + -- Attribute: count + + Byte count. + + -- Attribute: error + + Message error. + + -- Attribute: source + + Message source. + + -- Attribute: tag + + Message tag. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/functions.html#bool + + (10) https://docs.python.org/3/library/functions.html#bool + + (11) https://docs.python.org/3/library/constants.html#None + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/constants.html#None + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/constants.html#None + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/stdtypes.html#list + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/typing.html#typing.Self + + (23) https://docs.python.org/3/library/stdtypes.html#list + + (24) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Topocomm, Next: mpi4py MPI Win, Prev: mpi4py MPI Status, Up: mpi4py MPI<2> + +11.1.23 mpi4py.MPI.Topocomm +--------------------------- + + -- Class: mpi4py.MPI.Topocomm + + Bases: *note Intracomm: 1f. + + Topology intracommunicator. + + -- Method: static __new__ (cls, comm=None) + + + Parameters: ‘comm’ (*note Topocomm: d6.‘ | ’None(1)) + + + Return type: Self(2) + + Methods Summary + ............... + + *note Ineighbor_allgather: 4a2.(sendbuf,Nonblocking Neighbor Gather to All. + recvbuf) + + *note Ineighbor_allgatherv: 4a3.(sendbuf,Nonblocking Neighbor Gather to All Vector. + recvbuf) + + *note Ineighbor_alltoall: 4a4.(sendbuf,Nonblocking Neighbor All to All. + recvbuf) + + *note Ineighbor_alltoallv: 4a5.(sendbuf,Nonblocking Neighbor All to All Vector. + recvbuf) + + *note Ineighbor_alltoallw: 4a6.(sendbuf,Nonblocking Neighbor All to All General. + recvbuf) + + *note Neighbor_allgather: 4a7.(sendbuf,Neighbor Gather to All. + recvbuf) + + *note Neighbor_allgather_init: 4a8.(sendbuf,Persistent Neighbor Gather to All. + recvbuf[, + info]) + + *note Neighbor_allgatherv: 4a9.(sendbuf,Neighbor Gather to All Vector. + recvbuf) + + *note Neighbor_allgatherv_init: 4aa.(sendbuf,Persistent Neighbor Gather to All Vector. + recvbuf[, + ...]) + + *note Neighbor_alltoall: 4ab.(sendbuf,Neighbor All to All. + recvbuf) + + *note Neighbor_alltoall_init: 4ac.(sendbuf,Persistent Neighbor All to All. + recvbuf[, + info]) + + *note Neighbor_alltoallv: 4ad.(sendbuf,Neighbor All to All Vector. + recvbuf) + + *note Neighbor_alltoallv_init: 4ae.(sendbuf,Persistent Neighbor All to All Vector. + recvbuf[, + info]) + + *note Neighbor_alltoallw: 4af.(sendbuf,Neighbor All to All General. + recvbuf) + + *note Neighbor_alltoallw_init: 4b0.(sendbuf,Persistent Neighbor All to All General. + recvbuf[, + info]) + + *note neighbor_allgather: 4b1.(sendobj)Neighbor Gather to All. + + + *note neighbor_alltoall: 4b2.(sendobj)Neighbor All to All. + + + Attributes Summary + .................. + + *note degrees: 4b3.Number of incoming and outgoing neighbors. + + + *note indegree: 4b4.Number of incoming neighbors. + + + *note inedges: 4b5.Incoming neighbors. + + + *note inoutedges: 4b6.Incoming and outgoing neighbors. + + + *note outdegree: 4b7.Number of outgoing neighbors. + + + *note outedges: 4b8.Outgoing neighbors. + + + Methods Documentation + ..................... + + -- Method: Ineighbor_allgather (sendbuf, recvbuf) + + Nonblocking Neighbor Gather to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: *note Request: 43. + + -- Method: Ineighbor_allgatherv (sendbuf, recvbuf) + + Nonblocking Neighbor Gather to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: *note Request: 43. + + -- Method: Ineighbor_alltoall (sendbuf, recvbuf) + + Nonblocking Neighbor All to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: *note Request: 43. + + -- Method: Ineighbor_alltoallv (sendbuf, recvbuf) + + Nonblocking Neighbor All to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: *note Request: 43. + + -- Method: Ineighbor_alltoallw (sendbuf, recvbuf) + + Nonblocking Neighbor All to All General. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecW: 215.) + + * ‘recvbuf’ (*note BufSpecW: 215.) + + + Return type: *note Request: 43. + + -- Method: Neighbor_allgather (sendbuf, recvbuf) + + Neighbor Gather to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: None(3) + + -- Method: Neighbor_allgather_init (sendbuf, recvbuf, + info=INFO_NULL) + + Persistent Neighbor Gather to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Neighbor_allgatherv (sendbuf, recvbuf) + + Neighbor Gather to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: None(4) + + -- Method: Neighbor_allgatherv_init (sendbuf, recvbuf, + info=INFO_NULL) + + Persistent Neighbor Gather to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpec: 212.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Neighbor_alltoall (sendbuf, recvbuf) + + Neighbor All to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + + Return type: None(5) + + -- Method: Neighbor_alltoall_init (sendbuf, recvbuf, + info=INFO_NULL) + + Persistent Neighbor All to All. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecB: 213.) + + * ‘recvbuf’ (*note BufSpecB: 213.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Neighbor_alltoallv (sendbuf, recvbuf) + + Neighbor All to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + + Return type: None(6) + + -- Method: Neighbor_alltoallv_init (sendbuf, recvbuf, + info=INFO_NULL) + + Persistent Neighbor All to All Vector. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecV: 214.) + + * ‘recvbuf’ (*note BufSpecV: 214.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: Neighbor_alltoallw (sendbuf, recvbuf) + + Neighbor All to All General. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecW: 215.) + + * ‘recvbuf’ (*note BufSpecW: 215.) + + + Return type: None(7) + + -- Method: Neighbor_alltoallw_init (sendbuf, recvbuf, + info=INFO_NULL) + + Persistent Neighbor All to All General. + + + Parameters: + + * ‘sendbuf’ (*note BufSpecW: 215.) + + * ‘recvbuf’ (*note BufSpecW: 215.) + + * ‘info’ (*note Info: d4.) + + + Return type: *note Prequest: 4a. + + -- Method: neighbor_allgather (sendobj) + + Neighbor Gather to All. + + + Parameters: ‘sendobj’ (Any(8)) + + + Return type: list(9)[Any(10)] + + -- Method: neighbor_alltoall (sendobj) + + Neighbor All to All. + + + Parameters: ‘sendobj’ (list(11)‘[’Any(12)‘]’) + + + Return type: list(13)[Any(14)] + + Attributes Documentation + ........................ + + -- Attribute: degrees + + Number of incoming and outgoing neighbors. + + -- Attribute: indegree + + Number of incoming neighbors. + + -- Attribute: inedges + + Incoming neighbors. + + -- Attribute: inoutedges + + Incoming and outgoing neighbors. + + -- Attribute: outdegree + + Number of outgoing neighbors. + + -- Attribute: outedges + + Outgoing neighbors. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/constants.html#None + + (4) https://docs.python.org/3/library/constants.html#None + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/constants.html#None + + (8) https://docs.python.org/3/library/typing.html#typing.Any + + (9) https://docs.python.org/3/library/stdtypes.html#list + + (10) https://docs.python.org/3/library/typing.html#typing.Any + + (11) https://docs.python.org/3/library/stdtypes.html#list + + (12) https://docs.python.org/3/library/typing.html#typing.Any + + (13) https://docs.python.org/3/library/stdtypes.html#list + + (14) https://docs.python.org/3/library/typing.html#typing.Any + + +File: mpi4py.info, Node: mpi4py MPI Win, Next: mpi4py MPI buffer, Prev: mpi4py MPI Topocomm, Up: mpi4py MPI<2> + +11.1.24 mpi4py.MPI.Win +---------------------- + + -- Class: mpi4py.MPI.Win + + Bases: object(1) + + Remote memory access context. + + -- Method: static __new__ (cls, win=None) + + + Parameters: ‘win’ (*note Win: 76.‘ | ’None(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Accumulate: 7b.(origin,Accumulate data into the target process. + target_rank[, + target, op]) + + *note Allocate: 4bc.(size[,Create an window object for one-sided communication. + disp_unit, + info, comm]) + + *note Allocate_shared: 4bd.(size[,Create an window object for one-sided communication. + disp_unit, + info, comm]) + + *note Attach: 4be.(memory)Attach a local memory region. + + + *note Call_errhandler: 4bf.(errorcode)Call the error handler installed on a window. + + + *note Compare_and_swap: 4c0.(origin,Perform one-sided atomic compare-and-swap. + compare, + result, ...) + + *note Complete: 7d.()Complete an RMA operation begun after an *note Start: 7c. + + + *note Create: 77.(memory[,Create an window object for one-sided communication. + disp_unit, + info, comm]) + + *note Create_dynamic: 4c1.([info,Create an window object for one-sided communication. + comm]) + + *note Create_errhandler: 4c2.(errhandler_fn)Create a new error handler for windows. + + + *note Create_keyval: 4c3.([copy_fn,Create a new attribute key for windows. + delete_fn, + nopython]) + + *note Delete_attr: 4c4.(keyval)Delete attribute value associated with a key. + + + *note Detach: 4c5.(memory)Detach a local memory region. + + + *note Fence: 80.([assertion])Perform an MPI fence synchronization on a window. + + + *note Fetch_and_op: 4c6.(origin,Perform one-sided read-modify-write. + result, + target_rank[, + ...]) + + *note Flush: 4c7.(rank)Complete all outstanding RMA operations at a target. + + + *note Flush_all: 4c8.()Complete all outstanding RMA operations at all targets. + + + *note Flush_local: 4c9.(rank)Complete locally all outstanding RMA operations at a target. + + + *note Flush_local_all: 4ca.()Complete locally all outstanding RMA operations at all targets. + + + *note Free: 78.()Free a window. + + + *note Free_keyval: 4cb.(keyval)Free an attribute key for windows. + + + *note Get: 7a.(origin,Get data from a memory window on a remote process. + target_rank[, + target]) + + *note Get_accumulate: 4cc.(origin,Fetch-and-accumulate data into the target process. + result, + target_rank) + + *note Get_attr: 4cd.(keyval)Retrieve attribute value by key. + + + *note Get_errhandler: 4ce.()Get the error handler for a window. + + + *note Get_group: 4cf.()Access the group of processes that created the window. + + + *note Get_info: 4d0.()Return the current hints for a window. + + + *note Get_name: 4d1.()Get the print name for this window. + + + *note Lock: 81.(rank[,Begin an RMA access epoch at the target process. + lock_type, + assertion]) + + *note Lock_all: 4d2.([assertion])Begin an RMA access epoch at all processes. + + + *note Post: 7e.(group[,Start an RMA exposure epoch. + assertion]) + + *note Put: 79.(origin,Put data into a memory window on a remote process. + target_rank[, + target]) + + *note Raccumulate: 4d3.(origin,Fetch-and-accumulate data into the target process. + target_rank[, + target, op]) + + *note Rget: 4d4.(origin,Get data from a memory window on a remote process. + target_rank[, + target]) + + *note Rget_accumulate: 4d5.(origin,Accumulate data into the target process using remote memory access. + result, + target_rank) + + *note Rput: 4d6.(origin,Put data into a memory window on a remote process. + target_rank[, + target]) + + *note Set_attr: 4d7.(keyval,Store attribute value associated with a key. + attrval) + + *note Set_errhandler: 4d8.(errhandler)Set the error handler for a window. + + + *note Set_info: 4d9.(info)Set new values for the hints associated with a window. + + + *note Set_name: 4da.(name)Set the print name for this window. + + + *note Shared_query: 4db.(rank)Query the process-local address for remote memory segments. + + + *note Start: 7c.(group[,Start an RMA access epoch for MPI. + assertion]) + + *note Sync: 4dc.()Synchronize public and private copies of the window. + + + *note Test: 4dd.()Test whether an RMA exposure epoch has completed. + + + *note Unlock: 82.(rank)Complete an RMA access epoch at the target process. + + + *note Unlock_all: 4de.()Complete an RMA access epoch at all processes. + + + *note Wait: 7f.()Complete an RMA exposure epoch begun with *note Post: 7e. + + + *note f2py: 4df.(arg) + + *note free: 4e0.()Call *note Free: 78. if not null. + + + *note fromhandle: 4e1.(handle)Create object from MPI handle. + + + *note py2f: 4e2.() + + *note tomemory: 4e3.()Return window memory buffer. + + + Attributes Summary + .................. + + *note attrs: 4e4.Attributes. + + + *note flavor: 4e5.Create flavor. + + + *note group: 4e6.Group. + + + *note group_rank: 4e7.Group rank. + + + *note group_size: 4e8.Group size. + + + *note handle: 4e9.MPI handle. + + + *note info: 4ea.Info hints. + + + *note model: 4eb.Memory model. + + + *note name: 4ec.Print name. + + + Methods Documentation + ..................... + + -- Method: Accumulate (origin, target_rank, target=None, op=SUM) + + Accumulate data into the target process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(4)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(5)) + + * ‘op’ (*note Op: d3.) + + + Return type: None(6) + + -- Method: classmethod Allocate (size, disp_unit=1, + info=INFO_NULL, comm=COMM_SELF) + + Create an window object for one-sided communication. + + + Parameters: + + * ‘size’ (int(7)) + + * ‘disp_unit’ (int(8)) + + * ‘info’ (*note Info: d4.) + + * ‘comm’ (*note Intracomm: 1f.) + + + Return type: Self(9) + + -- Method: classmethod Allocate_shared (size, disp_unit=1, + info=INFO_NULL, comm=COMM_SELF) + + Create an window object for one-sided communication. + + + Parameters: + + * ‘size’ (int(10)) + + * ‘disp_unit’ (int(11)) + + * ‘info’ (*note Info: d4.) + + * ‘comm’ (*note Intracomm: 1f.) + + + Return type: Self(12) + + -- Method: Attach (memory) + + Attach a local memory region. + + + Parameters: ‘memory’ (*note Buffer: 20a.) + + + Return type: None(13) + + -- Method: Call_errhandler (errorcode) + + Call the error handler installed on a window. + + + Parameters: ‘errorcode’ (int(14)) + + + Return type: None(15) + + -- Method: Compare_and_swap (origin, compare, result, target_rank, + target_disp=0) + + Perform one-sided atomic compare-and-swap. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘compare’ (*note BufSpec: 212.) + + * ‘result’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(16)) + + * ‘target_disp’ (int(17)) + + + Return type: None(18) + + -- Method: Complete () + + Complete an RMA operation begun after an *note Start: 7c. + + + Return type: None(19) + + -- Method: classmethod Create (memory, disp_unit=1, + info=INFO_NULL, comm=COMM_SELF) + + Create an window object for one-sided communication. + + + Parameters: + + * ‘memory’ (*note Buffer: 20a.‘ | ’*note Bottom: 20b.) + + * ‘disp_unit’ (int(20)) + + * ‘info’ (*note Info: d4.) + + * ‘comm’ (*note Intracomm: 1f.) + + + Return type: Self + + -- Method: classmethod Create_dynamic (info=INFO_NULL, + comm=COMM_SELF) + + Create an window object for one-sided communication. + + + Parameters: + + * ‘info’ (*note Info: d4.) + + * ‘comm’ (*note Intracomm: 1f.) + + + Return type: Self(21) + + -- Method: classmethod Create_errhandler (errhandler_fn) + + Create a new error handler for windows. + + + Parameters: ‘errhandler_fn’ (Callable(22)‘[’‘[’*note Win: + 76.‘, ’int(23)‘]’‘, ’None(24)‘]’) + + + Return type: *note Errhandler: d8. + + -- Method: classmethod Create_keyval (copy_fn=None, + delete_fn=None, nopython=False) + + Create a new attribute key for windows. + + + Parameters: + + * ‘copy_fn’ (Callable(25)‘[’‘[’*note Win: 76.‘, ’int(26)‘, + ’Any(27)‘]’‘, ’Any(28)‘] ’‘| ’None(29)) + + * ‘delete_fn’ (Callable(30)‘[’‘[’*note Win: 76.‘, + ’int(31)‘, ’Any(32)‘]’‘, ’None(33)‘] ’‘| ’None(34)) + + * ‘nopython’ (bool(35)) + + + Return type: int(36) + + -- Method: Delete_attr (keyval) + + Delete attribute value associated with a key. + + + Parameters: ‘keyval’ (int(37)) + + + Return type: None(38) + + -- Method: Detach (memory) + + Detach a local memory region. + + + Parameters: ‘memory’ (*note Buffer: 20a.) + + + Return type: None(39) + + -- Method: Fence (assertion=0) + + Perform an MPI fence synchronization on a window. + + + Parameters: ‘assertion’ (int(40)) + + + Return type: None(41) + + -- Method: Fetch_and_op (origin, result, target_rank, + target_disp=0, op=SUM) + + Perform one-sided read-modify-write. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘result’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(42)) + + * ‘target_disp’ (int(43)) + + * ‘op’ (*note Op: d3.) + + + Return type: None(44) + + -- Method: Flush (rank) + + Complete all outstanding RMA operations at a target. + + + Parameters: ‘rank’ (int(45)) + + + Return type: None(46) + + -- Method: Flush_all () + + Complete all outstanding RMA operations at all targets. + + + Return type: None(47) + + -- Method: Flush_local (rank) + + Complete locally all outstanding RMA operations at a target. + + + Parameters: ‘rank’ (int(48)) + + + Return type: None(49) + + -- Method: Flush_local_all () + + Complete locally all outstanding RMA operations at all + targets. + + + Return type: None(50) + + -- Method: Free () + + Free a window. + + + Return type: None(51) + + -- Method: classmethod Free_keyval (keyval) + + Free an attribute key for windows. + + + Parameters: ‘keyval’ (int(52)) + + + Return type: int(53) + + -- Method: Get (origin, target_rank, target=None) + + Get data from a memory window on a remote process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(54)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(55)) + + + Return type: None(56) + + -- Method: Get_accumulate (origin, result, target_rank, + target=None, op=SUM) + + Fetch-and-accumulate data into the target process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘result’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(57)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(58)) + + * ‘op’ (*note Op: d3.) + + + Return type: None(59) + + -- Method: Get_attr (keyval) + + Retrieve attribute value by key. + + + Parameters: ‘keyval’ (int(60)) + + + Return type: int(61) | Any(62) | None(63) + + -- Method: Get_errhandler () + + Get the error handler for a window. + + + Return type: *note Errhandler: d8. + + -- Method: Get_group () + + Access the group of processes that created the window. + + + Return type: *note Group: 28. + + -- Method: Get_info () + + Return the current hints for a window. + + + Return type: *note Info: d4. + + -- Method: Get_name () + + Get the print name for this window. + + + Return type: str(64) + + -- Method: Lock (rank, lock_type=LOCK_EXCLUSIVE, assertion=0) + + Begin an RMA access epoch at the target process. + + + Parameters: + + * ‘rank’ (int(65)) + + * ‘lock_type’ (int(66)) + + * ‘assertion’ (int(67)) + + + Return type: None(68) + + -- Method: Lock_all (assertion=0) + + Begin an RMA access epoch at all processes. + + + Parameters: ‘assertion’ (int(69)) + + + Return type: None(70) + + -- Method: Post (group, assertion=0) + + Start an RMA exposure epoch. + + + Parameters: + + * ‘group’ (*note Group: 28.) + + * ‘assertion’ (int(71)) + + + Return type: None(72) + + -- Method: Put (origin, target_rank, target=None) + + Put data into a memory window on a remote process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(73)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(74)) + + + Return type: None(75) + + -- Method: Raccumulate (origin, target_rank, target=None, op=SUM) + + Fetch-and-accumulate data into the target process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(76)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(77)) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Rget (origin, target_rank, target=None) + + Get data from a memory window on a remote process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(78)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(79)) + + + Return type: *note Request: 43. + + -- Method: Rget_accumulate (origin, result, target_rank, + target=None, op=SUM) + + Accumulate data into the target process using remote memory + access. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘result’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(80)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(81)) + + * ‘op’ (*note Op: d3.) + + + Return type: *note Request: 43. + + -- Method: Rput (origin, target_rank, target=None) + + Put data into a memory window on a remote process. + + + Parameters: + + * ‘origin’ (*note BufSpec: 212.) + + * ‘target_rank’ (int(82)) + + * ‘target’ (*note TargetSpec: 216.‘ | ’None(83)) + + + Return type: *note Request: 43. + + -- Method: Set_attr (keyval, attrval) + + Store attribute value associated with a key. + + + Parameters: + + * ‘keyval’ (int(84)) + + * ‘attrval’ (Any(85)) + + + Return type: None(86) + + -- Method: Set_errhandler (errhandler) + + Set the error handler for a window. + + + Parameters: ‘errhandler’ (*note Errhandler: d8.) + + + Return type: None(87) + + -- Method: Set_info (info) + + Set new values for the hints associated with a window. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: None(88) + + -- Method: Set_name (name) + + Set the print name for this window. + + + Parameters: ‘name’ (str(89)) + + + Return type: None(90) + + -- Method: Shared_query (rank) + + Query the process-local address for remote memory segments. + + + Parameters: ‘rank’ (int(91)) + + + Return type: tuple(92)[*note buffer: da, int(93)] + + -- Method: Start (group, assertion=0) + + Start an RMA access epoch for MPI. + + + Parameters: + + * ‘group’ (*note Group: 28.) + + * ‘assertion’ (int(94)) + + + Return type: None(95) + + -- Method: Sync () + + Synchronize public and private copies of the window. + + + Return type: None(96) + + -- Method: Test () + + Test whether an RMA exposure epoch has completed. + + + Return type: bool(97) + + -- Method: Unlock (rank) + + Complete an RMA access epoch at the target process. + + + Parameters: ‘rank’ (int(98)) + + + Return type: None(99) + + -- Method: Unlock_all () + + Complete an RMA access epoch at all processes. + + + Return type: None(100) + + -- Method: Wait () + + Complete an RMA exposure epoch begun with *note Post: 7e. + + + Return type: Literal(101)[True] + + -- Method: classmethod f2py (arg) + + + Parameters: ‘arg’ (int(102)) + + + Return type: *note Win: 76. + + -- Method: free () + + Call *note Free: 78. if not null. + + + Return type: None(103) + + -- Method: classmethod fromhandle (handle) + + Create object from MPI handle. + + + Parameters: ‘handle’ (int(104)) + + + Return type: *note Win: 76. + + -- Method: py2f () + + + Return type: int(105) + + -- Method: tomemory () + + Return window memory buffer. + + + Return type: *note buffer: da. + + Attributes Documentation + ........................ + + -- Attribute: attrs + + Attributes. + + -- Attribute: flavor + + Create flavor. + + -- Attribute: group + + Group. + + -- Attribute: group_rank + + Group rank. + + -- Attribute: group_size + + Group size. + + -- Attribute: handle + + MPI handle. + + -- Attribute: info + + Info hints. + + -- Attribute: model + + Memory model. + + -- Attribute: name + + Print name. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/constants.html#None + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/constants.html#None + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/typing.html#typing.Self + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/typing.html#typing.Self + + (13) https://docs.python.org/3/library/constants.html#None + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/constants.html#None + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/constants.html#None + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/typing.html#typing.Self + + (22) https://docs.python.org/3/library/typing.html#typing.Callable + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/constants.html#None + + (25) https://docs.python.org/3/library/typing.html#typing.Callable + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/typing.html#typing.Any + + (28) https://docs.python.org/3/library/typing.html#typing.Any + + (29) https://docs.python.org/3/library/constants.html#None + + (30) https://docs.python.org/3/library/typing.html#typing.Callable + + (31) https://docs.python.org/3/library/functions.html#int + + (32) https://docs.python.org/3/library/typing.html#typing.Any + + (33) https://docs.python.org/3/library/constants.html#None + + (34) https://docs.python.org/3/library/constants.html#None + + (35) https://docs.python.org/3/library/functions.html#bool + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/functions.html#int + + (38) https://docs.python.org/3/library/constants.html#None + + (39) https://docs.python.org/3/library/constants.html#None + + (40) https://docs.python.org/3/library/functions.html#int + + (41) https://docs.python.org/3/library/constants.html#None + + (42) https://docs.python.org/3/library/functions.html#int + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/constants.html#None + + (45) https://docs.python.org/3/library/functions.html#int + + (46) https://docs.python.org/3/library/constants.html#None + + (47) https://docs.python.org/3/library/constants.html#None + + (48) https://docs.python.org/3/library/functions.html#int + + (49) https://docs.python.org/3/library/constants.html#None + + (50) https://docs.python.org/3/library/constants.html#None + + (51) https://docs.python.org/3/library/constants.html#None + + (52) https://docs.python.org/3/library/functions.html#int + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/functions.html#int + + (55) https://docs.python.org/3/library/constants.html#None + + (56) https://docs.python.org/3/library/constants.html#None + + (57) https://docs.python.org/3/library/functions.html#int + + (58) https://docs.python.org/3/library/constants.html#None + + (59) https://docs.python.org/3/library/constants.html#None + + (60) https://docs.python.org/3/library/functions.html#int + + (61) https://docs.python.org/3/library/functions.html#int + + (62) https://docs.python.org/3/library/typing.html#typing.Any + + (63) https://docs.python.org/3/library/constants.html#None + + (64) https://docs.python.org/3/library/stdtypes.html#str + + (65) https://docs.python.org/3/library/functions.html#int + + (66) https://docs.python.org/3/library/functions.html#int + + (67) https://docs.python.org/3/library/functions.html#int + + (68) https://docs.python.org/3/library/constants.html#None + + (69) https://docs.python.org/3/library/functions.html#int + + (70) https://docs.python.org/3/library/constants.html#None + + (71) https://docs.python.org/3/library/functions.html#int + + (72) https://docs.python.org/3/library/constants.html#None + + (73) https://docs.python.org/3/library/functions.html#int + + (74) https://docs.python.org/3/library/constants.html#None + + (75) https://docs.python.org/3/library/constants.html#None + + (76) https://docs.python.org/3/library/functions.html#int + + (77) https://docs.python.org/3/library/constants.html#None + + (78) https://docs.python.org/3/library/functions.html#int + + (79) https://docs.python.org/3/library/constants.html#None + + (80) https://docs.python.org/3/library/functions.html#int + + (81) https://docs.python.org/3/library/constants.html#None + + (82) https://docs.python.org/3/library/functions.html#int + + (83) https://docs.python.org/3/library/constants.html#None + + (84) https://docs.python.org/3/library/functions.html#int + + (85) https://docs.python.org/3/library/typing.html#typing.Any + + (86) https://docs.python.org/3/library/constants.html#None + + (87) https://docs.python.org/3/library/constants.html#None + + (88) https://docs.python.org/3/library/constants.html#None + + (89) https://docs.python.org/3/library/stdtypes.html#str + + (90) https://docs.python.org/3/library/constants.html#None + + (91) https://docs.python.org/3/library/functions.html#int + + (92) https://docs.python.org/3/library/stdtypes.html#tuple + + (93) https://docs.python.org/3/library/functions.html#int + + (94) https://docs.python.org/3/library/functions.html#int + + (95) https://docs.python.org/3/library/constants.html#None + + (96) https://docs.python.org/3/library/constants.html#None + + (97) https://docs.python.org/3/library/functions.html#bool + + (98) https://docs.python.org/3/library/functions.html#int + + (99) https://docs.python.org/3/library/constants.html#None + + (100) https://docs.python.org/3/library/constants.html#None + + (101) https://docs.python.org/3/library/typing.html#typing.Literal + + (102) https://docs.python.org/3/library/functions.html#int + + (103) https://docs.python.org/3/library/constants.html#None + + (104) https://docs.python.org/3/library/functions.html#int + + (105) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI buffer, Next: mpi4py MPI memory, Prev: mpi4py MPI Win, Up: mpi4py MPI<2> + +11.1.25 mpi4py.MPI.buffer +------------------------- + + -- Class: mpi4py.MPI.buffer + + Bases: object(1) + + Buffer. + + -- Method: static __new__ (cls, buf) + + + Parameters: ‘buf’ (*note Buffer: 20a.) + + + Return type: Self(2) + + Methods Summary + ............... + + *note allocate: 4f0.(nbytes[,Buffer allocation. + clear]) + + *note cast: 4f1.(format[,Cast to a memoryview(3) with new format or shape. + shape]) + + *note fromaddress: 4f2.(address,Buffer from address and size in bytes. + nbytes[, + readonly]) + + *note frombuffer: 4f3.(obj[,Buffer from buffer-like object. + readonly]) + + *note release: 4f4.()Release the underlying buffer exposed by the buffer object. + + + *note tobytes: 4f5.([order])Return the data in the buffer as a byte string. + + + *note toreadonly: 4f6.()Return a readonly version of the buffer object. + + + Attributes Summary + .................. + + *note address: 4f7.Buffer address. + + + *note format: 4f8.Format of each element. + + + *note itemsize: 4f9.Size (in bytes) of each element. + + + *note nbytes: 4fa.Buffer size (in bytes). + + + *note obj: 4fb.Object exposing buffer. + + + *note readonly: 4fc.Buffer is read-only. + + + Methods Documentation + ..................... + + -- Method: static allocate (nbytes, clear=False) + + Buffer allocation. + + + Parameters: + + * ‘nbytes’ (int(4)) + + * ‘clear’ (bool(5)) + + + Return type: *note buffer: da. + + -- Method: cast (format, shape=Ellipsis) + + Cast to a memoryview(6) with new format or shape. + + + Parameters: + + * ‘format’ (str(7)) + + * ‘shape’ (list(8)‘[’int(9)‘] ’‘| ’tuple(10)‘[’int(11)‘, + ’‘...’‘]’) + + + Return type: memoryview(12) + + -- Method: static fromaddress (address, nbytes, readonly=False) + + Buffer from address and size in bytes. + + + Parameters: + + * ‘address’ (int(13)) + + * ‘nbytes’ (int(14)) + + * ‘readonly’ (bool(15)) + + + Return type: *note buffer: da. + + -- Method: static frombuffer (obj, readonly=False) + + Buffer from buffer-like object. + + + Parameters: + + * ‘obj’ (*note Buffer: 20a.) + + * ‘readonly’ (bool(16)) + + + Return type: *note buffer: da. + + -- Method: release () + + Release the underlying buffer exposed by the buffer object. + + + Return type: None(17) + + -- Method: tobytes (order=None) + + Return the data in the buffer as a byte string. + + + Parameters: ‘order’ (str(18)‘ | ’None(19)) + + + Return type: bytes(20) + + -- Method: toreadonly () + + Return a readonly version of the buffer object. + + + Return type: *note buffer: da. + + Attributes Documentation + ........................ + + -- Attribute: address + + Buffer address. + + -- Attribute: format + + Format of each element. + + -- Attribute: itemsize + + Size (in bytes) of each element. + + -- Attribute: nbytes + + Buffer size (in bytes). + + -- Attribute: obj + + Object exposing buffer. + + -- Attribute: readonly + + Buffer is read-only. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#object + + (2) https://docs.python.org/3/library/typing.html#typing.Self + + (3) https://docs.python.org/3/library/stdtypes.html#memoryview + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#bool + + (6) https://docs.python.org/3/library/stdtypes.html#memoryview + + (7) https://docs.python.org/3/library/stdtypes.html#str + + (8) https://docs.python.org/3/library/stdtypes.html#list + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/stdtypes.html#tuple + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/stdtypes.html#memoryview + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/functions.html#bool + + (16) https://docs.python.org/3/library/functions.html#bool + + (17) https://docs.python.org/3/library/constants.html#None + + (18) https://docs.python.org/3/library/stdtypes.html#str + + (19) https://docs.python.org/3/library/constants.html#None + + (20) https://docs.python.org/3/library/stdtypes.html#bytes + + +File: mpi4py.info, Node: mpi4py MPI memory, Next: mpi4py MPI Exception, Prev: mpi4py MPI buffer, Up: mpi4py MPI<2> + +11.1.26 mpi4py.MPI.memory +------------------------- + + -- Attribute: mpi4py.MPI.memory + + alias of *note buffer: da. + +Exceptions +.......... + +*note Exception: 9e.Exception class. + + + +File: mpi4py.info, Node: mpi4py MPI Exception, Next: mpi4py MPI Add_error_class, Prev: mpi4py MPI memory, Up: mpi4py MPI<2> + +11.1.27 mpi4py.MPI.Exception +---------------------------- + + -- Exception: mpi4py.MPI.Exception + + Bases: RuntimeError(1) + + Exception class. + + -- Method: static __new__ (cls, ierr=SUCCESS) + + + Parameters: ‘ierr’ (int(2)) + + + Return type: Self(3) + + Methods Summary + ............... + + *note Get_error_class: 502.()Error class. + + + *note Get_error_code: 503.()Error code. + + + *note Get_error_string: 504.()Error string. + + + Attributes Summary + .................. + + *note error_class: 505.Error class. + + + *note error_code: 506.Error code. + + + *note error_string: 507.Error string. + + + Methods Documentation + ..................... + + -- Method: Get_error_class () + + Error class. + + + Return type: int(4) + + -- Method: Get_error_code () + + Error code. + + + Return type: int(5) + + -- Method: Get_error_string () + + Error string. + + + Return type: str(6) + + Attributes Documentation + ........................ + + -- Attribute: error_class + + Error class. + + -- Attribute: error_code + + Error code. + + -- Attribute: error_string + + Error string. + +Functions +......... + +*note Add_error_class: e6.()Add an ‘error class’ to the known error classes. + + +*note Add_error_code: e7.(errorclass)Add an ‘error code’ to an ‘error class’. + + +*note Add_error_string: e8.(errorcode,Associate an ‘error string’ with an ‘error class’ or ‘error code’. +string) + +*note Aint_add: e2.(base,Return the sum of base address and displacement. +disp) + +*note Aint_diff: e3.(addr1,Return the difference between absolute addresses. +addr2) + +*note Alloc_mem: df.(size[,Allocate memory for message passing and remote memory access. +info]) + +*note Attach_buffer: ec.(buf)Attach a user-provided buffer for sending in buffered mode. + + +*note Close_port: 74.(port_name)Close a port. + + +*note Compute_dims: f0.(nnodes,Return a balanced distribution of processes per coordinate direction. +dims) + +*note Detach_buffer: ed.()Remove an existing attached buffer. + + +*note Finalize: 8e.()Terminate the MPI execution environment. + + +*note Flush_buffer: ee.()Block until all buffered messages have been transmitted. + + +*note Free_mem: e0.(mem)Free memory allocated with *note Alloc_mem: df. + + +*note Get_address: e1.(location)Get the address of a location in memory. + + +*note Get_error_class: e4.(errorcode)Convert an ‘error code’ into an ‘error class’. + + +*note Get_error_string: e5.(errorcode)Return the ‘error string’ for a given ‘error class’ or ‘error code’. + + +*note Get_hw_resource_info: 508.()Obtain information about the hardware platform of the calling processor. + + +*note Get_library_version: dc.()Obtain the version string of the MPI library. + + +*note Get_processor_name: 93.()Obtain the name of the calling processor. + + +*note Get_version: 92.()Obtain the version number of the MPI standard. + + +*note Iflush_buffer: ef.()Nonblocking flush for buffered messages. + + +*note Init: 8c.()Initialize the MPI execution environment. + + +*note Init_thread: 8d.([required])Initialize the MPI execution environment. + + +*note Is_finalized: 90.()Indicate whether *note Finalize: 8e. has completed. + + +*note Is_initialized: 8f.()Indicate whether *note Init: 8c. has been called. + + +*note Is_thread_main: de.()Indicate whether this thread called *note Init: 8c. or *note Init_thread: 8d. + + +*note Lookup_name: 70.(service_name[,Lookup a port name given a service name. +info]) + +*note Open_port: 6d.([info])Return an address used to connect group of processes. + + +*note Pcontrol: f2.(level)Control profiling. + + +*note Publish_name: 6e.(service_name,Publish a service name. +port_name[, +info]) + +*note Query_thread: dd.()Return the level of thread support provided by the MPI library. + + +*note Register_datarep: f1.(datarep,Register user-defined data representations. +read_fn, +write_fn, +...) + +*note Remove_error_class: e9.(errorclass)Remove an ‘error class’ from the known error classes. + + +*note Remove_error_code: ea.(errorcode)Remove an ‘error code’ from the known error codes. + + +*note Remove_error_string: eb.(errorcode)Remove ‘error string’ association from ‘error class’ or ‘error code’. + + +*note Unpublish_name: 73.(service_name,Unpublish a service name. +port_name[, +info]) + +*note Wtick: 97.()Return the resolution of *note Wtime: 96. + + +*note Wtime: 96.()Return an elapsed time on the calling processor. + + +*note get_vendor: f3.()Information about the underlying MPI implementation. + + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/exceptions.html#RuntimeError + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/typing.html#typing.Self + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Add_error_class, Next: mpi4py MPI Add_error_code, Prev: mpi4py MPI Exception, Up: mpi4py MPI<2> + +11.1.28 mpi4py.MPI.Add_error_class +---------------------------------- + + -- Function: mpi4py.MPI.Add_error_class () + + Add an ‘error class’ to the known error classes. + + + Return type: int(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Add_error_code, Next: mpi4py MPI Add_error_string, Prev: mpi4py MPI Add_error_class, Up: mpi4py MPI<2> + +11.1.29 mpi4py.MPI.Add_error_code +--------------------------------- + + -- Function: mpi4py.MPI.Add_error_code (errorclass) + + Add an ‘error code’ to an ‘error class’. + + + Parameters: ‘errorclass’ (int(1)) + + + Return type: int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Add_error_string, Next: mpi4py MPI Aint_add, Prev: mpi4py MPI Add_error_code, Up: mpi4py MPI<2> + +11.1.30 mpi4py.MPI.Add_error_string +----------------------------------- + + -- Function: mpi4py.MPI.Add_error_string (errorcode, string) + + Associate an ‘error string’ with an ‘error class’ or ‘error code’. + + + Parameters: + + * ‘errorcode’ (int(1)) + + * ‘string’ (str(2)) + + + Return type: None(3) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/stdtypes.html#str + + (3) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Aint_add, Next: mpi4py MPI Aint_diff, Prev: mpi4py MPI Add_error_string, Up: mpi4py MPI<2> + +11.1.31 mpi4py.MPI.Aint_add +--------------------------- + + -- Function: mpi4py.MPI.Aint_add (base, disp) + + Return the sum of base address and displacement. + + + Parameters: + + * ‘base’ (int(1)) + + * ‘disp’ (int(2)) + + + Return type: int(3) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Aint_diff, Next: mpi4py MPI Alloc_mem, Prev: mpi4py MPI Aint_add, Up: mpi4py MPI<2> + +11.1.32 mpi4py.MPI.Aint_diff +---------------------------- + + -- Function: mpi4py.MPI.Aint_diff (addr1, addr2) + + Return the difference between absolute addresses. + + + Parameters: + + * ‘addr1’ (int(1)) + + * ‘addr2’ (int(2)) + + + Return type: int(3) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Alloc_mem, Next: mpi4py MPI Attach_buffer, Prev: mpi4py MPI Aint_diff, Up: mpi4py MPI<2> + +11.1.33 mpi4py.MPI.Alloc_mem +---------------------------- + + -- Function: mpi4py.MPI.Alloc_mem (size, info=INFO_NULL) + + Allocate memory for message passing and remote memory access. + + + Parameters: + + * ‘size’ (int(1)) + + * ‘info’ (*note Info: d4.) + + + Return type: *note buffer: da. + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Attach_buffer, Next: mpi4py MPI Close_port, Prev: mpi4py MPI Alloc_mem, Up: mpi4py MPI<2> + +11.1.34 mpi4py.MPI.Attach_buffer +-------------------------------- + + -- Function: mpi4py.MPI.Attach_buffer (buf) + + Attach a user-provided buffer for sending in buffered mode. + + + Parameters: ‘buf’ (*note Buffer: 20a.‘ | ’None(1)) + + + Return type: None(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + (2) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Close_port, Next: mpi4py MPI Compute_dims, Prev: mpi4py MPI Attach_buffer, Up: mpi4py MPI<2> + +11.1.35 mpi4py.MPI.Close_port +----------------------------- + + -- Function: mpi4py.MPI.Close_port (port_name) + + Close a port. + + + Parameters: ‘port_name’ (str(1)) + + + Return type: None(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + (2) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Compute_dims, Next: mpi4py MPI Detach_buffer, Prev: mpi4py MPI Close_port, Up: mpi4py MPI<2> + +11.1.36 mpi4py.MPI.Compute_dims +------------------------------- + + -- Function: mpi4py.MPI.Compute_dims (nnodes, dims) + + Return a balanced distribution of processes per coordinate + direction. + + + Parameters: + + * ‘nnodes’ (int(1)) + + * ‘dims’ (int(2)‘ | ’Sequence(3)‘[’int(4)‘]’) + + + Return type: list(5)[int(6)] + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/typing.html#typing.Sequence + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/stdtypes.html#list + + (6) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Detach_buffer, Next: mpi4py MPI Finalize, Prev: mpi4py MPI Compute_dims, Up: mpi4py MPI<2> + +11.1.37 mpi4py.MPI.Detach_buffer +-------------------------------- + + -- Function: mpi4py.MPI.Detach_buffer () + + Remove an existing attached buffer. + + + Return type: *note Buffer: 20a. | None(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Finalize, Next: mpi4py MPI Flush_buffer, Prev: mpi4py MPI Detach_buffer, Up: mpi4py MPI<2> + +11.1.38 mpi4py.MPI.Finalize +--------------------------- + + -- Function: mpi4py.MPI.Finalize () + + Terminate the MPI execution environment. + + + Return type: None(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Flush_buffer, Next: mpi4py MPI Free_mem, Prev: mpi4py MPI Finalize, Up: mpi4py MPI<2> + +11.1.39 mpi4py.MPI.Flush_buffer +------------------------------- + + -- Function: mpi4py.MPI.Flush_buffer () + + Block until all buffered messages have been transmitted. + + + Return type: None(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Free_mem, Next: mpi4py MPI Get_address, Prev: mpi4py MPI Flush_buffer, Up: mpi4py MPI<2> + +11.1.40 mpi4py.MPI.Free_mem +--------------------------- + + -- Function: mpi4py.MPI.Free_mem (mem) + + Free memory allocated with *note Alloc_mem: df. + + + Parameters: ‘mem’ (*note buffer: da.) + + + Return type: None(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Get_address, Next: mpi4py MPI Get_error_class, Prev: mpi4py MPI Free_mem, Up: mpi4py MPI<2> + +11.1.41 mpi4py.MPI.Get_address +------------------------------ + + -- Function: mpi4py.MPI.Get_address (location) + + Get the address of a location in memory. + + + Parameters: ‘location’ (*note Buffer: 20a.‘ | ’*note Bottom: 20b.) + + + Return type: int(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Get_error_class, Next: mpi4py MPI Get_error_string, Prev: mpi4py MPI Get_address, Up: mpi4py MPI<2> + +11.1.42 mpi4py.MPI.Get_error_class +---------------------------------- + + -- Function: mpi4py.MPI.Get_error_class (errorcode) + + Convert an ‘error code’ into an ‘error class’. + + + Parameters: ‘errorcode’ (int(1)) + + + Return type: int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Get_error_string, Next: mpi4py MPI Get_hw_resource_info, Prev: mpi4py MPI Get_error_class, Up: mpi4py MPI<2> + +11.1.43 mpi4py.MPI.Get_error_string +----------------------------------- + + -- Function: mpi4py.MPI.Get_error_string (errorcode) + + Return the ‘error string’ for a given ‘error class’ or ‘error + code’. + + + Parameters: ‘errorcode’ (int(1)) + + + Return type: str(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Get_hw_resource_info, Next: mpi4py MPI Get_library_version, Prev: mpi4py MPI Get_error_string, Up: mpi4py MPI<2> + +11.1.44 mpi4py.MPI.Get_hw_resource_info +--------------------------------------- + + -- Function: mpi4py.MPI.Get_hw_resource_info () + + Obtain information about the hardware platform of the calling + processor. + + + Return type: *note Info: d4. + + +File: mpi4py.info, Node: mpi4py MPI Get_library_version, Next: mpi4py MPI Get_processor_name, Prev: mpi4py MPI Get_hw_resource_info, Up: mpi4py MPI<2> + +11.1.45 mpi4py.MPI.Get_library_version +-------------------------------------- + + -- Function: mpi4py.MPI.Get_library_version () + + Obtain the version string of the MPI library. + + + Return type: str(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Get_processor_name, Next: mpi4py MPI Get_version, Prev: mpi4py MPI Get_library_version, Up: mpi4py MPI<2> + +11.1.46 mpi4py.MPI.Get_processor_name +------------------------------------- + + -- Function: mpi4py.MPI.Get_processor_name () + + Obtain the name of the calling processor. + + + Return type: str(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Get_version, Next: mpi4py MPI Iflush_buffer, Prev: mpi4py MPI Get_processor_name, Up: mpi4py MPI<2> + +11.1.47 mpi4py.MPI.Get_version +------------------------------ + + -- Function: mpi4py.MPI.Get_version () + + Obtain the version number of the MPI standard. + + + Return type: tuple(1)[int(2), int(3)] + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#tuple + + (2) https://docs.python.org/3/library/functions.html#int + + (3) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Iflush_buffer, Next: mpi4py MPI Init, Prev: mpi4py MPI Get_version, Up: mpi4py MPI<2> + +11.1.48 mpi4py.MPI.Iflush_buffer +-------------------------------- + + -- Function: mpi4py.MPI.Iflush_buffer () + + Nonblocking flush for buffered messages. + + + Return type: *note Request: 43. + + +File: mpi4py.info, Node: mpi4py MPI Init, Next: mpi4py MPI Init_thread, Prev: mpi4py MPI Iflush_buffer, Up: mpi4py MPI<2> + +11.1.49 mpi4py.MPI.Init +----------------------- + + -- Function: mpi4py.MPI.Init () + + Initialize the MPI execution environment. + + + Return type: None(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Init_thread, Next: mpi4py MPI Is_finalized, Prev: mpi4py MPI Init, Up: mpi4py MPI<2> + +11.1.50 mpi4py.MPI.Init_thread +------------------------------ + + -- Function: mpi4py.MPI.Init_thread (required=THREAD_MULTIPLE) + + Initialize the MPI execution environment. + + + Parameters: ‘required’ (int(1)) + + + Return type: int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Is_finalized, Next: mpi4py MPI Is_initialized, Prev: mpi4py MPI Init_thread, Up: mpi4py MPI<2> + +11.1.51 mpi4py.MPI.Is_finalized +------------------------------- + + -- Function: mpi4py.MPI.Is_finalized () + + Indicate whether *note Finalize: 8e. has completed. + + + Return type: bool(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#bool + + +File: mpi4py.info, Node: mpi4py MPI Is_initialized, Next: mpi4py MPI Is_thread_main, Prev: mpi4py MPI Is_finalized, Up: mpi4py MPI<2> + +11.1.52 mpi4py.MPI.Is_initialized +--------------------------------- + + -- Function: mpi4py.MPI.Is_initialized () + + Indicate whether *note Init: 8c. has been called. + + + Return type: bool(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#bool + + +File: mpi4py.info, Node: mpi4py MPI Is_thread_main, Next: mpi4py MPI Lookup_name, Prev: mpi4py MPI Is_initialized, Up: mpi4py MPI<2> + +11.1.53 mpi4py.MPI.Is_thread_main +--------------------------------- + + -- Function: mpi4py.MPI.Is_thread_main () + + Indicate whether this thread called *note Init: 8c. or *note + Init_thread: 8d. + + + Return type: bool(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#bool + + +File: mpi4py.info, Node: mpi4py MPI Lookup_name, Next: mpi4py MPI Open_port, Prev: mpi4py MPI Is_thread_main, Up: mpi4py MPI<2> + +11.1.54 mpi4py.MPI.Lookup_name +------------------------------ + + -- Function: mpi4py.MPI.Lookup_name (service_name, info=INFO_NULL) + + Lookup a port name given a service name. + + + Parameters: + + * ‘service_name’ (str(1)) + + * ‘info’ (*note Info: d4.) + + + Return type: str(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + (2) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Open_port, Next: mpi4py MPI Pcontrol, Prev: mpi4py MPI Lookup_name, Up: mpi4py MPI<2> + +11.1.55 mpi4py.MPI.Open_port +---------------------------- + + -- Function: mpi4py.MPI.Open_port (info=INFO_NULL) + + Return an address used to connect group of processes. + + + Parameters: ‘info’ (*note Info: d4.) + + + Return type: str(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + +File: mpi4py.info, Node: mpi4py MPI Pcontrol, Next: mpi4py MPI Publish_name, Prev: mpi4py MPI Open_port, Up: mpi4py MPI<2> + +11.1.56 mpi4py.MPI.Pcontrol +--------------------------- + + -- Function: mpi4py.MPI.Pcontrol (level) + + Control profiling. + + + Parameters: ‘level’ (int(1)) + + + Return type: None(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Publish_name, Next: mpi4py MPI Query_thread, Prev: mpi4py MPI Pcontrol, Up: mpi4py MPI<2> + +11.1.57 mpi4py.MPI.Publish_name +------------------------------- + + -- Function: mpi4py.MPI.Publish_name (service_name, port_name, + info=INFO_NULL) + + Publish a service name. + + + Parameters: + + * ‘service_name’ (str(1)) + + * ‘port_name’ (str(2)) + + * ‘info’ (*note Info: d4.) + + + Return type: None(3) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + (2) https://docs.python.org/3/library/stdtypes.html#str + + (3) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Query_thread, Next: mpi4py MPI Register_datarep, Prev: mpi4py MPI Publish_name, Up: mpi4py MPI<2> + +11.1.58 mpi4py.MPI.Query_thread +------------------------------- + + -- Function: mpi4py.MPI.Query_thread () + + Return the level of thread support provided by the MPI library. + + + Return type: int(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI Register_datarep, Next: mpi4py MPI Remove_error_class, Prev: mpi4py MPI Query_thread, Up: mpi4py MPI<2> + +11.1.59 mpi4py.MPI.Register_datarep +----------------------------------- + + -- Function: mpi4py.MPI.Register_datarep (datarep, read_fn, write_fn, + extent_fn) + + Register user-defined data representations. + + + Parameters: + + * ‘datarep’ (str(1)) + + * ‘read_fn’ (Callable(2)‘[’‘[’*note Buffer: 20a.‘, ’*note + Datatype: d0.‘, ’int(3)‘, ’*note Buffer: 20a.‘, ’int(4)‘]’‘, + ’None(5)‘]’) + + * ‘write_fn’ (Callable(6)‘[’‘[’*note Buffer: 20a.‘, ’*note + Datatype: d0.‘, ’int(7)‘, ’*note Buffer: 20a.‘, ’int(8)‘]’‘, + ’None(9)‘]’) + + * ‘extent_fn’ (Callable(10)‘[’‘[’*note Datatype: d0.‘]’‘, + ’int(11)‘]’) + + + Return type: None(12) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + (2) https://docs.python.org/3/library/typing.html#typing.Callable + + (3) https://docs.python.org/3/library/functions.html#int + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/constants.html#None + + (6) https://docs.python.org/3/library/typing.html#typing.Callable + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/constants.html#None + + (10) https://docs.python.org/3/library/typing.html#typing.Callable + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Remove_error_class, Next: mpi4py MPI Remove_error_code, Prev: mpi4py MPI Register_datarep, Up: mpi4py MPI<2> + +11.1.60 mpi4py.MPI.Remove_error_class +------------------------------------- + + -- Function: mpi4py.MPI.Remove_error_class (errorclass) + + Remove an ‘error class’ from the known error classes. + + + Parameters: ‘errorclass’ (int(1)) + + + Return type: None(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Remove_error_code, Next: mpi4py MPI Remove_error_string, Prev: mpi4py MPI Remove_error_class, Up: mpi4py MPI<2> + +11.1.61 mpi4py.MPI.Remove_error_code +------------------------------------ + + -- Function: mpi4py.MPI.Remove_error_code (errorcode) + + Remove an ‘error code’ from the known error codes. + + + Parameters: ‘errorcode’ (int(1)) + + + Return type: None(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Remove_error_string, Next: mpi4py MPI Unpublish_name, Prev: mpi4py MPI Remove_error_code, Up: mpi4py MPI<2> + +11.1.62 mpi4py.MPI.Remove_error_string +-------------------------------------- + + -- Function: mpi4py.MPI.Remove_error_string (errorcode) + + Remove ‘error string’ association from ‘error class’ or ‘error + code’. + + + Parameters: ‘errorcode’ (int(1)) + + + Return type: None(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Unpublish_name, Next: mpi4py MPI Wtick, Prev: mpi4py MPI Remove_error_string, Up: mpi4py MPI<2> + +11.1.63 mpi4py.MPI.Unpublish_name +--------------------------------- + + -- Function: mpi4py.MPI.Unpublish_name (service_name, port_name, + info=INFO_NULL) + + Unpublish a service name. + + + Parameters: + + * ‘service_name’ (str(1)) + + * ‘port_name’ (str(2)) + + * ‘info’ (*note Info: d4.) + + + Return type: None(3) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#str + + (2) https://docs.python.org/3/library/stdtypes.html#str + + (3) https://docs.python.org/3/library/constants.html#None + + +File: mpi4py.info, Node: mpi4py MPI Wtick, Next: mpi4py MPI Wtime, Prev: mpi4py MPI Unpublish_name, Up: mpi4py MPI<2> + +11.1.64 mpi4py.MPI.Wtick +------------------------ + + -- Function: mpi4py.MPI.Wtick () + + Return the resolution of *note Wtime: 96. + + + Return type: float(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#float + + +File: mpi4py.info, Node: mpi4py MPI Wtime, Next: mpi4py MPI get_vendor, Prev: mpi4py MPI Wtick, Up: mpi4py MPI<2> + +11.1.65 mpi4py.MPI.Wtime +------------------------ + + -- Function: mpi4py.MPI.Wtime () + + Return an elapsed time on the calling processor. + + + Return type: float(1) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#float + + +File: mpi4py.info, Node: mpi4py MPI get_vendor, Next: mpi4py MPI UNDEFINED, Prev: mpi4py MPI Wtime, Up: mpi4py MPI<2> + +11.1.66 mpi4py.MPI.get_vendor +----------------------------- + + -- Function: mpi4py.MPI.get_vendor () + + Information about the underlying MPI implementation. + + + Returns: + + - string with the name of the MPI implementation. + + - integer 3-tuple version number ‘(major, minor, micro)’. + + + Return type: tuple(1)[str(2), tuple(3)[int(4), int(5), int(6)]] + +Attributes +.......... + +*note UNDEFINED: f5.Constant ‘UNDEFINED’ of type int(7) + + +*note ANY_SOURCE: f6.Constant ‘ANY_SOURCE’ of type int(8) + + +*note ANY_TAG: f7.Constant ‘ANY_TAG’ of type int(9) + + +*note PROC_NULL: f8.Constant ‘PROC_NULL’ of type int(10) + + +*note ROOT: f9.Constant ‘ROOT’ of type int(11) + + +*note BOTTOM: fa.Constant ‘BOTTOM’ of type *note BottomType: fb. + + +*note IN_PLACE: fc.Constant ‘IN_PLACE’ of type *note InPlaceType: fd. + + +*note KEYVAL_INVALID: 100.Constant ‘KEYVAL_INVALID’ of type int(12) + + +*note TAG_UB: 101.Constant ‘TAG_UB’ of type int(13) + + +*note IO: 102. Constant ‘IO’ of type int(14) + + +*note WTIME_IS_GLOBAL: 103.Constant ‘WTIME_IS_GLOBAL’ of type int(15) + + +*note UNIVERSE_SIZE: 104.Constant ‘UNIVERSE_SIZE’ of type int(16) + + +*note APPNUM: 105.Constant ‘APPNUM’ of type int(17) + + +*note LASTUSEDCODE: 106.Constant ‘LASTUSEDCODE’ of type int(18) + + +*note WIN_BASE: 107.Constant ‘WIN_BASE’ of type int(19) + + +*note WIN_SIZE: 108.Constant ‘WIN_SIZE’ of type int(20) + + +*note WIN_DISP_UNIT: 109.Constant ‘WIN_DISP_UNIT’ of type int(21) + + +*note WIN_CREATE_FLAVOR: 10a.Constant ‘WIN_CREATE_FLAVOR’ of type int(22) + + +*note WIN_FLAVOR: 10b.Constant ‘WIN_FLAVOR’ of type int(23) + + +*note WIN_MODEL: 10c.Constant ‘WIN_MODEL’ of type int(24) + + +*note SUCCESS: 10d.Constant ‘SUCCESS’ of type int(25) + + +*note ERR_LASTCODE: 10e.Constant ‘ERR_LASTCODE’ of type int(26) + + +*note ERR_TYPE: 111.Constant ‘ERR_TYPE’ of type int(27) + + +*note ERR_REQUEST: 112.Constant ‘ERR_REQUEST’ of type int(28) + + +*note ERR_OP: 113.Constant ‘ERR_OP’ of type int(29) + + +*note ERR_GROUP: 110.Constant ‘ERR_GROUP’ of type int(30) + + +*note ERR_INFO: 123.Constant ‘ERR_INFO’ of type int(31) + + +*note ERR_ERRHANDLER: 114.Constant ‘ERR_ERRHANDLER’ of type int(32) + + +*note ERR_SESSION: 557.Constant ‘ERR_SESSION’ of type int(33) + + +*note ERR_COMM: 10f.Constant ‘ERR_COMM’ of type int(34) + + +*note ERR_WIN: 125.Constant ‘ERR_WIN’ of type int(35) + + +*note ERR_FILE: 124.Constant ‘ERR_FILE’ of type int(36) + + +*note ERR_BUFFER: 115.Constant ‘ERR_BUFFER’ of type int(37) + + +*note ERR_COUNT: 116.Constant ‘ERR_COUNT’ of type int(38) + + +*note ERR_TAG: 117.Constant ‘ERR_TAG’ of type int(39) + + +*note ERR_RANK: 118.Constant ‘ERR_RANK’ of type int(40) + + +*note ERR_ROOT: 119.Constant ‘ERR_ROOT’ of type int(41) + + +*note ERR_TRUNCATE: 11a.Constant ‘ERR_TRUNCATE’ of type int(42) + + +*note ERR_IN_STATUS: 11b.Constant ‘ERR_IN_STATUS’ of type int(43) + + +*note ERR_PENDING: 11c.Constant ‘ERR_PENDING’ of type int(44) + + +*note ERR_TOPOLOGY: 11d.Constant ‘ERR_TOPOLOGY’ of type int(45) + + +*note ERR_DIMS: 11e.Constant ‘ERR_DIMS’ of type int(46) + + +*note ERR_ARG: 11f.Constant ‘ERR_ARG’ of type int(47) + + +*note ERR_OTHER: 120.Constant ‘ERR_OTHER’ of type int(48) + + +*note ERR_UNKNOWN: 121.Constant ‘ERR_UNKNOWN’ of type int(49) + + +*note ERR_INTERN: 122.Constant ‘ERR_INTERN’ of type int(50) + + +*note ERR_KEYVAL: 126.Constant ‘ERR_KEYVAL’ of type int(51) + + +*note ERR_NO_MEM: 138.Constant ‘ERR_NO_MEM’ of type int(52) + + +*note ERR_INFO_KEY: 127.Constant ‘ERR_INFO_KEY’ of type int(53) + + +*note ERR_INFO_VALUE: 128.Constant ‘ERR_INFO_VALUE’ of type int(54) + + +*note ERR_INFO_NOKEY: 129.Constant ‘ERR_INFO_NOKEY’ of type int(55) + + +*note ERR_SPAWN: 13d.Constant ‘ERR_SPAWN’ of type int(56) + + +*note ERR_PORT: 13a.Constant ‘ERR_PORT’ of type int(57) + + +*note ERR_SERVICE: 13c.Constant ‘ERR_SERVICE’ of type int(58) + + +*note ERR_NAME: 137.Constant ‘ERR_NAME’ of type int(59) + + +*note ERR_PROC_ABORTED: 558.Constant ‘ERR_PROC_ABORTED’ of type int(60) + + +*note ERR_BASE: 13e.Constant ‘ERR_BASE’ of type int(61) + + +*note ERR_SIZE: 13f.Constant ‘ERR_SIZE’ of type int(62) + + +*note ERR_DISP: 140.Constant ‘ERR_DISP’ of type int(63) + + +*note ERR_ASSERT: 141.Constant ‘ERR_ASSERT’ of type int(64) + + +*note ERR_LOCKTYPE: 142.Constant ‘ERR_LOCKTYPE’ of type int(65) + + +*note ERR_RMA_CONFLICT: 143.Constant ‘ERR_RMA_CONFLICT’ of type int(66) + + +*note ERR_RMA_SYNC: 144.Constant ‘ERR_RMA_SYNC’ of type int(67) + + +*note ERR_RMA_RANGE: 145.Constant ‘ERR_RMA_RANGE’ of type int(68) + + +*note ERR_RMA_ATTACH: 146.Constant ‘ERR_RMA_ATTACH’ of type int(69) + + +*note ERR_RMA_SHARED: 147.Constant ‘ERR_RMA_SHARED’ of type int(70) + + +*note ERR_RMA_FLAVOR: 148.Constant ‘ERR_RMA_FLAVOR’ of type int(71) + + +*note ERR_BAD_FILE: 12c.Constant ‘ERR_BAD_FILE’ of type int(72) + + +*note ERR_NO_SUCH_FILE: 130.Constant ‘ERR_NO_SUCH_FILE’ of type int(73) + + +*note ERR_FILE_EXISTS: 12d.Constant ‘ERR_FILE_EXISTS’ of type int(74) + + +*note ERR_FILE_IN_USE: 12e.Constant ‘ERR_FILE_IN_USE’ of type int(75) + + +*note ERR_AMODE: 12b.Constant ‘ERR_AMODE’ of type int(76) + + +*note ERR_ACCESS: 12a.Constant ‘ERR_ACCESS’ of type int(77) + + +*note ERR_READ_ONLY: 132.Constant ‘ERR_READ_ONLY’ of type int(78) + + +*note ERR_NO_SPACE: 12f.Constant ‘ERR_NO_SPACE’ of type int(79) + + +*note ERR_QUOTA: 13b.Constant ‘ERR_QUOTA’ of type int(80) + + +*note ERR_NOT_SAME: 139.Constant ‘ERR_NOT_SAME’ of type int(81) + + +*note ERR_IO: 131.Constant ‘ERR_IO’ of type int(82) + + +*note ERR_UNSUPPORTED_OPERATION: 136.Constant ‘ERR_UNSUPPORTED_OPERATION’ of type int(83) + + +*note ERR_UNSUPPORTED_DATAREP: 135.Constant ‘ERR_UNSUPPORTED_DATAREP’ of type int(84) + + +*note ERR_CONVERSION: 133.Constant ‘ERR_CONVERSION’ of type int(85) + + +*note ERR_DUP_DATAREP: 134.Constant ‘ERR_DUP_DATAREP’ of type int(86) + + +*note ERR_VALUE_TOO_LARGE: 559.Constant ‘ERR_VALUE_TOO_LARGE’ of type int(87) + + +*note ERR_REVOKED: 55a.Constant ‘ERR_REVOKED’ of type int(88) + + +*note ERR_PROC_FAILED: 55b.Constant ‘ERR_PROC_FAILED’ of type int(89) + + +*note ERR_PROC_FAILED_PENDING: 55c.Constant ‘ERR_PROC_FAILED_PENDING’ of type int(90) + + +*note ORDER_C: 149.Constant ‘ORDER_C’ of type int(91) + + +*note ORDER_FORTRAN: 14b.Constant ‘ORDER_FORTRAN’ of type int(92) + + +*note ORDER_F: 14a.Constant ‘ORDER_F’ of type int(93) + + +*note TYPECLASS_INTEGER: 14c.Constant ‘TYPECLASS_INTEGER’ of type int(94) + + +*note TYPECLASS_REAL: 14d.Constant ‘TYPECLASS_REAL’ of type int(95) + + +*note TYPECLASS_COMPLEX: 14e.Constant ‘TYPECLASS_COMPLEX’ of type int(96) + + +*note DISTRIBUTE_NONE: 14f.Constant ‘DISTRIBUTE_NONE’ of type int(97) + + +*note DISTRIBUTE_BLOCK: 150.Constant ‘DISTRIBUTE_BLOCK’ of type int(98) + + +*note DISTRIBUTE_CYCLIC: 151.Constant ‘DISTRIBUTE_CYCLIC’ of type int(99) + + +*note DISTRIBUTE_DFLT_DARG: 152.Constant ‘DISTRIBUTE_DFLT_DARG’ of type int(100) + + +*note COMBINER_NAMED: 153.Constant ‘COMBINER_NAMED’ of type int(101) + + +*note COMBINER_DUP: 154.Constant ‘COMBINER_DUP’ of type int(102) + + +*note COMBINER_CONTIGUOUS: 155.Constant ‘COMBINER_CONTIGUOUS’ of type int(103) + + +*note COMBINER_VECTOR: 156.Constant ‘COMBINER_VECTOR’ of type int(104) + + +*note COMBINER_HVECTOR: 157.Constant ‘COMBINER_HVECTOR’ of type int(105) + + +*note COMBINER_INDEXED: 158.Constant ‘COMBINER_INDEXED’ of type int(106) + + +*note COMBINER_HINDEXED: 159.Constant ‘COMBINER_HINDEXED’ of type int(107) + + +*note COMBINER_INDEXED_BLOCK: 15a.Constant ‘COMBINER_INDEXED_BLOCK’ of type int(108) + + +*note COMBINER_HINDEXED_BLOCK: 15b.Constant ‘COMBINER_HINDEXED_BLOCK’ of type int(109) + + +*note COMBINER_STRUCT: 15c.Constant ‘COMBINER_STRUCT’ of type int(110) + + +*note COMBINER_SUBARRAY: 15d.Constant ‘COMBINER_SUBARRAY’ of type int(111) + + +*note COMBINER_DARRAY: 15e.Constant ‘COMBINER_DARRAY’ of type int(112) + + +*note COMBINER_RESIZED: 15f.Constant ‘COMBINER_RESIZED’ of type int(113) + + +*note COMBINER_VALUE_INDEX: 160.Constant ‘COMBINER_VALUE_INDEX’ of type int(114) + + +*note COMBINER_F90_INTEGER: 163.Constant ‘COMBINER_F90_INTEGER’ of type int(115) + + +*note COMBINER_F90_REAL: 161.Constant ‘COMBINER_F90_REAL’ of type int(116) + + +*note COMBINER_F90_COMPLEX: 162.Constant ‘COMBINER_F90_COMPLEX’ of type int(117) + + +*note F_SOURCE: 55d.Constant ‘F_SOURCE’ of type int(118) + + +*note F_TAG: 55e.Constant ‘F_TAG’ of type int(119) + + +*note F_ERROR: 55f.Constant ‘F_ERROR’ of type int(120) + + +*note F_STATUS_SIZE: 560.Constant ‘F_STATUS_SIZE’ of type int(121) + + +*note IDENT: 164.Constant ‘IDENT’ of type int(122) + + +*note CONGRUENT: 165.Constant ‘CONGRUENT’ of type int(123) + + +*note SIMILAR: 166.Constant ‘SIMILAR’ of type int(124) + + +*note UNEQUAL: 167.Constant ‘UNEQUAL’ of type int(125) + + +*note CART: 168.Constant ‘CART’ of type int(126) + + +*note GRAPH: 169.Constant ‘GRAPH’ of type int(127) + + +*note DIST_GRAPH: 16a.Constant ‘DIST_GRAPH’ of type int(128) + + +*note UNWEIGHTED: 16b.Constant ‘UNWEIGHTED’ of type int(129) + + +*note WEIGHTS_EMPTY: 16c.Constant ‘WEIGHTS_EMPTY’ of type int(130) + + +*note COMM_TYPE_SHARED: 16d.Constant ‘COMM_TYPE_SHARED’ of type int(131) + + +*note COMM_TYPE_HW_GUIDED: 561.Constant ‘COMM_TYPE_HW_GUIDED’ of type int(132) + + +*note COMM_TYPE_HW_UNGUIDED: 562.Constant ‘COMM_TYPE_HW_UNGUIDED’ of type int(133) + + +*note COMM_TYPE_RESOURCE_GUIDED: 563.Constant ‘COMM_TYPE_RESOURCE_GUIDED’ of type int(134) + + +*note BSEND_OVERHEAD: 16e.Constant ‘BSEND_OVERHEAD’ of type int(135) + + +*note BUFFER_AUTOMATIC: fe.Constant ‘BUFFER_AUTOMATIC’ of type *note BufferAutomaticType: ff. + + +*note WIN_FLAVOR_CREATE: 16f.Constant ‘WIN_FLAVOR_CREATE’ of type int(136) + + +*note WIN_FLAVOR_ALLOCATE: 170.Constant ‘WIN_FLAVOR_ALLOCATE’ of type int(137) + + +*note WIN_FLAVOR_DYNAMIC: 171.Constant ‘WIN_FLAVOR_DYNAMIC’ of type int(138) + + +*note WIN_FLAVOR_SHARED: 172.Constant ‘WIN_FLAVOR_SHARED’ of type int(139) + + +*note WIN_SEPARATE: 173.Constant ‘WIN_SEPARATE’ of type int(140) + + +*note WIN_UNIFIED: 174.Constant ‘WIN_UNIFIED’ of type int(141) + + +*note MODE_NOCHECK: 175.Constant ‘MODE_NOCHECK’ of type int(142) + + +*note MODE_NOSTORE: 176.Constant ‘MODE_NOSTORE’ of type int(143) + + +*note MODE_NOPUT: 177.Constant ‘MODE_NOPUT’ of type int(144) + + +*note MODE_NOPRECEDE: 178.Constant ‘MODE_NOPRECEDE’ of type int(145) + + +*note MODE_NOSUCCEED: 179.Constant ‘MODE_NOSUCCEED’ of type int(146) + + +*note LOCK_EXCLUSIVE: 17a.Constant ‘LOCK_EXCLUSIVE’ of type int(147) + + +*note LOCK_SHARED: 17b.Constant ‘LOCK_SHARED’ of type int(148) + + +*note MODE_RDONLY: 17c.Constant ‘MODE_RDONLY’ of type int(149) + + +*note MODE_WRONLY: 17d.Constant ‘MODE_WRONLY’ of type int(150) + + +*note MODE_RDWR: 17e.Constant ‘MODE_RDWR’ of type int(151) + + +*note MODE_CREATE: 17f.Constant ‘MODE_CREATE’ of type int(152) + + +*note MODE_EXCL: 180.Constant ‘MODE_EXCL’ of type int(153) + + +*note MODE_DELETE_ON_CLOSE: 181.Constant ‘MODE_DELETE_ON_CLOSE’ of type int(154) + + +*note MODE_UNIQUE_OPEN: 182.Constant ‘MODE_UNIQUE_OPEN’ of type int(155) + + +*note MODE_SEQUENTIAL: 183.Constant ‘MODE_SEQUENTIAL’ of type int(156) + + +*note MODE_APPEND: 184.Constant ‘MODE_APPEND’ of type int(157) + + +*note SEEK_SET: 185.Constant ‘SEEK_SET’ of type int(158) + + +*note SEEK_CUR: 186.Constant ‘SEEK_CUR’ of type int(159) + + +*note SEEK_END: 187.Constant ‘SEEK_END’ of type int(160) + + +*note DISPLACEMENT_CURRENT: 188.Constant ‘DISPLACEMENT_CURRENT’ of type int(161) + + +*note DISP_CUR: 189.Constant ‘DISP_CUR’ of type int(162) + + +*note THREAD_SINGLE: 18a.Constant ‘THREAD_SINGLE’ of type int(163) + + +*note THREAD_FUNNELED: 18b.Constant ‘THREAD_FUNNELED’ of type int(164) + + +*note THREAD_SERIALIZED: 18c.Constant ‘THREAD_SERIALIZED’ of type int(165) + + +*note THREAD_MULTIPLE: 18d.Constant ‘THREAD_MULTIPLE’ of type int(166) + + +*note VERSION: 18e.Constant ‘VERSION’ of type int(167) + + +*note SUBVERSION: 18f.Constant ‘SUBVERSION’ of type int(168) + + +*note MAX_PROCESSOR_NAME: 190.Constant ‘MAX_PROCESSOR_NAME’ of type int(169) + + +*note MAX_ERROR_STRING: 191.Constant ‘MAX_ERROR_STRING’ of type int(170) + + +*note MAX_PORT_NAME: 192.Constant ‘MAX_PORT_NAME’ of type int(171) + + +*note MAX_INFO_KEY: 193.Constant ‘MAX_INFO_KEY’ of type int(172) + + +*note MAX_INFO_VAL: 194.Constant ‘MAX_INFO_VAL’ of type int(173) + + +*note MAX_OBJECT_NAME: 195.Constant ‘MAX_OBJECT_NAME’ of type int(174) + + +*note MAX_DATAREP_STRING: 196.Constant ‘MAX_DATAREP_STRING’ of type int(175) + + +*note MAX_LIBRARY_VERSION_STRING: 197.Constant ‘MAX_LIBRARY_VERSION_STRING’ of type int(176) + + +*note MAX_PSET_NAME_LEN: 564.Constant ‘MAX_PSET_NAME_LEN’ of type int(177) + + +*note MAX_STRINGTAG_LEN: 565.Constant ‘MAX_STRINGTAG_LEN’ of type int(178) + + +*note DATATYPE_NULL: 198.Object ‘DATATYPE_NULL’ of type *note Datatype: d0. + + +*note PACKED: 199.Object ‘PACKED’ of type *note Datatype: d0. + + +*note BYTE: 19a.Object ‘BYTE’ of type *note Datatype: d0. + + +*note AINT: 19b.Object ‘AINT’ of type *note Datatype: d0. + + +*note OFFSET: 19c.Object ‘OFFSET’ of type *note Datatype: d0. + + +*note COUNT: 19d.Object ‘COUNT’ of type *note Datatype: d0. + + +*note CHAR: 19e.Object ‘CHAR’ of type *note Datatype: d0. + + +*note WCHAR: 19f.Object ‘WCHAR’ of type *note Datatype: d0. + + +*note SIGNED_CHAR: 1a0.Object ‘SIGNED_CHAR’ of type *note Datatype: d0. + + +*note SHORT: 1a1.Object ‘SHORT’ of type *note Datatype: d0. + + +*note INT: 1a2.Object ‘INT’ of type *note Datatype: d0. + + +*note LONG: 1a3.Object ‘LONG’ of type *note Datatype: d0. + + +*note LONG_LONG: 1a4.Object ‘LONG_LONG’ of type *note Datatype: d0. + + +*note UNSIGNED_CHAR: 1a5.Object ‘UNSIGNED_CHAR’ of type *note Datatype: d0. + + +*note UNSIGNED_SHORT: 1a6.Object ‘UNSIGNED_SHORT’ of type *note Datatype: d0. + + +*note UNSIGNED: 1a7.Object ‘UNSIGNED’ of type *note Datatype: d0. + + +*note UNSIGNED_LONG: 1a8.Object ‘UNSIGNED_LONG’ of type *note Datatype: d0. + + +*note UNSIGNED_LONG_LONG: 1a9.Object ‘UNSIGNED_LONG_LONG’ of type *note Datatype: d0. + + +*note FLOAT: 1aa.Object ‘FLOAT’ of type *note Datatype: d0. + + +*note DOUBLE: 1ab.Object ‘DOUBLE’ of type *note Datatype: d0. + + +*note LONG_DOUBLE: 1ac.Object ‘LONG_DOUBLE’ of type *note Datatype: d0. + + +*note C_BOOL: 1ad.Object ‘C_BOOL’ of type *note Datatype: d0. + + +*note INT8_T: 1ae.Object ‘INT8_T’ of type *note Datatype: d0. + + +*note INT16_T: 1af.Object ‘INT16_T’ of type *note Datatype: d0. + + +*note INT32_T: 1b0.Object ‘INT32_T’ of type *note Datatype: d0. + + +*note INT64_T: 1b1.Object ‘INT64_T’ of type *note Datatype: d0. + + +*note UINT8_T: 1b2.Object ‘UINT8_T’ of type *note Datatype: d0. + + +*note UINT16_T: 1b3.Object ‘UINT16_T’ of type *note Datatype: d0. + + +*note UINT32_T: 1b4.Object ‘UINT32_T’ of type *note Datatype: d0. + + +*note UINT64_T: 1b5.Object ‘UINT64_T’ of type *note Datatype: d0. + + +*note C_COMPLEX: 1b6.Object ‘C_COMPLEX’ of type *note Datatype: d0. + + +*note C_FLOAT_COMPLEX: 1b7.Object ‘C_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +*note C_DOUBLE_COMPLEX: 1b8.Object ‘C_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note C_LONG_DOUBLE_COMPLEX: 1b9.Object ‘C_LONG_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note CXX_BOOL: 1ba.Object ‘CXX_BOOL’ of type *note Datatype: d0. + + +*note CXX_FLOAT_COMPLEX: 1bb.Object ‘CXX_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +*note CXX_DOUBLE_COMPLEX: 1bc.Object ‘CXX_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note CXX_LONG_DOUBLE_COMPLEX: 1bd.Object ‘CXX_LONG_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note SHORT_INT: 1be.Object ‘SHORT_INT’ of type *note Datatype: d0. + + +*note INT_INT: 1bf.Object ‘INT_INT’ of type *note Datatype: d0. + + +*note TWOINT: 1c0.Object ‘TWOINT’ of type *note Datatype: d0. + + +*note LONG_INT: 1c1.Object ‘LONG_INT’ of type *note Datatype: d0. + + +*note FLOAT_INT: 1c2.Object ‘FLOAT_INT’ of type *note Datatype: d0. + + +*note DOUBLE_INT: 1c3.Object ‘DOUBLE_INT’ of type *note Datatype: d0. + + +*note LONG_DOUBLE_INT: 1c4.Object ‘LONG_DOUBLE_INT’ of type *note Datatype: d0. + + +*note CHARACTER: 1c5.Object ‘CHARACTER’ of type *note Datatype: d0. + + +*note LOGICAL: 1c6.Object ‘LOGICAL’ of type *note Datatype: d0. + + +*note INTEGER: 1c7.Object ‘INTEGER’ of type *note Datatype: d0. + + +*note REAL: 1c8.Object ‘REAL’ of type *note Datatype: d0. + + +*note DOUBLE_PRECISION: 1c9.Object ‘DOUBLE_PRECISION’ of type *note Datatype: d0. + + +*note COMPLEX: 1ca.Object ‘COMPLEX’ of type *note Datatype: d0. + + +*note DOUBLE_COMPLEX: 1cb.Object ‘DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note LOGICAL1: 1cc.Object ‘LOGICAL1’ of type *note Datatype: d0. + + +*note LOGICAL2: 1cd.Object ‘LOGICAL2’ of type *note Datatype: d0. + + +*note LOGICAL4: 1ce.Object ‘LOGICAL4’ of type *note Datatype: d0. + + +*note LOGICAL8: 1cf.Object ‘LOGICAL8’ of type *note Datatype: d0. + + +*note INTEGER1: 1d0.Object ‘INTEGER1’ of type *note Datatype: d0. + + +*note INTEGER2: 1d1.Object ‘INTEGER2’ of type *note Datatype: d0. + + +*note INTEGER4: 1d2.Object ‘INTEGER4’ of type *note Datatype: d0. + + +*note INTEGER8: 1d3.Object ‘INTEGER8’ of type *note Datatype: d0. + + +*note INTEGER16: 1d4.Object ‘INTEGER16’ of type *note Datatype: d0. + + +*note REAL2: 1d5.Object ‘REAL2’ of type *note Datatype: d0. + + +*note REAL4: 1d6.Object ‘REAL4’ of type *note Datatype: d0. + + +*note REAL8: 1d7.Object ‘REAL8’ of type *note Datatype: d0. + + +*note REAL16: 1d8.Object ‘REAL16’ of type *note Datatype: d0. + + +*note COMPLEX4: 1d9.Object ‘COMPLEX4’ of type *note Datatype: d0. + + +*note COMPLEX8: 1da.Object ‘COMPLEX8’ of type *note Datatype: d0. + + +*note COMPLEX16: 1db.Object ‘COMPLEX16’ of type *note Datatype: d0. + + +*note COMPLEX32: 1dc.Object ‘COMPLEX32’ of type *note Datatype: d0. + + +*note UNSIGNED_INT: 1dd.Object ‘UNSIGNED_INT’ of type *note Datatype: d0. + + +*note SIGNED_SHORT: 1de.Object ‘SIGNED_SHORT’ of type *note Datatype: d0. + + +*note SIGNED_INT: 1df.Object ‘SIGNED_INT’ of type *note Datatype: d0. + + +*note SIGNED_LONG: 1e0.Object ‘SIGNED_LONG’ of type *note Datatype: d0. + + +*note SIGNED_LONG_LONG: 1e1.Object ‘SIGNED_LONG_LONG’ of type *note Datatype: d0. + + +*note BOOL: 1e2.Object ‘BOOL’ of type *note Datatype: d0. + + +*note SINT8_T: 1e3.Object ‘SINT8_T’ of type *note Datatype: d0. + + +*note SINT16_T: 1e4.Object ‘SINT16_T’ of type *note Datatype: d0. + + +*note SINT32_T: 1e5.Object ‘SINT32_T’ of type *note Datatype: d0. + + +*note SINT64_T: 1e6.Object ‘SINT64_T’ of type *note Datatype: d0. + + +*note F_BOOL: 1e7.Object ‘F_BOOL’ of type *note Datatype: d0. + + +*note F_INT: 1e8.Object ‘F_INT’ of type *note Datatype: d0. + + +*note F_FLOAT: 1e9.Object ‘F_FLOAT’ of type *note Datatype: d0. + + +*note F_DOUBLE: 1ea.Object ‘F_DOUBLE’ of type *note Datatype: d0. + + +*note F_COMPLEX: 1eb.Object ‘F_COMPLEX’ of type *note Datatype: d0. + + +*note F_FLOAT_COMPLEX: 1ec.Object ‘F_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +*note F_DOUBLE_COMPLEX: 1ed.Object ‘F_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +*note REQUEST_NULL: 1ee.Object ‘REQUEST_NULL’ of type *note Request: 43. + + +*note MESSAGE_NULL: 1ef.Object ‘MESSAGE_NULL’ of type *note Message: d7. + + +*note MESSAGE_NO_PROC: 1f0.Object ‘MESSAGE_NO_PROC’ of type *note Message: d7. + + +*note OP_NULL: 1f1.Object ‘OP_NULL’ of type *note Op: d3. + + +*note MAX: 67. Object ‘MAX’ of type *note Op: d3. + + +*note MIN: 1f2.Object ‘MIN’ of type *note Op: d3. + + +*note SUM: 65. Object ‘SUM’ of type *note Op: d3. + + +*note PROD: 66.Object ‘PROD’ of type *note Op: d3. + + +*note LAND: 1f3.Object ‘LAND’ of type *note Op: d3. + + +*note BAND: 1f4.Object ‘BAND’ of type *note Op: d3. + + +*note LOR: 1f5.Object ‘LOR’ of type *note Op: d3. + + +*note BOR: 1f6.Object ‘BOR’ of type *note Op: d3. + + +*note LXOR: 1f7.Object ‘LXOR’ of type *note Op: d3. + + +*note BXOR: 1f8.Object ‘BXOR’ of type *note Op: d3. + + +*note MAXLOC: 1f9.Object ‘MAXLOC’ of type *note Op: d3. + + +*note MINLOC: 1fa.Object ‘MINLOC’ of type *note Op: d3. + + +*note REPLACE: 1fb.Object ‘REPLACE’ of type *note Op: d3. + + +*note NO_OP: 1fc.Object ‘NO_OP’ of type *note Op: d3. + + +*note GROUP_NULL: 1fd.Object ‘GROUP_NULL’ of type *note Group: 28. + + +*note GROUP_EMPTY: 1fe.Object ‘GROUP_EMPTY’ of type *note Group: 28. + + +*note INFO_NULL: 1ff.Object ‘INFO_NULL’ of type *note Info: d4. + + +*note INFO_ENV: 200.Object ‘INFO_ENV’ of type *note Info: d4. + + +*note ERRHANDLER_NULL: 201.Object ‘ERRHANDLER_NULL’ of type *note Errhandler: d8. + + +*note ERRORS_RETURN: 99.Object ‘ERRORS_RETURN’ of type *note Errhandler: d8. + + +*note ERRORS_ABORT: 566.Object ‘ERRORS_ABORT’ of type *note Errhandler: d8. + + +*note ERRORS_ARE_FATAL: 9a.Object ‘ERRORS_ARE_FATAL’ of type *note Errhandler: d8. + + +*note SESSION_NULL: 567.Object ‘SESSION_NULL’ of type *note Session: d5. + + +*note COMM_NULL: 202.Object ‘COMM_NULL’ of type *note Comm: 1e. + + +*note COMM_SELF: 23.Object ‘COMM_SELF’ of type *note Intracomm: 1f. + + +*note COMM_WORLD: 24.Object ‘COMM_WORLD’ of type *note Intracomm: 1f. + + +*note WIN_NULL: 203.Object ‘WIN_NULL’ of type *note Win: 76. + + +*note FILE_NULL: 204.Object ‘FILE_NULL’ of type *note File: 84. + + +*note pickle: a8.Object ‘pickle’ of type *note Pickle: d9. + + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/stdtypes.html#tuple + + (2) https://docs.python.org/3/library/stdtypes.html#str + + (3) https://docs.python.org/3/library/stdtypes.html#tuple + + (4) https://docs.python.org/3/library/functions.html#int + + (5) https://docs.python.org/3/library/functions.html#int + + (6) https://docs.python.org/3/library/functions.html#int + + (7) https://docs.python.org/3/library/functions.html#int + + (8) https://docs.python.org/3/library/functions.html#int + + (9) https://docs.python.org/3/library/functions.html#int + + (10) https://docs.python.org/3/library/functions.html#int + + (11) https://docs.python.org/3/library/functions.html#int + + (12) https://docs.python.org/3/library/functions.html#int + + (13) https://docs.python.org/3/library/functions.html#int + + (14) https://docs.python.org/3/library/functions.html#int + + (15) https://docs.python.org/3/library/functions.html#int + + (16) https://docs.python.org/3/library/functions.html#int + + (17) https://docs.python.org/3/library/functions.html#int + + (18) https://docs.python.org/3/library/functions.html#int + + (19) https://docs.python.org/3/library/functions.html#int + + (20) https://docs.python.org/3/library/functions.html#int + + (21) https://docs.python.org/3/library/functions.html#int + + (22) https://docs.python.org/3/library/functions.html#int + + (23) https://docs.python.org/3/library/functions.html#int + + (24) https://docs.python.org/3/library/functions.html#int + + (25) https://docs.python.org/3/library/functions.html#int + + (26) https://docs.python.org/3/library/functions.html#int + + (27) https://docs.python.org/3/library/functions.html#int + + (28) https://docs.python.org/3/library/functions.html#int + + (29) https://docs.python.org/3/library/functions.html#int + + (30) https://docs.python.org/3/library/functions.html#int + + (31) https://docs.python.org/3/library/functions.html#int + + (32) https://docs.python.org/3/library/functions.html#int + + (33) https://docs.python.org/3/library/functions.html#int + + (34) https://docs.python.org/3/library/functions.html#int + + (35) https://docs.python.org/3/library/functions.html#int + + (36) https://docs.python.org/3/library/functions.html#int + + (37) https://docs.python.org/3/library/functions.html#int + + (38) https://docs.python.org/3/library/functions.html#int + + (39) https://docs.python.org/3/library/functions.html#int + + (40) https://docs.python.org/3/library/functions.html#int + + (41) https://docs.python.org/3/library/functions.html#int + + (42) https://docs.python.org/3/library/functions.html#int + + (43) https://docs.python.org/3/library/functions.html#int + + (44) https://docs.python.org/3/library/functions.html#int + + (45) https://docs.python.org/3/library/functions.html#int + + (46) https://docs.python.org/3/library/functions.html#int + + (47) https://docs.python.org/3/library/functions.html#int + + (48) https://docs.python.org/3/library/functions.html#int + + (49) https://docs.python.org/3/library/functions.html#int + + (50) https://docs.python.org/3/library/functions.html#int + + (51) https://docs.python.org/3/library/functions.html#int + + (52) https://docs.python.org/3/library/functions.html#int + + (53) https://docs.python.org/3/library/functions.html#int + + (54) https://docs.python.org/3/library/functions.html#int + + (55) https://docs.python.org/3/library/functions.html#int + + (56) https://docs.python.org/3/library/functions.html#int + + (57) https://docs.python.org/3/library/functions.html#int + + (58) https://docs.python.org/3/library/functions.html#int + + (59) https://docs.python.org/3/library/functions.html#int + + (60) https://docs.python.org/3/library/functions.html#int + + (61) https://docs.python.org/3/library/functions.html#int + + (62) https://docs.python.org/3/library/functions.html#int + + (63) https://docs.python.org/3/library/functions.html#int + + (64) https://docs.python.org/3/library/functions.html#int + + (65) https://docs.python.org/3/library/functions.html#int + + (66) https://docs.python.org/3/library/functions.html#int + + (67) https://docs.python.org/3/library/functions.html#int + + (68) https://docs.python.org/3/library/functions.html#int + + (69) https://docs.python.org/3/library/functions.html#int + + (70) https://docs.python.org/3/library/functions.html#int + + (71) https://docs.python.org/3/library/functions.html#int + + (72) https://docs.python.org/3/library/functions.html#int + + (73) https://docs.python.org/3/library/functions.html#int + + (74) https://docs.python.org/3/library/functions.html#int + + (75) https://docs.python.org/3/library/functions.html#int + + (76) https://docs.python.org/3/library/functions.html#int + + (77) https://docs.python.org/3/library/functions.html#int + + (78) https://docs.python.org/3/library/functions.html#int + + (79) https://docs.python.org/3/library/functions.html#int + + (80) https://docs.python.org/3/library/functions.html#int + + (81) https://docs.python.org/3/library/functions.html#int + + (82) https://docs.python.org/3/library/functions.html#int + + (83) https://docs.python.org/3/library/functions.html#int + + (84) https://docs.python.org/3/library/functions.html#int + + (85) https://docs.python.org/3/library/functions.html#int + + (86) https://docs.python.org/3/library/functions.html#int + + (87) https://docs.python.org/3/library/functions.html#int + + (88) https://docs.python.org/3/library/functions.html#int + + (89) https://docs.python.org/3/library/functions.html#int + + (90) https://docs.python.org/3/library/functions.html#int + + (91) https://docs.python.org/3/library/functions.html#int + + (92) https://docs.python.org/3/library/functions.html#int + + (93) https://docs.python.org/3/library/functions.html#int + + (94) https://docs.python.org/3/library/functions.html#int + + (95) https://docs.python.org/3/library/functions.html#int + + (96) https://docs.python.org/3/library/functions.html#int + + (97) https://docs.python.org/3/library/functions.html#int + + (98) https://docs.python.org/3/library/functions.html#int + + (99) https://docs.python.org/3/library/functions.html#int + + (100) https://docs.python.org/3/library/functions.html#int + + (101) https://docs.python.org/3/library/functions.html#int + + (102) https://docs.python.org/3/library/functions.html#int + + (103) https://docs.python.org/3/library/functions.html#int + + (104) https://docs.python.org/3/library/functions.html#int + + (105) https://docs.python.org/3/library/functions.html#int + + (106) https://docs.python.org/3/library/functions.html#int + + (107) https://docs.python.org/3/library/functions.html#int + + (108) https://docs.python.org/3/library/functions.html#int + + (109) https://docs.python.org/3/library/functions.html#int + + (110) https://docs.python.org/3/library/functions.html#int + + (111) https://docs.python.org/3/library/functions.html#int + + (112) https://docs.python.org/3/library/functions.html#int + + (113) https://docs.python.org/3/library/functions.html#int + + (114) https://docs.python.org/3/library/functions.html#int + + (115) https://docs.python.org/3/library/functions.html#int + + (116) https://docs.python.org/3/library/functions.html#int + + (117) https://docs.python.org/3/library/functions.html#int + + (118) https://docs.python.org/3/library/functions.html#int + + (119) https://docs.python.org/3/library/functions.html#int + + (120) https://docs.python.org/3/library/functions.html#int + + (121) https://docs.python.org/3/library/functions.html#int + + (122) https://docs.python.org/3/library/functions.html#int + + (123) https://docs.python.org/3/library/functions.html#int + + (124) https://docs.python.org/3/library/functions.html#int + + (125) https://docs.python.org/3/library/functions.html#int + + (126) https://docs.python.org/3/library/functions.html#int + + (127) https://docs.python.org/3/library/functions.html#int + + (128) https://docs.python.org/3/library/functions.html#int + + (129) https://docs.python.org/3/library/functions.html#int + + (130) https://docs.python.org/3/library/functions.html#int + + (131) https://docs.python.org/3/library/functions.html#int + + (132) https://docs.python.org/3/library/functions.html#int + + (133) https://docs.python.org/3/library/functions.html#int + + (134) https://docs.python.org/3/library/functions.html#int + + (135) https://docs.python.org/3/library/functions.html#int + + (136) https://docs.python.org/3/library/functions.html#int + + (137) https://docs.python.org/3/library/functions.html#int + + (138) https://docs.python.org/3/library/functions.html#int + + (139) https://docs.python.org/3/library/functions.html#int + + (140) https://docs.python.org/3/library/functions.html#int + + (141) https://docs.python.org/3/library/functions.html#int + + (142) https://docs.python.org/3/library/functions.html#int + + (143) https://docs.python.org/3/library/functions.html#int + + (144) https://docs.python.org/3/library/functions.html#int + + (145) https://docs.python.org/3/library/functions.html#int + + (146) https://docs.python.org/3/library/functions.html#int + + (147) https://docs.python.org/3/library/functions.html#int + + (148) https://docs.python.org/3/library/functions.html#int + + (149) https://docs.python.org/3/library/functions.html#int + + (150) https://docs.python.org/3/library/functions.html#int + + (151) https://docs.python.org/3/library/functions.html#int + + (152) https://docs.python.org/3/library/functions.html#int + + (153) https://docs.python.org/3/library/functions.html#int + + (154) https://docs.python.org/3/library/functions.html#int + + (155) https://docs.python.org/3/library/functions.html#int + + (156) https://docs.python.org/3/library/functions.html#int + + (157) https://docs.python.org/3/library/functions.html#int + + (158) https://docs.python.org/3/library/functions.html#int + + (159) https://docs.python.org/3/library/functions.html#int + + (160) https://docs.python.org/3/library/functions.html#int + + (161) https://docs.python.org/3/library/functions.html#int + + (162) https://docs.python.org/3/library/functions.html#int + + (163) https://docs.python.org/3/library/functions.html#int + + (164) https://docs.python.org/3/library/functions.html#int + + (165) https://docs.python.org/3/library/functions.html#int + + (166) https://docs.python.org/3/library/functions.html#int + + (167) https://docs.python.org/3/library/functions.html#int + + (168) https://docs.python.org/3/library/functions.html#int + + (169) https://docs.python.org/3/library/functions.html#int + + (170) https://docs.python.org/3/library/functions.html#int + + (171) https://docs.python.org/3/library/functions.html#int + + (172) https://docs.python.org/3/library/functions.html#int + + (173) https://docs.python.org/3/library/functions.html#int + + (174) https://docs.python.org/3/library/functions.html#int + + (175) https://docs.python.org/3/library/functions.html#int + + (176) https://docs.python.org/3/library/functions.html#int + + (177) https://docs.python.org/3/library/functions.html#int + + (178) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI UNDEFINED, Next: mpi4py MPI ANY_SOURCE, Prev: mpi4py MPI get_vendor, Up: mpi4py MPI<2> + +11.1.67 mpi4py.MPI.UNDEFINED +---------------------------- + + -- Data: mpi4py.MPI.UNDEFINED: int(1) = UNDEFINED + + Constant ‘UNDEFINED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ANY_SOURCE, Next: mpi4py MPI ANY_TAG, Prev: mpi4py MPI UNDEFINED, Up: mpi4py MPI<2> + +11.1.68 mpi4py.MPI.ANY_SOURCE +----------------------------- + + -- Data: mpi4py.MPI.ANY_SOURCE: int(1) = ANY_SOURCE + + Constant ‘ANY_SOURCE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ANY_TAG, Next: mpi4py MPI PROC_NULL, Prev: mpi4py MPI ANY_SOURCE, Up: mpi4py MPI<2> + +11.1.69 mpi4py.MPI.ANY_TAG +-------------------------- + + -- Data: mpi4py.MPI.ANY_TAG: int(1) = ANY_TAG + + Constant ‘ANY_TAG’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI PROC_NULL, Next: mpi4py MPI ROOT, Prev: mpi4py MPI ANY_TAG, Up: mpi4py MPI<2> + +11.1.70 mpi4py.MPI.PROC_NULL +---------------------------- + + -- Data: mpi4py.MPI.PROC_NULL: int(1) = PROC_NULL + + Constant ‘PROC_NULL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ROOT, Next: mpi4py MPI BOTTOM, Prev: mpi4py MPI PROC_NULL, Up: mpi4py MPI<2> + +11.1.71 mpi4py.MPI.ROOT +----------------------- + + -- Data: mpi4py.MPI.ROOT: int(1) = ROOT + + Constant ‘ROOT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI BOTTOM, Next: mpi4py MPI IN_PLACE, Prev: mpi4py MPI ROOT, Up: mpi4py MPI<2> + +11.1.72 mpi4py.MPI.BOTTOM +------------------------- + + -- Data: mpi4py.MPI.BOTTOM: *note BottomType: fb. = BOTTOM + + Constant ‘BOTTOM’ of type *note BottomType: fb. + + +File: mpi4py.info, Node: mpi4py MPI IN_PLACE, Next: mpi4py MPI KEYVAL_INVALID, Prev: mpi4py MPI BOTTOM, Up: mpi4py MPI<2> + +11.1.73 mpi4py.MPI.IN_PLACE +--------------------------- + + -- Data: mpi4py.MPI.IN_PLACE: *note InPlaceType: fd. = IN_PLACE + + Constant ‘IN_PLACE’ of type *note InPlaceType: fd. + + +File: mpi4py.info, Node: mpi4py MPI KEYVAL_INVALID, Next: mpi4py MPI TAG_UB, Prev: mpi4py MPI IN_PLACE, Up: mpi4py MPI<2> + +11.1.74 mpi4py.MPI.KEYVAL_INVALID +--------------------------------- + + -- Data: mpi4py.MPI.KEYVAL_INVALID: int(1) = KEYVAL_INVALID + + Constant ‘KEYVAL_INVALID’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI TAG_UB, Next: mpi4py MPI IO, Prev: mpi4py MPI KEYVAL_INVALID, Up: mpi4py MPI<2> + +11.1.75 mpi4py.MPI.TAG_UB +------------------------- + + -- Data: mpi4py.MPI.TAG_UB: int(1) = TAG_UB + + Constant ‘TAG_UB’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI IO, Next: mpi4py MPI WTIME_IS_GLOBAL, Prev: mpi4py MPI TAG_UB, Up: mpi4py MPI<2> + +11.1.76 mpi4py.MPI.IO +--------------------- + + -- Data: mpi4py.MPI.IO: int(1) = IO + + Constant ‘IO’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WTIME_IS_GLOBAL, Next: mpi4py MPI UNIVERSE_SIZE, Prev: mpi4py MPI IO, Up: mpi4py MPI<2> + +11.1.77 mpi4py.MPI.WTIME_IS_GLOBAL +---------------------------------- + + -- Data: mpi4py.MPI.WTIME_IS_GLOBAL: int(1) = WTIME_IS_GLOBAL + + Constant ‘WTIME_IS_GLOBAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI UNIVERSE_SIZE, Next: mpi4py MPI APPNUM, Prev: mpi4py MPI WTIME_IS_GLOBAL, Up: mpi4py MPI<2> + +11.1.78 mpi4py.MPI.UNIVERSE_SIZE +-------------------------------- + + -- Data: mpi4py.MPI.UNIVERSE_SIZE: int(1) = UNIVERSE_SIZE + + Constant ‘UNIVERSE_SIZE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI APPNUM, Next: mpi4py MPI LASTUSEDCODE, Prev: mpi4py MPI UNIVERSE_SIZE, Up: mpi4py MPI<2> + +11.1.79 mpi4py.MPI.APPNUM +------------------------- + + -- Data: mpi4py.MPI.APPNUM: int(1) = APPNUM + + Constant ‘APPNUM’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI LASTUSEDCODE, Next: mpi4py MPI WIN_BASE, Prev: mpi4py MPI APPNUM, Up: mpi4py MPI<2> + +11.1.80 mpi4py.MPI.LASTUSEDCODE +------------------------------- + + -- Data: mpi4py.MPI.LASTUSEDCODE: int(1) = LASTUSEDCODE + + Constant ‘LASTUSEDCODE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_BASE, Next: mpi4py MPI WIN_SIZE, Prev: mpi4py MPI LASTUSEDCODE, Up: mpi4py MPI<2> + +11.1.81 mpi4py.MPI.WIN_BASE +--------------------------- + + -- Data: mpi4py.MPI.WIN_BASE: int(1) = WIN_BASE + + Constant ‘WIN_BASE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_SIZE, Next: mpi4py MPI WIN_DISP_UNIT, Prev: mpi4py MPI WIN_BASE, Up: mpi4py MPI<2> + +11.1.82 mpi4py.MPI.WIN_SIZE +--------------------------- + + -- Data: mpi4py.MPI.WIN_SIZE: int(1) = WIN_SIZE + + Constant ‘WIN_SIZE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_DISP_UNIT, Next: mpi4py MPI WIN_CREATE_FLAVOR, Prev: mpi4py MPI WIN_SIZE, Up: mpi4py MPI<2> + +11.1.83 mpi4py.MPI.WIN_DISP_UNIT +-------------------------------- + + -- Data: mpi4py.MPI.WIN_DISP_UNIT: int(1) = WIN_DISP_UNIT + + Constant ‘WIN_DISP_UNIT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_CREATE_FLAVOR, Next: mpi4py MPI WIN_FLAVOR, Prev: mpi4py MPI WIN_DISP_UNIT, Up: mpi4py MPI<2> + +11.1.84 mpi4py.MPI.WIN_CREATE_FLAVOR +------------------------------------ + + -- Data: mpi4py.MPI.WIN_CREATE_FLAVOR: int(1) = WIN_CREATE_FLAVOR + + Constant ‘WIN_CREATE_FLAVOR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_FLAVOR, Next: mpi4py MPI WIN_MODEL, Prev: mpi4py MPI WIN_CREATE_FLAVOR, Up: mpi4py MPI<2> + +11.1.85 mpi4py.MPI.WIN_FLAVOR +----------------------------- + + -- Data: mpi4py.MPI.WIN_FLAVOR: int(1) = WIN_FLAVOR + + Constant ‘WIN_FLAVOR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_MODEL, Next: mpi4py MPI SUCCESS, Prev: mpi4py MPI WIN_FLAVOR, Up: mpi4py MPI<2> + +11.1.86 mpi4py.MPI.WIN_MODEL +---------------------------- + + -- Data: mpi4py.MPI.WIN_MODEL: int(1) = WIN_MODEL + + Constant ‘WIN_MODEL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI SUCCESS, Next: mpi4py MPI ERR_LASTCODE, Prev: mpi4py MPI WIN_MODEL, Up: mpi4py MPI<2> + +11.1.87 mpi4py.MPI.SUCCESS +-------------------------- + + -- Data: mpi4py.MPI.SUCCESS: int(1) = SUCCESS + + Constant ‘SUCCESS’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_LASTCODE, Next: mpi4py MPI ERR_TYPE, Prev: mpi4py MPI SUCCESS, Up: mpi4py MPI<2> + +11.1.88 mpi4py.MPI.ERR_LASTCODE +------------------------------- + + -- Data: mpi4py.MPI.ERR_LASTCODE: int(1) = ERR_LASTCODE + + Constant ‘ERR_LASTCODE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_TYPE, Next: mpi4py MPI ERR_REQUEST, Prev: mpi4py MPI ERR_LASTCODE, Up: mpi4py MPI<2> + +11.1.89 mpi4py.MPI.ERR_TYPE +--------------------------- + + -- Data: mpi4py.MPI.ERR_TYPE: int(1) = ERR_TYPE + + Constant ‘ERR_TYPE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_REQUEST, Next: mpi4py MPI ERR_OP, Prev: mpi4py MPI ERR_TYPE, Up: mpi4py MPI<2> + +11.1.90 mpi4py.MPI.ERR_REQUEST +------------------------------ + + -- Data: mpi4py.MPI.ERR_REQUEST: int(1) = ERR_REQUEST + + Constant ‘ERR_REQUEST’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_OP, Next: mpi4py MPI ERR_GROUP, Prev: mpi4py MPI ERR_REQUEST, Up: mpi4py MPI<2> + +11.1.91 mpi4py.MPI.ERR_OP +------------------------- + + -- Data: mpi4py.MPI.ERR_OP: int(1) = ERR_OP + + Constant ‘ERR_OP’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_GROUP, Next: mpi4py MPI ERR_INFO, Prev: mpi4py MPI ERR_OP, Up: mpi4py MPI<2> + +11.1.92 mpi4py.MPI.ERR_GROUP +---------------------------- + + -- Data: mpi4py.MPI.ERR_GROUP: int(1) = ERR_GROUP + + Constant ‘ERR_GROUP’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_INFO, Next: mpi4py MPI ERR_ERRHANDLER, Prev: mpi4py MPI ERR_GROUP, Up: mpi4py MPI<2> + +11.1.93 mpi4py.MPI.ERR_INFO +--------------------------- + + -- Data: mpi4py.MPI.ERR_INFO: int(1) = ERR_INFO + + Constant ‘ERR_INFO’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_ERRHANDLER, Next: mpi4py MPI ERR_SESSION, Prev: mpi4py MPI ERR_INFO, Up: mpi4py MPI<2> + +11.1.94 mpi4py.MPI.ERR_ERRHANDLER +--------------------------------- + + -- Data: mpi4py.MPI.ERR_ERRHANDLER: int(1) = ERR_ERRHANDLER + + Constant ‘ERR_ERRHANDLER’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_SESSION, Next: mpi4py MPI ERR_COMM, Prev: mpi4py MPI ERR_ERRHANDLER, Up: mpi4py MPI<2> + +11.1.95 mpi4py.MPI.ERR_SESSION +------------------------------ + + -- Data: mpi4py.MPI.ERR_SESSION: int(1) = ERR_SESSION + + Constant ‘ERR_SESSION’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_COMM, Next: mpi4py MPI ERR_WIN, Prev: mpi4py MPI ERR_SESSION, Up: mpi4py MPI<2> + +11.1.96 mpi4py.MPI.ERR_COMM +--------------------------- + + -- Data: mpi4py.MPI.ERR_COMM: int(1) = ERR_COMM + + Constant ‘ERR_COMM’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_WIN, Next: mpi4py MPI ERR_FILE, Prev: mpi4py MPI ERR_COMM, Up: mpi4py MPI<2> + +11.1.97 mpi4py.MPI.ERR_WIN +-------------------------- + + -- Data: mpi4py.MPI.ERR_WIN: int(1) = ERR_WIN + + Constant ‘ERR_WIN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_FILE, Next: mpi4py MPI ERR_BUFFER, Prev: mpi4py MPI ERR_WIN, Up: mpi4py MPI<2> + +11.1.98 mpi4py.MPI.ERR_FILE +--------------------------- + + -- Data: mpi4py.MPI.ERR_FILE: int(1) = ERR_FILE + + Constant ‘ERR_FILE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_BUFFER, Next: mpi4py MPI ERR_COUNT, Prev: mpi4py MPI ERR_FILE, Up: mpi4py MPI<2> + +11.1.99 mpi4py.MPI.ERR_BUFFER +----------------------------- + + -- Data: mpi4py.MPI.ERR_BUFFER: int(1) = ERR_BUFFER + + Constant ‘ERR_BUFFER’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_COUNT, Next: mpi4py MPI ERR_TAG, Prev: mpi4py MPI ERR_BUFFER, Up: mpi4py MPI<2> + +11.1.100 mpi4py.MPI.ERR_COUNT +----------------------------- + + -- Data: mpi4py.MPI.ERR_COUNT: int(1) = ERR_COUNT + + Constant ‘ERR_COUNT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_TAG, Next: mpi4py MPI ERR_RANK, Prev: mpi4py MPI ERR_COUNT, Up: mpi4py MPI<2> + +11.1.101 mpi4py.MPI.ERR_TAG +--------------------------- + + -- Data: mpi4py.MPI.ERR_TAG: int(1) = ERR_TAG + + Constant ‘ERR_TAG’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RANK, Next: mpi4py MPI ERR_ROOT, Prev: mpi4py MPI ERR_TAG, Up: mpi4py MPI<2> + +11.1.102 mpi4py.MPI.ERR_RANK +---------------------------- + + -- Data: mpi4py.MPI.ERR_RANK: int(1) = ERR_RANK + + Constant ‘ERR_RANK’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_ROOT, Next: mpi4py MPI ERR_TRUNCATE, Prev: mpi4py MPI ERR_RANK, Up: mpi4py MPI<2> + +11.1.103 mpi4py.MPI.ERR_ROOT +---------------------------- + + -- Data: mpi4py.MPI.ERR_ROOT: int(1) = ERR_ROOT + + Constant ‘ERR_ROOT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_TRUNCATE, Next: mpi4py MPI ERR_IN_STATUS, Prev: mpi4py MPI ERR_ROOT, Up: mpi4py MPI<2> + +11.1.104 mpi4py.MPI.ERR_TRUNCATE +-------------------------------- + + -- Data: mpi4py.MPI.ERR_TRUNCATE: int(1) = ERR_TRUNCATE + + Constant ‘ERR_TRUNCATE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_IN_STATUS, Next: mpi4py MPI ERR_PENDING, Prev: mpi4py MPI ERR_TRUNCATE, Up: mpi4py MPI<2> + +11.1.105 mpi4py.MPI.ERR_IN_STATUS +--------------------------------- + + -- Data: mpi4py.MPI.ERR_IN_STATUS: int(1) = ERR_IN_STATUS + + Constant ‘ERR_IN_STATUS’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_PENDING, Next: mpi4py MPI ERR_TOPOLOGY, Prev: mpi4py MPI ERR_IN_STATUS, Up: mpi4py MPI<2> + +11.1.106 mpi4py.MPI.ERR_PENDING +------------------------------- + + -- Data: mpi4py.MPI.ERR_PENDING: int(1) = ERR_PENDING + + Constant ‘ERR_PENDING’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_TOPOLOGY, Next: mpi4py MPI ERR_DIMS, Prev: mpi4py MPI ERR_PENDING, Up: mpi4py MPI<2> + +11.1.107 mpi4py.MPI.ERR_TOPOLOGY +-------------------------------- + + -- Data: mpi4py.MPI.ERR_TOPOLOGY: int(1) = ERR_TOPOLOGY + + Constant ‘ERR_TOPOLOGY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_DIMS, Next: mpi4py MPI ERR_ARG, Prev: mpi4py MPI ERR_TOPOLOGY, Up: mpi4py MPI<2> + +11.1.108 mpi4py.MPI.ERR_DIMS +---------------------------- + + -- Data: mpi4py.MPI.ERR_DIMS: int(1) = ERR_DIMS + + Constant ‘ERR_DIMS’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_ARG, Next: mpi4py MPI ERR_OTHER, Prev: mpi4py MPI ERR_DIMS, Up: mpi4py MPI<2> + +11.1.109 mpi4py.MPI.ERR_ARG +--------------------------- + + -- Data: mpi4py.MPI.ERR_ARG: int(1) = ERR_ARG + + Constant ‘ERR_ARG’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_OTHER, Next: mpi4py MPI ERR_UNKNOWN, Prev: mpi4py MPI ERR_ARG, Up: mpi4py MPI<2> + +11.1.110 mpi4py.MPI.ERR_OTHER +----------------------------- + + -- Data: mpi4py.MPI.ERR_OTHER: int(1) = ERR_OTHER + + Constant ‘ERR_OTHER’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_UNKNOWN, Next: mpi4py MPI ERR_INTERN, Prev: mpi4py MPI ERR_OTHER, Up: mpi4py MPI<2> + +11.1.111 mpi4py.MPI.ERR_UNKNOWN +------------------------------- + + -- Data: mpi4py.MPI.ERR_UNKNOWN: int(1) = ERR_UNKNOWN + + Constant ‘ERR_UNKNOWN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_INTERN, Next: mpi4py MPI ERR_KEYVAL, Prev: mpi4py MPI ERR_UNKNOWN, Up: mpi4py MPI<2> + +11.1.112 mpi4py.MPI.ERR_INTERN +------------------------------ + + -- Data: mpi4py.MPI.ERR_INTERN: int(1) = ERR_INTERN + + Constant ‘ERR_INTERN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_KEYVAL, Next: mpi4py MPI ERR_NO_MEM, Prev: mpi4py MPI ERR_INTERN, Up: mpi4py MPI<2> + +11.1.113 mpi4py.MPI.ERR_KEYVAL +------------------------------ + + -- Data: mpi4py.MPI.ERR_KEYVAL: int(1) = ERR_KEYVAL + + Constant ‘ERR_KEYVAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_NO_MEM, Next: mpi4py MPI ERR_INFO_KEY, Prev: mpi4py MPI ERR_KEYVAL, Up: mpi4py MPI<2> + +11.1.114 mpi4py.MPI.ERR_NO_MEM +------------------------------ + + -- Data: mpi4py.MPI.ERR_NO_MEM: int(1) = ERR_NO_MEM + + Constant ‘ERR_NO_MEM’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_INFO_KEY, Next: mpi4py MPI ERR_INFO_VALUE, Prev: mpi4py MPI ERR_NO_MEM, Up: mpi4py MPI<2> + +11.1.115 mpi4py.MPI.ERR_INFO_KEY +-------------------------------- + + -- Data: mpi4py.MPI.ERR_INFO_KEY: int(1) = ERR_INFO_KEY + + Constant ‘ERR_INFO_KEY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_INFO_VALUE, Next: mpi4py MPI ERR_INFO_NOKEY, Prev: mpi4py MPI ERR_INFO_KEY, Up: mpi4py MPI<2> + +11.1.116 mpi4py.MPI.ERR_INFO_VALUE +---------------------------------- + + -- Data: mpi4py.MPI.ERR_INFO_VALUE: int(1) = ERR_INFO_VALUE + + Constant ‘ERR_INFO_VALUE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_INFO_NOKEY, Next: mpi4py MPI ERR_SPAWN, Prev: mpi4py MPI ERR_INFO_VALUE, Up: mpi4py MPI<2> + +11.1.117 mpi4py.MPI.ERR_INFO_NOKEY +---------------------------------- + + -- Data: mpi4py.MPI.ERR_INFO_NOKEY: int(1) = ERR_INFO_NOKEY + + Constant ‘ERR_INFO_NOKEY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_SPAWN, Next: mpi4py MPI ERR_PORT, Prev: mpi4py MPI ERR_INFO_NOKEY, Up: mpi4py MPI<2> + +11.1.118 mpi4py.MPI.ERR_SPAWN +----------------------------- + + -- Data: mpi4py.MPI.ERR_SPAWN: int(1) = ERR_SPAWN + + Constant ‘ERR_SPAWN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_PORT, Next: mpi4py MPI ERR_SERVICE, Prev: mpi4py MPI ERR_SPAWN, Up: mpi4py MPI<2> + +11.1.119 mpi4py.MPI.ERR_PORT +---------------------------- + + -- Data: mpi4py.MPI.ERR_PORT: int(1) = ERR_PORT + + Constant ‘ERR_PORT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_SERVICE, Next: mpi4py MPI ERR_NAME, Prev: mpi4py MPI ERR_PORT, Up: mpi4py MPI<2> + +11.1.120 mpi4py.MPI.ERR_SERVICE +------------------------------- + + -- Data: mpi4py.MPI.ERR_SERVICE: int(1) = ERR_SERVICE + + Constant ‘ERR_SERVICE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_NAME, Next: mpi4py MPI ERR_PROC_ABORTED, Prev: mpi4py MPI ERR_SERVICE, Up: mpi4py MPI<2> + +11.1.121 mpi4py.MPI.ERR_NAME +---------------------------- + + -- Data: mpi4py.MPI.ERR_NAME: int(1) = ERR_NAME + + Constant ‘ERR_NAME’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_PROC_ABORTED, Next: mpi4py MPI ERR_BASE, Prev: mpi4py MPI ERR_NAME, Up: mpi4py MPI<2> + +11.1.122 mpi4py.MPI.ERR_PROC_ABORTED +------------------------------------ + + -- Data: mpi4py.MPI.ERR_PROC_ABORTED: int(1) = ERR_PROC_ABORTED + + Constant ‘ERR_PROC_ABORTED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_BASE, Next: mpi4py MPI ERR_SIZE, Prev: mpi4py MPI ERR_PROC_ABORTED, Up: mpi4py MPI<2> + +11.1.123 mpi4py.MPI.ERR_BASE +---------------------------- + + -- Data: mpi4py.MPI.ERR_BASE: int(1) = ERR_BASE + + Constant ‘ERR_BASE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_SIZE, Next: mpi4py MPI ERR_DISP, Prev: mpi4py MPI ERR_BASE, Up: mpi4py MPI<2> + +11.1.124 mpi4py.MPI.ERR_SIZE +---------------------------- + + -- Data: mpi4py.MPI.ERR_SIZE: int(1) = ERR_SIZE + + Constant ‘ERR_SIZE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_DISP, Next: mpi4py MPI ERR_ASSERT, Prev: mpi4py MPI ERR_SIZE, Up: mpi4py MPI<2> + +11.1.125 mpi4py.MPI.ERR_DISP +---------------------------- + + -- Data: mpi4py.MPI.ERR_DISP: int(1) = ERR_DISP + + Constant ‘ERR_DISP’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_ASSERT, Next: mpi4py MPI ERR_LOCKTYPE, Prev: mpi4py MPI ERR_DISP, Up: mpi4py MPI<2> + +11.1.126 mpi4py.MPI.ERR_ASSERT +------------------------------ + + -- Data: mpi4py.MPI.ERR_ASSERT: int(1) = ERR_ASSERT + + Constant ‘ERR_ASSERT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_LOCKTYPE, Next: mpi4py MPI ERR_RMA_CONFLICT, Prev: mpi4py MPI ERR_ASSERT, Up: mpi4py MPI<2> + +11.1.127 mpi4py.MPI.ERR_LOCKTYPE +-------------------------------- + + -- Data: mpi4py.MPI.ERR_LOCKTYPE: int(1) = ERR_LOCKTYPE + + Constant ‘ERR_LOCKTYPE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RMA_CONFLICT, Next: mpi4py MPI ERR_RMA_SYNC, Prev: mpi4py MPI ERR_LOCKTYPE, Up: mpi4py MPI<2> + +11.1.128 mpi4py.MPI.ERR_RMA_CONFLICT +------------------------------------ + + -- Data: mpi4py.MPI.ERR_RMA_CONFLICT: int(1) = ERR_RMA_CONFLICT + + Constant ‘ERR_RMA_CONFLICT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RMA_SYNC, Next: mpi4py MPI ERR_RMA_RANGE, Prev: mpi4py MPI ERR_RMA_CONFLICT, Up: mpi4py MPI<2> + +11.1.129 mpi4py.MPI.ERR_RMA_SYNC +-------------------------------- + + -- Data: mpi4py.MPI.ERR_RMA_SYNC: int(1) = ERR_RMA_SYNC + + Constant ‘ERR_RMA_SYNC’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RMA_RANGE, Next: mpi4py MPI ERR_RMA_ATTACH, Prev: mpi4py MPI ERR_RMA_SYNC, Up: mpi4py MPI<2> + +11.1.130 mpi4py.MPI.ERR_RMA_RANGE +--------------------------------- + + -- Data: mpi4py.MPI.ERR_RMA_RANGE: int(1) = ERR_RMA_RANGE + + Constant ‘ERR_RMA_RANGE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RMA_ATTACH, Next: mpi4py MPI ERR_RMA_SHARED, Prev: mpi4py MPI ERR_RMA_RANGE, Up: mpi4py MPI<2> + +11.1.131 mpi4py.MPI.ERR_RMA_ATTACH +---------------------------------- + + -- Data: mpi4py.MPI.ERR_RMA_ATTACH: int(1) = ERR_RMA_ATTACH + + Constant ‘ERR_RMA_ATTACH’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RMA_SHARED, Next: mpi4py MPI ERR_RMA_FLAVOR, Prev: mpi4py MPI ERR_RMA_ATTACH, Up: mpi4py MPI<2> + +11.1.132 mpi4py.MPI.ERR_RMA_SHARED +---------------------------------- + + -- Data: mpi4py.MPI.ERR_RMA_SHARED: int(1) = ERR_RMA_SHARED + + Constant ‘ERR_RMA_SHARED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_RMA_FLAVOR, Next: mpi4py MPI ERR_BAD_FILE, Prev: mpi4py MPI ERR_RMA_SHARED, Up: mpi4py MPI<2> + +11.1.133 mpi4py.MPI.ERR_RMA_FLAVOR +---------------------------------- + + -- Data: mpi4py.MPI.ERR_RMA_FLAVOR: int(1) = ERR_RMA_FLAVOR + + Constant ‘ERR_RMA_FLAVOR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_BAD_FILE, Next: mpi4py MPI ERR_NO_SUCH_FILE, Prev: mpi4py MPI ERR_RMA_FLAVOR, Up: mpi4py MPI<2> + +11.1.134 mpi4py.MPI.ERR_BAD_FILE +-------------------------------- + + -- Data: mpi4py.MPI.ERR_BAD_FILE: int(1) = ERR_BAD_FILE + + Constant ‘ERR_BAD_FILE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_NO_SUCH_FILE, Next: mpi4py MPI ERR_FILE_EXISTS, Prev: mpi4py MPI ERR_BAD_FILE, Up: mpi4py MPI<2> + +11.1.135 mpi4py.MPI.ERR_NO_SUCH_FILE +------------------------------------ + + -- Data: mpi4py.MPI.ERR_NO_SUCH_FILE: int(1) = ERR_NO_SUCH_FILE + + Constant ‘ERR_NO_SUCH_FILE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_FILE_EXISTS, Next: mpi4py MPI ERR_FILE_IN_USE, Prev: mpi4py MPI ERR_NO_SUCH_FILE, Up: mpi4py MPI<2> + +11.1.136 mpi4py.MPI.ERR_FILE_EXISTS +----------------------------------- + + -- Data: mpi4py.MPI.ERR_FILE_EXISTS: int(1) = ERR_FILE_EXISTS + + Constant ‘ERR_FILE_EXISTS’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_FILE_IN_USE, Next: mpi4py MPI ERR_AMODE, Prev: mpi4py MPI ERR_FILE_EXISTS, Up: mpi4py MPI<2> + +11.1.137 mpi4py.MPI.ERR_FILE_IN_USE +----------------------------------- + + -- Data: mpi4py.MPI.ERR_FILE_IN_USE: int(1) = ERR_FILE_IN_USE + + Constant ‘ERR_FILE_IN_USE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_AMODE, Next: mpi4py MPI ERR_ACCESS, Prev: mpi4py MPI ERR_FILE_IN_USE, Up: mpi4py MPI<2> + +11.1.138 mpi4py.MPI.ERR_AMODE +----------------------------- + + -- Data: mpi4py.MPI.ERR_AMODE: int(1) = ERR_AMODE + + Constant ‘ERR_AMODE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_ACCESS, Next: mpi4py MPI ERR_READ_ONLY, Prev: mpi4py MPI ERR_AMODE, Up: mpi4py MPI<2> + +11.1.139 mpi4py.MPI.ERR_ACCESS +------------------------------ + + -- Data: mpi4py.MPI.ERR_ACCESS: int(1) = ERR_ACCESS + + Constant ‘ERR_ACCESS’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_READ_ONLY, Next: mpi4py MPI ERR_NO_SPACE, Prev: mpi4py MPI ERR_ACCESS, Up: mpi4py MPI<2> + +11.1.140 mpi4py.MPI.ERR_READ_ONLY +--------------------------------- + + -- Data: mpi4py.MPI.ERR_READ_ONLY: int(1) = ERR_READ_ONLY + + Constant ‘ERR_READ_ONLY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_NO_SPACE, Next: mpi4py MPI ERR_QUOTA, Prev: mpi4py MPI ERR_READ_ONLY, Up: mpi4py MPI<2> + +11.1.141 mpi4py.MPI.ERR_NO_SPACE +-------------------------------- + + -- Data: mpi4py.MPI.ERR_NO_SPACE: int(1) = ERR_NO_SPACE + + Constant ‘ERR_NO_SPACE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_QUOTA, Next: mpi4py MPI ERR_NOT_SAME, Prev: mpi4py MPI ERR_NO_SPACE, Up: mpi4py MPI<2> + +11.1.142 mpi4py.MPI.ERR_QUOTA +----------------------------- + + -- Data: mpi4py.MPI.ERR_QUOTA: int(1) = ERR_QUOTA + + Constant ‘ERR_QUOTA’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_NOT_SAME, Next: mpi4py MPI ERR_IO, Prev: mpi4py MPI ERR_QUOTA, Up: mpi4py MPI<2> + +11.1.143 mpi4py.MPI.ERR_NOT_SAME +-------------------------------- + + -- Data: mpi4py.MPI.ERR_NOT_SAME: int(1) = ERR_NOT_SAME + + Constant ‘ERR_NOT_SAME’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_IO, Next: mpi4py MPI ERR_UNSUPPORTED_OPERATION, Prev: mpi4py MPI ERR_NOT_SAME, Up: mpi4py MPI<2> + +11.1.144 mpi4py.MPI.ERR_IO +-------------------------- + + -- Data: mpi4py.MPI.ERR_IO: int(1) = ERR_IO + + Constant ‘ERR_IO’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_UNSUPPORTED_OPERATION, Next: mpi4py MPI ERR_UNSUPPORTED_DATAREP, Prev: mpi4py MPI ERR_IO, Up: mpi4py MPI<2> + +11.1.145 mpi4py.MPI.ERR_UNSUPPORTED_OPERATION +--------------------------------------------- + + -- Data: mpi4py.MPI.ERR_UNSUPPORTED_OPERATION: int(1) = + ERR_UNSUPPORTED_OPERATION + + Constant ‘ERR_UNSUPPORTED_OPERATION’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_UNSUPPORTED_DATAREP, Next: mpi4py MPI ERR_CONVERSION, Prev: mpi4py MPI ERR_UNSUPPORTED_OPERATION, Up: mpi4py MPI<2> + +11.1.146 mpi4py.MPI.ERR_UNSUPPORTED_DATAREP +------------------------------------------- + + -- Data: mpi4py.MPI.ERR_UNSUPPORTED_DATAREP: int(1) = + ERR_UNSUPPORTED_DATAREP + + Constant ‘ERR_UNSUPPORTED_DATAREP’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_CONVERSION, Next: mpi4py MPI ERR_DUP_DATAREP, Prev: mpi4py MPI ERR_UNSUPPORTED_DATAREP, Up: mpi4py MPI<2> + +11.1.147 mpi4py.MPI.ERR_CONVERSION +---------------------------------- + + -- Data: mpi4py.MPI.ERR_CONVERSION: int(1) = ERR_CONVERSION + + Constant ‘ERR_CONVERSION’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_DUP_DATAREP, Next: mpi4py MPI ERR_VALUE_TOO_LARGE, Prev: mpi4py MPI ERR_CONVERSION, Up: mpi4py MPI<2> + +11.1.148 mpi4py.MPI.ERR_DUP_DATAREP +----------------------------------- + + -- Data: mpi4py.MPI.ERR_DUP_DATAREP: int(1) = ERR_DUP_DATAREP + + Constant ‘ERR_DUP_DATAREP’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_VALUE_TOO_LARGE, Next: mpi4py MPI ERR_REVOKED, Prev: mpi4py MPI ERR_DUP_DATAREP, Up: mpi4py MPI<2> + +11.1.149 mpi4py.MPI.ERR_VALUE_TOO_LARGE +--------------------------------------- + + -- Data: mpi4py.MPI.ERR_VALUE_TOO_LARGE: int(1) = ERR_VALUE_TOO_LARGE + + Constant ‘ERR_VALUE_TOO_LARGE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_REVOKED, Next: mpi4py MPI ERR_PROC_FAILED, Prev: mpi4py MPI ERR_VALUE_TOO_LARGE, Up: mpi4py MPI<2> + +11.1.150 mpi4py.MPI.ERR_REVOKED +------------------------------- + + -- Data: mpi4py.MPI.ERR_REVOKED: int(1) = ERR_REVOKED + + Constant ‘ERR_REVOKED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_PROC_FAILED, Next: mpi4py MPI ERR_PROC_FAILED_PENDING, Prev: mpi4py MPI ERR_REVOKED, Up: mpi4py MPI<2> + +11.1.151 mpi4py.MPI.ERR_PROC_FAILED +----------------------------------- + + -- Data: mpi4py.MPI.ERR_PROC_FAILED: int(1) = ERR_PROC_FAILED + + Constant ‘ERR_PROC_FAILED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ERR_PROC_FAILED_PENDING, Next: mpi4py MPI ORDER_C, Prev: mpi4py MPI ERR_PROC_FAILED, Up: mpi4py MPI<2> + +11.1.152 mpi4py.MPI.ERR_PROC_FAILED_PENDING +------------------------------------------- + + -- Data: mpi4py.MPI.ERR_PROC_FAILED_PENDING: int(1) = + ERR_PROC_FAILED_PENDING + + Constant ‘ERR_PROC_FAILED_PENDING’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ORDER_C, Next: mpi4py MPI ORDER_FORTRAN, Prev: mpi4py MPI ERR_PROC_FAILED_PENDING, Up: mpi4py MPI<2> + +11.1.153 mpi4py.MPI.ORDER_C +--------------------------- + + -- Data: mpi4py.MPI.ORDER_C: int(1) = ORDER_C + + Constant ‘ORDER_C’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ORDER_FORTRAN, Next: mpi4py MPI ORDER_F, Prev: mpi4py MPI ORDER_C, Up: mpi4py MPI<2> + +11.1.154 mpi4py.MPI.ORDER_FORTRAN +--------------------------------- + + -- Data: mpi4py.MPI.ORDER_FORTRAN: int(1) = ORDER_FORTRAN + + Constant ‘ORDER_FORTRAN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI ORDER_F, Next: mpi4py MPI TYPECLASS_INTEGER, Prev: mpi4py MPI ORDER_FORTRAN, Up: mpi4py MPI<2> + +11.1.155 mpi4py.MPI.ORDER_F +--------------------------- + + -- Data: mpi4py.MPI.ORDER_F: int(1) = ORDER_F + + Constant ‘ORDER_F’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI TYPECLASS_INTEGER, Next: mpi4py MPI TYPECLASS_REAL, Prev: mpi4py MPI ORDER_F, Up: mpi4py MPI<2> + +11.1.156 mpi4py.MPI.TYPECLASS_INTEGER +------------------------------------- + + -- Data: mpi4py.MPI.TYPECLASS_INTEGER: int(1) = TYPECLASS_INTEGER + + Constant ‘TYPECLASS_INTEGER’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI TYPECLASS_REAL, Next: mpi4py MPI TYPECLASS_COMPLEX, Prev: mpi4py MPI TYPECLASS_INTEGER, Up: mpi4py MPI<2> + +11.1.157 mpi4py.MPI.TYPECLASS_REAL +---------------------------------- + + -- Data: mpi4py.MPI.TYPECLASS_REAL: int(1) = TYPECLASS_REAL + + Constant ‘TYPECLASS_REAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI TYPECLASS_COMPLEX, Next: mpi4py MPI DISTRIBUTE_NONE, Prev: mpi4py MPI TYPECLASS_REAL, Up: mpi4py MPI<2> + +11.1.158 mpi4py.MPI.TYPECLASS_COMPLEX +------------------------------------- + + -- Data: mpi4py.MPI.TYPECLASS_COMPLEX: int(1) = TYPECLASS_COMPLEX + + Constant ‘TYPECLASS_COMPLEX’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DISTRIBUTE_NONE, Next: mpi4py MPI DISTRIBUTE_BLOCK, Prev: mpi4py MPI TYPECLASS_COMPLEX, Up: mpi4py MPI<2> + +11.1.159 mpi4py.MPI.DISTRIBUTE_NONE +----------------------------------- + + -- Data: mpi4py.MPI.DISTRIBUTE_NONE: int(1) = DISTRIBUTE_NONE + + Constant ‘DISTRIBUTE_NONE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DISTRIBUTE_BLOCK, Next: mpi4py MPI DISTRIBUTE_CYCLIC, Prev: mpi4py MPI DISTRIBUTE_NONE, Up: mpi4py MPI<2> + +11.1.160 mpi4py.MPI.DISTRIBUTE_BLOCK +------------------------------------ + + -- Data: mpi4py.MPI.DISTRIBUTE_BLOCK: int(1) = DISTRIBUTE_BLOCK + + Constant ‘DISTRIBUTE_BLOCK’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DISTRIBUTE_CYCLIC, Next: mpi4py MPI DISTRIBUTE_DFLT_DARG, Prev: mpi4py MPI DISTRIBUTE_BLOCK, Up: mpi4py MPI<2> + +11.1.161 mpi4py.MPI.DISTRIBUTE_CYCLIC +------------------------------------- + + -- Data: mpi4py.MPI.DISTRIBUTE_CYCLIC: int(1) = DISTRIBUTE_CYCLIC + + Constant ‘DISTRIBUTE_CYCLIC’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DISTRIBUTE_DFLT_DARG, Next: mpi4py MPI COMBINER_NAMED, Prev: mpi4py MPI DISTRIBUTE_CYCLIC, Up: mpi4py MPI<2> + +11.1.162 mpi4py.MPI.DISTRIBUTE_DFLT_DARG +---------------------------------------- + + -- Data: mpi4py.MPI.DISTRIBUTE_DFLT_DARG: int(1) = DISTRIBUTE_DFLT_DARG + + Constant ‘DISTRIBUTE_DFLT_DARG’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_NAMED, Next: mpi4py MPI COMBINER_DUP, Prev: mpi4py MPI DISTRIBUTE_DFLT_DARG, Up: mpi4py MPI<2> + +11.1.163 mpi4py.MPI.COMBINER_NAMED +---------------------------------- + + -- Data: mpi4py.MPI.COMBINER_NAMED: int(1) = COMBINER_NAMED + + Constant ‘COMBINER_NAMED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_DUP, Next: mpi4py MPI COMBINER_CONTIGUOUS, Prev: mpi4py MPI COMBINER_NAMED, Up: mpi4py MPI<2> + +11.1.164 mpi4py.MPI.COMBINER_DUP +-------------------------------- + + -- Data: mpi4py.MPI.COMBINER_DUP: int(1) = COMBINER_DUP + + Constant ‘COMBINER_DUP’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_CONTIGUOUS, Next: mpi4py MPI COMBINER_VECTOR, Prev: mpi4py MPI COMBINER_DUP, Up: mpi4py MPI<2> + +11.1.165 mpi4py.MPI.COMBINER_CONTIGUOUS +--------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_CONTIGUOUS: int(1) = COMBINER_CONTIGUOUS + + Constant ‘COMBINER_CONTIGUOUS’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_VECTOR, Next: mpi4py MPI COMBINER_HVECTOR, Prev: mpi4py MPI COMBINER_CONTIGUOUS, Up: mpi4py MPI<2> + +11.1.166 mpi4py.MPI.COMBINER_VECTOR +----------------------------------- + + -- Data: mpi4py.MPI.COMBINER_VECTOR: int(1) = COMBINER_VECTOR + + Constant ‘COMBINER_VECTOR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_HVECTOR, Next: mpi4py MPI COMBINER_INDEXED, Prev: mpi4py MPI COMBINER_VECTOR, Up: mpi4py MPI<2> + +11.1.167 mpi4py.MPI.COMBINER_HVECTOR +------------------------------------ + + -- Data: mpi4py.MPI.COMBINER_HVECTOR: int(1) = COMBINER_HVECTOR + + Constant ‘COMBINER_HVECTOR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_INDEXED, Next: mpi4py MPI COMBINER_HINDEXED, Prev: mpi4py MPI COMBINER_HVECTOR, Up: mpi4py MPI<2> + +11.1.168 mpi4py.MPI.COMBINER_INDEXED +------------------------------------ + + -- Data: mpi4py.MPI.COMBINER_INDEXED: int(1) = COMBINER_INDEXED + + Constant ‘COMBINER_INDEXED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_HINDEXED, Next: mpi4py MPI COMBINER_INDEXED_BLOCK, Prev: mpi4py MPI COMBINER_INDEXED, Up: mpi4py MPI<2> + +11.1.169 mpi4py.MPI.COMBINER_HINDEXED +------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_HINDEXED: int(1) = COMBINER_HINDEXED + + Constant ‘COMBINER_HINDEXED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_INDEXED_BLOCK, Next: mpi4py MPI COMBINER_HINDEXED_BLOCK, Prev: mpi4py MPI COMBINER_HINDEXED, Up: mpi4py MPI<2> + +11.1.170 mpi4py.MPI.COMBINER_INDEXED_BLOCK +------------------------------------------ + + -- Data: mpi4py.MPI.COMBINER_INDEXED_BLOCK: int(1) = + COMBINER_INDEXED_BLOCK + + Constant ‘COMBINER_INDEXED_BLOCK’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_HINDEXED_BLOCK, Next: mpi4py MPI COMBINER_STRUCT, Prev: mpi4py MPI COMBINER_INDEXED_BLOCK, Up: mpi4py MPI<2> + +11.1.171 mpi4py.MPI.COMBINER_HINDEXED_BLOCK +------------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_HINDEXED_BLOCK: int(1) = + COMBINER_HINDEXED_BLOCK + + Constant ‘COMBINER_HINDEXED_BLOCK’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_STRUCT, Next: mpi4py MPI COMBINER_SUBARRAY, Prev: mpi4py MPI COMBINER_HINDEXED_BLOCK, Up: mpi4py MPI<2> + +11.1.172 mpi4py.MPI.COMBINER_STRUCT +----------------------------------- + + -- Data: mpi4py.MPI.COMBINER_STRUCT: int(1) = COMBINER_STRUCT + + Constant ‘COMBINER_STRUCT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_SUBARRAY, Next: mpi4py MPI COMBINER_DARRAY, Prev: mpi4py MPI COMBINER_STRUCT, Up: mpi4py MPI<2> + +11.1.173 mpi4py.MPI.COMBINER_SUBARRAY +------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_SUBARRAY: int(1) = COMBINER_SUBARRAY + + Constant ‘COMBINER_SUBARRAY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_DARRAY, Next: mpi4py MPI COMBINER_RESIZED, Prev: mpi4py MPI COMBINER_SUBARRAY, Up: mpi4py MPI<2> + +11.1.174 mpi4py.MPI.COMBINER_DARRAY +----------------------------------- + + -- Data: mpi4py.MPI.COMBINER_DARRAY: int(1) = COMBINER_DARRAY + + Constant ‘COMBINER_DARRAY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_RESIZED, Next: mpi4py MPI COMBINER_VALUE_INDEX, Prev: mpi4py MPI COMBINER_DARRAY, Up: mpi4py MPI<2> + +11.1.175 mpi4py.MPI.COMBINER_RESIZED +------------------------------------ + + -- Data: mpi4py.MPI.COMBINER_RESIZED: int(1) = COMBINER_RESIZED + + Constant ‘COMBINER_RESIZED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_VALUE_INDEX, Next: mpi4py MPI COMBINER_F90_INTEGER, Prev: mpi4py MPI COMBINER_RESIZED, Up: mpi4py MPI<2> + +11.1.176 mpi4py.MPI.COMBINER_VALUE_INDEX +---------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_VALUE_INDEX: int(1) = COMBINER_VALUE_INDEX + + Constant ‘COMBINER_VALUE_INDEX’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_F90_INTEGER, Next: mpi4py MPI COMBINER_F90_REAL, Prev: mpi4py MPI COMBINER_VALUE_INDEX, Up: mpi4py MPI<2> + +11.1.177 mpi4py.MPI.COMBINER_F90_INTEGER +---------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_F90_INTEGER: int(1) = COMBINER_F90_INTEGER + + Constant ‘COMBINER_F90_INTEGER’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_F90_REAL, Next: mpi4py MPI COMBINER_F90_COMPLEX, Prev: mpi4py MPI COMBINER_F90_INTEGER, Up: mpi4py MPI<2> + +11.1.178 mpi4py.MPI.COMBINER_F90_REAL +------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_F90_REAL: int(1) = COMBINER_F90_REAL + + Constant ‘COMBINER_F90_REAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMBINER_F90_COMPLEX, Next: mpi4py MPI F_SOURCE, Prev: mpi4py MPI COMBINER_F90_REAL, Up: mpi4py MPI<2> + +11.1.179 mpi4py.MPI.COMBINER_F90_COMPLEX +---------------------------------------- + + -- Data: mpi4py.MPI.COMBINER_F90_COMPLEX: int(1) = COMBINER_F90_COMPLEX + + Constant ‘COMBINER_F90_COMPLEX’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI F_SOURCE, Next: mpi4py MPI F_TAG, Prev: mpi4py MPI COMBINER_F90_COMPLEX, Up: mpi4py MPI<2> + +11.1.180 mpi4py.MPI.F_SOURCE +---------------------------- + + -- Data: mpi4py.MPI.F_SOURCE: int(1) = F_SOURCE + + Constant ‘F_SOURCE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI F_TAG, Next: mpi4py MPI F_ERROR, Prev: mpi4py MPI F_SOURCE, Up: mpi4py MPI<2> + +11.1.181 mpi4py.MPI.F_TAG +------------------------- + + -- Data: mpi4py.MPI.F_TAG: int(1) = F_TAG + + Constant ‘F_TAG’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI F_ERROR, Next: mpi4py MPI F_STATUS_SIZE, Prev: mpi4py MPI F_TAG, Up: mpi4py MPI<2> + +11.1.182 mpi4py.MPI.F_ERROR +--------------------------- + + -- Data: mpi4py.MPI.F_ERROR: int(1) = F_ERROR + + Constant ‘F_ERROR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI F_STATUS_SIZE, Next: mpi4py MPI IDENT, Prev: mpi4py MPI F_ERROR, Up: mpi4py MPI<2> + +11.1.183 mpi4py.MPI.F_STATUS_SIZE +--------------------------------- + + -- Data: mpi4py.MPI.F_STATUS_SIZE: int(1) = F_STATUS_SIZE + + Constant ‘F_STATUS_SIZE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI IDENT, Next: mpi4py MPI CONGRUENT, Prev: mpi4py MPI F_STATUS_SIZE, Up: mpi4py MPI<2> + +11.1.184 mpi4py.MPI.IDENT +------------------------- + + -- Data: mpi4py.MPI.IDENT: int(1) = IDENT + + Constant ‘IDENT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI CONGRUENT, Next: mpi4py MPI SIMILAR, Prev: mpi4py MPI IDENT, Up: mpi4py MPI<2> + +11.1.185 mpi4py.MPI.CONGRUENT +----------------------------- + + -- Data: mpi4py.MPI.CONGRUENT: int(1) = CONGRUENT + + Constant ‘CONGRUENT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI SIMILAR, Next: mpi4py MPI UNEQUAL, Prev: mpi4py MPI CONGRUENT, Up: mpi4py MPI<2> + +11.1.186 mpi4py.MPI.SIMILAR +--------------------------- + + -- Data: mpi4py.MPI.SIMILAR: int(1) = SIMILAR + + Constant ‘SIMILAR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI UNEQUAL, Next: mpi4py MPI CART, Prev: mpi4py MPI SIMILAR, Up: mpi4py MPI<2> + +11.1.187 mpi4py.MPI.UNEQUAL +--------------------------- + + -- Data: mpi4py.MPI.UNEQUAL: int(1) = UNEQUAL + + Constant ‘UNEQUAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI CART, Next: mpi4py MPI GRAPH, Prev: mpi4py MPI UNEQUAL, Up: mpi4py MPI<2> + +11.1.188 mpi4py.MPI.CART +------------------------ + + -- Data: mpi4py.MPI.CART: int(1) = CART + + Constant ‘CART’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI GRAPH, Next: mpi4py MPI DIST_GRAPH, Prev: mpi4py MPI CART, Up: mpi4py MPI<2> + +11.1.189 mpi4py.MPI.GRAPH +------------------------- + + -- Data: mpi4py.MPI.GRAPH: int(1) = GRAPH + + Constant ‘GRAPH’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DIST_GRAPH, Next: mpi4py MPI UNWEIGHTED, Prev: mpi4py MPI GRAPH, Up: mpi4py MPI<2> + +11.1.190 mpi4py.MPI.DIST_GRAPH +------------------------------ + + -- Data: mpi4py.MPI.DIST_GRAPH: int(1) = DIST_GRAPH + + Constant ‘DIST_GRAPH’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI UNWEIGHTED, Next: mpi4py MPI WEIGHTS_EMPTY, Prev: mpi4py MPI DIST_GRAPH, Up: mpi4py MPI<2> + +11.1.191 mpi4py.MPI.UNWEIGHTED +------------------------------ + + -- Data: mpi4py.MPI.UNWEIGHTED: int(1) = UNWEIGHTED + + Constant ‘UNWEIGHTED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WEIGHTS_EMPTY, Next: mpi4py MPI COMM_TYPE_SHARED, Prev: mpi4py MPI UNWEIGHTED, Up: mpi4py MPI<2> + +11.1.192 mpi4py.MPI.WEIGHTS_EMPTY +--------------------------------- + + -- Data: mpi4py.MPI.WEIGHTS_EMPTY: int(1) = WEIGHTS_EMPTY + + Constant ‘WEIGHTS_EMPTY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMM_TYPE_SHARED, Next: mpi4py MPI COMM_TYPE_HW_GUIDED, Prev: mpi4py MPI WEIGHTS_EMPTY, Up: mpi4py MPI<2> + +11.1.193 mpi4py.MPI.COMM_TYPE_SHARED +------------------------------------ + + -- Data: mpi4py.MPI.COMM_TYPE_SHARED: int(1) = COMM_TYPE_SHARED + + Constant ‘COMM_TYPE_SHARED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMM_TYPE_HW_GUIDED, Next: mpi4py MPI COMM_TYPE_HW_UNGUIDED, Prev: mpi4py MPI COMM_TYPE_SHARED, Up: mpi4py MPI<2> + +11.1.194 mpi4py.MPI.COMM_TYPE_HW_GUIDED +--------------------------------------- + + -- Data: mpi4py.MPI.COMM_TYPE_HW_GUIDED: int(1) = COMM_TYPE_HW_GUIDED + + Constant ‘COMM_TYPE_HW_GUIDED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMM_TYPE_HW_UNGUIDED, Next: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED, Prev: mpi4py MPI COMM_TYPE_HW_GUIDED, Up: mpi4py MPI<2> + +11.1.195 mpi4py.MPI.COMM_TYPE_HW_UNGUIDED +----------------------------------------- + + -- Data: mpi4py.MPI.COMM_TYPE_HW_UNGUIDED: int(1) = + COMM_TYPE_HW_UNGUIDED + + Constant ‘COMM_TYPE_HW_UNGUIDED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED, Next: mpi4py MPI BSEND_OVERHEAD, Prev: mpi4py MPI COMM_TYPE_HW_UNGUIDED, Up: mpi4py MPI<2> + +11.1.196 mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED +--------------------------------------------- + + -- Data: mpi4py.MPI.COMM_TYPE_RESOURCE_GUIDED: int(1) = + COMM_TYPE_RESOURCE_GUIDED + + Constant ‘COMM_TYPE_RESOURCE_GUIDED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI BSEND_OVERHEAD, Next: mpi4py MPI BUFFER_AUTOMATIC, Prev: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED, Up: mpi4py MPI<2> + +11.1.197 mpi4py.MPI.BSEND_OVERHEAD +---------------------------------- + + -- Data: mpi4py.MPI.BSEND_OVERHEAD: int(1) = BSEND_OVERHEAD + + Constant ‘BSEND_OVERHEAD’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI BUFFER_AUTOMATIC, Next: mpi4py MPI WIN_FLAVOR_CREATE, Prev: mpi4py MPI BSEND_OVERHEAD, Up: mpi4py MPI<2> + +11.1.198 mpi4py.MPI.BUFFER_AUTOMATIC +------------------------------------ + + -- Data: mpi4py.MPI.BUFFER_AUTOMATIC: *note BufferAutomaticType: ff. = + BUFFER_AUTOMATIC + + Constant ‘BUFFER_AUTOMATIC’ of type *note BufferAutomaticType: ff. + + +File: mpi4py.info, Node: mpi4py MPI WIN_FLAVOR_CREATE, Next: mpi4py MPI WIN_FLAVOR_ALLOCATE, Prev: mpi4py MPI BUFFER_AUTOMATIC, Up: mpi4py MPI<2> + +11.1.199 mpi4py.MPI.WIN_FLAVOR_CREATE +------------------------------------- + + -- Data: mpi4py.MPI.WIN_FLAVOR_CREATE: int(1) = WIN_FLAVOR_CREATE + + Constant ‘WIN_FLAVOR_CREATE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_FLAVOR_ALLOCATE, Next: mpi4py MPI WIN_FLAVOR_DYNAMIC, Prev: mpi4py MPI WIN_FLAVOR_CREATE, Up: mpi4py MPI<2> + +11.1.200 mpi4py.MPI.WIN_FLAVOR_ALLOCATE +--------------------------------------- + + -- Data: mpi4py.MPI.WIN_FLAVOR_ALLOCATE: int(1) = WIN_FLAVOR_ALLOCATE + + Constant ‘WIN_FLAVOR_ALLOCATE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_FLAVOR_DYNAMIC, Next: mpi4py MPI WIN_FLAVOR_SHARED, Prev: mpi4py MPI WIN_FLAVOR_ALLOCATE, Up: mpi4py MPI<2> + +11.1.201 mpi4py.MPI.WIN_FLAVOR_DYNAMIC +-------------------------------------- + + -- Data: mpi4py.MPI.WIN_FLAVOR_DYNAMIC: int(1) = WIN_FLAVOR_DYNAMIC + + Constant ‘WIN_FLAVOR_DYNAMIC’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_FLAVOR_SHARED, Next: mpi4py MPI WIN_SEPARATE, Prev: mpi4py MPI WIN_FLAVOR_DYNAMIC, Up: mpi4py MPI<2> + +11.1.202 mpi4py.MPI.WIN_FLAVOR_SHARED +------------------------------------- + + -- Data: mpi4py.MPI.WIN_FLAVOR_SHARED: int(1) = WIN_FLAVOR_SHARED + + Constant ‘WIN_FLAVOR_SHARED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_SEPARATE, Next: mpi4py MPI WIN_UNIFIED, Prev: mpi4py MPI WIN_FLAVOR_SHARED, Up: mpi4py MPI<2> + +11.1.203 mpi4py.MPI.WIN_SEPARATE +-------------------------------- + + -- Data: mpi4py.MPI.WIN_SEPARATE: int(1) = WIN_SEPARATE + + Constant ‘WIN_SEPARATE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI WIN_UNIFIED, Next: mpi4py MPI MODE_NOCHECK, Prev: mpi4py MPI WIN_SEPARATE, Up: mpi4py MPI<2> + +11.1.204 mpi4py.MPI.WIN_UNIFIED +------------------------------- + + -- Data: mpi4py.MPI.WIN_UNIFIED: int(1) = WIN_UNIFIED + + Constant ‘WIN_UNIFIED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_NOCHECK, Next: mpi4py MPI MODE_NOSTORE, Prev: mpi4py MPI WIN_UNIFIED, Up: mpi4py MPI<2> + +11.1.205 mpi4py.MPI.MODE_NOCHECK +-------------------------------- + + -- Data: mpi4py.MPI.MODE_NOCHECK: int(1) = MODE_NOCHECK + + Constant ‘MODE_NOCHECK’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_NOSTORE, Next: mpi4py MPI MODE_NOPUT, Prev: mpi4py MPI MODE_NOCHECK, Up: mpi4py MPI<2> + +11.1.206 mpi4py.MPI.MODE_NOSTORE +-------------------------------- + + -- Data: mpi4py.MPI.MODE_NOSTORE: int(1) = MODE_NOSTORE + + Constant ‘MODE_NOSTORE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_NOPUT, Next: mpi4py MPI MODE_NOPRECEDE, Prev: mpi4py MPI MODE_NOSTORE, Up: mpi4py MPI<2> + +11.1.207 mpi4py.MPI.MODE_NOPUT +------------------------------ + + -- Data: mpi4py.MPI.MODE_NOPUT: int(1) = MODE_NOPUT + + Constant ‘MODE_NOPUT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_NOPRECEDE, Next: mpi4py MPI MODE_NOSUCCEED, Prev: mpi4py MPI MODE_NOPUT, Up: mpi4py MPI<2> + +11.1.208 mpi4py.MPI.MODE_NOPRECEDE +---------------------------------- + + -- Data: mpi4py.MPI.MODE_NOPRECEDE: int(1) = MODE_NOPRECEDE + + Constant ‘MODE_NOPRECEDE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_NOSUCCEED, Next: mpi4py MPI LOCK_EXCLUSIVE, Prev: mpi4py MPI MODE_NOPRECEDE, Up: mpi4py MPI<2> + +11.1.209 mpi4py.MPI.MODE_NOSUCCEED +---------------------------------- + + -- Data: mpi4py.MPI.MODE_NOSUCCEED: int(1) = MODE_NOSUCCEED + + Constant ‘MODE_NOSUCCEED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI LOCK_EXCLUSIVE, Next: mpi4py MPI LOCK_SHARED, Prev: mpi4py MPI MODE_NOSUCCEED, Up: mpi4py MPI<2> + +11.1.210 mpi4py.MPI.LOCK_EXCLUSIVE +---------------------------------- + + -- Data: mpi4py.MPI.LOCK_EXCLUSIVE: int(1) = LOCK_EXCLUSIVE + + Constant ‘LOCK_EXCLUSIVE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI LOCK_SHARED, Next: mpi4py MPI MODE_RDONLY, Prev: mpi4py MPI LOCK_EXCLUSIVE, Up: mpi4py MPI<2> + +11.1.211 mpi4py.MPI.LOCK_SHARED +------------------------------- + + -- Data: mpi4py.MPI.LOCK_SHARED: int(1) = LOCK_SHARED + + Constant ‘LOCK_SHARED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_RDONLY, Next: mpi4py MPI MODE_WRONLY, Prev: mpi4py MPI LOCK_SHARED, Up: mpi4py MPI<2> + +11.1.212 mpi4py.MPI.MODE_RDONLY +------------------------------- + + -- Data: mpi4py.MPI.MODE_RDONLY: int(1) = MODE_RDONLY + + Constant ‘MODE_RDONLY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_WRONLY, Next: mpi4py MPI MODE_RDWR, Prev: mpi4py MPI MODE_RDONLY, Up: mpi4py MPI<2> + +11.1.213 mpi4py.MPI.MODE_WRONLY +------------------------------- + + -- Data: mpi4py.MPI.MODE_WRONLY: int(1) = MODE_WRONLY + + Constant ‘MODE_WRONLY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_RDWR, Next: mpi4py MPI MODE_CREATE, Prev: mpi4py MPI MODE_WRONLY, Up: mpi4py MPI<2> + +11.1.214 mpi4py.MPI.MODE_RDWR +----------------------------- + + -- Data: mpi4py.MPI.MODE_RDWR: int(1) = MODE_RDWR + + Constant ‘MODE_RDWR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_CREATE, Next: mpi4py MPI MODE_EXCL, Prev: mpi4py MPI MODE_RDWR, Up: mpi4py MPI<2> + +11.1.215 mpi4py.MPI.MODE_CREATE +------------------------------- + + -- Data: mpi4py.MPI.MODE_CREATE: int(1) = MODE_CREATE + + Constant ‘MODE_CREATE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_EXCL, Next: mpi4py MPI MODE_DELETE_ON_CLOSE, Prev: mpi4py MPI MODE_CREATE, Up: mpi4py MPI<2> + +11.1.216 mpi4py.MPI.MODE_EXCL +----------------------------- + + -- Data: mpi4py.MPI.MODE_EXCL: int(1) = MODE_EXCL + + Constant ‘MODE_EXCL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_DELETE_ON_CLOSE, Next: mpi4py MPI MODE_UNIQUE_OPEN, Prev: mpi4py MPI MODE_EXCL, Up: mpi4py MPI<2> + +11.1.217 mpi4py.MPI.MODE_DELETE_ON_CLOSE +---------------------------------------- + + -- Data: mpi4py.MPI.MODE_DELETE_ON_CLOSE: int(1) = MODE_DELETE_ON_CLOSE + + Constant ‘MODE_DELETE_ON_CLOSE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_UNIQUE_OPEN, Next: mpi4py MPI MODE_SEQUENTIAL, Prev: mpi4py MPI MODE_DELETE_ON_CLOSE, Up: mpi4py MPI<2> + +11.1.218 mpi4py.MPI.MODE_UNIQUE_OPEN +------------------------------------ + + -- Data: mpi4py.MPI.MODE_UNIQUE_OPEN: int(1) = MODE_UNIQUE_OPEN + + Constant ‘MODE_UNIQUE_OPEN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_SEQUENTIAL, Next: mpi4py MPI MODE_APPEND, Prev: mpi4py MPI MODE_UNIQUE_OPEN, Up: mpi4py MPI<2> + +11.1.219 mpi4py.MPI.MODE_SEQUENTIAL +----------------------------------- + + -- Data: mpi4py.MPI.MODE_SEQUENTIAL: int(1) = MODE_SEQUENTIAL + + Constant ‘MODE_SEQUENTIAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MODE_APPEND, Next: mpi4py MPI SEEK_SET, Prev: mpi4py MPI MODE_SEQUENTIAL, Up: mpi4py MPI<2> + +11.1.220 mpi4py.MPI.MODE_APPEND +------------------------------- + + -- Data: mpi4py.MPI.MODE_APPEND: int(1) = MODE_APPEND + + Constant ‘MODE_APPEND’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI SEEK_SET, Next: mpi4py MPI SEEK_CUR, Prev: mpi4py MPI MODE_APPEND, Up: mpi4py MPI<2> + +11.1.221 mpi4py.MPI.SEEK_SET +---------------------------- + + -- Data: mpi4py.MPI.SEEK_SET: int(1) = SEEK_SET + + Constant ‘SEEK_SET’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI SEEK_CUR, Next: mpi4py MPI SEEK_END, Prev: mpi4py MPI SEEK_SET, Up: mpi4py MPI<2> + +11.1.222 mpi4py.MPI.SEEK_CUR +---------------------------- + + -- Data: mpi4py.MPI.SEEK_CUR: int(1) = SEEK_CUR + + Constant ‘SEEK_CUR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI SEEK_END, Next: mpi4py MPI DISPLACEMENT_CURRENT, Prev: mpi4py MPI SEEK_CUR, Up: mpi4py MPI<2> + +11.1.223 mpi4py.MPI.SEEK_END +---------------------------- + + -- Data: mpi4py.MPI.SEEK_END: int(1) = SEEK_END + + Constant ‘SEEK_END’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DISPLACEMENT_CURRENT, Next: mpi4py MPI DISP_CUR, Prev: mpi4py MPI SEEK_END, Up: mpi4py MPI<2> + +11.1.224 mpi4py.MPI.DISPLACEMENT_CURRENT +---------------------------------------- + + -- Data: mpi4py.MPI.DISPLACEMENT_CURRENT: int(1) = DISPLACEMENT_CURRENT + + Constant ‘DISPLACEMENT_CURRENT’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DISP_CUR, Next: mpi4py MPI THREAD_SINGLE, Prev: mpi4py MPI DISPLACEMENT_CURRENT, Up: mpi4py MPI<2> + +11.1.225 mpi4py.MPI.DISP_CUR +---------------------------- + + -- Data: mpi4py.MPI.DISP_CUR: int(1) = DISP_CUR + + Constant ‘DISP_CUR’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI THREAD_SINGLE, Next: mpi4py MPI THREAD_FUNNELED, Prev: mpi4py MPI DISP_CUR, Up: mpi4py MPI<2> + +11.1.226 mpi4py.MPI.THREAD_SINGLE +--------------------------------- + + -- Data: mpi4py.MPI.THREAD_SINGLE: int(1) = THREAD_SINGLE + + Constant ‘THREAD_SINGLE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI THREAD_FUNNELED, Next: mpi4py MPI THREAD_SERIALIZED, Prev: mpi4py MPI THREAD_SINGLE, Up: mpi4py MPI<2> + +11.1.227 mpi4py.MPI.THREAD_FUNNELED +----------------------------------- + + -- Data: mpi4py.MPI.THREAD_FUNNELED: int(1) = THREAD_FUNNELED + + Constant ‘THREAD_FUNNELED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI THREAD_SERIALIZED, Next: mpi4py MPI THREAD_MULTIPLE, Prev: mpi4py MPI THREAD_FUNNELED, Up: mpi4py MPI<2> + +11.1.228 mpi4py.MPI.THREAD_SERIALIZED +------------------------------------- + + -- Data: mpi4py.MPI.THREAD_SERIALIZED: int(1) = THREAD_SERIALIZED + + Constant ‘THREAD_SERIALIZED’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI THREAD_MULTIPLE, Next: mpi4py MPI VERSION, Prev: mpi4py MPI THREAD_SERIALIZED, Up: mpi4py MPI<2> + +11.1.229 mpi4py.MPI.THREAD_MULTIPLE +----------------------------------- + + -- Data: mpi4py.MPI.THREAD_MULTIPLE: int(1) = THREAD_MULTIPLE + + Constant ‘THREAD_MULTIPLE’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI VERSION, Next: mpi4py MPI SUBVERSION, Prev: mpi4py MPI THREAD_MULTIPLE, Up: mpi4py MPI<2> + +11.1.230 mpi4py.MPI.VERSION +--------------------------- + + -- Data: mpi4py.MPI.VERSION: int(1) = VERSION + + Constant ‘VERSION’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI SUBVERSION, Next: mpi4py MPI MAX_PROCESSOR_NAME, Prev: mpi4py MPI VERSION, Up: mpi4py MPI<2> + +11.1.231 mpi4py.MPI.SUBVERSION +------------------------------ + + -- Data: mpi4py.MPI.SUBVERSION: int(1) = SUBVERSION + + Constant ‘SUBVERSION’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_PROCESSOR_NAME, Next: mpi4py MPI MAX_ERROR_STRING, Prev: mpi4py MPI SUBVERSION, Up: mpi4py MPI<2> + +11.1.232 mpi4py.MPI.MAX_PROCESSOR_NAME +-------------------------------------- + + -- Data: mpi4py.MPI.MAX_PROCESSOR_NAME: int(1) = MAX_PROCESSOR_NAME + + Constant ‘MAX_PROCESSOR_NAME’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_ERROR_STRING, Next: mpi4py MPI MAX_PORT_NAME, Prev: mpi4py MPI MAX_PROCESSOR_NAME, Up: mpi4py MPI<2> + +11.1.233 mpi4py.MPI.MAX_ERROR_STRING +------------------------------------ + + -- Data: mpi4py.MPI.MAX_ERROR_STRING: int(1) = MAX_ERROR_STRING + + Constant ‘MAX_ERROR_STRING’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_PORT_NAME, Next: mpi4py MPI MAX_INFO_KEY, Prev: mpi4py MPI MAX_ERROR_STRING, Up: mpi4py MPI<2> + +11.1.234 mpi4py.MPI.MAX_PORT_NAME +--------------------------------- + + -- Data: mpi4py.MPI.MAX_PORT_NAME: int(1) = MAX_PORT_NAME + + Constant ‘MAX_PORT_NAME’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_INFO_KEY, Next: mpi4py MPI MAX_INFO_VAL, Prev: mpi4py MPI MAX_PORT_NAME, Up: mpi4py MPI<2> + +11.1.235 mpi4py.MPI.MAX_INFO_KEY +-------------------------------- + + -- Data: mpi4py.MPI.MAX_INFO_KEY: int(1) = MAX_INFO_KEY + + Constant ‘MAX_INFO_KEY’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_INFO_VAL, Next: mpi4py MPI MAX_OBJECT_NAME, Prev: mpi4py MPI MAX_INFO_KEY, Up: mpi4py MPI<2> + +11.1.236 mpi4py.MPI.MAX_INFO_VAL +-------------------------------- + + -- Data: mpi4py.MPI.MAX_INFO_VAL: int(1) = MAX_INFO_VAL + + Constant ‘MAX_INFO_VAL’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_OBJECT_NAME, Next: mpi4py MPI MAX_DATAREP_STRING, Prev: mpi4py MPI MAX_INFO_VAL, Up: mpi4py MPI<2> + +11.1.237 mpi4py.MPI.MAX_OBJECT_NAME +----------------------------------- + + -- Data: mpi4py.MPI.MAX_OBJECT_NAME: int(1) = MAX_OBJECT_NAME + + Constant ‘MAX_OBJECT_NAME’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_DATAREP_STRING, Next: mpi4py MPI MAX_LIBRARY_VERSION_STRING, Prev: mpi4py MPI MAX_OBJECT_NAME, Up: mpi4py MPI<2> + +11.1.238 mpi4py.MPI.MAX_DATAREP_STRING +-------------------------------------- + + -- Data: mpi4py.MPI.MAX_DATAREP_STRING: int(1) = MAX_DATAREP_STRING + + Constant ‘MAX_DATAREP_STRING’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_LIBRARY_VERSION_STRING, Next: mpi4py MPI MAX_PSET_NAME_LEN, Prev: mpi4py MPI MAX_DATAREP_STRING, Up: mpi4py MPI<2> + +11.1.239 mpi4py.MPI.MAX_LIBRARY_VERSION_STRING +---------------------------------------------- + + -- Data: mpi4py.MPI.MAX_LIBRARY_VERSION_STRING: int(1) = + MAX_LIBRARY_VERSION_STRING + + Constant ‘MAX_LIBRARY_VERSION_STRING’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_PSET_NAME_LEN, Next: mpi4py MPI MAX_STRINGTAG_LEN, Prev: mpi4py MPI MAX_LIBRARY_VERSION_STRING, Up: mpi4py MPI<2> + +11.1.240 mpi4py.MPI.MAX_PSET_NAME_LEN +------------------------------------- + + -- Data: mpi4py.MPI.MAX_PSET_NAME_LEN: int(1) = MAX_PSET_NAME_LEN + + Constant ‘MAX_PSET_NAME_LEN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI MAX_STRINGTAG_LEN, Next: mpi4py MPI DATATYPE_NULL, Prev: mpi4py MPI MAX_PSET_NAME_LEN, Up: mpi4py MPI<2> + +11.1.241 mpi4py.MPI.MAX_STRINGTAG_LEN +------------------------------------- + + -- Data: mpi4py.MPI.MAX_STRINGTAG_LEN: int(1) = MAX_STRINGTAG_LEN + + Constant ‘MAX_STRINGTAG_LEN’ of type int(2) + + ---------- Footnotes ---------- + + (1) https://docs.python.org/3/library/functions.html#int + + (2) https://docs.python.org/3/library/functions.html#int + + +File: mpi4py.info, Node: mpi4py MPI DATATYPE_NULL, Next: mpi4py MPI PACKED, Prev: mpi4py MPI MAX_STRINGTAG_LEN, Up: mpi4py MPI<2> + +11.1.242 mpi4py.MPI.DATATYPE_NULL +--------------------------------- + + -- Data: mpi4py.MPI.DATATYPE_NULL: *note Datatype: d0. = DATATYPE_NULL + + Object ‘DATATYPE_NULL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI PACKED, Next: mpi4py MPI BYTE, Prev: mpi4py MPI DATATYPE_NULL, Up: mpi4py MPI<2> + +11.1.243 mpi4py.MPI.PACKED +-------------------------- + + -- Data: mpi4py.MPI.PACKED: *note Datatype: d0. = PACKED + + Object ‘PACKED’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI BYTE, Next: mpi4py MPI AINT, Prev: mpi4py MPI PACKED, Up: mpi4py MPI<2> + +11.1.244 mpi4py.MPI.BYTE +------------------------ + + -- Data: mpi4py.MPI.BYTE: *note Datatype: d0. = BYTE + + Object ‘BYTE’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI AINT, Next: mpi4py MPI OFFSET, Prev: mpi4py MPI BYTE, Up: mpi4py MPI<2> + +11.1.245 mpi4py.MPI.AINT +------------------------ + + -- Data: mpi4py.MPI.AINT: *note Datatype: d0. = AINT + + Object ‘AINT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI OFFSET, Next: mpi4py MPI COUNT, Prev: mpi4py MPI AINT, Up: mpi4py MPI<2> + +11.1.246 mpi4py.MPI.OFFSET +-------------------------- + + -- Data: mpi4py.MPI.OFFSET: *note Datatype: d0. = OFFSET + + Object ‘OFFSET’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI COUNT, Next: mpi4py MPI CHAR, Prev: mpi4py MPI OFFSET, Up: mpi4py MPI<2> + +11.1.247 mpi4py.MPI.COUNT +------------------------- + + -- Data: mpi4py.MPI.COUNT: *note Datatype: d0. = COUNT + + Object ‘COUNT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI CHAR, Next: mpi4py MPI WCHAR, Prev: mpi4py MPI COUNT, Up: mpi4py MPI<2> + +11.1.248 mpi4py.MPI.CHAR +------------------------ + + -- Data: mpi4py.MPI.CHAR: *note Datatype: d0. = CHAR + + Object ‘CHAR’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI WCHAR, Next: mpi4py MPI SIGNED_CHAR, Prev: mpi4py MPI CHAR, Up: mpi4py MPI<2> + +11.1.249 mpi4py.MPI.WCHAR +------------------------- + + -- Data: mpi4py.MPI.WCHAR: *note Datatype: d0. = WCHAR + + Object ‘WCHAR’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SIGNED_CHAR, Next: mpi4py MPI SHORT, Prev: mpi4py MPI WCHAR, Up: mpi4py MPI<2> + +11.1.250 mpi4py.MPI.SIGNED_CHAR +------------------------------- + + -- Data: mpi4py.MPI.SIGNED_CHAR: *note Datatype: d0. = SIGNED_CHAR + + Object ‘SIGNED_CHAR’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SHORT, Next: mpi4py MPI INT, Prev: mpi4py MPI SIGNED_CHAR, Up: mpi4py MPI<2> + +11.1.251 mpi4py.MPI.SHORT +------------------------- + + -- Data: mpi4py.MPI.SHORT: *note Datatype: d0. = SHORT + + Object ‘SHORT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INT, Next: mpi4py MPI LONG, Prev: mpi4py MPI SHORT, Up: mpi4py MPI<2> + +11.1.252 mpi4py.MPI.INT +----------------------- + + -- Data: mpi4py.MPI.INT: *note Datatype: d0. = INT + + Object ‘INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LONG, Next: mpi4py MPI LONG_LONG, Prev: mpi4py MPI INT, Up: mpi4py MPI<2> + +11.1.253 mpi4py.MPI.LONG +------------------------ + + -- Data: mpi4py.MPI.LONG: *note Datatype: d0. = LONG + + Object ‘LONG’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LONG_LONG, Next: mpi4py MPI UNSIGNED_CHAR, Prev: mpi4py MPI LONG, Up: mpi4py MPI<2> + +11.1.254 mpi4py.MPI.LONG_LONG +----------------------------- + + -- Data: mpi4py.MPI.LONG_LONG: *note Datatype: d0. = LONG_LONG + + Object ‘LONG_LONG’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UNSIGNED_CHAR, Next: mpi4py MPI UNSIGNED_SHORT, Prev: mpi4py MPI LONG_LONG, Up: mpi4py MPI<2> + +11.1.255 mpi4py.MPI.UNSIGNED_CHAR +--------------------------------- + + -- Data: mpi4py.MPI.UNSIGNED_CHAR: *note Datatype: d0. = UNSIGNED_CHAR + + Object ‘UNSIGNED_CHAR’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UNSIGNED_SHORT, Next: mpi4py MPI UNSIGNED, Prev: mpi4py MPI UNSIGNED_CHAR, Up: mpi4py MPI<2> + +11.1.256 mpi4py.MPI.UNSIGNED_SHORT +---------------------------------- + + -- Data: mpi4py.MPI.UNSIGNED_SHORT: *note Datatype: d0. = + UNSIGNED_SHORT + + Object ‘UNSIGNED_SHORT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UNSIGNED, Next: mpi4py MPI UNSIGNED_LONG, Prev: mpi4py MPI UNSIGNED_SHORT, Up: mpi4py MPI<2> + +11.1.257 mpi4py.MPI.UNSIGNED +---------------------------- + + -- Data: mpi4py.MPI.UNSIGNED: *note Datatype: d0. = UNSIGNED + + Object ‘UNSIGNED’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UNSIGNED_LONG, Next: mpi4py MPI UNSIGNED_LONG_LONG, Prev: mpi4py MPI UNSIGNED, Up: mpi4py MPI<2> + +11.1.258 mpi4py.MPI.UNSIGNED_LONG +--------------------------------- + + -- Data: mpi4py.MPI.UNSIGNED_LONG: *note Datatype: d0. = UNSIGNED_LONG + + Object ‘UNSIGNED_LONG’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UNSIGNED_LONG_LONG, Next: mpi4py MPI FLOAT, Prev: mpi4py MPI UNSIGNED_LONG, Up: mpi4py MPI<2> + +11.1.259 mpi4py.MPI.UNSIGNED_LONG_LONG +-------------------------------------- + + -- Data: mpi4py.MPI.UNSIGNED_LONG_LONG: *note Datatype: d0. = + UNSIGNED_LONG_LONG + + Object ‘UNSIGNED_LONG_LONG’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI FLOAT, Next: mpi4py MPI DOUBLE, Prev: mpi4py MPI UNSIGNED_LONG_LONG, Up: mpi4py MPI<2> + +11.1.260 mpi4py.MPI.FLOAT +------------------------- + + -- Data: mpi4py.MPI.FLOAT: *note Datatype: d0. = FLOAT + + Object ‘FLOAT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI DOUBLE, Next: mpi4py MPI LONG_DOUBLE, Prev: mpi4py MPI FLOAT, Up: mpi4py MPI<2> + +11.1.261 mpi4py.MPI.DOUBLE +-------------------------- + + -- Data: mpi4py.MPI.DOUBLE: *note Datatype: d0. = DOUBLE + + Object ‘DOUBLE’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LONG_DOUBLE, Next: mpi4py MPI C_BOOL, Prev: mpi4py MPI DOUBLE, Up: mpi4py MPI<2> + +11.1.262 mpi4py.MPI.LONG_DOUBLE +------------------------------- + + -- Data: mpi4py.MPI.LONG_DOUBLE: *note Datatype: d0. = LONG_DOUBLE + + Object ‘LONG_DOUBLE’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI C_BOOL, Next: mpi4py MPI INT8_T, Prev: mpi4py MPI LONG_DOUBLE, Up: mpi4py MPI<2> + +11.1.263 mpi4py.MPI.C_BOOL +-------------------------- + + -- Data: mpi4py.MPI.C_BOOL: *note Datatype: d0. = C_BOOL + + Object ‘C_BOOL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INT8_T, Next: mpi4py MPI INT16_T, Prev: mpi4py MPI C_BOOL, Up: mpi4py MPI<2> + +11.1.264 mpi4py.MPI.INT8_T +-------------------------- + + -- Data: mpi4py.MPI.INT8_T: *note Datatype: d0. = INT8_T + + Object ‘INT8_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INT16_T, Next: mpi4py MPI INT32_T, Prev: mpi4py MPI INT8_T, Up: mpi4py MPI<2> + +11.1.265 mpi4py.MPI.INT16_T +--------------------------- + + -- Data: mpi4py.MPI.INT16_T: *note Datatype: d0. = INT16_T + + Object ‘INT16_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INT32_T, Next: mpi4py MPI INT64_T, Prev: mpi4py MPI INT16_T, Up: mpi4py MPI<2> + +11.1.266 mpi4py.MPI.INT32_T +--------------------------- + + -- Data: mpi4py.MPI.INT32_T: *note Datatype: d0. = INT32_T + + Object ‘INT32_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INT64_T, Next: mpi4py MPI UINT8_T, Prev: mpi4py MPI INT32_T, Up: mpi4py MPI<2> + +11.1.267 mpi4py.MPI.INT64_T +--------------------------- + + -- Data: mpi4py.MPI.INT64_T: *note Datatype: d0. = INT64_T + + Object ‘INT64_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UINT8_T, Next: mpi4py MPI UINT16_T, Prev: mpi4py MPI INT64_T, Up: mpi4py MPI<2> + +11.1.268 mpi4py.MPI.UINT8_T +--------------------------- + + -- Data: mpi4py.MPI.UINT8_T: *note Datatype: d0. = UINT8_T + + Object ‘UINT8_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UINT16_T, Next: mpi4py MPI UINT32_T, Prev: mpi4py MPI UINT8_T, Up: mpi4py MPI<2> + +11.1.269 mpi4py.MPI.UINT16_T +---------------------------- + + -- Data: mpi4py.MPI.UINT16_T: *note Datatype: d0. = UINT16_T + + Object ‘UINT16_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UINT32_T, Next: mpi4py MPI UINT64_T, Prev: mpi4py MPI UINT16_T, Up: mpi4py MPI<2> + +11.1.270 mpi4py.MPI.UINT32_T +---------------------------- + + -- Data: mpi4py.MPI.UINT32_T: *note Datatype: d0. = UINT32_T + + Object ‘UINT32_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UINT64_T, Next: mpi4py MPI C_COMPLEX, Prev: mpi4py MPI UINT32_T, Up: mpi4py MPI<2> + +11.1.271 mpi4py.MPI.UINT64_T +---------------------------- + + -- Data: mpi4py.MPI.UINT64_T: *note Datatype: d0. = UINT64_T + + Object ‘UINT64_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI C_COMPLEX, Next: mpi4py MPI C_FLOAT_COMPLEX, Prev: mpi4py MPI UINT64_T, Up: mpi4py MPI<2> + +11.1.272 mpi4py.MPI.C_COMPLEX +----------------------------- + + -- Data: mpi4py.MPI.C_COMPLEX: *note Datatype: d0. = C_COMPLEX + + Object ‘C_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI C_FLOAT_COMPLEX, Next: mpi4py MPI C_DOUBLE_COMPLEX, Prev: mpi4py MPI C_COMPLEX, Up: mpi4py MPI<2> + +11.1.273 mpi4py.MPI.C_FLOAT_COMPLEX +----------------------------------- + + -- Data: mpi4py.MPI.C_FLOAT_COMPLEX: *note Datatype: d0. = + C_FLOAT_COMPLEX + + Object ‘C_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI C_DOUBLE_COMPLEX, Next: mpi4py MPI C_LONG_DOUBLE_COMPLEX, Prev: mpi4py MPI C_FLOAT_COMPLEX, Up: mpi4py MPI<2> + +11.1.274 mpi4py.MPI.C_DOUBLE_COMPLEX +------------------------------------ + + -- Data: mpi4py.MPI.C_DOUBLE_COMPLEX: *note Datatype: d0. = + C_DOUBLE_COMPLEX + + Object ‘C_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI C_LONG_DOUBLE_COMPLEX, Next: mpi4py MPI CXX_BOOL, Prev: mpi4py MPI C_DOUBLE_COMPLEX, Up: mpi4py MPI<2> + +11.1.275 mpi4py.MPI.C_LONG_DOUBLE_COMPLEX +----------------------------------------- + + -- Data: mpi4py.MPI.C_LONG_DOUBLE_COMPLEX: *note Datatype: d0. = + C_LONG_DOUBLE_COMPLEX + + Object ‘C_LONG_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI CXX_BOOL, Next: mpi4py MPI CXX_FLOAT_COMPLEX, Prev: mpi4py MPI C_LONG_DOUBLE_COMPLEX, Up: mpi4py MPI<2> + +11.1.276 mpi4py.MPI.CXX_BOOL +---------------------------- + + -- Data: mpi4py.MPI.CXX_BOOL: *note Datatype: d0. = CXX_BOOL + + Object ‘CXX_BOOL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI CXX_FLOAT_COMPLEX, Next: mpi4py MPI CXX_DOUBLE_COMPLEX, Prev: mpi4py MPI CXX_BOOL, Up: mpi4py MPI<2> + +11.1.277 mpi4py.MPI.CXX_FLOAT_COMPLEX +------------------------------------- + + -- Data: mpi4py.MPI.CXX_FLOAT_COMPLEX: *note Datatype: d0. = + CXX_FLOAT_COMPLEX + + Object ‘CXX_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI CXX_DOUBLE_COMPLEX, Next: mpi4py MPI CXX_LONG_DOUBLE_COMPLEX, Prev: mpi4py MPI CXX_FLOAT_COMPLEX, Up: mpi4py MPI<2> + +11.1.278 mpi4py.MPI.CXX_DOUBLE_COMPLEX +-------------------------------------- + + -- Data: mpi4py.MPI.CXX_DOUBLE_COMPLEX: *note Datatype: d0. = + CXX_DOUBLE_COMPLEX + + Object ‘CXX_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI CXX_LONG_DOUBLE_COMPLEX, Next: mpi4py MPI SHORT_INT, Prev: mpi4py MPI CXX_DOUBLE_COMPLEX, Up: mpi4py MPI<2> + +11.1.279 mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX +------------------------------------------- + + -- Data: mpi4py.MPI.CXX_LONG_DOUBLE_COMPLEX: *note Datatype: d0. = + CXX_LONG_DOUBLE_COMPLEX + + Object ‘CXX_LONG_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SHORT_INT, Next: mpi4py MPI INT_INT, Prev: mpi4py MPI CXX_LONG_DOUBLE_COMPLEX, Up: mpi4py MPI<2> + +11.1.280 mpi4py.MPI.SHORT_INT +----------------------------- + + -- Data: mpi4py.MPI.SHORT_INT: *note Datatype: d0. = SHORT_INT + + Object ‘SHORT_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INT_INT, Next: mpi4py MPI TWOINT, Prev: mpi4py MPI SHORT_INT, Up: mpi4py MPI<2> + +11.1.281 mpi4py.MPI.INT_INT +--------------------------- + + -- Data: mpi4py.MPI.INT_INT: *note Datatype: d0. = INT_INT + + Object ‘INT_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI TWOINT, Next: mpi4py MPI LONG_INT, Prev: mpi4py MPI INT_INT, Up: mpi4py MPI<2> + +11.1.282 mpi4py.MPI.TWOINT +-------------------------- + + -- Data: mpi4py.MPI.TWOINT: *note Datatype: d0. = TWOINT + + Object ‘TWOINT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LONG_INT, Next: mpi4py MPI FLOAT_INT, Prev: mpi4py MPI TWOINT, Up: mpi4py MPI<2> + +11.1.283 mpi4py.MPI.LONG_INT +---------------------------- + + -- Data: mpi4py.MPI.LONG_INT: *note Datatype: d0. = LONG_INT + + Object ‘LONG_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI FLOAT_INT, Next: mpi4py MPI DOUBLE_INT, Prev: mpi4py MPI LONG_INT, Up: mpi4py MPI<2> + +11.1.284 mpi4py.MPI.FLOAT_INT +----------------------------- + + -- Data: mpi4py.MPI.FLOAT_INT: *note Datatype: d0. = FLOAT_INT + + Object ‘FLOAT_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI DOUBLE_INT, Next: mpi4py MPI LONG_DOUBLE_INT, Prev: mpi4py MPI FLOAT_INT, Up: mpi4py MPI<2> + +11.1.285 mpi4py.MPI.DOUBLE_INT +------------------------------ + + -- Data: mpi4py.MPI.DOUBLE_INT: *note Datatype: d0. = DOUBLE_INT + + Object ‘DOUBLE_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LONG_DOUBLE_INT, Next: mpi4py MPI CHARACTER, Prev: mpi4py MPI DOUBLE_INT, Up: mpi4py MPI<2> + +11.1.286 mpi4py.MPI.LONG_DOUBLE_INT +----------------------------------- + + -- Data: mpi4py.MPI.LONG_DOUBLE_INT: *note Datatype: d0. = + LONG_DOUBLE_INT + + Object ‘LONG_DOUBLE_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI CHARACTER, Next: mpi4py MPI LOGICAL, Prev: mpi4py MPI LONG_DOUBLE_INT, Up: mpi4py MPI<2> + +11.1.287 mpi4py.MPI.CHARACTER +----------------------------- + + -- Data: mpi4py.MPI.CHARACTER: *note Datatype: d0. = CHARACTER + + Object ‘CHARACTER’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LOGICAL, Next: mpi4py MPI INTEGER, Prev: mpi4py MPI CHARACTER, Up: mpi4py MPI<2> + +11.1.288 mpi4py.MPI.LOGICAL +--------------------------- + + -- Data: mpi4py.MPI.LOGICAL: *note Datatype: d0. = LOGICAL + + Object ‘LOGICAL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INTEGER, Next: mpi4py MPI REAL, Prev: mpi4py MPI LOGICAL, Up: mpi4py MPI<2> + +11.1.289 mpi4py.MPI.INTEGER +--------------------------- + + -- Data: mpi4py.MPI.INTEGER: *note Datatype: d0. = INTEGER + + Object ‘INTEGER’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI REAL, Next: mpi4py MPI DOUBLE_PRECISION, Prev: mpi4py MPI INTEGER, Up: mpi4py MPI<2> + +11.1.290 mpi4py.MPI.REAL +------------------------ + + -- Data: mpi4py.MPI.REAL: *note Datatype: d0. = REAL + + Object ‘REAL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI DOUBLE_PRECISION, Next: mpi4py MPI COMPLEX, Prev: mpi4py MPI REAL, Up: mpi4py MPI<2> + +11.1.291 mpi4py.MPI.DOUBLE_PRECISION +------------------------------------ + + -- Data: mpi4py.MPI.DOUBLE_PRECISION: *note Datatype: d0. = + DOUBLE_PRECISION + + Object ‘DOUBLE_PRECISION’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI COMPLEX, Next: mpi4py MPI DOUBLE_COMPLEX, Prev: mpi4py MPI DOUBLE_PRECISION, Up: mpi4py MPI<2> + +11.1.292 mpi4py.MPI.COMPLEX +--------------------------- + + -- Data: mpi4py.MPI.COMPLEX: *note Datatype: d0. = COMPLEX + + Object ‘COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI DOUBLE_COMPLEX, Next: mpi4py MPI LOGICAL1, Prev: mpi4py MPI COMPLEX, Up: mpi4py MPI<2> + +11.1.293 mpi4py.MPI.DOUBLE_COMPLEX +---------------------------------- + + -- Data: mpi4py.MPI.DOUBLE_COMPLEX: *note Datatype: d0. = + DOUBLE_COMPLEX + + Object ‘DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LOGICAL1, Next: mpi4py MPI LOGICAL2, Prev: mpi4py MPI DOUBLE_COMPLEX, Up: mpi4py MPI<2> + +11.1.294 mpi4py.MPI.LOGICAL1 +---------------------------- + + -- Data: mpi4py.MPI.LOGICAL1: *note Datatype: d0. = LOGICAL1 + + Object ‘LOGICAL1’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LOGICAL2, Next: mpi4py MPI LOGICAL4, Prev: mpi4py MPI LOGICAL1, Up: mpi4py MPI<2> + +11.1.295 mpi4py.MPI.LOGICAL2 +---------------------------- + + -- Data: mpi4py.MPI.LOGICAL2: *note Datatype: d0. = LOGICAL2 + + Object ‘LOGICAL2’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LOGICAL4, Next: mpi4py MPI LOGICAL8, Prev: mpi4py MPI LOGICAL2, Up: mpi4py MPI<2> + +11.1.296 mpi4py.MPI.LOGICAL4 +---------------------------- + + -- Data: mpi4py.MPI.LOGICAL4: *note Datatype: d0. = LOGICAL4 + + Object ‘LOGICAL4’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI LOGICAL8, Next: mpi4py MPI INTEGER1, Prev: mpi4py MPI LOGICAL4, Up: mpi4py MPI<2> + +11.1.297 mpi4py.MPI.LOGICAL8 +---------------------------- + + -- Data: mpi4py.MPI.LOGICAL8: *note Datatype: d0. = LOGICAL8 + + Object ‘LOGICAL8’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INTEGER1, Next: mpi4py MPI INTEGER2, Prev: mpi4py MPI LOGICAL8, Up: mpi4py MPI<2> + +11.1.298 mpi4py.MPI.INTEGER1 +---------------------------- + + -- Data: mpi4py.MPI.INTEGER1: *note Datatype: d0. = INTEGER1 + + Object ‘INTEGER1’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INTEGER2, Next: mpi4py MPI INTEGER4, Prev: mpi4py MPI INTEGER1, Up: mpi4py MPI<2> + +11.1.299 mpi4py.MPI.INTEGER2 +---------------------------- + + -- Data: mpi4py.MPI.INTEGER2: *note Datatype: d0. = INTEGER2 + + Object ‘INTEGER2’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INTEGER4, Next: mpi4py MPI INTEGER8, Prev: mpi4py MPI INTEGER2, Up: mpi4py MPI<2> + +11.1.300 mpi4py.MPI.INTEGER4 +---------------------------- + + -- Data: mpi4py.MPI.INTEGER4: *note Datatype: d0. = INTEGER4 + + Object ‘INTEGER4’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INTEGER8, Next: mpi4py MPI INTEGER16, Prev: mpi4py MPI INTEGER4, Up: mpi4py MPI<2> + +11.1.301 mpi4py.MPI.INTEGER8 +---------------------------- + + -- Data: mpi4py.MPI.INTEGER8: *note Datatype: d0. = INTEGER8 + + Object ‘INTEGER8’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI INTEGER16, Next: mpi4py MPI REAL2, Prev: mpi4py MPI INTEGER8, Up: mpi4py MPI<2> + +11.1.302 mpi4py.MPI.INTEGER16 +----------------------------- + + -- Data: mpi4py.MPI.INTEGER16: *note Datatype: d0. = INTEGER16 + + Object ‘INTEGER16’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI REAL2, Next: mpi4py MPI REAL4, Prev: mpi4py MPI INTEGER16, Up: mpi4py MPI<2> + +11.1.303 mpi4py.MPI.REAL2 +------------------------- + + -- Data: mpi4py.MPI.REAL2: *note Datatype: d0. = REAL2 + + Object ‘REAL2’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI REAL4, Next: mpi4py MPI REAL8, Prev: mpi4py MPI REAL2, Up: mpi4py MPI<2> + +11.1.304 mpi4py.MPI.REAL4 +------------------------- + + -- Data: mpi4py.MPI.REAL4: *note Datatype: d0. = REAL4 + + Object ‘REAL4’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI REAL8, Next: mpi4py MPI REAL16, Prev: mpi4py MPI REAL4, Up: mpi4py MPI<2> + +11.1.305 mpi4py.MPI.REAL8 +------------------------- + + -- Data: mpi4py.MPI.REAL8: *note Datatype: d0. = REAL8 + + Object ‘REAL8’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI REAL16, Next: mpi4py MPI COMPLEX4, Prev: mpi4py MPI REAL8, Up: mpi4py MPI<2> + +11.1.306 mpi4py.MPI.REAL16 +-------------------------- + + -- Data: mpi4py.MPI.REAL16: *note Datatype: d0. = REAL16 + + Object ‘REAL16’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI COMPLEX4, Next: mpi4py MPI COMPLEX8, Prev: mpi4py MPI REAL16, Up: mpi4py MPI<2> + +11.1.307 mpi4py.MPI.COMPLEX4 +---------------------------- + + -- Data: mpi4py.MPI.COMPLEX4: *note Datatype: d0. = COMPLEX4 + + Object ‘COMPLEX4’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI COMPLEX8, Next: mpi4py MPI COMPLEX16, Prev: mpi4py MPI COMPLEX4, Up: mpi4py MPI<2> + +11.1.308 mpi4py.MPI.COMPLEX8 +---------------------------- + + -- Data: mpi4py.MPI.COMPLEX8: *note Datatype: d0. = COMPLEX8 + + Object ‘COMPLEX8’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI COMPLEX16, Next: mpi4py MPI COMPLEX32, Prev: mpi4py MPI COMPLEX8, Up: mpi4py MPI<2> + +11.1.309 mpi4py.MPI.COMPLEX16 +----------------------------- + + -- Data: mpi4py.MPI.COMPLEX16: *note Datatype: d0. = COMPLEX16 + + Object ‘COMPLEX16’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI COMPLEX32, Next: mpi4py MPI UNSIGNED_INT, Prev: mpi4py MPI COMPLEX16, Up: mpi4py MPI<2> + +11.1.310 mpi4py.MPI.COMPLEX32 +----------------------------- + + -- Data: mpi4py.MPI.COMPLEX32: *note Datatype: d0. = COMPLEX32 + + Object ‘COMPLEX32’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI UNSIGNED_INT, Next: mpi4py MPI SIGNED_SHORT, Prev: mpi4py MPI COMPLEX32, Up: mpi4py MPI<2> + +11.1.311 mpi4py.MPI.UNSIGNED_INT +-------------------------------- + + -- Data: mpi4py.MPI.UNSIGNED_INT: *note Datatype: d0. = UNSIGNED_INT + + Object ‘UNSIGNED_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SIGNED_SHORT, Next: mpi4py MPI SIGNED_INT, Prev: mpi4py MPI UNSIGNED_INT, Up: mpi4py MPI<2> + +11.1.312 mpi4py.MPI.SIGNED_SHORT +-------------------------------- + + -- Data: mpi4py.MPI.SIGNED_SHORT: *note Datatype: d0. = SIGNED_SHORT + + Object ‘SIGNED_SHORT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SIGNED_INT, Next: mpi4py MPI SIGNED_LONG, Prev: mpi4py MPI SIGNED_SHORT, Up: mpi4py MPI<2> + +11.1.313 mpi4py.MPI.SIGNED_INT +------------------------------ + + -- Data: mpi4py.MPI.SIGNED_INT: *note Datatype: d0. = SIGNED_INT + + Object ‘SIGNED_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SIGNED_LONG, Next: mpi4py MPI SIGNED_LONG_LONG, Prev: mpi4py MPI SIGNED_INT, Up: mpi4py MPI<2> + +11.1.314 mpi4py.MPI.SIGNED_LONG +------------------------------- + + -- Data: mpi4py.MPI.SIGNED_LONG: *note Datatype: d0. = SIGNED_LONG + + Object ‘SIGNED_LONG’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SIGNED_LONG_LONG, Next: mpi4py MPI BOOL, Prev: mpi4py MPI SIGNED_LONG, Up: mpi4py MPI<2> + +11.1.315 mpi4py.MPI.SIGNED_LONG_LONG +------------------------------------ + + -- Data: mpi4py.MPI.SIGNED_LONG_LONG: *note Datatype: d0. = + SIGNED_LONG_LONG + + Object ‘SIGNED_LONG_LONG’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI BOOL, Next: mpi4py MPI SINT8_T, Prev: mpi4py MPI SIGNED_LONG_LONG, Up: mpi4py MPI<2> + +11.1.316 mpi4py.MPI.BOOL +------------------------ + + -- Data: mpi4py.MPI.BOOL: *note Datatype: d0. = BOOL + + Object ‘BOOL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SINT8_T, Next: mpi4py MPI SINT16_T, Prev: mpi4py MPI BOOL, Up: mpi4py MPI<2> + +11.1.317 mpi4py.MPI.SINT8_T +--------------------------- + + -- Data: mpi4py.MPI.SINT8_T: *note Datatype: d0. = SINT8_T + + Object ‘SINT8_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SINT16_T, Next: mpi4py MPI SINT32_T, Prev: mpi4py MPI SINT8_T, Up: mpi4py MPI<2> + +11.1.318 mpi4py.MPI.SINT16_T +---------------------------- + + -- Data: mpi4py.MPI.SINT16_T: *note Datatype: d0. = SINT16_T + + Object ‘SINT16_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SINT32_T, Next: mpi4py MPI SINT64_T, Prev: mpi4py MPI SINT16_T, Up: mpi4py MPI<2> + +11.1.319 mpi4py.MPI.SINT32_T +---------------------------- + + -- Data: mpi4py.MPI.SINT32_T: *note Datatype: d0. = SINT32_T + + Object ‘SINT32_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI SINT64_T, Next: mpi4py MPI F_BOOL, Prev: mpi4py MPI SINT32_T, Up: mpi4py MPI<2> + +11.1.320 mpi4py.MPI.SINT64_T +---------------------------- + + -- Data: mpi4py.MPI.SINT64_T: *note Datatype: d0. = SINT64_T + + Object ‘SINT64_T’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_BOOL, Next: mpi4py MPI F_INT, Prev: mpi4py MPI SINT64_T, Up: mpi4py MPI<2> + +11.1.321 mpi4py.MPI.F_BOOL +-------------------------- + + -- Data: mpi4py.MPI.F_BOOL: *note Datatype: d0. = F_BOOL + + Object ‘F_BOOL’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_INT, Next: mpi4py MPI F_FLOAT, Prev: mpi4py MPI F_BOOL, Up: mpi4py MPI<2> + +11.1.322 mpi4py.MPI.F_INT +------------------------- + + -- Data: mpi4py.MPI.F_INT: *note Datatype: d0. = F_INT + + Object ‘F_INT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_FLOAT, Next: mpi4py MPI F_DOUBLE, Prev: mpi4py MPI F_INT, Up: mpi4py MPI<2> + +11.1.323 mpi4py.MPI.F_FLOAT +--------------------------- + + -- Data: mpi4py.MPI.F_FLOAT: *note Datatype: d0. = F_FLOAT + + Object ‘F_FLOAT’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_DOUBLE, Next: mpi4py MPI F_COMPLEX, Prev: mpi4py MPI F_FLOAT, Up: mpi4py MPI<2> + +11.1.324 mpi4py.MPI.F_DOUBLE +---------------------------- + + -- Data: mpi4py.MPI.F_DOUBLE: *note Datatype: d0. = F_DOUBLE + + Object ‘F_DOUBLE’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_COMPLEX, Next: mpi4py MPI F_FLOAT_COMPLEX, Prev: mpi4py MPI F_DOUBLE, Up: mpi4py MPI<2> + +11.1.325 mpi4py.MPI.F_COMPLEX +----------------------------- + + -- Data: mpi4py.MPI.F_COMPLEX: *note Datatype: d0. = F_COMPLEX + + Object ‘F_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_FLOAT_COMPLEX, Next: mpi4py MPI F_DOUBLE_COMPLEX, Prev: mpi4py MPI F_COMPLEX, Up: mpi4py MPI<2> + +11.1.326 mpi4py.MPI.F_FLOAT_COMPLEX +----------------------------------- + + -- Data: mpi4py.MPI.F_FLOAT_COMPLEX: *note Datatype: d0. = + F_FLOAT_COMPLEX + + Object ‘F_FLOAT_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI F_DOUBLE_COMPLEX, Next: mpi4py MPI REQUEST_NULL, Prev: mpi4py MPI F_FLOAT_COMPLEX, Up: mpi4py MPI<2> + +11.1.327 mpi4py.MPI.F_DOUBLE_COMPLEX +------------------------------------ + + -- Data: mpi4py.MPI.F_DOUBLE_COMPLEX: *note Datatype: d0. = + F_DOUBLE_COMPLEX + + Object ‘F_DOUBLE_COMPLEX’ of type *note Datatype: d0. + + +File: mpi4py.info, Node: mpi4py MPI REQUEST_NULL, Next: mpi4py MPI MESSAGE_NULL, Prev: mpi4py MPI F_DOUBLE_COMPLEX, Up: mpi4py MPI<2> + +11.1.328 mpi4py.MPI.REQUEST_NULL +-------------------------------- + + -- Data: mpi4py.MPI.REQUEST_NULL: *note Request: 43. = REQUEST_NULL + + Object ‘REQUEST_NULL’ of type *note Request: 43. + + +File: mpi4py.info, Node: mpi4py MPI MESSAGE_NULL, Next: mpi4py MPI MESSAGE_NO_PROC, Prev: mpi4py MPI REQUEST_NULL, Up: mpi4py MPI<2> + +11.1.329 mpi4py.MPI.MESSAGE_NULL +-------------------------------- + + -- Data: mpi4py.MPI.MESSAGE_NULL: *note Message: d7. = MESSAGE_NULL + + Object ‘MESSAGE_NULL’ of type *note Message: d7. + + +File: mpi4py.info, Node: mpi4py MPI MESSAGE_NO_PROC, Next: mpi4py MPI OP_NULL, Prev: mpi4py MPI MESSAGE_NULL, Up: mpi4py MPI<2> + +11.1.330 mpi4py.MPI.MESSAGE_NO_PROC +----------------------------------- + + -- Data: mpi4py.MPI.MESSAGE_NO_PROC: *note Message: d7. = + MESSAGE_NO_PROC + + Object ‘MESSAGE_NO_PROC’ of type *note Message: d7. + + +File: mpi4py.info, Node: mpi4py MPI OP_NULL, Next: mpi4py MPI MAX, Prev: mpi4py MPI MESSAGE_NO_PROC, Up: mpi4py MPI<2> + +11.1.331 mpi4py.MPI.OP_NULL +--------------------------- + + -- Data: mpi4py.MPI.OP_NULL: *note Op: d3. = OP_NULL + + Object ‘OP_NULL’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI MAX, Next: mpi4py MPI MIN, Prev: mpi4py MPI OP_NULL, Up: mpi4py MPI<2> + +11.1.332 mpi4py.MPI.MAX +----------------------- + + -- Data: mpi4py.MPI.MAX: *note Op: d3. = MAX + + Object ‘MAX’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI MIN, Next: mpi4py MPI SUM, Prev: mpi4py MPI MAX, Up: mpi4py MPI<2> + +11.1.333 mpi4py.MPI.MIN +----------------------- + + -- Data: mpi4py.MPI.MIN: *note Op: d3. = MIN + + Object ‘MIN’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI SUM, Next: mpi4py MPI PROD, Prev: mpi4py MPI MIN, Up: mpi4py MPI<2> + +11.1.334 mpi4py.MPI.SUM +----------------------- + + -- Data: mpi4py.MPI.SUM: *note Op: d3. = SUM + + Object ‘SUM’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI PROD, Next: mpi4py MPI LAND, Prev: mpi4py MPI SUM, Up: mpi4py MPI<2> + +11.1.335 mpi4py.MPI.PROD +------------------------ + + -- Data: mpi4py.MPI.PROD: *note Op: d3. = PROD + + Object ‘PROD’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI LAND, Next: mpi4py MPI BAND, Prev: mpi4py MPI PROD, Up: mpi4py MPI<2> + +11.1.336 mpi4py.MPI.LAND +------------------------ + + -- Data: mpi4py.MPI.LAND: *note Op: d3. = LAND + + Object ‘LAND’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI BAND, Next: mpi4py MPI LOR, Prev: mpi4py MPI LAND, Up: mpi4py MPI<2> + +11.1.337 mpi4py.MPI.BAND +------------------------ + + -- Data: mpi4py.MPI.BAND: *note Op: d3. = BAND + + Object ‘BAND’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI LOR, Next: mpi4py MPI BOR, Prev: mpi4py MPI BAND, Up: mpi4py MPI<2> + +11.1.338 mpi4py.MPI.LOR +----------------------- + + -- Data: mpi4py.MPI.LOR: *note Op: d3. = LOR + + Object ‘LOR’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI BOR, Next: mpi4py MPI LXOR, Prev: mpi4py MPI LOR, Up: mpi4py MPI<2> + +11.1.339 mpi4py.MPI.BOR +----------------------- + + -- Data: mpi4py.MPI.BOR: *note Op: d3. = BOR + + Object ‘BOR’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI LXOR, Next: mpi4py MPI BXOR, Prev: mpi4py MPI BOR, Up: mpi4py MPI<2> + +11.1.340 mpi4py.MPI.LXOR +------------------------ + + -- Data: mpi4py.MPI.LXOR: *note Op: d3. = LXOR + + Object ‘LXOR’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI BXOR, Next: mpi4py MPI MAXLOC, Prev: mpi4py MPI LXOR, Up: mpi4py MPI<2> + +11.1.341 mpi4py.MPI.BXOR +------------------------ + + -- Data: mpi4py.MPI.BXOR: *note Op: d3. = BXOR + + Object ‘BXOR’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI MAXLOC, Next: mpi4py MPI MINLOC, Prev: mpi4py MPI BXOR, Up: mpi4py MPI<2> + +11.1.342 mpi4py.MPI.MAXLOC +-------------------------- + + -- Data: mpi4py.MPI.MAXLOC: *note Op: d3. = MAXLOC + + Object ‘MAXLOC’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI MINLOC, Next: mpi4py MPI REPLACE, Prev: mpi4py MPI MAXLOC, Up: mpi4py MPI<2> + +11.1.343 mpi4py.MPI.MINLOC +-------------------------- + + -- Data: mpi4py.MPI.MINLOC: *note Op: d3. = MINLOC + + Object ‘MINLOC’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI REPLACE, Next: mpi4py MPI NO_OP, Prev: mpi4py MPI MINLOC, Up: mpi4py MPI<2> + +11.1.344 mpi4py.MPI.REPLACE +--------------------------- + + -- Data: mpi4py.MPI.REPLACE: *note Op: d3. = REPLACE + + Object ‘REPLACE’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI NO_OP, Next: mpi4py MPI GROUP_NULL, Prev: mpi4py MPI REPLACE, Up: mpi4py MPI<2> + +11.1.345 mpi4py.MPI.NO_OP +------------------------- + + -- Data: mpi4py.MPI.NO_OP: *note Op: d3. = NO_OP + + Object ‘NO_OP’ of type *note Op: d3. + + + Parameters: + + * ‘x’ (‘Any’) + + * ‘y’ (‘Any’) + + + Return type: Any + + +File: mpi4py.info, Node: mpi4py MPI GROUP_NULL, Next: mpi4py MPI GROUP_EMPTY, Prev: mpi4py MPI NO_OP, Up: mpi4py MPI<2> + +11.1.346 mpi4py.MPI.GROUP_NULL +------------------------------ + + -- Data: mpi4py.MPI.GROUP_NULL: *note Group: 28. = GROUP_NULL + + Object ‘GROUP_NULL’ of type *note Group: 28. + + +File: mpi4py.info, Node: mpi4py MPI GROUP_EMPTY, Next: mpi4py MPI INFO_NULL, Prev: mpi4py MPI GROUP_NULL, Up: mpi4py MPI<2> + +11.1.347 mpi4py.MPI.GROUP_EMPTY +------------------------------- + + -- Data: mpi4py.MPI.GROUP_EMPTY: *note Group: 28. = GROUP_EMPTY + + Object ‘GROUP_EMPTY’ of type *note Group: 28. + + +File: mpi4py.info, Node: mpi4py MPI INFO_NULL, Next: mpi4py MPI INFO_ENV, Prev: mpi4py MPI GROUP_EMPTY, Up: mpi4py MPI<2> + +11.1.348 mpi4py.MPI.INFO_NULL +----------------------------- + + -- Data: mpi4py.MPI.INFO_NULL: *note Info: d4. = INFO_NULL + + Object ‘INFO_NULL’ of type *note Info: d4. + + +File: mpi4py.info, Node: mpi4py MPI INFO_ENV, Next: mpi4py MPI ERRHANDLER_NULL, Prev: mpi4py MPI INFO_NULL, Up: mpi4py MPI<2> + +11.1.349 mpi4py.MPI.INFO_ENV +---------------------------- + + -- Data: mpi4py.MPI.INFO_ENV: *note Info: d4. = INFO_ENV + + Object ‘INFO_ENV’ of type *note Info: d4. + + +File: mpi4py.info, Node: mpi4py MPI ERRHANDLER_NULL, Next: mpi4py MPI ERRORS_RETURN, Prev: mpi4py MPI INFO_ENV, Up: mpi4py MPI<2> + +11.1.350 mpi4py.MPI.ERRHANDLER_NULL +----------------------------------- + + -- Data: mpi4py.MPI.ERRHANDLER_NULL: *note Errhandler: d8. = + ERRHANDLER_NULL + + Object ‘ERRHANDLER_NULL’ of type *note Errhandler: d8. + + +File: mpi4py.info, Node: mpi4py MPI ERRORS_RETURN, Next: mpi4py MPI ERRORS_ABORT, Prev: mpi4py MPI ERRHANDLER_NULL, Up: mpi4py MPI<2> + +11.1.351 mpi4py.MPI.ERRORS_RETURN +--------------------------------- + + -- Data: mpi4py.MPI.ERRORS_RETURN: *note Errhandler: d8. = + ERRORS_RETURN + + Object ‘ERRORS_RETURN’ of type *note Errhandler: d8. + + +File: mpi4py.info, Node: mpi4py MPI ERRORS_ABORT, Next: mpi4py MPI ERRORS_ARE_FATAL, Prev: mpi4py MPI ERRORS_RETURN, Up: mpi4py MPI<2> + +11.1.352 mpi4py.MPI.ERRORS_ABORT +-------------------------------- + + -- Data: mpi4py.MPI.ERRORS_ABORT: *note Errhandler: d8. = ERRORS_ABORT + + Object ‘ERRORS_ABORT’ of type *note Errhandler: d8. + + +File: mpi4py.info, Node: mpi4py MPI ERRORS_ARE_FATAL, Next: mpi4py MPI SESSION_NULL, Prev: mpi4py MPI ERRORS_ABORT, Up: mpi4py MPI<2> + +11.1.353 mpi4py.MPI.ERRORS_ARE_FATAL +------------------------------------ + + -- Data: mpi4py.MPI.ERRORS_ARE_FATAL: *note Errhandler: d8. = + ERRORS_ARE_FATAL + + Object ‘ERRORS_ARE_FATAL’ of type *note Errhandler: d8. + + +File: mpi4py.info, Node: mpi4py MPI SESSION_NULL, Next: mpi4py MPI COMM_NULL, Prev: mpi4py MPI ERRORS_ARE_FATAL, Up: mpi4py MPI<2> + +11.1.354 mpi4py.MPI.SESSION_NULL +-------------------------------- + + -- Data: mpi4py.MPI.SESSION_NULL: *note Session: d5. = SESSION_NULL + + Object ‘SESSION_NULL’ of type *note Session: d5. + + +File: mpi4py.info, Node: mpi4py MPI COMM_NULL, Next: mpi4py MPI COMM_SELF, Prev: mpi4py MPI SESSION_NULL, Up: mpi4py MPI<2> + +11.1.355 mpi4py.MPI.COMM_NULL +----------------------------- + + -- Data: mpi4py.MPI.COMM_NULL: *note Comm: 1e. = COMM_NULL + + Object ‘COMM_NULL’ of type *note Comm: 1e. + + +File: mpi4py.info, Node: mpi4py MPI COMM_SELF, Next: mpi4py MPI COMM_WORLD, Prev: mpi4py MPI COMM_NULL, Up: mpi4py MPI<2> + +11.1.356 mpi4py.MPI.COMM_SELF +----------------------------- + + -- Data: mpi4py.MPI.COMM_SELF: *note Intracomm: 1f. = COMM_SELF + + Object ‘COMM_SELF’ of type *note Intracomm: 1f. + + +File: mpi4py.info, Node: mpi4py MPI COMM_WORLD, Next: mpi4py MPI WIN_NULL, Prev: mpi4py MPI COMM_SELF, Up: mpi4py MPI<2> + +11.1.357 mpi4py.MPI.COMM_WORLD +------------------------------ + + -- Data: mpi4py.MPI.COMM_WORLD: *note Intracomm: 1f. = COMM_WORLD + + Object ‘COMM_WORLD’ of type *note Intracomm: 1f. + + +File: mpi4py.info, Node: mpi4py MPI WIN_NULL, Next: mpi4py MPI FILE_NULL, Prev: mpi4py MPI COMM_WORLD, Up: mpi4py MPI<2> + +11.1.358 mpi4py.MPI.WIN_NULL +---------------------------- + + -- Data: mpi4py.MPI.WIN_NULL: *note Win: 76. = WIN_NULL + + Object ‘WIN_NULL’ of type *note Win: 76. + + +File: mpi4py.info, Node: mpi4py MPI FILE_NULL, Next: mpi4py MPI pickle, Prev: mpi4py MPI WIN_NULL, Up: mpi4py MPI<2> + +11.1.359 mpi4py.MPI.FILE_NULL +----------------------------- + + -- Data: mpi4py.MPI.FILE_NULL: *note File: 84. = FILE_NULL + + Object ‘FILE_NULL’ of type *note File: 84. + + +File: mpi4py.info, Node: mpi4py MPI pickle, Prev: mpi4py MPI FILE_NULL, Up: mpi4py MPI<2> + +11.1.360 mpi4py.MPI.pickle +-------------------------- + + -- Data: mpi4py.MPI.pickle: *note Pickle: d9. = + + Object ‘pickle’ of type *note Pickle: d9. + + +File: mpi4py.info, Node: Citation<2>, Next: Installation, Prev: Reference, Up: Top + +12 Citation +*********** + +If MPI for Python been significant to a project that leads to an +academic publication, please acknowledge that fact by citing the +project. + + * M. Rogowski, S. Aseeri, D. Keyes, and L. Dalcin, ‘mpi4py.futures: + MPI-Based Asynchronous Task Execution for Python’, IEEE + Transactions on Parallel and Distributed Systems, 34(2):611-622, + 2023. ‘https://doi.org/10.1109/TPDS.2022.3225481’ + + * L. Dalcin and Y.-L. L. Fang, ‘mpi4py: Status Update After 12 Years + of Development’, Computing in Science & Engineering, 23(4):47-54, + 2021. ‘https://doi.org/10.1109/MCSE.2021.3083216’ + + * L. Dalcin, P. Kler, R. Paz, and A. Cosimo, ‘Parallel Distributed + Computing using Python’, Advances in Water Resources, + 34(9):1124-1139, 2011. + ‘https://doi.org/10.1016/j.advwatres.2011.04.013’ + + * L. Dalcin, R. Paz, M. Storti, and J. D’Elia, ‘MPI for Python: + performance improvements and MPI-2 extensions’, Journal of Parallel + and Distributed Computing, 68(5):655-662, 2008. + ‘https://doi.org/10.1016/j.jpdc.2007.09.005’ + + * L. Dalcin, R. Paz, and M. Storti, ‘MPI for Python’, Journal of + Parallel and Distributed Computing, 65(9):1108-1115, 2005. + ‘https://doi.org/10.1016/j.jpdc.2005.03.010’ + + +File: mpi4py.info, Node: Installation, Next: Development, Prev: Citation<2>, Up: Top + +13 Installation +*************** + +* Menu: + +* Build backends:: +* Using pip:: +* Using conda:: +* Linux:: +* macOS:: +* Windows:: + + +File: mpi4py.info, Node: Build backends, Next: Using pip, Up: Installation + +13.1 Build backends +=================== + +mpi4py supports two different build backends: setuptools(1) (default), +scikit-build-core(2) (CMake(3)-based), and meson-python(4) +(Meson(5)-based). The build backend can be selected by setting the +*note MPI4PY_BUILD_BACKEND: 7b9. environment variable. + + -- Environment Variable: MPI4PY_BUILD_BACKEND + + + Choices: ‘"setuptools"’, ‘"scikit-build-core"’, ‘"meson-python"’ + + + Default: ‘"setuptools"’ + + Request a build backend for building mpi4py from sources. + +* Menu: + +* Using setuptools:: +* Using scikit-build-core:: +* Using meson-python:: + + ---------- Footnotes ---------- + + (1) https://setuptools.pypa.io/ + + (2) https://scikit-build-core.readthedocs.io/ + + (3) https://cmake.org/ + + (4) https://meson-python.readthedocs.io/ + + (5) https://mesonbuild.com/ + + +File: mpi4py.info, Node: Using setuptools, Next: Using scikit-build-core, Up: Build backends + +13.1.1 Using ‘setuptools’ +------------------------- + + Tip: Set the *note MPI4PY_BUILD_BACKEND: 7b9. environment variable + to ‘"setuptools"’ to use the setuptools(1) build backend. + +When using the default setuptools(2) build backend, mpi4py relies on the +legacy Python distutils framework to build C extension modules. The +following environment variables affect the build configuration. + + -- Environment Variable: MPI4PY_BUILD_MPICC + + The ‘mpicc’ compiler wrapper command is searched for in the + executable search path ( ‘PATH’ environment variable) and used to + compile the *note mpi4py.MPI: 3. C extension module. + Alternatively, use the *note MPI4PY_BUILD_MPICC: 7bb. environment + variable to the full path or command corresponding to the MPI-aware + C compiler. + + -- Environment Variable: MPI4PY_BUILD_MPILD + + The ‘mpicc’ compiler wrapper command is also used for linking the + *note mpi4py.MPI: 3. C extension module. Alternatively, use the + *note MPI4PY_BUILD_MPILD: 7bc. environment variable to specify the + full path or command corresponding to the MPI-aware C linker. + + -- Environment Variable: MPI4PY_BUILD_MPICFG + + If the MPI implementation does not provide a compiler wrapper, or + it is not installed in a default system location, all relevant + build information like include/library locations and library lists + can be provided in an ini-style configuration file under a ‘[mpi]’ + section. mpi4py can then be asked to use the custom build + information by setting the *note MPI4PY_BUILD_MPICFG: 7bd. + environment variable to the full path of the configuration file. + As an example, see the ‘mpi.cfg’ file located in the top level + mpi4py source directory. + + -- Environment Variable: MPI4PY_BUILD_CONFIGURE + + Some vendor MPI implementations may not provide complete coverage + of the MPI standard, or may provide partial features of newer MPI + standard versions while advertising support for an older version. + Setting the *note MPI4PY_BUILD_CONFIGURE: 7be. environment variable + to a non-empty string will trigger the run of exhaustive checks for + the availability of all MPI constants, predefined handles, and + routines. + +The following environment variables are aliases for the ones described +above. Having shorter names, they are convenient for occasional use in +the command line. Its usage is not recommended in automation scenarios +like packaging recipes, deployment scripts, and container image +creation. + + -- Environment Variable: MPICC + + Convenience alias for *note MPI4PY_BUILD_MPICC: 7bb. + + -- Environment Variable: MPILD + + Convenience alias for *note MPI4PY_BUILD_MPILD: 7bc. + + -- Environment Variable: MPICFG + + Convenience alias for *note MPI4PY_BUILD_MPICFG: 7bd. + + ---------- Footnotes ---------- + + (1) https://setuptools.pypa.io/ + + (2) https://setuptools.pypa.io/ + + +File: mpi4py.info, Node: Using scikit-build-core, Next: Using meson-python, Prev: Using setuptools, Up: Build backends + +13.1.2 Using ‘scikit-build-core’ +-------------------------------- + + Tip: Set the *note MPI4PY_BUILD_BACKEND: 7b9. environment variable + to ‘"scikit-build-core"’ to use the scikit-build-core(1) build + backend. + +When using the scikit-build-core(2) build backend, mpi4py delegates all +of MPI build configuration to CMake(3)’s FindMPI(4) module. Besides the +obvious advantage of cross-platform support, this delegation to CMake +may be convenient in build environments exposing vendor software stacks +via intricate module systems. Note however that mpi4py will not be able +to look for MPI routines available beyond the MPI standard version the +MPI implementation advertises to support (via the ‘MPI_VERSION’ and +‘MPI_SUBVERSION’ macro constants in the ‘mpi.h’ header file), any +missing MPI constant or symbol will prevent a successful build. + + ---------- Footnotes ---------- + + (1) https://scikit-build-core.readthedocs.io/ + + (2) https://scikit-build-core.readthedocs.io/ + + (3) https://cmake.org/ + + (4) https://cmake.org/cmake/help/latest/module/FindMPI.html + + +File: mpi4py.info, Node: Using meson-python, Prev: Using scikit-build-core, Up: Build backends + +13.1.3 Using ‘meson-python’ +--------------------------- + + Tip: Set the *note MPI4PY_BUILD_BACKEND: 7b9. environment variable + to ‘"meson-python"’ to use the meson-python(1) build backend. + +When using the meson-python(2) build backend, mpi4py delegates build +tasks to the Meson(3) build system. + + Warning: mpi4py support for the meson-python(4) build backend is + experimental. For the time being, users must set the CC(5) + environment variable to the command or path corresponding to the + ‘mpicc’ C compiler wrapper. + + ---------- Footnotes ---------- + + (1) https://meson-python.readthedocs.io/ + + (2) https://meson-python.readthedocs.io/ + + (3) https://mesonbuild.com/ + + (4) https://meson-python.readthedocs.io/ + + (5) https://docs.python.org/3/using/configure.html#envvar-CC + + +File: mpi4py.info, Node: Using pip, Next: Using conda, Prev: Build backends, Up: Installation + +13.2 Using ‘pip’ +================ + +You can install the latest mpi4py release from its source distribution +at PyPI(1) using ‘pip’: + + $ python -m pip install mpi4py + +You can also install the in-development version with: + + $ python -m pip install git+https://github.com/mpi4py/mpi4py + +or: + + $ python -m pip install https://github.com/mpi4py/mpi4py/tarball/master + + Note: Installing mpi4py from its source distribution (available at + PyPI) or Git source code repository (available at GitHub) requires + a C compiler and a working MPI implementation with development + headers and libraries. + + Warning: ‘pip’ keeps previously built wheel files on its cache for + future reuse. If you want to reinstall the ‘mpi4py’ package using + a different or updated MPI implementation, you have to either first + remove the cached wheel file with: + + $ python -m pip cache remove mpi4py + + or ask ‘pip’ to disable the cache: + + $ python -m pip install --no-cache-dir mpi4py + + ---------- Footnotes ---------- + + (1) https://pypi.org/project/mpi4py/ + + +File: mpi4py.info, Node: Using conda, Next: Linux, Prev: Using pip, Up: Installation + +13.3 Using ‘conda’ +================== + +The conda-forge(1) community provides ready-to-use binary packages from +an ever growing collection of software libraries built around the +multi-platform ‘conda’ package manager. Four MPI implementations are +available on conda-forge: Open MPI (Linux and macOS), MPICH (Linux and +macOS), Intel MPI (Linux and Windows) and Microsoft MPI (Windows). You +can install mpi4py and your preferred MPI implementation using the +‘conda’ package manager: + + * to use MPICH do: + + $ conda install -c conda-forge mpi4py mpich + + * to use Open MPI do: + + $ conda install -c conda-forge mpi4py openmpi + + * to use Intel MPI do: + + $ conda install -c conda-forge mpi4py impi_rt + + * to use Microsoft MPI do: + + $ conda install -c conda-forge mpi4py msmpi + +MPICH and many of its derivatives are ABI-compatible. You can provide +the package specification ‘mpich=X.Y.*=external_*’ (where ‘X’ and ‘Y’ +are the major and minor version numbers) to request the conda package +manager to use system-provided MPICH (or derivative) libraries. +Similarly, you can provide the package specification +‘openmpi=X.Y.*=external_*’ to use system-provided Open MPI libraries. + +The ‘openmpi’ package on conda-forge has built-in CUDA support, but it +is disabled by default. To enable it, follow the instruction outlined +during ‘conda install’. Additionally, UCX support is also available +once the ‘ucx’ package is installed. + + Warning: Binary conda-forge packages are built with a focus on + compatibility. The MPICH and Open MPI packages are build in a + constrained environment with relatively dated OS images. + Therefore, they may lack support for high-performance features like + cross-memory attach (XPMEM/CMA). In production scenarios, it is + recommended to use external (either custom-built or + system-provided) MPI installations. See the relevant conda-forge + documentation about using external MPI libraries(2) . + + ---------- Footnotes ---------- + + (1) https://conda-forge.org/ + + (2) +https://conda-forge.org/docs/user/tipsandtricks/#using-external-message-passing-interface-mpi-libraries + + +File: mpi4py.info, Node: Linux, Next: macOS, Prev: Using conda, Up: Installation + +13.4 Linux +========== + +On ‘Fedora Linux’ systems (as well as ‘RHEL’ and their derivatives using +the EPEL software repository), you can install binary packages with the +system package manager: + + * using ‘dnf’ and the ‘mpich’ package: + + $ sudo dnf install python3-mpi4py-mpich + + * using ‘dnf’ and the ‘openmpi’ package: + + $ sudo dnf install python3-mpi4py-openmpi + +Please remember to load the correct MPI module for your chosen MPI +implementation: + + * for the ‘mpich’ package do: + + $ module load mpi/mpich-$(arch) + $ python -c "from mpi4py import MPI" + + * for the ‘openmpi’ package do: + + $ module load mpi/openmpi-$(arch) + $ python -c "from mpi4py import MPI" + +On ‘Ubuntu Linux’ and ‘Debian Linux’ systems, binary packages are +available for installation using the system package manager: + + $ sudo apt install python3-mpi4py + +Note that on Ubuntu/Debian systems, the mpi4py package uses Open MPI. To +use MPICH, install the ‘libmpich-dev’ and ‘python3-dev’ packages (and +any other required development tools). Afterwards, install mpi4py from +sources using ‘pip’. + + +File: mpi4py.info, Node: macOS, Next: Windows, Prev: Linux, Up: Installation + +13.5 macOS +========== + +‘macOS’ users can install mpi4py using the Homebrew(1) package manager: + + $ brew install mpi4py + +Note that the Homebrew mpi4py package uses Open MPI. Alternatively, +install the ‘mpich’ package and next install mpi4py from sources using +‘pip’. + + ---------- Footnotes ---------- + + (1) https://brew.sh/ + + +File: mpi4py.info, Node: Windows, Prev: macOS, Up: Installation + +13.6 Windows +============ + +‘Windows’ users can install mpi4py from binary wheels hosted on the +Python Package Index (PyPI) using ‘pip’: + + $ python -m pip install mpi4py + +The Windows wheels available on PyPI are specially crafted to work with +either the Intel MPI(1) or the Microsoft MPI(2) runtime, therefore +requiring a separate installation of any one of these packages. + +Intel MPI is under active development and supports recent version of the +MPI standard. Intel MPI can be installed with ‘pip’ (see the impi-rt(3) +package on PyPI), being therefore straightforward to get it up and +running within a Python environment. Intel MPI can also be installed +system-wide as part of the Intel HPC Toolkit for Windows or via +standalone online/offline installers. + + ---------- Footnotes ---------- + + (1) https://software.intel.com/intel-mpi-library + + (2) +https://learn.microsoft.com/message-passing-interface/microsoft-mpi + + (3) https://pypi.org/project/impi-rt/ + + +File: mpi4py.info, Node: Development, Next: Guidelines, Prev: Installation, Up: Top + +14 Development +************** + +* Menu: + +* Prerequisites:: +* Building:: +* Installing:: +* Testing:: + + +File: mpi4py.info, Node: Prerequisites, Next: Building, Up: Development + +14.1 Prerequisites +================== + +You need to have the following software properly installed to develop +‘MPI for Python’: + + * Python(1) 3.6 or above. + + * The Cython(2) compiler. + + * A working MPI(3) implementation like MPICH(4) or Open MPI(5), + preferably supporting MPI-4 and built with shared/dynamic + libraries. + +Optionally, consider installing the following packages: + + * NumPy(6) for enabling comprehensive testing of MPI communication. + + * CuPy(7) for enabling comprehensive testing with a GPU-aware MPI. + + * Sphinx(8) to build the documentation. + + Tip: Most routine development tasks like building, installing in + editable mode, testing, and generating documentation can be + performed with the spin(9) developer tool. Run ‘spin’ at the top + level source directory for a list of available subcommands. + + ---------- Footnotes ---------- + + (1) https://www.python.org/ + + (2) https://cython.org/ + + (3) https://www.mpi-forum.org/ + + (4) https://www.mpich.org/ + + (5) https://www.open-mpi.org/ + + (6) https://numpy.org/ + + (7) https://cupy.dev/ + + (8) https://www.sphinx-doc.org/ + + (9) https://github.com/scientific-python/spin + + +File: mpi4py.info, Node: Building, Next: Installing, Prev: Prerequisites, Up: Development + +14.2 Building +============= + +‘MPI for Python’ uses ‘setuptools’-based build system that relies on the +‘setup.py’ file. Some setuptools commands (e.g., ‘build’) accept +additional options: + + -- Program Option: --mpi= + + Lets you pass a section with MPI configuration within a special + configuration file. Alternatively, you can use the *note MPICFG: + 7c1. environment variable. + + -- Program Option: --mpicc= + + Specify the path or name of the ‘mpicc’ C compiler wrapper. + Alternatively, use the *note MPICC: 7bf. environment variable. + + -- Program Option: --mpild= + + Specify the full path or name for the MPI-aware C linker. + Alternatively, use the *note MPILD: 7c0. environment variable. If + not set, the ‘mpicc’ C compiler wrapper is used for linking. + + -- Program Option: --configure + + Runs exhaustive tests for checking about missing MPI types, + constants, and functions. This option should be passed in order to + build ‘MPI for Python’ against old MPI-1, MPI-2, or MPI-3 + implementations, possibly providing a subset of MPI-4. + +If you use a MPI implementation providing a ‘mpicc’ C compiler wrapper +(e.g., MPICH or Open MPI), it will be used for compilation and linking. +This is the preferred and easiest way to build ‘MPI for Python’. + +If ‘mpicc’ is found in the executable search path ( ‘PATH’ environment +variable), simply run the ‘build’ command: + + $ python setup.py build + +If ‘mpicc’ is not in your search path or the compiler wrapper has a +different name, you can run the ‘build’ command specifying its location, +either via the *note –mpicc: 7d4. command option or using the *note +MPICC: 7bf. environment variable: + + $ python setup.py build --mpicc=/path/to/mpicc + $ env MPICC=/path/to/mpicc python setup.py build + +Alternatively, you can provide all the relevant information about your +MPI implementation by editing the ‘mpi.cfg’ file located in the top +level source directory. You can use the default section ‘[mpi]’ or add +a new custom section, for example ‘[vendor_mpi]’ (see the examples +provided in the ‘mpi.cfg’ file as a starting point to write your own +section): + + [mpi] + include_dirs = /usr/local/mpi/include + libraries = mpi + library_dirs = /usr/local/mpi/lib + runtime_library_dirs = /usr/local/mpi/lib + + [vendor_mpi] + include_dirs = /opt/mpi/include ... + libraries = mpi ... + library_dirs = /opt/mpi/lib ... + runtime_library_dirs = /opt/mpi/lib ... + + ... + +and then run the ‘build’ command specifying you custom configuration +section: + + $ python setup.py build --mpi=vendor_mpi + $ env MPICFG=vendor_mpi python setup.py build + + +File: mpi4py.info, Node: Installing, Next: Testing, Prev: Building, Up: Development + +14.3 Installing +=============== + +‘MPI for Python’ can be installed in editable mode: + + $ python -m pip install --editable . + +After modifying Cython sources, an in-place rebuild is needed: + + $ python setup.py build --inplace + + +File: mpi4py.info, Node: Testing, Prev: Installing, Up: Development + +14.4 Testing +============ + +To quickly test the installation: + + $ mpiexec -n 5 python -m mpi4py.bench helloworld + Hello, World! I am process 0 of 5 on localhost. + Hello, World! I am process 1 of 5 on localhost. + Hello, World! I am process 2 of 5 on localhost. + Hello, World! I am process 3 of 5 on localhost. + Hello, World! I am process 4 of 5 on localhost. + + $ mpiexec -n 5 python -m mpi4py.bench ringtest -l 10 -n 1048576 + time for 10 loops = 0.00361614 seconds (5 processes, 1048576 bytes) + +If you installed from a git clone or the source distribution, issuing at +the command line: + + $ mpiexec -n 5 python demo/helloworld.py + +will launch a five-process run of the Python interpreter and run the +demo script ‘demo/helloworld.py’ from the source distribution. + +You can also run all the ‘unittest’ scripts: + + $ mpiexec -n 5 python test/main.py + +or, if you have the pytest(1) unit testing framework installed: + + $ mpiexec -n 5 pytest + + ---------- Footnotes ---------- + + (1) https://docs.pytest.org/ + + +File: mpi4py.info, Node: Guidelines, Next: LICENSE, Prev: Development, Up: Top + +15 Guidelines +************* + +* Menu: + +* Fair play:: + + +File: mpi4py.info, Node: Fair play, Up: Guidelines + +15.1 Fair play +============== + +* Menu: + +* Summary:: +* Motivation:: +* Scope:: +* Fair play rules:: + + +File: mpi4py.info, Node: Summary, Next: Motivation, Up: Fair play + +15.1.1 Summary +-------------- + +This section defines Rules of Play for companies and outside developers +that engage with the mpi4py project. It covers: + + * Restrictions on use of the mpi4py name. + + * How and whether to publish a modified distribution. + + * How to make us aware of patched versions. + +After reading this section, companies and developers will know what +kinds of behavior the mpi4py developers and contributors would like to +see, and which we consider troublesome, bothersome, and unacceptable. + +This document is a close adaptation of NumPy NEP 36(1). + + ---------- Footnotes ---------- + + (1) https://numpy.org/neps/nep-0036-fair-play.html + + +File: mpi4py.info, Node: Motivation, Next: Scope, Prev: Summary, Up: Fair play + +15.1.2 Motivation +----------------- + +Occasionally, we learn of modified mpi4py versions and binary +distributions circulated by outsiders. These patched versions can cause +problems to mpi4py users (see, e.g., mpi4py/mpi4py#508(1)). When issues +like these arise, our developers waste time identifying the problematic +release, locating alterations, and determining an appropriate course of +action. + +In addition, packages on the Python Packaging Index are sometimes named +such that users assume they are sanctioned or maintained by the mpi4py +developers. We wish to reduce the number of such incidents. + + ---------- Footnotes ---------- + + (1) https://github.com/mpi4py/mpi4py/issues/508 + + +File: mpi4py.info, Node: Scope, Next: Fair play rules, Prev: Motivation, Up: Fair play + +15.1.3 Scope +------------ + +This document aims to define a minimal set of rules that, when followed, +will be considered good-faith efforts in line with the expectations of +the mpi4py developers and contributors. + +Our hope is that companies and outside developers who feel they need to +modify mpi4py will first consider contributing to the project, or use +alternative mechanisms for patching and extending mpi4py. + +When in doubt, please talk to us first(1). We may suggest an +alternative; at minimum, we’ll be informed and we may even grant an +exception if deemed appropriate. + + ---------- Footnotes ---------- + + (1) https://github.com/mpi4py/mpi4py/discussions/ + + +File: mpi4py.info, Node: Fair play rules, Prev: Scope, Up: Fair play + +15.1.4 Fair play rules +---------------------- + + 1. Do not reuse the mpi4py name for projects not affiliated with the + mpi4py project. + + At time of writing, there are only a handful of ‘mpi4py’-named + packages developed by the mpi4py project, including ‘mpi4py’ and + ‘mpi4py-fft’. We ask that outside packages not include the phrase + ‘mpi4py’, i.e., avoid names such as ‘mycompany-mpi4py’ or + ‘mpi4py-mycompany’. + + To be clear, this rule only applies to modules (package names); it + is perfectly acceptable to have a ‘submodule’ of your own package + named ‘mycompany.mpi4py’. + + 2. Do not publish binary mpi4py wheels on PyPI (‘https://pypi.org/’). + + We ask companies and outside developers to not publish binary + mpi4py wheels in the main Python Package Index + (‘https://pypi.org/’) under names such ‘mpi4py-mpich’, + ‘mpi4py-openmpi’, or ‘mpi4py-vendor_mpi’. + + The usual approaches to build binary Python wheels involve the + embedding of dependent shared libraries. While such an approach + may seem convenient and often is, in the particular case of MPI and + mpi4py it is ultimately harmful to end users. Embedding the MPI + shared libraries would prevent the use of external, system-provided + MPI installations with hardware-specific optimizations and + site-specific tweaks. + + The MPI Forum is currently discussing the standardization of a + proposal for an Application Binary Interface (ABI) for MPI, see + *note [mpi-abi-paper]: 7e4. and *note [mpi-abi-issue]: 7e5. Such + standardization will allow for any binary dependent on the MPI + library to be used with multiple MPI backends. Once this proposal + becomes part of the MPI standard, the mpi4py project will consider + publishing on PyPI binary wheels capable of using any backend MPI + implementation supporting the new MPI ABI specification. In the + mean time, mpi4py is currently distributing experimental MPI and + mpi4py binary wheels on ‘https://anaconda.org/mpi4py’. + + (mpi-abi-paper) J. Hammond, L. Dalcin, E. Schnetter, M. Pérache, J. + B. Besnard, J. Brown, G. Brito Gadeschi, S. Byrne, J. Schuchart, + and H. Zhou. MPI Application Binary Interface Standardization. + EuroMPI 2023, Bristol, UK, September 2023. + ‘https://doi.org/10.1145/3615318.3615319’ + + (mpi-abi-issue) MPI Forum GitHub Issue: ‘MPI needs a standard ABI’. + ‘https://github.com/mpi-forum/mpi-issues/issues/751’ + + 3. Do not republish modified versions of mpi4py. + + Modified versions of mpi4py make it very difficult for the + developers to address bug reports, since we typically do not know + which parts of mpi4py have been modified. + + If you have to break this rule (and we implore you not to!), then + make it clear in the ‘__version__’ tag that you have modified + mpi4py, e.g.: + + >>> print(mpi4py.__version__) + '4.0.0+mycompany.13` + + We understand that minor patches are often required to make a + library work inside of a package ecosystem. This is totally + acceptable, but we ask that no substantive changes are made. + + 4. Do not extend or modify mpi4py’s API. + + If you absolutely have to break the previous rule, please do not + add additional functions to the namespace, or modify the API of + existing functions. Having additional functions exposed in + distributed versions is confusing for users and developers alike. + + +File: mpi4py.info, Node: LICENSE, Next: CHANGES, Prev: Guidelines, Up: Top + +16 LICENSE +********** + +Copyright (c) 2024, Lisandro Dalcin + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS +IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +File: mpi4py.info, Node: CHANGES, Next: Python Module Index, Prev: LICENSE, Up: Top + +17 CHANGES +********** + +* Menu: + +* Release 4.0.0 [2024-07-28]: Release 4 0 0 [2024-07-28]. +* Release 3.1.6 [2024-04-14]: Release 3 1 6 [2024-04-14]. +* Release 3.1.5 [2023-10-04]: Release 3 1 5 [2023-10-04]. +* Release 3.1.4 [2022-11-02]: Release 3 1 4 [2022-11-02]. +* Release 3.1.3 [2021-11-25]: Release 3 1 3 [2021-11-25]. +* Release 3.1.2 [2021-11-04]: Release 3 1 2 [2021-11-04]. +* Release 3.1.1 [2021-08-14]: Release 3 1 1 [2021-08-14]. +* Release 3.1.0 [2021-08-12]: Release 3 1 0 [2021-08-12]. +* Release 3.0.3 [2019-11-04]: Release 3 0 3 [2019-11-04]. +* Release 3.0.2 [2019-06-11]: Release 3 0 2 [2019-06-11]. +* Release 3.0.1 [2019-02-15]: Release 3 0 1 [2019-02-15]. +* Release 3.0.0 [2017-11-08]: Release 3 0 0 [2017-11-08]. +* Release 2.0.0 [2015-10-18]: Release 2 0 0 [2015-10-18]. +* Release 1.3.1 [2013-08-07]: Release 1 3 1 [2013-08-07]. +* Release 1.3 [2012-01-20]: Release 1 3 [2012-01-20]. +* Release 1.2.2 [2010-09-13]: Release 1 2 2 [2010-09-13]. +* Release 1.2.1 [2010-02-26]: Release 1 2 1 [2010-02-26]. +* Release 1.2 [2009-12-29]: Release 1 2 [2009-12-29]. +* Release 1.1.0 [2009-06-06]: Release 1 1 0 [2009-06-06]. +* Release 1.0.0 [2009-03-20]: Release 1 0 0 [2009-03-20]. + + +File: mpi4py.info, Node: Release 4 0 0 [2024-07-28], Next: Release 3 1 6 [2024-04-14], Up: CHANGES + +17.1 Release 4.0.0 [2024-07-28] +=============================== + + * New features: + + + Add support for the MPI-4.0 standard. + + - Use large count MPI-4 routines. + + - Add persistent collective communication. + + - Add partitioned point-to-point communication. + + - Add new communicator constructors. + + - Add the ‘Session’ class and its methods. + + + Add support for the MPI-4.1 standard. + + - Add non-destructive completion test for multiple + requests. + + - Add value-index datatype constructor. + + - Add communicator/session buffer attach/detach/flush. + + - Support for removal of error classes/codes/strings. + + - Support for querying hardware resource information. + + + Add preliminary support for the upcoming MPI-5.0 standard. + + - User-level failure mitigation (ULFM). + + + ‘mpi4py.util.pool’: New drop-in replacement for + ‘multiprocessing.pool’. + + + ‘mpi4py.util.sync’: New synchronization utilities. + + + Add runtime check for mismatch between ‘mpiexec’ and MPI + library. + + + Support scikit-build-core(1) as an alternative build backend. + + + Support meson-python(2) as an alternative build backend. + + * Enhancements: + + + ‘mpi4py.futures’: Support for parallel tasks. + + + ‘mpi4py.futures’: Report exception tracebacks in workers. + + + ‘mpi4py.util.pkl5’: Add support for collective communication. + + + Add methods ‘Datatype.fromcode()’, ‘Datatype.tocode()’ and + attributes ‘Datatype.typestr’, ‘Datatype.typechar’ to simplify + NumPy interoperability for simple cases. + + + Add methods ‘Comm.Create_errhandler()’, + ‘Win.Create_errhandler()’, and ‘File.Create_errhandler()’ to + create custom error handlers. + + + Add support for pickle serialization of instances of MPI + types. All instances of ‘Datatype’, ‘Info’, and ‘Status’ can + be serialized. Instances of ‘Op’ can be serialized only if + created through ‘mpi4py’ by calling ‘Op.Create()’. Instances + of other MPI types can be serialized only if they reference + predefined handles. + + + Add ‘handle’ attribute and ‘fromhandle()’ class method to MPI + classes to ease interoperability with external code. The + handle value is a unsigned integer guaranteed to fit on the + platform’s ‘uintptr_t’ C type. + + + Add lowercase ‘free()’ method to MPI classes to ease MPI + object deallocation and cleanup. This method eventually + attempts to call ‘Free()’, but only if the object’s MPI handle + is not a null or predefined handle, and such call is allowed + within the World Model init/finalize. + + * Backward-incompatible changes: + + + Python 2 is no longer supported, Python 3.6+ is required, but + typing stubs are supported for Python 3.8+. + + + The ‘Intracomm.Create_group()’ method is no longer defined in + the base ‘Comm’ class. + + + ‘Group.Compare()’ and ‘Comm.Compare()’ are no longer class + methods but instance methods. Existing codes using the former + class methods are expected to continue working. + + + ‘Group.Translate_ranks()’ is no longer a class method but an + instance method. Existing codes using the former class method + are expected to continue working. + + + The ‘LB’ and ‘UB’ datatypes are no longer available, use + ‘Datatype.Create_resized()’ instead. + + + The ‘HOST’ predefined attribute key is no longer available. + + + The ‘MPI.memory’ class has been renamed to ‘MPI.buffer’. The + old name is still available as an alias to the new name. + + + The ‘mpi4py.dl’ module is no longer available. + + + The ‘mpi4py.get_config’ function returns an empty dictionary. + + * Miscellaneous: + + + The project is now licenced under the BSD-3-Clause license. + This change is fairly inconsequential for users and + distributors. It simply adds an additional clause against + using contributor names for promotional purposes without their + consent. + + + Add a new guidelines section to documentation laying out new + fair play rules. These rules ask companies and outside + developers to refrain from reusing the ‘mpi4py’ name in + unaffiliated projects, publishing binary mpi4py wheels on the + main Python Package Index (PyPI), and distributing modified + versions with incompatible or extended API changes. The + primary motivation of these rules is to avoid fragmentation + and end-user confusion. + + ---------- Footnotes ---------- + + (1) https://scikit-build.readthedocs.io/ + + (2) https://meson-python.readthedocs.io/ + + +File: mpi4py.info, Node: Release 3 1 6 [2024-04-14], Next: Release 3 1 5 [2023-10-04], Prev: Release 4 0 0 [2024-07-28], Up: CHANGES + +17.2 Release 3.1.6 [2024-04-14] +=============================== + + Warning: This is the last release supporting Python 2. + + * Fix various build issues. + + +File: mpi4py.info, Node: Release 3 1 5 [2023-10-04], Next: Release 3 1 4 [2022-11-02], Prev: Release 3 1 6 [2024-04-14], Up: CHANGES + +17.3 Release 3.1.5 [2023-10-04] +=============================== + + Warning: This is the last release supporting Python 2. + + * Rebuild C sources with Cython 0.29.36 to support Python 3.12. + + +File: mpi4py.info, Node: Release 3 1 4 [2022-11-02], Next: Release 3 1 3 [2021-11-25], Prev: Release 3 1 5 [2023-10-04], Up: CHANGES + +17.4 Release 3.1.4 [2022-11-02] +=============================== + + Warning: This is the last release supporting Python 2. + + * Rebuild C sources with Cython 0.29.32 to support Python 3.11. + + * Fix contiguity check for DLPack and CAI buffers. + + * Workaround build failures with setuptools v60. + + +File: mpi4py.info, Node: Release 3 1 3 [2021-11-25], Next: Release 3 1 2 [2021-11-04], Prev: Release 3 1 4 [2022-11-02], Up: CHANGES + +17.5 Release 3.1.3 [2021-11-25] +=============================== + + Warning: This is the last release supporting Python 2. + + * Add missing support for ‘MPI.BOTTOM’ to generalized all-to-all + collectives. + + +File: mpi4py.info, Node: Release 3 1 2 [2021-11-04], Next: Release 3 1 1 [2021-08-14], Prev: Release 3 1 3 [2021-11-25], Up: CHANGES + +17.6 Release 3.1.2 [2021-11-04] +=============================== + + Warning: This is the last release supporting Python 2. + + * ‘mpi4py.futures’: Add ‘_max_workers’ property to ‘MPIPoolExecutor’. + + * ‘mpi4py.util.dtlib’: Fix computation of alignment for predefined + datatypes. + + * ‘mpi4py.util.pkl5’: Fix deadlock when using ‘ssend()’ + ‘mprobe()’. + + * ‘mpi4py.util.pkl5’: Add environment variable + ‘MPI4PY_PICKLE_THRESHOLD’. + + * ‘mpi4py.rc’: Interpret ‘"y"’ and ‘"n"’ strings as boolean values. + + * Fix/add typemap/typestr for ‘MPI.WCHAR’/‘MPI.COUNT’ datatypes. + + * Minor fixes and additions to documentation. + + * Minor fixes to typing support. + + * Support for local version identifier (PEP-440). + + +File: mpi4py.info, Node: Release 3 1 1 [2021-08-14], Next: Release 3 1 0 [2021-08-12], Prev: Release 3 1 2 [2021-11-04], Up: CHANGES + +17.7 Release 3.1.1 [2021-08-14] +=============================== + + Warning: This is the last release supporting Python 2. + + * Fix typo in Requires-Python package metadata. + + * Regenerate C sources with Cython 0.29.24. + + +File: mpi4py.info, Node: Release 3 1 0 [2021-08-12], Next: Release 3 0 3 [2019-11-04], Prev: Release 3 1 1 [2021-08-14], Up: CHANGES + +17.8 Release 3.1.0 [2021-08-12] +=============================== + + Warning: This is the last release supporting Python 2. + + * New features: + + + ‘mpi4py.util’: New package collecting miscellaneous utilities. + + * Enhancements: + + + Add pickle-based ‘Request.waitsome()’ and + ‘Request.testsome()’. + + + Add lowercase methods ‘Request.get_status()’ and + ‘Request.cancel()’. + + + Support for passing Python GPU arrays compliant with the + DLPack(1) data interchange mechanism (link(2)) and the + ‘__cuda_array_interface__’ (CAI) standard (link(3)) to + uppercase methods. This support requires that mpi4py is built + against CUDA-aware MPI(4) implementations. This feature is + currently experimental and subject to future changes. + + + ‘mpi4py.futures’: Add support for initializers and canceling + futures at shutdown. Environment variables names now follow + the pattern ‘MPI4PY_FUTURES_*’, the previous ‘MPI4PY_*’ names + are deprecated. + + + Add type annotations to Cython code. The first line of the + docstring of functions and methods displays a signature + including type annotations. + + + Add companion stub files to support type checkers. + + + Support for weak references. + + * Miscellaneous: + + + Add a new mpi4py publication (link(5)) to the citation + listing. + + ---------- Footnotes ---------- + + (1) https://github.com/dmlc/dlpack + + (2) +https://data-apis.org/array-api/latest/design_topics/data_interchange.html + + (3) +https://numba.readthedocs.io/en/stable/cuda/cuda_array_interface.html + + (4) https://developer.nvidia.com/blog/introduction-cuda-aware-mpi/ + + (5) https://doi.org/10.1109/MCSE.2021.3083216 + + +File: mpi4py.info, Node: Release 3 0 3 [2019-11-04], Next: Release 3 0 2 [2019-06-11], Prev: Release 3 1 0 [2021-08-12], Up: CHANGES + +17.9 Release 3.0.3 [2019-11-04] +=============================== + + * Regenerate Cython wrappers to support Python 3.8. + + +File: mpi4py.info, Node: Release 3 0 2 [2019-06-11], Next: Release 3 0 1 [2019-02-15], Prev: Release 3 0 3 [2019-11-04], Up: CHANGES + +17.10 Release 3.0.2 [2019-06-11] +================================ + + * Bug fixes: + + + Fix handling of readonly buffers in support for Python 2 + legacy buffer interface. The issue triggers only when using a + buffer-like object that is readonly and does not export the + new Python 3 buffer interface. + + + Fix build issues with Open MPI 4.0.x series related to removal + of many MPI-1 symbols deprecated in MPI-2 and removed in + MPI-3. + + + Minor documentation fixes. + + +File: mpi4py.info, Node: Release 3 0 1 [2019-02-15], Next: Release 3 0 0 [2017-11-08], Prev: Release 3 0 2 [2019-06-11], Up: CHANGES + +17.11 Release 3.0.1 [2019-02-15] +================================ + + * Bug fixes: + + + Fix ‘Comm.scatter()’ and other collectives corrupting input + send list. Add safety measures to prevent related issues in + global reduction operations. + + + Fix error-checking code for counts in ‘Op.Reduce_local()’. + + * Enhancements: + + + Map size-specific Python/NumPy typecodes to MPI datatypes. + + + Allow partial specification of target list/tuple arguments in + the various ‘Win’ RMA methods. + + + Workaround for removal of ‘MPI_{LB|UB}’ in Open MPI 4.0. + + + Support for Microsoft MPI v10.0. + + +File: mpi4py.info, Node: Release 3 0 0 [2017-11-08], Next: Release 2 0 0 [2015-10-18], Prev: Release 3 0 1 [2019-02-15], Up: CHANGES + +17.12 Release 3.0.0 [2017-11-08] +================================ + + * New features: + + + ‘mpi4py.futures’: Execute computations asynchronously using a + pool of MPI processes. This package is based on + ‘concurrent.futures’ from the Python standard library. + + + ‘mpi4py.run’: Run Python code and abort execution in case of + unhandled exceptions to prevent deadlocks. + + + ‘mpi4py.bench’: Run basic MPI benchmarks and tests. + + * Enhancements: + + + Lowercase, pickle-based collective communication calls are now + thread-safe through the use of fine-grained locking. + + + The ‘MPI’ module now exposes a ‘memory’ type which is a + lightweight variant of the builtin ‘memoryview’ type, but + exposes both the legacy Python 2 and the modern Python 3 + buffer interface under a Python 2 runtime. + + + The ‘MPI.Comm.Alltoallw()’ method now uses ‘count=1’ and + ‘displ=0’ as defaults, assuming that messages are specified + through user-defined datatypes. + + + The ‘Request.Wait[all]()’ methods now return ‘True’ to match + the interface of ‘Request.Test[all]()’. + + + The ‘Win’ class now implements the Python buffer interface. + + * Backward-incompatible changes: + + + The ‘buf’ argument of the ‘MPI.Comm.recv()’ method is + deprecated, passing anything but ‘None’ emits a warning. + + + The ‘MPI.Win.memory’ property was removed, use the + ‘MPI.Win.tomemory()’ method instead. + + + Executing ‘python -m mpi4py’ in the command line is now + equivalent to ‘python -m mpi4py.run’. For the former + behavior, use ‘python -m mpi4py.bench’. + + + Python 2.6 and 3.2 are no longer supported. The ‘mpi4py.MPI’ + module may still build and partially work, but other + pure-Python modules under the ‘mpi4py’ namespace will not. + + + Windows: Remove support for legacy MPICH2, Open MPI, and + DeinoMPI. + + +File: mpi4py.info, Node: Release 2 0 0 [2015-10-18], Next: Release 1 3 1 [2013-08-07], Prev: Release 3 0 0 [2017-11-08], Up: CHANGES + +17.13 Release 2.0.0 [2015-10-18] +================================ + + * Support for MPI-3 features. + + + Matched probes and receives. + + + Nonblocking collectives. + + + Neighborhood collectives. + + + New communicator constructors. + + + Request-based RMA operations. + + + New RMA communication and synchronisation calls. + + + New window constructors. + + + New datatype constructor. + + + New C++ boolean and floating complex datatypes. + + * Support for MPI-2 features not included in previous releases. + + + Generalized All-to-All collective (‘Comm.Alltoallw()’) + + + User-defined data representations (‘Register_datarep()’) + + * New scalable implementation of reduction operations for Python + objects. This code is based on binomial tree algorithms using + point-to-point communication and duplicated communicator contexts. + To disable this feature, use ‘mpi4py.rc.fast_reduce = False’. + + * Backward-incompatible changes: + + + Python 2.4, 2.5, 3.0 and 3.1 are no longer supported. + + + Default MPI error handling policies are overridden. After + import, mpi4py sets the ‘ERRORS_RETURN’ error handler in + ‘COMM_SELF’ and ‘COMM_WORLD’, as well as any new ‘Comm’, + ‘Win’, or ‘File’ instance created through mpi4py, thus + effectively ignoring the MPI rules about error handler + inheritance. This way, MPI errors translate to Python + exceptions. To disable this behavior and use the standard MPI + error handling rules, use ‘mpi4py.rc.errors = 'default'’. + + + Change signature of all send methods, ‘dest’ is a required + argument. + + + Change signature of all receive and probe methods, ‘source’ + defaults to ‘ANY_SOURCE’, ‘tag’ defaults to ‘ANY_TAG’. + + + Change signature of send lowercase-spelling methods, ‘obj’ + arguments are not mandatory. + + + Change signature of recv lowercase-spelling methods, renamed + ‘obj’ arguments to ‘buf’. + + + Change ‘Request.Waitsome()’ and ‘Request.Testsome()’ to return + ‘None’ or ‘list’. + + + Change signature of all lowercase-spelling collectives, + ‘sendobj’ arguments are now mandatory, ‘recvobj’ arguments + were removed. + + + Reduction operations ‘MAXLOC’ and ‘MINLOC’ are no longer + special-cased in lowercase-spelling methods + ‘Comm.[all]reduce()’ and ‘Comm.[ex]scan()’, the input object + must be specified as a tuple ‘(obj, location)’. + + + Change signature of name publishing functions. The new + signatures are ‘Publish_name(service_name, port_name, + info=INFO_NULL)’ and ‘Unpublish_name(service_name, port_name, + info=INFO_NULL)`’. + + + ‘Win’ instances now cache Python objects exposing memory by + keeping references instead of using MPI attribute caching. + + + Change signature of ‘Win.Lock()’. The new signature is + ‘Win.Lock(rank, lock_type=LOCK_EXCLUSIVE, assertion=0)’. + + + Move ‘Cartcomm.Map()’ to ‘Intracomm.Cart_map()’. + + + Move ‘Graphcomm.Map()’ to ‘Intracomm.Graph_map()’. + + + Remove the ‘mpi4py.MPE’ module. + + + Rename the Cython definition file for use with ‘cimport’ + statement from ‘mpi_c.pxd’ to ‘libmpi.pxd’. + + +File: mpi4py.info, Node: Release 1 3 1 [2013-08-07], Next: Release 1 3 [2012-01-20], Prev: Release 2 0 0 [2015-10-18], Up: CHANGES + +17.14 Release 1.3.1 [2013-08-07] +================================ + + * Regenerate C wrappers with Cython 0.19.1 to support Python 3.3. + + * Install ‘*.pxd’ files in ‘/mpi4py’ to ease the + support for Cython’s ‘cimport’ statement in code requiring to + access mpi4py internals. + + * As a side-effect of using Cython 0.19.1, ancient Python 2.3 is no + longer supported. If you really need it, you can install an older + Cython and run ‘python setup.py build_src --force’. + + +File: mpi4py.info, Node: Release 1 3 [2012-01-20], Next: Release 1 2 2 [2010-09-13], Prev: Release 1 3 1 [2013-08-07], Up: CHANGES + +17.15 Release 1.3 [2012-01-20] +============================== + + * Now ‘Comm.recv()’ accept a buffer to receive the message. + + * Add ‘Comm.irecv()’ and ‘Request.{wait|test}[any|all]()’. + + * Add ‘Intracomm.Spawn_multiple()’. + + * Better buffer handling for PEP 3118 and legacy buffer interfaces. + + * Add support for attribute attribute caching on communicators, + datatypes and windows. + + * Install MPI-enabled Python interpreter as + ‘/mpi4py/bin/python-mpi’. + + * Windows: Support for building with Open MPI. + + +File: mpi4py.info, Node: Release 1 2 2 [2010-09-13], Next: Release 1 2 1 [2010-02-26], Prev: Release 1 3 [2012-01-20], Up: CHANGES + +17.16 Release 1.2.2 [2010-09-13] +================================ + + * Add ‘mpi4py.get_config()’ to retrieve information (compiler + wrappers, includes, libraries, etc) about the MPI implementation + employed to build mpi4py. + + * Workaround Python libraries with missing GILState-related API calls + in case of non-threaded Python builds. + + * Windows: look for MPICH2, DeinoMPI, Microsoft HPC Pack at their + default install locations under %ProgramFiles. + + * MPE: fix hacks related to old API’s, these hacks are broken when + MPE is built with a MPI implementations other than MPICH2. + + * HP-MPI: fix for missing Fortran datatypes, use dlopen() to load the + MPI shared library before MPI_Init() + + * Many distutils-related fixes, cleanup, and enhancements, better + logics to find MPI compiler wrappers. + + * Support for ‘pip install mpi4py’. + + +File: mpi4py.info, Node: Release 1 2 1 [2010-02-26], Next: Release 1 2 [2009-12-29], Prev: Release 1 2 2 [2010-09-13], Up: CHANGES + +17.17 Release 1.2.1 [2010-02-26] +================================ + + * Fix declaration in Cython include file. This declaration, while + valid for Cython, broke the simple-minded parsing used in + conf/mpidistutils.py to implement configure-tests for availability + of MPI symbols. + + * Update SWIG support and make it compatible with Python 3. Also + generate an warning for SWIG < 1.3.28. + + * Fix distutils-related issues in Mac OS X. Now ARCHFLAGS environment + variable is honored of all Python’s ‘config/Makefile’ variables. + + * Fix issues with Open MPI < 1.4.2 related to error checking and + ‘MPI_XXX_NULL’ handles. + + +File: mpi4py.info, Node: Release 1 2 [2009-12-29], Next: Release 1 1 0 [2009-06-06], Prev: Release 1 2 1 [2010-02-26], Up: CHANGES + +17.18 Release 1.2 [2009-12-29] +============================== + + * Automatic MPI datatype discovery for NumPy arrays and PEP-3118 + buffers. Now buffer-like objects can be messaged directly, it is + no longer required to explicitly pass a 2/3-list/tuple like ‘[data, + MPI.DOUBLE]’, or ‘[data, count, MPI.DOUBLE]’. Only basic types are + supported, i.e., all C/C99-native signed/unsigned integral types + and single/double precision real/complex floating types. Many + thanks to Eilif Muller for the initial feedback. + + * Nonblocking send of pickled Python objects. Many thanks to Andreas + Kloeckner for the initial patch and enlightening discussion about + this enhancement. + + * ‘Request’ instances now hold a reference to the Python object + exposing the buffer involved in point-to-point communication or + parallel I/O. Many thanks to Andreas Kloeckner for the initial + feedback. + + * Support for logging of user-defined states and events using MPE(1). + Runtime (i.e., without requiring a recompile!) activation of + logging of all MPI calls is supported in POSIX platforms + implementing ‘dlopen()’. + + * Support for all the new features in MPI-2.2 (new C99 and F90 + datatypes, distributed graph topology, local reduction operation, + and other minor enhancements). + + * Fix the annoying issues related to Open MPI and Python dynamic + loading of extension modules in platforms supporting ‘dlopen()’. + + * Fix SLURM dynamic loading issues on SiCortex. Many thanks to Ian + Langmore for providing me shell access. + + ---------- Footnotes ---------- + + (1) https://www.mcs.anl.gov/research/projects/perfvis/ + + +File: mpi4py.info, Node: Release 1 1 0 [2009-06-06], Next: Release 1 0 0 [2009-03-20], Prev: Release 1 2 [2009-12-29], Up: CHANGES + +17.19 Release 1.1.0 [2009-06-06] +================================ + + * Fix bug in ‘Comm.Iprobe()’ that caused segfaults as Python C-API + calls were issued with the GIL released (issue #2). + + * Add ‘Comm.bsend()’ and ‘Comm.ssend()’ for buffered and synchronous + send semantics when communicating general Python objects. + + * Now the call ‘Info.Get(key)’ return a ‘single’ value (i.e, instead + of a 2-tuple); this value is ‘None’ if ‘key’ is not in the ‘Info’ + object, or a string otherwise. Previously, the call redundantly + returned ‘(None, False)’ for missing key-value pairs; ‘None’ is + enough to signal a missing entry. + + * Add support for parametrized Fortran datatypes. + + * Add support for decoding user-defined datatypes. + + * Add support for user-defined reduction operations on memory + buffers. However, at most 16 user-defined reduction operations can + be created. Ask the author for more room if you need it. + + +File: mpi4py.info, Node: Release 1 0 0 [2009-03-20], Prev: Release 1 1 0 [2009-06-06], Up: CHANGES + +17.20 Release 1.0.0 [2009-03-20] +================================ + +This is the fist release of the all-new, Cython-based, implementation of +‘MPI for Python’. Unfortunately, this implementation is not +backward-compatible with the previous one. The list below summarizes +the more important changes that can impact user codes. + + * Some communication calls had ‘overloaded’ functionality. Now there + is a clear distinction between communication of general Python + object with ‘pickle’, and (fast, near C-speed) communication of + buffer-like objects (e.g., NumPy arrays). + + - for communicating general Python objects, you have to use + all-lowercase methods, like ‘send()’, ‘recv()’, ‘bcast()’, + etc. + + - for communicating array data, you have to use ‘Send()’, + ‘Recv()’, ‘Bcast()’, etc. methods. Buffer arguments to these + calls must be explicitly specified by using a 2/3-list/tuple + like ‘[data, MPI.DOUBLE]’, or ‘[data, count, MPI.DOUBLE]’ (the + former one uses the byte-size of ‘data’ and the extent of the + MPI datatype to define the ‘count’). + + * Indexing a communicator with an integer returned a special object + associating the communication with a target rank, alleviating you + from specifying source/destination/root arguments in point-to-point + and collective communications. This functionality is no longer + available, expressions like: + + MPI.COMM_WORLD[0].Send(...) + MPI.COMM_WORLD[0].Recv(...) + MPI.COMM_WORLD[0].Bcast(...) + + have to be replaced by: + + MPI.COMM_WORLD.Send(..., dest=0) + MPI.COMM_WORLD.Recv(..., source=0) + MPI.COMM_WORLD.Bcast(..., root=0) + + * Automatic MPI initialization (i.e., at import time) requests the + maximum level of MPI thread support (i.e., it is done by calling + ‘MPI_Init_thread()’ and passing ‘MPI_THREAD_MULTIPLE’). In case + you need to change this behavior, you can tweak the contents of the + ‘mpi4py.rc’ module. + + * In order to obtain the values of predefined attributes attached to + the world communicator, now you have to use the ‘Get_attr()’ method + on the ‘MPI.COMM_WORLD’ instance: + + tag_ub = MPI.COMM_WORLD.Get_attr(MPI.TAG_UB) + + * In the previous implementation, ‘MPI.COMM_WORLD’ and + ‘MPI.COMM_SELF’ were associated to ‘duplicates’ of the (C-level) + ‘MPI_COMM_WORLD’ and ‘MPI_COMM_SELF’ predefined communicator + handles. Now this is no longer the case, ‘MPI.COMM_WORLD’ and + ‘MPI.COMM_SELF’ proxies the ‘actual’ ‘MPI_COMM_WORLD’ and + ‘MPI_COMM_SELF’ handles. + + * Convenience aliases ‘MPI.WORLD’ and ‘MPI.SELF’ were removed. Use + instead ‘MPI.COMM_WORLD’ and ‘MPI.COMM_SELF’. + + * Convenience constants ‘MPI.WORLD_SIZE’ and ‘MPI.WORLD_RANK’ were + removed. Use instead ‘MPI.COMM_WORLD.Get_size()’ and + ‘MPI.COMM_WORLD.Get_rank()’. + + +File: mpi4py.info, Node: Python Module Index, Next: Index, Prev: CHANGES, Up: Top + +Python Module Index +******************* + +* Menu: + +* mpi4py: 0. The MPI for Python package. +* mpi4py.bench: 1. Run MPI benchmarks and tests. +* mpi4py.futures: 2. Execute computations concurrently using MPI processes. +* mpi4py.MPI: 3. Message Passing Interface. +* mpi4py.run: 4. Run Python code using ‘‘-m mpi4py‘‘. +* mpi4py.typing: 5. Typing support. +* mpi4py.util: 6. Miscellaneous utilities. +* mpi4py.util.dtlib: 7. Convert NumPy and MPI datatypes. +* mpi4py.util.pkl5: 8. Pickle-based communication using protocol 5. +* mpi4py.util.pool: 9. :mod:‘multiprocessing.pool‘ interface via + :mod:‘mpi4py.futures‘. +* mpi4py.util.sync: a. Synchronization utilities. + + +File: mpi4py.info, Node: Index, Prev: Python Module Index, Up: Top + +Index +***** + +[index] +* Menu: + +* __enter__() (mpi4py.util.sync.Condition method): Condition variable. + (line 45) +* __enter__() (mpi4py.util.sync.Mutex method): Mutual exclusion. + (line 52) +* __enter__() (mpi4py.util.sync.Semaphore method): Semaphore object. + (line 49) +* __enter__() (mpi4py.util.sync.Sequential method): Sequential execution. + (line 33) +* __exit__() (mpi4py.util.sync.Condition method): Condition variable. + (line 52) +* __exit__() (mpi4py.util.sync.Mutex method): Mutual exclusion. + (line 59) +* __exit__() (mpi4py.util.sync.Semaphore method): Semaphore object. + (line 56) +* __exit__() (mpi4py.util.sync.Sequential method): Sequential execution. + (line 40) +* __init__() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 25) +* __init__() (mpi4py.util.sync.Condition method): Condition variable. + (line 22) +* __init__() (mpi4py.util.sync.Counter method): Global counter. + (line 18) +* __init__() (mpi4py.util.sync.Mutex method): Mutual exclusion. + (line 32) +* __init__() (mpi4py.util.sync.Semaphore method): Semaphore object. + (line 27) +* __init__() (mpi4py.util.sync.Sequential method): Sequential execution. + (line 18) +* __iter__() (mpi4py.util.sync.Counter method): Global counter. + (line 45) +* __new__() (mpi4py.MPI.BottomType static method): mpi4py MPI BottomType. + (line 12) +* __new__() (mpi4py.MPI.buffer static method): mpi4py MPI buffer. + (line 12) +* __new__() (mpi4py.MPI.BufferAutomaticType static method): mpi4py MPI BufferAutomaticType. + (line 12) +* __new__() (mpi4py.MPI.Cartcomm static method): mpi4py MPI Cartcomm. + (line 12) +* __new__() (mpi4py.MPI.Comm static method): mpi4py MPI Comm. + (line 12) +* __new__() (mpi4py.MPI.Datatype static method): mpi4py MPI Datatype. + (line 12) +* __new__() (mpi4py.MPI.Distgraphcomm static method): mpi4py MPI Distgraphcomm. + (line 12) +* __new__() (mpi4py.MPI.Errhandler static method): mpi4py MPI Errhandler. + (line 12) +* __new__() (mpi4py.MPI.Exception static method): mpi4py MPI Exception. + (line 12) +* __new__() (mpi4py.MPI.File static method): mpi4py MPI File. + (line 12) +* __new__() (mpi4py.MPI.Graphcomm static method): mpi4py MPI Graphcomm. + (line 12) +* __new__() (mpi4py.MPI.Grequest static method): mpi4py MPI Grequest. + (line 12) +* __new__() (mpi4py.MPI.Group static method): mpi4py MPI Group. + (line 12) +* __new__() (mpi4py.MPI.Info static method): mpi4py MPI Info. + (line 12) +* __new__() (mpi4py.MPI.InPlaceType static method): mpi4py MPI InPlaceType. + (line 12) +* __new__() (mpi4py.MPI.Intercomm static method): mpi4py MPI Intercomm. + (line 12) +* __new__() (mpi4py.MPI.Intracomm static method): mpi4py MPI Intracomm. + (line 12) +* __new__() (mpi4py.MPI.Message static method): mpi4py MPI Message. + (line 12) +* __new__() (mpi4py.MPI.Op static method): mpi4py MPI Op. (line 12) +* __new__() (mpi4py.MPI.Pickle static method): mpi4py MPI Pickle. + (line 12) +* __new__() (mpi4py.MPI.Prequest static method): mpi4py MPI Prequest. + (line 12) +* __new__() (mpi4py.MPI.Request static method): mpi4py MPI Request. + (line 12) +* __new__() (mpi4py.MPI.Session static method): mpi4py MPI Session. + (line 12) +* __new__() (mpi4py.MPI.Status static method): mpi4py MPI Status. + (line 12) +* __new__() (mpi4py.MPI.Topocomm static method): mpi4py MPI Topocomm. + (line 12) +* __new__() (mpi4py.MPI.Win static method): mpi4py MPI Win. (line 12) +* __next__() (mpi4py.util.sync.Counter method): Global counter. + (line 52) +* Abort() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 537) +* Accept() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 105) +* Accumulate() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 226) +* Ack_failed() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 552) +* acquire() (mpi4py.util.sync.Condition method): Condition variable. + (line 62) +* acquire() (mpi4py.util.sync.Mutex method): Mutual exclusion. + (line 69) +* acquire() (mpi4py.util.sync.Semaphore method): Semaphore object. + (line 66) +* address (mpi4py.MPI.buffer attribute): mpi4py MPI buffer. (line 155) +* Add_error_class() (in module mpi4py.MPI): mpi4py MPI Add_error_class. + (line 6) +* Add_error_code() (in module mpi4py.MPI): mpi4py MPI Add_error_code. + (line 6) +* Add_error_string() (in module mpi4py.MPI): mpi4py MPI Add_error_string. + (line 6) +* Agree() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 562) +* AINT (in module mpi4py.MPI): mpi4py MPI AINT. (line 6) +* Aint (in module mpi4py.typing): mpi4py typing. (line 121) +* Aint_add() (in module mpi4py.MPI): mpi4py MPI Aint_add. + (line 6) +* Aint_diff() (in module mpi4py.MPI): mpi4py MPI Aint_diff. + (line 6) +* Allgather() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 572) +* allgather() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2157) +* allgather() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. + (line 411) +* Allgatherv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 605) +* Allgatherv_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 623) +* Allgather_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 589) +* allocate() (mpi4py.MPI.buffer static method): mpi4py MPI buffer. + (line 69) +* Allocate() (mpi4py.MPI.Win class method): mpi4py MPI Win. (line 244) +* Allocate_shared() (mpi4py.MPI.Win class method): mpi4py MPI Win. + (line 263) +* Alloc_mem() (in module mpi4py.MPI): mpi4py MPI Alloc_mem. + (line 6) +* Allreduce() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 639) +* allreduce() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2167) +* Allreduce_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 655) +* Alltoall() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 674) +* alltoall() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2182) +* alltoall() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. + (line 423) +* Alltoallv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 706) +* Alltoallv_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 723) +* Alltoallw() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 739) +* Alltoallw_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 757) +* Alltoall_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 690) +* amode (mpi4py.MPI.File attribute): mpi4py MPI File. (line 989) +* ANY_SOURCE (in module mpi4py.MPI): mpi4py MPI ANY_SOURCE. + (line 6) +* ANY_TAG (in module mpi4py.MPI): mpi4py MPI ANY_TAG. (line 6) +* apply() (mpi4py.util.pool.Pool method): mpi4py util pool. (line 57) +* ApplyResult (class in mpi4py.util.pool): mpi4py util pool. (line 354) +* apply_async() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 76) +* APPNUM (in module mpi4py.MPI): mpi4py MPI APPNUM. (line 6) +* AsyncResult (class in mpi4py.util.pool): mpi4py util pool. (line 307) +* atomicity (mpi4py.MPI.File attribute): mpi4py MPI File. (line 993) +* Attach() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 282) +* Attach_buffer() (in module mpi4py.MPI): mpi4py MPI Attach_buffer. + (line 6) +* Attach_buffer() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 773) +* Attach_buffer() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 87) +* attrs (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 846) +* BAND (in module mpi4py.MPI): mpi4py MPI BAND. (line 6) +* Barrier() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 783) +* barrier() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2192) +* Barrier_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 790) +* Bcast() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 800) +* bcast() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2201) +* bcast() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 363) +* Bcast_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 814) +* begin() (mpi4py.util.sync.Sequential method): Sequential execution. + (line 50) +* BOOL (in module mpi4py.MPI): mpi4py MPI BOOL. (line 6) +* bootup() (mpi4py.futures.MPIPoolExecutor method): MPIPoolExecutor. + (line 211) +* BOR (in module mpi4py.MPI): mpi4py MPI BOR. (line 6) +* BOTTOM (in module mpi4py.MPI): mpi4py MPI BOTTOM. (line 6) +* Bottom (in module mpi4py.typing): mpi4py typing. (line 109) +* BottomType (class in mpi4py.MPI): mpi4py MPI BottomType. + (line 6) +* Bsend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 830) +* bsend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2215) +* bsend() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 188) +* Bsend_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 846) +* BSEND_OVERHEAD (in module mpi4py.MPI): mpi4py MPI BSEND_OVERHEAD. + (line 6) +* buffer (class in mpi4py.MPI): mpi4py MPI buffer. (line 6) +* Buffer (in module mpi4py.typing): mpi4py typing. (line 102) +* BufferAutomaticType (class in mpi4py.MPI): mpi4py MPI BufferAutomaticType. + (line 6) +* BUFFER_AUTOMATIC (in module mpi4py.MPI): mpi4py MPI BUFFER_AUTOMATIC. + (line 6) +* BufSpec (in module mpi4py.typing): mpi4py typing. (line 151) +* BufSpecB (in module mpi4py.typing): mpi4py typing. (line 177) +* BufSpecV (in module mpi4py.typing): mpi4py typing. (line 199) +* BufSpecW (in module mpi4py.typing): mpi4py typing. (line 250) +* BXOR (in module mpi4py.MPI): mpi4py MPI BXOR. (line 6) +* BYTE (in module mpi4py.MPI): mpi4py MPI BYTE. (line 6) +* Call_errhandler() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 862) +* Call_errhandler() (mpi4py.MPI.File method): mpi4py MPI File. + (line 249) +* Call_errhandler() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 97) +* Call_errhandler() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 292) +* Cancel() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 123) +* cancel() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 293) +* cancel() (mpi4py.util.pkl5.Request method): mpi4py util pkl5. + (line 59) +* cancelled (mpi4py.MPI.Status attribute): mpi4py MPI Status. + (line 205) +* CART (in module mpi4py.MPI): mpi4py MPI CART. (line 6) +* Cartcomm (class in mpi4py.MPI): mpi4py MPI Cartcomm. + (line 6) +* Cart_map() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 121) +* cast() (mpi4py.MPI.buffer method): mpi4py MPI buffer. (line 83) +* CC: Using meson-python. (line 13) +* CHAR (in module mpi4py.MPI): mpi4py MPI CHAR. (line 6) +* CHARACTER (in module mpi4py.MPI): mpi4py MPI CHARACTER. + (line 6) +* clear() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 183) +* Clone() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 872) +* Close() (mpi4py.MPI.File method): mpi4py MPI File. (line 259) +* close() (mpi4py.util.pool.Pool method): mpi4py util pool. (line 280) +* Close_port() (in module mpi4py.MPI): mpi4py MPI Close_port. + (line 6) +* collect() (in module mpi4py.futures): Utilities. (line 9) +* combiner (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 780) +* COMBINER_CONTIGUOUS (in module mpi4py.MPI): mpi4py MPI COMBINER_CONTIGUOUS. + (line 6) +* COMBINER_DARRAY (in module mpi4py.MPI): mpi4py MPI COMBINER_DARRAY. + (line 6) +* COMBINER_DUP (in module mpi4py.MPI): mpi4py MPI COMBINER_DUP. + (line 6) +* COMBINER_F90_COMPLEX (in module mpi4py.MPI): mpi4py MPI COMBINER_F90_COMPLEX. + (line 6) +* COMBINER_F90_INTEGER (in module mpi4py.MPI): mpi4py MPI COMBINER_F90_INTEGER. + (line 6) +* COMBINER_F90_REAL (in module mpi4py.MPI): mpi4py MPI COMBINER_F90_REAL. + (line 6) +* COMBINER_HINDEXED (in module mpi4py.MPI): mpi4py MPI COMBINER_HINDEXED. + (line 6) +* COMBINER_HINDEXED_BLOCK (in module mpi4py.MPI): mpi4py MPI COMBINER_HINDEXED_BLOCK. + (line 6) +* COMBINER_HVECTOR (in module mpi4py.MPI): mpi4py MPI COMBINER_HVECTOR. + (line 6) +* COMBINER_INDEXED (in module mpi4py.MPI): mpi4py MPI COMBINER_INDEXED. + (line 6) +* COMBINER_INDEXED_BLOCK (in module mpi4py.MPI): mpi4py MPI COMBINER_INDEXED_BLOCK. + (line 6) +* COMBINER_NAMED (in module mpi4py.MPI): mpi4py MPI COMBINER_NAMED. + (line 6) +* COMBINER_RESIZED (in module mpi4py.MPI): mpi4py MPI COMBINER_RESIZED. + (line 6) +* COMBINER_STRUCT (in module mpi4py.MPI): mpi4py MPI COMBINER_STRUCT. + (line 6) +* COMBINER_SUBARRAY (in module mpi4py.MPI): mpi4py MPI COMBINER_SUBARRAY. + (line 6) +* COMBINER_VALUE_INDEX (in module mpi4py.MPI): mpi4py MPI COMBINER_VALUE_INDEX. + (line 6) +* COMBINER_VECTOR (in module mpi4py.MPI): mpi4py MPI COMBINER_VECTOR. + (line 6) +* Comm (class in mpi4py.MPI): mpi4py MPI Comm. (line 6) +* Comm (class in mpi4py.util.pkl5): mpi4py util pkl5. (line 166) +* command line option; -c: Command line<2>. (line 29) +* command line option; –configure: Building. (line 27) +* command line option; -m: Command line<2>. (line 24) +* command line option; –mpi: Building. (line 10) +* command line option; –mpicc: Building. (line 16) +* command line option; –mpild: Building. (line 21) +* Commit() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 224) +* COMM_NULL (in module mpi4py.MPI): mpi4py MPI COMM_NULL. + (line 6) +* COMM_SELF (in module mpi4py.MPI): mpi4py MPI COMM_SELF. + (line 6) +* COMM_TYPE_HW_GUIDED (in module mpi4py.MPI): mpi4py MPI COMM_TYPE_HW_GUIDED. + (line 6) +* COMM_TYPE_HW_UNGUIDED (in module mpi4py.MPI): mpi4py MPI COMM_TYPE_HW_UNGUIDED. + (line 6) +* COMM_TYPE_RESOURCE_GUIDED (in module mpi4py.MPI): mpi4py MPI COMM_TYPE_RESOURCE_GUIDED. + (line 6) +* COMM_TYPE_SHARED (in module mpi4py.MPI): mpi4py MPI COMM_TYPE_SHARED. + (line 6) +* COMM_WORLD (in module mpi4py.MPI): mpi4py MPI COMM_WORLD. + (line 6) +* Compare() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 879) +* Compare() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 90) +* Compare_and_swap() (mpi4py.MPI.Win method): mpi4py MPI Win. + (line 302) +* Complete() (mpi4py.MPI.Grequest method): mpi4py MPI Grequest. + (line 37) +* complete() (mpi4py.MPI.Grequest method): mpi4py MPI Grequest. + (line 68) +* Complete() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 323) +* COMPLEX (in module mpi4py.MPI): mpi4py MPI COMPLEX. (line 6) +* COMPLEX16 (in module mpi4py.MPI): mpi4py MPI COMPLEX16. + (line 6) +* COMPLEX32 (in module mpi4py.MPI): mpi4py MPI COMPLEX32. + (line 6) +* COMPLEX4 (in module mpi4py.MPI): mpi4py MPI COMPLEX4. + (line 6) +* COMPLEX8 (in module mpi4py.MPI): mpi4py MPI COMPLEX8. + (line 6) +* compose() (in module mpi4py.futures): Utilities. (line 20) +* Compute_dims() (in module mpi4py.MPI): mpi4py MPI Compute_dims. + (line 6) +* Condition (class in mpi4py.util.sync): Condition variable. (line 6) +* CONGRUENT (in module mpi4py.MPI): mpi4py MPI CONGRUENT. + (line 6) +* Connect() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 135) +* contents (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 784) +* coords (mpi4py.MPI.Cartcomm attribute): mpi4py MPI Cartcomm. + (line 128) +* copy() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 190) +* COUNT (in module mpi4py.MPI): mpi4py MPI COUNT. (line 6) +* Count (in module mpi4py.typing): mpi4py typing. (line 127) +* count (mpi4py.MPI.Status attribute): mpi4py MPI Status. (line 209) +* count() (mpi4py.util.sync.Mutex method): Mutual exclusion. (line 97) +* Counter (class in mpi4py.util.sync): Global counter. (line 6) +* Create() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 889) +* Create() (mpi4py.MPI.Info class method): mpi4py MPI Info. (line 96) +* Create() (mpi4py.MPI.Op class method): mpi4py MPI Op. (line 60) +* Create() (mpi4py.MPI.Win class method): mpi4py MPI Win. (line 330) +* Create_cart() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 151) +* Create_contiguous() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 231) +* Create_darray() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 241) +* Create_dist_graph() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 167) +* Create_dist_graph_adjacent() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 190) +* Create_dynamic() (mpi4py.MPI.Win class method): mpi4py MPI Win. + (line 349) +* Create_env() (mpi4py.MPI.Info class method): mpi4py MPI Info. + (line 108) +* Create_errhandler() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. + (line 899) +* Create_errhandler() (mpi4py.MPI.File class method): mpi4py MPI File. + (line 266) +* Create_errhandler() (mpi4py.MPI.Session class method): mpi4py MPI Session. + (line 107) +* Create_errhandler() (mpi4py.MPI.Win class method): mpi4py MPI Win. + (line 364) +* Create_f90_complex() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 267) +* Create_f90_integer() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 281) +* Create_f90_real() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 291) +* Create_from_group() (mpi4py.MPI.Intracomm class method): mpi4py MPI Intracomm. + (line 214) +* Create_from_groups() (mpi4py.MPI.Intercomm class method): mpi4py MPI Intercomm. + (line 47) +* Create_from_session_pset() (mpi4py.MPI.Group class method): mpi4py MPI Group. + (line 100) +* Create_graph() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 233) +* Create_group() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 249) +* Create_group() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 118) +* Create_hindexed() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 305) +* Create_hindexed_block() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 321) +* Create_hvector() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 337) +* Create_indexed() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 353) +* Create_indexed_block() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 367) +* Create_intercomm() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 263) +* Create_keyval() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. + (line 910) +* Create_keyval() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 381) +* Create_keyval() (mpi4py.MPI.Win class method): mpi4py MPI Win. + (line 375) +* Create_resized() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 400) +* Create_struct() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 414) +* Create_subarray() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 433) +* Create_vector() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 452) +* CXX_BOOL (in module mpi4py.MPI): mpi4py MPI CXX_BOOL. + (line 6) +* CXX_DOUBLE_COMPLEX (in module mpi4py.MPI): mpi4py MPI CXX_DOUBLE_COMPLEX. + (line 6) +* CXX_FLOAT_COMPLEX (in module mpi4py.MPI): mpi4py MPI CXX_FLOAT_COMPLEX. + (line 6) +* CXX_LONG_DOUBLE_COMPLEX (in module mpi4py.MPI): mpi4py MPI CXX_LONG_DOUBLE_COMPLEX. + (line 6) +* C_BOOL (in module mpi4py.MPI): mpi4py MPI C_BOOL. (line 6) +* C_COMPLEX (in module mpi4py.MPI): mpi4py MPI C_COMPLEX. + (line 6) +* C_DOUBLE_COMPLEX (in module mpi4py.MPI): mpi4py MPI C_DOUBLE_COMPLEX. + (line 6) +* C_FLOAT_COMPLEX (in module mpi4py.MPI): mpi4py MPI C_FLOAT_COMPLEX. + (line 6) +* C_LONG_DOUBLE_COMPLEX (in module mpi4py.MPI): mpi4py MPI C_LONG_DOUBLE_COMPLEX. + (line 6) +* Datatype (class in mpi4py.MPI): mpi4py MPI Datatype. + (line 6) +* DATATYPE_NULL (in module mpi4py.MPI): mpi4py MPI DATATYPE_NULL. + (line 6) +* decode() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 720) +* degrees (mpi4py.MPI.Topocomm attribute): mpi4py MPI Topocomm. + (line 351) +* Delete() (mpi4py.MPI.File class method): mpi4py MPI File. (line 277) +* Delete() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 118) +* Delete_attr() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 929) +* Delete_attr() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 468) +* Delete_attr() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 394) +* Detach() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 404) +* Detach_buffer() (in module mpi4py.MPI): mpi4py MPI Detach_buffer. + (line 6) +* Detach_buffer() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 939) +* Detach_buffer() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 128) +* Difference() (mpi4py.MPI.Group class method): mpi4py MPI Group. + (line 115) +* dim (mpi4py.MPI.Cartcomm attribute): mpi4py MPI Cartcomm. + (line 132) +* dims (mpi4py.MPI.Cartcomm attribute): mpi4py MPI Cartcomm. + (line 136) +* dims (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 102) +* Disconnect() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 946) +* Displ (in module mpi4py.typing): mpi4py typing. (line 133) +* DISPLACEMENT_CURRENT (in module mpi4py.MPI): mpi4py MPI DISPLACEMENT_CURRENT. + (line 6) +* DISP_CUR (in module mpi4py.MPI): mpi4py MPI DISP_CUR. + (line 6) +* Distgraphcomm (class in mpi4py.MPI): mpi4py MPI Distgraphcomm. + (line 6) +* DISTRIBUTE_BLOCK (in module mpi4py.MPI): mpi4py MPI DISTRIBUTE_BLOCK. + (line 6) +* DISTRIBUTE_CYCLIC (in module mpi4py.MPI): mpi4py MPI DISTRIBUTE_CYCLIC. + (line 6) +* DISTRIBUTE_DFLT_DARG (in module mpi4py.MPI): mpi4py MPI DISTRIBUTE_DFLT_DARG. + (line 6) +* DISTRIBUTE_NONE (in module mpi4py.MPI): mpi4py MPI DISTRIBUTE_NONE. + (line 6) +* DIST_GRAPH (in module mpi4py.MPI): mpi4py MPI DIST_GRAPH. + (line 6) +* DOUBLE (in module mpi4py.MPI): mpi4py MPI DOUBLE. (line 6) +* DOUBLE_COMPLEX (in module mpi4py.MPI): mpi4py MPI DOUBLE_COMPLEX. + (line 6) +* DOUBLE_INT (in module mpi4py.MPI): mpi4py MPI DOUBLE_INT. + (line 6) +* DOUBLE_PRECISION (in module mpi4py.MPI): mpi4py MPI DOUBLE_PRECISION. + (line 6) +* dumps() (mpi4py.MPI.Pickle method): mpi4py MPI Pickle. (line 47) +* dumps_oob() (mpi4py.MPI.Pickle method): mpi4py MPI Pickle. (line 57) +* Dup() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 953) +* Dup() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 478) +* Dup() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 129) +* Dup() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 128) +* Dup_with_info() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 963) +* edges (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 106) +* end() (mpi4py.util.sync.Sequential method): Sequential execution. + (line 57) +* envelope (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 788) +* environment variable; CC: Using meson-python. (line 13) +* environment variable; MPI4PY_BUILD_BACKEND: Build backends. + (line 8) +* environment variable; MPI4PY_BUILD_BACKEND <1>: Build backends. + (line 11) +* environment variable; MPI4PY_BUILD_BACKEND <2>: Using setuptools. + (line 6) +* environment variable; MPI4PY_BUILD_BACKEND <3>: Using scikit-build-core. + (line 6) +* environment variable; MPI4PY_BUILD_BACKEND <4>: Using meson-python. + (line 6) +* environment variable; MPI4PY_BUILD_CONFIGURE: Using setuptools. + (line 41) +* environment variable; MPI4PY_BUILD_CONFIGURE <1>: Using setuptools. + (line 46) +* environment variable; MPI4PY_BUILD_MPICC: Using setuptools. + (line 13) +* environment variable; MPI4PY_BUILD_MPICC <1>: Using setuptools. + (line 18) +* environment variable; MPI4PY_BUILD_MPICC <2>: Using setuptools. + (line 59) +* environment variable; MPI4PY_BUILD_MPICFG: Using setuptools. + (line 29) +* environment variable; MPI4PY_BUILD_MPICFG <1>: Using setuptools. + (line 36) +* environment variable; MPI4PY_BUILD_MPICFG <2>: Using setuptools. + (line 67) +* environment variable; MPI4PY_BUILD_MPILD: Using setuptools. + (line 22) +* environment variable; MPI4PY_BUILD_MPILD <1>: Using setuptools. + (line 25) +* environment variable; MPI4PY_BUILD_MPILD <2>: Using setuptools. + (line 63) +* environment variable; MPI4PY_FUTURES_BACKOFF: MPIPoolExecutor. + (line 119) +* environment variable; MPI4PY_FUTURES_BACKOFF <1>: MPIPoolExecutor. + (line 249) +* environment variable; MPI4PY_FUTURES_BACKOFF <2>: MPIPoolExecutor. + (line 252) +* environment variable; MPI4PY_FUTURES_MAX_WORKERS: MPIPoolExecutor. + (line 49) +* environment variable; MPI4PY_FUTURES_MAX_WORKERS <1>: MPIPoolExecutor. + (line 225) +* environment variable; MPI4PY_FUTURES_MAX_WORKERS <2>: MPIPoolExecutor. + (line 228) +* environment variable; MPI4PY_FUTURES_MAX_WORKERS <3>: Computing the Julia set. + (line 84) +* environment variable; MPI4PY_FUTURES_USE_PKL5: MPIPoolExecutor. + (line 109) +* environment variable; MPI4PY_FUTURES_USE_PKL5 <1>: MPIPoolExecutor. + (line 234) +* environment variable; MPI4PY_FUTURES_USE_PKL5 <2>: MPIPoolExecutor. + (line 237) +* environment variable; MPI4PY_PICKLE_PROTOCOL: Tutorial. (line 56) +* environment variable; MPI4PY_PICKLE_PROTOCOL <1>: Environment variables. + (line 153) +* environment variable; MPI4PY_PICKLE_THRESHOLD: Environment variables. + (line 172) +* environment variable; MPI4PY_RC_ERRORS: Runtime configuration options. + (line 167) +* environment variable; MPI4PY_RC_ERRORS <1>: Environment variables. + (line 136) +* environment variable; MPI4PY_RC_FAST_REDUCE: Runtime configuration options. + (line 117) +* environment variable; MPI4PY_RC_FAST_REDUCE <1>: Environment variables. + (line 87) +* environment variable; MPI4PY_RC_FINALIZE: Runtime configuration options. + (line 102) +* environment variable; MPI4PY_RC_FINALIZE <1>: Environment variables. + (line 32) +* environment variable; MPI4PY_RC_INITIALIZE: Runtime configuration options. + (line 54) +* environment variable; MPI4PY_RC_INITIALIZE <1>: Environment variables. + (line 14) +* environment variable; MPI4PY_RC_IRECV_BUFSZ: Runtime configuration options. + (line 147) +* environment variable; MPI4PY_RC_IRECV_BUFSZ <1>: Environment variables. + (line 119) +* environment variable; MPI4PY_RC_RECV_MPROBE: Runtime configuration options. + (line 132) +* environment variable; MPI4PY_RC_RECV_MPROBE <1>: Environment variables. + (line 104) +* environment variable; MPI4PY_RC_THREADS: Runtime configuration options. + (line 69) +* environment variable; MPI4PY_RC_THREADS <1>: Environment variables. + (line 53) +* environment variable; MPI4PY_RC_THREAD_LEVEL: Runtime configuration options. + (line 87) +* environment variable; MPI4PY_RC_THREAD_LEVEL <1>: Environment variables. + (line 70) +* environment variable; MPICC: Using setuptools. (line 57) +* environment variable; MPICC <1>: Building. (line 19) +* environment variable; MPICC <2>: Building. (line 45) +* environment variable; MPICFG: Using setuptools. (line 65) +* environment variable; MPICFG <1>: Building. (line 13) +* environment variable; MPIEXEC_UNIVERSE_SIZE: Computing the Julia set. + (line 73) +* environment variable; MPILD: Using setuptools. (line 61) +* environment variable; MPILD <1>: Building. (line 24) +* environment variable; PATH: Using setuptools. (line 16) +* environment variable; PATH <1>: Building. (line 38) +* Errhandler (class in mpi4py.MPI): mpi4py MPI Errhandler. + (line 6) +* ERRHANDLER_NULL (in module mpi4py.MPI): mpi4py MPI ERRHANDLER_NULL. + (line 6) +* error (mpi4py.MPI.Status attribute): mpi4py MPI Status. (line 213) +* errors (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 151) +* ERRORS_ABORT (in module mpi4py.MPI): mpi4py MPI ERRORS_ABORT. + (line 6) +* ERRORS_ARE_FATAL (in module mpi4py.MPI): mpi4py MPI ERRORS_ARE_FATAL. + (line 6) +* ERRORS_RETURN (in module mpi4py.MPI): mpi4py MPI ERRORS_RETURN. + (line 6) +* error_class (mpi4py.MPI.Exception attribute): mpi4py MPI Exception. + (line 71) +* error_code (mpi4py.MPI.Exception attribute): mpi4py MPI Exception. + (line 75) +* error_string (mpi4py.MPI.Exception attribute): mpi4py MPI Exception. + (line 79) +* ERR_ACCESS (in module mpi4py.MPI): mpi4py MPI ERR_ACCESS. + (line 6) +* ERR_AMODE (in module mpi4py.MPI): mpi4py MPI ERR_AMODE. + (line 6) +* ERR_ARG (in module mpi4py.MPI): mpi4py MPI ERR_ARG. (line 6) +* ERR_ASSERT (in module mpi4py.MPI): mpi4py MPI ERR_ASSERT. + (line 6) +* ERR_BAD_FILE (in module mpi4py.MPI): mpi4py MPI ERR_BAD_FILE. + (line 6) +* ERR_BASE (in module mpi4py.MPI): mpi4py MPI ERR_BASE. + (line 6) +* ERR_BUFFER (in module mpi4py.MPI): mpi4py MPI ERR_BUFFER. + (line 6) +* ERR_COMM (in module mpi4py.MPI): mpi4py MPI ERR_COMM. + (line 6) +* ERR_CONVERSION (in module mpi4py.MPI): mpi4py MPI ERR_CONVERSION. + (line 6) +* ERR_COUNT (in module mpi4py.MPI): mpi4py MPI ERR_COUNT. + (line 6) +* ERR_DIMS (in module mpi4py.MPI): mpi4py MPI ERR_DIMS. + (line 6) +* ERR_DISP (in module mpi4py.MPI): mpi4py MPI ERR_DISP. + (line 6) +* ERR_DUP_DATAREP (in module mpi4py.MPI): mpi4py MPI ERR_DUP_DATAREP. + (line 6) +* ERR_ERRHANDLER (in module mpi4py.MPI): mpi4py MPI ERR_ERRHANDLER. + (line 6) +* ERR_FILE (in module mpi4py.MPI): mpi4py MPI ERR_FILE. + (line 6) +* ERR_FILE_EXISTS (in module mpi4py.MPI): mpi4py MPI ERR_FILE_EXISTS. + (line 6) +* ERR_FILE_IN_USE (in module mpi4py.MPI): mpi4py MPI ERR_FILE_IN_USE. + (line 6) +* ERR_GROUP (in module mpi4py.MPI): mpi4py MPI ERR_GROUP. + (line 6) +* ERR_INFO (in module mpi4py.MPI): mpi4py MPI ERR_INFO. + (line 6) +* ERR_INFO_KEY (in module mpi4py.MPI): mpi4py MPI ERR_INFO_KEY. + (line 6) +* ERR_INFO_NOKEY (in module mpi4py.MPI): mpi4py MPI ERR_INFO_NOKEY. + (line 6) +* ERR_INFO_VALUE (in module mpi4py.MPI): mpi4py MPI ERR_INFO_VALUE. + (line 6) +* ERR_INTERN (in module mpi4py.MPI): mpi4py MPI ERR_INTERN. + (line 6) +* ERR_IN_STATUS (in module mpi4py.MPI): mpi4py MPI ERR_IN_STATUS. + (line 6) +* ERR_IO (in module mpi4py.MPI): mpi4py MPI ERR_IO. (line 6) +* ERR_KEYVAL (in module mpi4py.MPI): mpi4py MPI ERR_KEYVAL. + (line 6) +* ERR_LASTCODE (in module mpi4py.MPI): mpi4py MPI ERR_LASTCODE. + (line 6) +* ERR_LOCKTYPE (in module mpi4py.MPI): mpi4py MPI ERR_LOCKTYPE. + (line 6) +* ERR_NAME (in module mpi4py.MPI): mpi4py MPI ERR_NAME. + (line 6) +* ERR_NOT_SAME (in module mpi4py.MPI): mpi4py MPI ERR_NOT_SAME. + (line 6) +* ERR_NO_MEM (in module mpi4py.MPI): mpi4py MPI ERR_NO_MEM. + (line 6) +* ERR_NO_SPACE (in module mpi4py.MPI): mpi4py MPI ERR_NO_SPACE. + (line 6) +* ERR_NO_SUCH_FILE (in module mpi4py.MPI): mpi4py MPI ERR_NO_SUCH_FILE. + (line 6) +* ERR_OP (in module mpi4py.MPI): mpi4py MPI ERR_OP. (line 6) +* ERR_OTHER (in module mpi4py.MPI): mpi4py MPI ERR_OTHER. + (line 6) +* ERR_PENDING (in module mpi4py.MPI): mpi4py MPI ERR_PENDING. + (line 6) +* ERR_PORT (in module mpi4py.MPI): mpi4py MPI ERR_PORT. + (line 6) +* ERR_PROC_ABORTED (in module mpi4py.MPI): mpi4py MPI ERR_PROC_ABORTED. + (line 6) +* ERR_PROC_FAILED (in module mpi4py.MPI): mpi4py MPI ERR_PROC_FAILED. + (line 6) +* ERR_PROC_FAILED_PENDING (in module mpi4py.MPI): mpi4py MPI ERR_PROC_FAILED_PENDING. + (line 6) +* ERR_QUOTA (in module mpi4py.MPI): mpi4py MPI ERR_QUOTA. + (line 6) +* ERR_RANK (in module mpi4py.MPI): mpi4py MPI ERR_RANK. + (line 6) +* ERR_READ_ONLY (in module mpi4py.MPI): mpi4py MPI ERR_READ_ONLY. + (line 6) +* ERR_REQUEST (in module mpi4py.MPI): mpi4py MPI ERR_REQUEST. + (line 6) +* ERR_REVOKED (in module mpi4py.MPI): mpi4py MPI ERR_REVOKED. + (line 6) +* ERR_RMA_ATTACH (in module mpi4py.MPI): mpi4py MPI ERR_RMA_ATTACH. + (line 6) +* ERR_RMA_CONFLICT (in module mpi4py.MPI): mpi4py MPI ERR_RMA_CONFLICT. + (line 6) +* ERR_RMA_FLAVOR (in module mpi4py.MPI): mpi4py MPI ERR_RMA_FLAVOR. + (line 6) +* ERR_RMA_RANGE (in module mpi4py.MPI): mpi4py MPI ERR_RMA_RANGE. + (line 6) +* ERR_RMA_SHARED (in module mpi4py.MPI): mpi4py MPI ERR_RMA_SHARED. + (line 6) +* ERR_RMA_SYNC (in module mpi4py.MPI): mpi4py MPI ERR_RMA_SYNC. + (line 6) +* ERR_ROOT (in module mpi4py.MPI): mpi4py MPI ERR_ROOT. + (line 6) +* ERR_SERVICE (in module mpi4py.MPI): mpi4py MPI ERR_SERVICE. + (line 6) +* ERR_SESSION (in module mpi4py.MPI): mpi4py MPI ERR_SESSION. + (line 6) +* ERR_SIZE (in module mpi4py.MPI): mpi4py MPI ERR_SIZE. + (line 6) +* ERR_SPAWN (in module mpi4py.MPI): mpi4py MPI ERR_SPAWN. + (line 6) +* ERR_TAG (in module mpi4py.MPI): mpi4py MPI ERR_TAG. (line 6) +* ERR_TOPOLOGY (in module mpi4py.MPI): mpi4py MPI ERR_TOPOLOGY. + (line 6) +* ERR_TRUNCATE (in module mpi4py.MPI): mpi4py MPI ERR_TRUNCATE. + (line 6) +* ERR_TYPE (in module mpi4py.MPI): mpi4py MPI ERR_TYPE. + (line 6) +* ERR_UNKNOWN (in module mpi4py.MPI): mpi4py MPI ERR_UNKNOWN. + (line 6) +* ERR_UNSUPPORTED_DATAREP (in module mpi4py.MPI): mpi4py MPI ERR_UNSUPPORTED_DATAREP. + (line 6) +* ERR_UNSUPPORTED_OPERATION (in module mpi4py.MPI): mpi4py MPI ERR_UNSUPPORTED_OPERATION. + (line 6) +* ERR_VALUE_TOO_LARGE (in module mpi4py.MPI): mpi4py MPI ERR_VALUE_TOO_LARGE. + (line 6) +* ERR_WIN (in module mpi4py.MPI): mpi4py MPI ERR_WIN. (line 6) +* Exception: mpi4py MPI Exception. + (line 6) +* Excl() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 136) +* Exscan() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 282) +* exscan() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 445) +* Exscan_init() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 298) +* extent (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 792) +* f2py() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. (line 2231) +* f2py() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 728) +* f2py() (mpi4py.MPI.Errhandler class method): mpi4py MPI Errhandler. + (line 52) +* f2py() (mpi4py.MPI.File class method): mpi4py MPI File. (line 956) +* f2py() (mpi4py.MPI.Group class method): mpi4py MPI Group. (line 242) +* f2py() (mpi4py.MPI.Info class method): mpi4py MPI Info. (line 197) +* f2py() (mpi4py.MPI.Message class method): mpi4py MPI Message. + (line 132) +* f2py() (mpi4py.MPI.Op class method): mpi4py MPI Op. (line 103) +* f2py() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 300) +* f2py() (mpi4py.MPI.Session class method): mpi4py MPI Session. + (line 228) +* f2py() (mpi4py.MPI.Status class method): mpi4py MPI Status. + (line 189) +* f2py() (mpi4py.MPI.Win class method): mpi4py MPI Win. (line 806) +* fast_reduce (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 104) +* Fence() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 414) +* Fetch_and_op() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 424) +* File (class in mpi4py.MPI): mpi4py MPI File. (line 6) +* FILE_NULL (in module mpi4py.MPI): mpi4py MPI FILE_NULL. + (line 6) +* finalize (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 89) +* Finalize() (in module mpi4py.MPI): mpi4py MPI Finalize. + (line 6) +* Finalize() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 135) +* flavor (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 850) +* FLOAT (in module mpi4py.MPI): mpi4py MPI FLOAT. (line 6) +* FLOAT_INT (in module mpi4py.MPI): mpi4py MPI FLOAT_INT. + (line 6) +* Flush() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 445) +* Flush_all() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 455) +* Flush_buffer() (in module mpi4py.MPI): mpi4py MPI Flush_buffer. + (line 6) +* Flush_buffer() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 973) +* Flush_buffer() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 142) +* Flush_local() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 462) +* Flush_local_all() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 472) +* format (mpi4py.MPI.buffer attribute): mpi4py MPI buffer. (line 159) +* Free() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 980) +* free() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2239) +* Free() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 485) +* free() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 736) +* Free() (mpi4py.MPI.Errhandler method): mpi4py MPI Errhandler. + (line 45) +* free() (mpi4py.MPI.Errhandler method): mpi4py MPI Errhandler. + (line 60) +* free() (mpi4py.MPI.File method): mpi4py MPI File. (line 964) +* Free() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 146) +* free() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 250) +* Free() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 135) +* free() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 205) +* free() (mpi4py.MPI.Message method): mpi4py MPI Message. (line 140) +* Free() (mpi4py.MPI.Op method): mpi4py MPI Op. (line 75) +* free() (mpi4py.MPI.Op method): mpi4py MPI Op. (line 111) +* Free() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 130) +* free() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 308) +* free() (mpi4py.MPI.Session method): mpi4py MPI Session. (line 236) +* Free() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 480) +* free() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 814) +* free() (mpi4py.util.pkl5.Message method): mpi4py util pkl5. + (line 126) +* Free() (mpi4py.util.pkl5.Request method): mpi4py util pkl5. + (line 45) +* free() (mpi4py.util.pkl5.Request method): mpi4py util pkl5. + (line 52) +* free() (mpi4py.util.sync.Condition method): Condition variable. + (line 135) +* free() (mpi4py.util.sync.Counter method): Global counter. (line 72) +* free() (mpi4py.util.sync.Mutex method): Mutual exclusion. (line 104) +* free() (mpi4py.util.sync.Semaphore method): Semaphore object. + (line 93) +* Free_keyval() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. + (line 987) +* Free_keyval() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 492) +* Free_keyval() (mpi4py.MPI.Win class method): mpi4py MPI Win. + (line 487) +* Free_mem() (in module mpi4py.MPI): mpi4py MPI Free_mem. + (line 6) +* fromaddress() (mpi4py.MPI.buffer static method): mpi4py MPI buffer. + (line 98) +* frombuffer() (mpi4py.MPI.buffer static method): mpi4py MPI buffer. + (line 114) +* fromcode() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 743) +* fromhandle() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. + (line 2246) +* fromhandle() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 754) +* fromhandle() (mpi4py.MPI.Errhandler class method): mpi4py MPI Errhandler. + (line 67) +* fromhandle() (mpi4py.MPI.File class method): mpi4py MPI File. + (line 971) +* fromhandle() (mpi4py.MPI.Group class method): mpi4py MPI Group. + (line 257) +* fromhandle() (mpi4py.MPI.Info class method): mpi4py MPI Info. + (line 212) +* fromhandle() (mpi4py.MPI.Message class method): mpi4py MPI Message. + (line 147) +* fromhandle() (mpi4py.MPI.Op class method): mpi4py MPI Op. (line 118) +* fromhandle() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 315) +* fromhandle() (mpi4py.MPI.Session class method): mpi4py MPI Session. + (line 243) +* fromhandle() (mpi4py.MPI.Win class method): mpi4py MPI Win. + (line 821) +* from_numpy_dtype() (in module mpi4py.util.dtlib): mpi4py util dtlib. + (line 11) +* F_BOOL (in module mpi4py.MPI): mpi4py MPI F_BOOL. (line 6) +* F_COMPLEX (in module mpi4py.MPI): mpi4py MPI F_COMPLEX. + (line 6) +* F_DOUBLE (in module mpi4py.MPI): mpi4py MPI F_DOUBLE. + (line 6) +* F_DOUBLE_COMPLEX (in module mpi4py.MPI): mpi4py MPI F_DOUBLE_COMPLEX. + (line 6) +* F_ERROR (in module mpi4py.MPI): mpi4py MPI F_ERROR. (line 6) +* F_FLOAT (in module mpi4py.MPI): mpi4py MPI F_FLOAT. (line 6) +* F_FLOAT_COMPLEX (in module mpi4py.MPI): mpi4py MPI F_FLOAT_COMPLEX. + (line 6) +* F_INT (in module mpi4py.MPI): mpi4py MPI F_INT. (line 6) +* F_SOURCE (in module mpi4py.MPI): mpi4py MPI F_SOURCE. + (line 6) +* F_STATUS_SIZE (in module mpi4py.MPI): mpi4py MPI F_STATUS_SIZE. + (line 6) +* F_TAG (in module mpi4py.MPI): mpi4py MPI F_TAG. (line 6) +* Gather() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 997) +* gather() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2256) +* gather() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 379) +* Gatherv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1031) +* Gatherv_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1050) +* Gather_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1013) +* Get() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 142) +* get() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 222) +* Get() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 497) +* get() (mpi4py.util.pool.AsyncResult method): mpi4py util pool. + (line 311) +* Get_accumulate() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 513) +* Get_address() (in module mpi4py.MPI): mpi4py MPI Get_address. + (line 6) +* Get_amode() (mpi4py.MPI.File method): mpi4py MPI File. (line 291) +* Get_atomicity() (mpi4py.MPI.File method): mpi4py MPI File. (line 298) +* Get_attr() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1068) +* Get_attr() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 502) +* Get_attr() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 534) +* Get_byte_offset() (mpi4py.MPI.File method): mpi4py MPI File. + (line 305) +* Get_cart_rank() (mpi4py.MPI.Cartcomm method): mpi4py MPI Cartcomm. + (line 65) +* get_comm_workers() (in module mpi4py.futures): Parallel tasks. + (line 13) +* get_config() (in module mpi4py): Miscellaneous functions. + (line 36) +* Get_contents() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 512) +* Get_coords() (mpi4py.MPI.Cartcomm method): mpi4py MPI Cartcomm. + (line 75) +* Get_count() (mpi4py.MPI.Status method): mpi4py MPI Status. (line 81) +* Get_dim() (mpi4py.MPI.Cartcomm method): mpi4py MPI Cartcomm. + (line 85) +* Get_dims() (mpi4py.MPI.Graphcomm method): mpi4py MPI Graphcomm. + (line 65) +* Get_dist_neighbors() (mpi4py.MPI.Distgraphcomm method): mpi4py MPI Distgraphcomm. + (line 32) +* Get_dist_neighbors_count() (mpi4py.MPI.Distgraphcomm method): mpi4py MPI Distgraphcomm. + (line 40) +* Get_elements() (mpi4py.MPI.Status method): mpi4py MPI Status. + (line 91) +* Get_envelope() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 520) +* Get_errhandler() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1078) +* Get_errhandler() (mpi4py.MPI.File method): mpi4py MPI File. + (line 318) +* Get_errhandler() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 149) +* Get_errhandler() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 544) +* Get_error() (mpi4py.MPI.Status method): mpi4py MPI Status. (line 101) +* Get_error_class() (in module mpi4py.MPI): mpi4py MPI Get_error_class. + (line 6) +* Get_error_class() (mpi4py.MPI.Exception method): mpi4py MPI Exception. + (line 47) +* Get_error_code() (mpi4py.MPI.Exception method): mpi4py MPI Exception. + (line 54) +* Get_error_string() (in module mpi4py.MPI): mpi4py MPI Get_error_string. + (line 6) +* Get_error_string() (mpi4py.MPI.Exception method): mpi4py MPI Exception. + (line 61) +* Get_extent() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 529) +* Get_failed() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1085) +* Get_group() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1092) +* Get_group() (mpi4py.MPI.File method): mpi4py MPI File. (line 325) +* Get_group() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 551) +* Get_hw_resource_info() (in module mpi4py.MPI): mpi4py MPI Get_hw_resource_info. + (line 6) +* get_include() (in module mpi4py): Miscellaneous functions. + (line 21) +* Get_info() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1099) +* Get_info() (mpi4py.MPI.File method): mpi4py MPI File. (line 332) +* Get_info() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 156) +* Get_info() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 558) +* Get_library_version() (in module mpi4py.MPI): mpi4py MPI Get_library_version. + (line 6) +* Get_name() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1106) +* Get_name() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 536) +* Get_name() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 565) +* Get_neighbors() (mpi4py.MPI.Graphcomm method): mpi4py MPI Graphcomm. + (line 72) +* Get_neighbors_count() (mpi4py.MPI.Graphcomm method): mpi4py MPI Graphcomm. + (line 82) +* Get_nkeys() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 152) +* Get_nthkey() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 159) +* Get_nth_pset() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 163) +* Get_num_psets() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 177) +* Get_parent() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. + (line 1113) +* Get_position() (mpi4py.MPI.File method): mpi4py MPI File. (line 339) +* Get_position_shared() (mpi4py.MPI.File method): mpi4py MPI File. + (line 349) +* Get_processor_name() (in module mpi4py.MPI): mpi4py MPI Get_processor_name. + (line 6) +* Get_pset_info() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 187) +* Get_rank() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1120) +* Get_rank() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 153) +* Get_remote_group() (mpi4py.MPI.Intercomm method): mpi4py MPI Intercomm. + (line 73) +* Get_remote_size() (mpi4py.MPI.Intercomm method): mpi4py MPI Intercomm. + (line 81) +* Get_size() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1127) +* Get_size() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 543) +* Get_size() (mpi4py.MPI.File method): mpi4py MPI File. (line 359) +* Get_size() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 160) +* Get_source() (mpi4py.MPI.Status method): mpi4py MPI Status. + (line 108) +* Get_status() (mpi4py.MPI.Request method): mpi4py MPI Request. + (line 137) +* get_status() (mpi4py.MPI.Request method): mpi4py MPI Request. + (line 325) +* get_status() (mpi4py.util.pkl5.Request method): mpi4py util pkl5. + (line 66) +* Get_status_all() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 147) +* get_status_all() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 335) +* get_status_all() (mpi4py.util.pkl5.Request class method): mpi4py util pkl5. + (line 96) +* Get_status_any() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 161) +* get_status_any() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 349) +* Get_status_some() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 175) +* get_status_some() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 363) +* Get_tag() (mpi4py.MPI.Status method): mpi4py MPI Status. (line 115) +* Get_topo() (mpi4py.MPI.Cartcomm method): mpi4py MPI Cartcomm. + (line 92) +* Get_topo() (mpi4py.MPI.Graphcomm method): mpi4py MPI Graphcomm. + (line 92) +* Get_topology() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1134) +* Get_true_extent() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 551) +* Get_type_extent() (mpi4py.MPI.File method): mpi4py MPI File. + (line 366) +* Get_value_index() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 558) +* get_vendor() (in module mpi4py.MPI): mpi4py MPI get_vendor. + (line 6) +* Get_version() (in module mpi4py.MPI): mpi4py MPI Get_version. + (line 6) +* Get_view() (mpi4py.MPI.File method): mpi4py MPI File. (line 376) +* GRAPH (in module mpi4py.MPI): mpi4py MPI GRAPH. (line 6) +* Graphcomm (class in mpi4py.MPI): mpi4py MPI Graphcomm. + (line 6) +* Graph_map() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 316) +* Grequest (class in mpi4py.MPI): mpi4py MPI Grequest. + (line 6) +* Group (class in mpi4py.MPI): mpi4py MPI Group. (line 6) +* group (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2513) +* group (mpi4py.MPI.File attribute): mpi4py MPI File. (line 997) +* group (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 854) +* GROUP_EMPTY (in module mpi4py.MPI): mpi4py MPI GROUP_EMPTY. + (line 6) +* GROUP_NULL (in module mpi4py.MPI): mpi4py MPI GROUP_NULL. + (line 6) +* group_rank (mpi4py.MPI.File attribute): mpi4py MPI File. (line 1001) +* group_rank (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 858) +* group_size (mpi4py.MPI.File attribute): mpi4py MPI File. (line 1005) +* group_size (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 862) +* handle (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2517) +* handle (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 796) +* handle (mpi4py.MPI.Errhandler attribute): mpi4py MPI Errhandler. + (line 85) +* handle (mpi4py.MPI.File attribute): mpi4py MPI File. (line 1009) +* handle (mpi4py.MPI.Group attribute): mpi4py MPI Group. (line 275) +* handle (mpi4py.MPI.Info attribute): mpi4py MPI Info. (line 302) +* handle (mpi4py.MPI.Message attribute): mpi4py MPI Message. (line 220) +* handle (mpi4py.MPI.Op attribute): mpi4py MPI Op. (line 136) +* handle (mpi4py.MPI.Request attribute): mpi4py MPI Request. (line 493) +* handle (mpi4py.MPI.Session attribute): mpi4py MPI Session. (line 261) +* handle (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 866) +* Iagree() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1142) +* Iallgather() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1152) +* Iallgatherv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1166) +* Iallreduce() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1180) +* Ialltoall() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1196) +* Ialltoallv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1210) +* Ialltoallw() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1224) +* Ibarrier() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1238) +* Ibcast() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1245) +* Ibsend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1259) +* ibsend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2270) +* ibsend() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 236) +* IDENT (in module mpi4py.MPI): mpi4py MPI IDENT. (line 6) +* Idup() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1275) +* Idup_with_info() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1285) +* Iexscan() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 330) +* Iflush_buffer() (in module mpi4py.MPI): mpi4py MPI Iflush_buffer. + (line 6) +* Iflush_buffer() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1295) +* Iflush_buffer() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 197) +* Igather() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1302) +* Igatherv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1318) +* imap() (mpi4py.util.pool.Pool method): mpi4py util pool. (line 155) +* imap_unordered() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 174) +* Improbe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1334) +* improbe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2286) +* improbe() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. + (line 347) +* Incl() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 167) +* indegree (mpi4py.MPI.Topocomm attribute): mpi4py MPI Topocomm. + (line 355) +* index (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 110) +* inedges (mpi4py.MPI.Topocomm attribute): mpi4py MPI Topocomm. + (line 359) +* Ineighbor_allgather() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 103) +* Ineighbor_allgatherv() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 117) +* Ineighbor_alltoall() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 131) +* Ineighbor_alltoallv() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 145) +* Ineighbor_alltoallw() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 159) +* Info (class in mpi4py.MPI): mpi4py MPI Info. (line 6) +* info (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2521) +* info (mpi4py.MPI.File attribute): mpi4py MPI File. (line 1013) +* info (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 870) +* INFO_ENV (in module mpi4py.MPI): mpi4py MPI INFO_ENV. + (line 6) +* INFO_NULL (in module mpi4py.MPI): mpi4py MPI INFO_NULL. + (line 6) +* Init() (in module mpi4py.MPI): mpi4py MPI Init. (line 6) +* Init() (mpi4py.MPI.Session class method): mpi4py MPI Session. + (line 204) +* initialize (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 41) +* Init_thread() (in module mpi4py.MPI): mpi4py MPI Init_thread. + (line 6) +* inoutedges (mpi4py.MPI.Topocomm attribute): mpi4py MPI Topocomm. + (line 363) +* InPlace (in module mpi4py.typing): mpi4py typing. (line 115) +* InPlaceType (class in mpi4py.MPI): mpi4py MPI InPlaceType. + (line 6) +* INT (in module mpi4py.MPI): mpi4py MPI INT. (line 6) +* INT16_T (in module mpi4py.MPI): mpi4py MPI INT16_T. (line 6) +* INT32_T (in module mpi4py.MPI): mpi4py MPI INT32_T. (line 6) +* INT64_T (in module mpi4py.MPI): mpi4py MPI INT64_T. (line 6) +* INT8_T (in module mpi4py.MPI): mpi4py MPI INT8_T. (line 6) +* INTEGER (in module mpi4py.MPI): mpi4py MPI INTEGER. (line 6) +* INTEGER1 (in module mpi4py.MPI): mpi4py MPI INTEGER1. + (line 6) +* INTEGER16 (in module mpi4py.MPI): mpi4py MPI INTEGER16. + (line 6) +* INTEGER2 (in module mpi4py.MPI): mpi4py MPI INTEGER2. + (line 6) +* INTEGER4 (in module mpi4py.MPI): mpi4py MPI INTEGER4. + (line 6) +* INTEGER8 (in module mpi4py.MPI): mpi4py MPI INTEGER8. + (line 6) +* Intercomm (class in mpi4py.MPI): mpi4py MPI Intercomm. + (line 6) +* Intercomm (class in mpi4py.util.pkl5): mpi4py util pkl5. (line 441) +* Intersection() (mpi4py.MPI.Group class method): mpi4py MPI Group. + (line 177) +* Intracomm (class in mpi4py.MPI): mpi4py MPI Intracomm. + (line 6) +* Intracomm (class in mpi4py.util.pkl5): mpi4py util pkl5. (line 435) +* INT_INT (in module mpi4py.MPI): mpi4py MPI INT_INT. (line 6) +* IN_PLACE (in module mpi4py.MPI): mpi4py MPI IN_PLACE. + (line 6) +* IO (in module mpi4py.MPI): mpi4py MPI IO. (line 6) +* Iprobe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1350) +* iprobe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2302) +* Iprobe() (mpi4py.MPI.Message class method): mpi4py MPI Message. + (line 70) +* iprobe() (mpi4py.MPI.Message class method): mpi4py MPI Message. + (line 157) +* iprobe() (mpi4py.util.pkl5.Message class method): mpi4py util pkl5. + (line 158) +* Iread() (mpi4py.MPI.File method): mpi4py MPI File. (line 384) +* Iread_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 394) +* Iread_at() (mpi4py.MPI.File method): mpi4py MPI File. (line 404) +* Iread_at_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 418) +* Iread_shared() (mpi4py.MPI.File method): mpi4py MPI File. (line 432) +* Irecv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1366) +* irecv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2318) +* Irecv() (mpi4py.MPI.Message method): mpi4py MPI Message. (line 89) +* irecv() (mpi4py.MPI.Message method): mpi4py MPI Message. (line 176) +* irecv() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 287) +* irecv() (mpi4py.util.pkl5.Message method): mpi4py util pkl5. + (line 143) +* irecv_bufsz (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 134) +* Ireduce() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1382) +* Ireduce_scatter() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1400) +* Ireduce_scatter_block() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1419) +* Irsend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1436) +* Iscan() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 346) +* Iscatter() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1473) +* Iscatterv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1489) +* Isend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1505) +* isend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2334) +* isend() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 220) +* Isendrecv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1521) +* Isendrecv_replace() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1544) +* Ishrink() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1573) +* Issend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1581) +* issend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2350) +* issend() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 252) +* istarmap() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 245) +* istarmap_unordered() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 263) +* Is_cancelled() (mpi4py.MPI.Status method): mpi4py MPI Status. + (line 122) +* is_commutative (mpi4py.MPI.Op attribute): mpi4py MPI Op. (line 140) +* Is_commutative() (mpi4py.MPI.Op method): mpi4py MPI Op. (line 82) +* Is_finalized() (in module mpi4py.MPI): mpi4py MPI Is_finalized. + (line 6) +* Is_initialized() (in module mpi4py.MPI): mpi4py MPI Is_initialized. + (line 6) +* is_inter (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2525) +* Is_inter() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1452) +* is_intra (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2529) +* Is_intra() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1459) +* is_named (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 800) +* is_predefined (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 804) +* is_predefined (mpi4py.MPI.Op attribute): mpi4py MPI Op. (line 144) +* Is_revoked() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1466) +* Is_thread_main() (in module mpi4py.MPI): mpi4py MPI Is_thread_main. + (line 6) +* is_topo (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2533) +* items() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 236) +* itemsize (mpi4py.MPI.buffer attribute): mpi4py MPI buffer. (line 163) +* Iwrite() (mpi4py.MPI.File method): mpi4py MPI File. (line 442) +* Iwrite_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 452) +* Iwrite_at() (mpi4py.MPI.File method): mpi4py MPI File. (line 462) +* Iwrite_at_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 476) +* Iwrite_shared() (mpi4py.MPI.File method): mpi4py MPI File. (line 490) +* Join() (mpi4py.MPI.Comm class method): mpi4py MPI Comm. (line 1597) +* join() (mpi4py.util.pool.Pool method): mpi4py util pool. (line 294) +* keys() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 243) +* KEYVAL_INVALID (in module mpi4py.MPI): mpi4py MPI KEYVAL_INVALID. + (line 6) +* LAND (in module mpi4py.MPI): mpi4py MPI LAND. (line 6) +* LASTUSEDCODE (in module mpi4py.MPI): mpi4py MPI LASTUSEDCODE. + (line 6) +* lb (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 808) +* loads() (mpi4py.MPI.Pickle method): mpi4py MPI Pickle. (line 68) +* loads_oob() (mpi4py.MPI.Pickle method): mpi4py MPI Pickle. (line 78) +* Lock() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 572) +* locked() (mpi4py.util.sync.Condition method): Condition variable. + (line 79) +* locked() (mpi4py.util.sync.Mutex method): Mutual exclusion. + (line 90) +* Lock_all() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 588) +* LOCK_EXCLUSIVE (in module mpi4py.MPI): mpi4py MPI LOCK_EXCLUSIVE. + (line 6) +* LOCK_SHARED (in module mpi4py.MPI): mpi4py MPI LOCK_SHARED. + (line 6) +* LOGICAL (in module mpi4py.MPI): mpi4py MPI LOGICAL. (line 6) +* LOGICAL1 (in module mpi4py.MPI): mpi4py MPI LOGICAL1. + (line 6) +* LOGICAL2 (in module mpi4py.MPI): mpi4py MPI LOGICAL2. + (line 6) +* LOGICAL4 (in module mpi4py.MPI): mpi4py MPI LOGICAL4. + (line 6) +* LOGICAL8 (in module mpi4py.MPI): mpi4py MPI LOGICAL8. + (line 6) +* LONG (in module mpi4py.MPI): mpi4py MPI LONG. (line 6) +* LONG_DOUBLE (in module mpi4py.MPI): mpi4py MPI LONG_DOUBLE. + (line 6) +* LONG_DOUBLE_INT (in module mpi4py.MPI): mpi4py MPI LONG_DOUBLE_INT. + (line 6) +* LONG_INT (in module mpi4py.MPI): mpi4py MPI LONG_INT. + (line 6) +* LONG_LONG (in module mpi4py.MPI): mpi4py MPI LONG_LONG. + (line 6) +* Lookup_name() (in module mpi4py.MPI): mpi4py MPI Lookup_name. + (line 6) +* LOR (in module mpi4py.MPI): mpi4py MPI LOR. (line 6) +* LXOR (in module mpi4py.MPI): mpi4py MPI LXOR. (line 6) +* map() (mpi4py.futures.MPIPoolExecutor method): MPIPoolExecutor. + (line 136) +* map() (mpi4py.util.pool.Pool method): mpi4py util pool. (line 100) +* MapResult (class in mpi4py.util.pool): mpi4py util pool. (line 360) +* map_async() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 130) +* Match_size() (mpi4py.MPI.Datatype class method): mpi4py MPI Datatype. + (line 572) +* MAX (in module mpi4py.MPI): mpi4py MPI MAX. (line 6) +* MAXLOC (in module mpi4py.MPI): mpi4py MPI MAXLOC. (line 6) +* MAX_DATAREP_STRING (in module mpi4py.MPI): mpi4py MPI MAX_DATAREP_STRING. + (line 6) +* MAX_ERROR_STRING (in module mpi4py.MPI): mpi4py MPI MAX_ERROR_STRING. + (line 6) +* MAX_INFO_KEY (in module mpi4py.MPI): mpi4py MPI MAX_INFO_KEY. + (line 6) +* MAX_INFO_VAL (in module mpi4py.MPI): mpi4py MPI MAX_INFO_VAL. + (line 6) +* MAX_LIBRARY_VERSION_STRING (in module mpi4py.MPI): mpi4py MPI MAX_LIBRARY_VERSION_STRING. + (line 6) +* MAX_OBJECT_NAME (in module mpi4py.MPI): mpi4py MPI MAX_OBJECT_NAME. + (line 6) +* MAX_PORT_NAME (in module mpi4py.MPI): mpi4py MPI MAX_PORT_NAME. + (line 6) +* MAX_PROCESSOR_NAME (in module mpi4py.MPI): mpi4py MPI MAX_PROCESSOR_NAME. + (line 6) +* MAX_PSET_NAME_LEN (in module mpi4py.MPI): mpi4py MPI MAX_PSET_NAME_LEN. + (line 6) +* MAX_STRINGTAG_LEN (in module mpi4py.MPI): mpi4py MPI MAX_STRINGTAG_LEN. + (line 6) +* memory (in module mpi4py.MPI): mpi4py MPI memory. (line 6) +* Merge() (mpi4py.MPI.Intercomm method): mpi4py MPI Intercomm. + (line 88) +* Message (class in mpi4py.MPI): mpi4py MPI Message. (line 6) +* Message (class in mpi4py.util.pkl5): mpi4py util pkl5. (line 117) +* MESSAGE_NO_PROC (in module mpi4py.MPI): mpi4py MPI MESSAGE_NO_PROC. + (line 6) +* MESSAGE_NULL (in module mpi4py.MPI): mpi4py MPI MESSAGE_NULL. + (line 6) +* MIN (in module mpi4py.MPI): mpi4py MPI MIN. (line 6) +* MINLOC (in module mpi4py.MPI): mpi4py MPI MINLOC. (line 6) +* model (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 874) +* MODE_APPEND (in module mpi4py.MPI): mpi4py MPI MODE_APPEND. + (line 6) +* MODE_CREATE (in module mpi4py.MPI): mpi4py MPI MODE_CREATE. + (line 6) +* MODE_DELETE_ON_CLOSE (in module mpi4py.MPI): mpi4py MPI MODE_DELETE_ON_CLOSE. + (line 6) +* MODE_EXCL (in module mpi4py.MPI): mpi4py MPI MODE_EXCL. + (line 6) +* MODE_NOCHECK (in module mpi4py.MPI): mpi4py MPI MODE_NOCHECK. + (line 6) +* MODE_NOPRECEDE (in module mpi4py.MPI): mpi4py MPI MODE_NOPRECEDE. + (line 6) +* MODE_NOPUT (in module mpi4py.MPI): mpi4py MPI MODE_NOPUT. + (line 6) +* MODE_NOSTORE (in module mpi4py.MPI): mpi4py MPI MODE_NOSTORE. + (line 6) +* MODE_NOSUCCEED (in module mpi4py.MPI): mpi4py MPI MODE_NOSUCCEED. + (line 6) +* MODE_RDONLY (in module mpi4py.MPI): mpi4py MPI MODE_RDONLY. + (line 6) +* MODE_RDWR (in module mpi4py.MPI): mpi4py MPI MODE_RDWR. + (line 6) +* MODE_SEQUENTIAL (in module mpi4py.MPI): mpi4py MPI MODE_SEQUENTIAL. + (line 6) +* MODE_UNIQUE_OPEN (in module mpi4py.MPI): mpi4py MPI MODE_UNIQUE_OPEN. + (line 6) +* MODE_WRONLY (in module mpi4py.MPI): mpi4py MPI MODE_WRONLY. + (line 6) +* module; mpi4py: mpi4py. (line 6) +* module; mpi4py.bench: mpi4py bench. (line 6) +* module; mpi4py.futures: mpi4py futures. (line 6) +* module; mpi4py.MPI: mpi4py MPI<2>. (line 6) +* module; mpi4py.run: mpi4py run. (line 6) +* module; mpi4py.typing: mpi4py typing. (line 6) +* module; mpi4py.util: mpi4py util. (line 6) +* module; mpi4py.util.dtlib: mpi4py util dtlib. (line 6) +* module; mpi4py.util.pkl5: mpi4py util pkl5. (line 6) +* module; mpi4py.util.pool: mpi4py util pool. (line 6) +* module; mpi4py.util.sync: mpi4py util sync. (line 6) +* mpi4py.rc (in module mpi4py): Runtime configuration options. + (line 6) +* MPI4PY_BUILD_BACKEND: Build backends. (line 8) +* MPI4PY_BUILD_BACKEND <1>: Using setuptools. (line 6) +* MPI4PY_BUILD_BACKEND <2>: Using scikit-build-core. + (line 6) +* MPI4PY_BUILD_BACKEND <3>: Using meson-python. (line 6) +* MPI4PY_BUILD_CONFIGURE: Using setuptools. (line 46) +* MPI4PY_BUILD_MPICC: Using setuptools. (line 18) +* MPI4PY_BUILD_MPICC <1>: Using setuptools. (line 59) +* MPI4PY_BUILD_MPICFG: Using setuptools. (line 36) +* MPI4PY_BUILD_MPICFG <1>: Using setuptools. (line 67) +* MPI4PY_BUILD_MPILD: Using setuptools. (line 25) +* MPI4PY_BUILD_MPILD <1>: Using setuptools. (line 63) +* MPI4PY_FUTURES_BACKOFF: MPIPoolExecutor. (line 119) +* MPI4PY_FUTURES_BACKOFF <1>: MPIPoolExecutor. (line 252) +* MPI4PY_FUTURES_MAX_WORKERS: MPIPoolExecutor. (line 49) +* MPI4PY_FUTURES_MAX_WORKERS <1>: MPIPoolExecutor. (line 228) +* MPI4PY_FUTURES_MAX_WORKERS <2>: Computing the Julia set. + (line 84) +* MPI4PY_FUTURES_USE_PKL5: MPIPoolExecutor. (line 109) +* MPI4PY_FUTURES_USE_PKL5 <1>: MPIPoolExecutor. (line 237) +* MPI4PY_PICKLE_PROTOCOL: Tutorial. (line 56) +* MPI4PY_RC_ERRORS: Runtime configuration options. + (line 167) +* MPI4PY_RC_FAST_REDUCE: Runtime configuration options. + (line 117) +* MPI4PY_RC_FINALIZE: Runtime configuration options. + (line 102) +* MPI4PY_RC_INITIALIZE: Runtime configuration options. + (line 54) +* MPI4PY_RC_IRECV_BUFSZ: Runtime configuration options. + (line 147) +* MPI4PY_RC_RECV_MPROBE: Runtime configuration options. + (line 132) +* MPI4PY_RC_THREADS: Runtime configuration options. + (line 69) +* MPI4PY_RC_THREAD_LEVEL: Runtime configuration options. + (line 87) +* MPICC: Building. (line 19) +* MPICC <1>: Building. (line 45) +* MPICFG: Building. (line 13) +* MPICommExecutor (class in mpi4py.futures): MPICommExecutor. + (line 30) +* MPIEXEC_UNIVERSE_SIZE: Computing the Julia set. + (line 73) +* MPILD: Building. (line 24) +* MPIPoolExecutor (class in mpi4py.futures): MPIPoolExecutor. + (line 44) +* Mprobe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1607) +* mprobe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2366) +* mprobe() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 331) +* Mutex (class in mpi4py.util.sync): Mutual exclusion. (line 6) +* name (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2537) +* name (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 812) +* name (mpi4py.MPI.Win attribute): mpi4py MPI Win. (line 878) +* nbytes (mpi4py.MPI.buffer attribute): mpi4py MPI buffer. (line 167) +* ndim (mpi4py.MPI.Cartcomm attribute): mpi4py MPI Cartcomm. + (line 140) +* nedges (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 114) +* neighbors (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 118) +* Neighbor_allgather() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 173) +* neighbor_allgather() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 328) +* Neighbor_allgatherv() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 204) +* Neighbor_allgatherv_init() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 218) +* Neighbor_allgather_init() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 187) +* Neighbor_alltoall() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 235) +* neighbor_alltoall() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 338) +* Neighbor_alltoallv() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 266) +* Neighbor_alltoallv_init() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 280) +* Neighbor_alltoallw() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 297) +* Neighbor_alltoallw_init() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 311) +* Neighbor_alltoall_init() (mpi4py.MPI.Topocomm method): mpi4py MPI Topocomm. + (line 249) +* next() (mpi4py.util.sync.Counter method): Global counter. (line 59) +* nneighbors (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 122) +* nnodes (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 126) +* notify() (mpi4py.util.sync.Condition method): Condition variable. + (line 111) +* notify_all() (mpi4py.util.sync.Condition method): Condition variable. + (line 125) +* NO_OP (in module mpi4py.MPI): mpi4py MPI NO_OP. (line 6) +* num_workers (mpi4py.futures.MPIPoolExecutor attribute): MPIPoolExecutor. + (line 221) +* obj (mpi4py.MPI.buffer attribute): mpi4py MPI buffer. (line 171) +* OFFSET (in module mpi4py.MPI): mpi4py MPI OFFSET. (line 6) +* Offset (in module mpi4py.typing): mpi4py typing. (line 139) +* Op (class in mpi4py.MPI): mpi4py MPI Op. (line 6) +* Open() (mpi4py.MPI.File class method): mpi4py MPI File. (line 500) +* Open_port() (in module mpi4py.MPI): mpi4py MPI Open_port. + (line 6) +* OP_NULL (in module mpi4py.MPI): mpi4py MPI OP_NULL. (line 6) +* ORDER_C (in module mpi4py.MPI): mpi4py MPI ORDER_C. (line 6) +* ORDER_F (in module mpi4py.MPI): mpi4py MPI ORDER_F. (line 6) +* ORDER_FORTRAN (in module mpi4py.MPI): mpi4py MPI ORDER_FORTRAN. + (line 6) +* outdegree (mpi4py.MPI.Topocomm attribute): mpi4py MPI Topocomm. + (line 367) +* outedges (mpi4py.MPI.Topocomm attribute): mpi4py MPI Topocomm. + (line 371) +* Pack() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 586) +* PACKED (in module mpi4py.MPI): mpi4py MPI PACKED. (line 6) +* Pack_external() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 604) +* Pack_external_size() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 624) +* Pack_size() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 642) +* Parrived() (mpi4py.MPI.Prequest method): mpi4py MPI Prequest. + (line 44) +* PATH: Using setuptools. (line 16) +* PATH <1>: Building. (line 38) +* Pcontrol() (in module mpi4py.MPI): mpi4py MPI Pcontrol. + (line 6) +* periods (mpi4py.MPI.Cartcomm attribute): mpi4py MPI Cartcomm. + (line 144) +* Pickle (class in mpi4py.MPI): mpi4py MPI Pickle. (line 6) +* pickle (in module mpi4py.MPI): mpi4py MPI pickle. (line 6) +* Pool (class in mpi4py.util.pool): mpi4py util pool. (line 21) +* pop() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 250) +* popitem() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 264) +* Post() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 598) +* Pready() (mpi4py.MPI.Prequest method): mpi4py MPI Prequest. + (line 54) +* Pready_list() (mpi4py.MPI.Prequest method): mpi4py MPI Prequest. + (line 64) +* Pready_range() (mpi4py.MPI.Prequest method): mpi4py MPI Prequest. + (line 74) +* Preallocate() (mpi4py.MPI.File method): mpi4py MPI File. (line 519) +* Precv_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1623) +* Prequest (class in mpi4py.MPI): mpi4py MPI Prequest. + (line 6) +* Probe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1644) +* probe() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2382) +* Probe() (mpi4py.MPI.Message class method): mpi4py MPI Message. + (line 99) +* probe() (mpi4py.MPI.Message class method): mpi4py MPI Message. + (line 183) +* probe() (mpi4py.util.pkl5.Message class method): mpi4py util pkl5. + (line 150) +* PROC_NULL (in module mpi4py.MPI): mpi4py MPI PROC_NULL. + (line 6) +* PROD (in module mpi4py.MPI): mpi4py MPI PROD. (line 6) +* profile() (in module mpi4py): Miscellaneous functions. + (line 6) +* PROTOCOL (mpi4py.MPI.Pickle attribute): mpi4py MPI Pickle. (line 96) +* Psend_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1662) +* Publish_name() (in module mpi4py.MPI): mpi4py MPI Publish_name. + (line 6) +* Put() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 612) +* py2f() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2398) +* py2f() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 764) +* py2f() (mpi4py.MPI.Errhandler method): mpi4py MPI Errhandler. + (line 77) +* py2f() (mpi4py.MPI.File method): mpi4py MPI File. (line 981) +* py2f() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 267) +* py2f() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 271) +* py2f() (mpi4py.MPI.Message method): mpi4py MPI Message. (line 202) +* py2f() (mpi4py.MPI.Op method): mpi4py MPI Op. (line 128) +* py2f() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 377) +* py2f() (mpi4py.MPI.Session method): mpi4py MPI Session. (line 253) +* py2f() (mpi4py.MPI.Status method): mpi4py MPI Status. (line 197) +* py2f() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 831) +* Python Enhancement Proposals; PEP 574: mpi4py util pkl5. (line 8) +* Query_thread() (in module mpi4py.MPI): mpi4py MPI Query_thread. + (line 6) +* Raccumulate() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 628) +* Range_excl() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 192) +* Range_incl() (mpi4py.MPI.Group method): mpi4py MPI Group. (line 203) +* rank (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2541) +* rank (mpi4py.MPI.Group attribute): mpi4py MPI Group. (line 279) +* Read() (mpi4py.MPI.File method): mpi4py MPI File. (line 529) +* readonly (mpi4py.MPI.buffer attribute): mpi4py MPI buffer. (line 175) +* ready() (mpi4py.util.pool.AsyncResult method): mpi4py util pool. + (line 337) +* Read_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 543) +* Read_all_begin() (mpi4py.MPI.File method): mpi4py MPI File. + (line 557) +* Read_all_end() (mpi4py.MPI.File method): mpi4py MPI File. (line 567) +* Read_at() (mpi4py.MPI.File method): mpi4py MPI File. (line 582) +* Read_at_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 598) +* Read_at_all_begin() (mpi4py.MPI.File method): mpi4py MPI File. + (line 614) +* Read_at_all_end() (mpi4py.MPI.File method): mpi4py MPI File. + (line 628) +* Read_ordered() (mpi4py.MPI.File method): mpi4py MPI File. (line 642) +* Read_ordered_begin() (mpi4py.MPI.File method): mpi4py MPI File. + (line 656) +* Read_ordered_end() (mpi4py.MPI.File method): mpi4py MPI File. + (line 666) +* Read_shared() (mpi4py.MPI.File method): mpi4py MPI File. (line 680) +* REAL (in module mpi4py.MPI): mpi4py MPI REAL. (line 6) +* REAL16 (in module mpi4py.MPI): mpi4py MPI REAL16. (line 6) +* REAL2 (in module mpi4py.MPI): mpi4py MPI REAL2. (line 6) +* REAL4 (in module mpi4py.MPI): mpi4py MPI REAL4. (line 6) +* REAL8 (in module mpi4py.MPI): mpi4py MPI REAL8. (line 6) +* Recv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1683) +* recv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2403) +* Recv() (mpi4py.MPI.Message method): mpi4py MPI Message. (line 118) +* recv() (mpi4py.MPI.Message method): mpi4py MPI Message. (line 207) +* recv() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 268) +* recv() (mpi4py.util.pkl5.Message method): mpi4py util pkl5. + (line 133) +* Recv_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1703) +* recv_mprobe (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 119) +* Reduce() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1719) +* reduce() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2422) +* Reduce_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1737) +* Reduce_local() (mpi4py.MPI.Op method): mpi4py MPI Op. (line 89) +* Reduce_scatter() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1758) +* Reduce_scatter_block() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1777) +* Reduce_scatter_block_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1793) +* Reduce_scatter_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 1812) +* Register_datarep() (in module mpi4py.MPI): mpi4py MPI Register_datarep. + (line 6) +* release() (mpi4py.MPI.buffer method): mpi4py MPI buffer. (line 128) +* release() (mpi4py.util.sync.Condition method): Condition variable. + (line 72) +* release() (mpi4py.util.sync.Mutex method): Mutual exclusion. + (line 83) +* release() (mpi4py.util.sync.Semaphore method): Semaphore object. + (line 81) +* remote_group (mpi4py.MPI.Intercomm attribute): mpi4py MPI Intercomm. + (line 101) +* remote_size (mpi4py.MPI.Intercomm attribute): mpi4py MPI Intercomm. + (line 105) +* Remove_error_class() (in module mpi4py.MPI): mpi4py MPI Remove_error_class. + (line 6) +* Remove_error_code() (in module mpi4py.MPI): mpi4py MPI Remove_error_code. + (line 6) +* Remove_error_string() (in module mpi4py.MPI): mpi4py MPI Remove_error_string. + (line 6) +* REPLACE (in module mpi4py.MPI): mpi4py MPI REPLACE. (line 6) +* Request (class in mpi4py.MPI): mpi4py MPI Request. (line 6) +* Request (class in mpi4py.util.pkl5): mpi4py util pkl5. (line 36) +* REQUEST_NULL (in module mpi4py.MPI): mpi4py MPI REQUEST_NULL. + (line 6) +* Revoke() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1833) +* Rget() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 646) +* Rget_accumulate() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 662) +* ROOT (in module mpi4py.MPI): mpi4py MPI ROOT. (line 6) +* Rput() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 684) +* Rsend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1840) +* Rsend_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1856) +* S (in module mpi4py.typing): mpi4py typing. (line 303) +* Scan() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 362) +* scan() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 460) +* Scan_init() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 378) +* Scatter() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1872) +* scatter() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2439) +* scatter() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. + (line 395) +* Scatterv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1906) +* Scatterv_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1925) +* Scatter_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1888) +* Seek() (mpi4py.MPI.File method): mpi4py MPI File. (line 694) +* SEEK_CUR (in module mpi4py.MPI): mpi4py MPI SEEK_CUR. + (line 6) +* SEEK_END (in module mpi4py.MPI): mpi4py MPI SEEK_END. + (line 6) +* SEEK_SET (in module mpi4py.MPI): mpi4py MPI SEEK_SET. + (line 6) +* Seek_shared() (mpi4py.MPI.File method): mpi4py MPI File. (line 708) +* Semaphore (class in mpi4py.util.sync): Semaphore object. (line 6) +* Send() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1944) +* send() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2453) +* send() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 172) +* Sendrecv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1980) +* sendrecv() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2469) +* sendrecv() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. + (line 306) +* Sendrecv_replace() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 2013) +* Send_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 1964) +* Sequential (class in mpi4py.util.sync): Sequential execution. + (line 6) +* Session (class in mpi4py.MPI): mpi4py MPI Session. (line 6) +* SESSION_NULL (in module mpi4py.MPI): mpi4py MPI SESSION_NULL. + (line 6) +* Set() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 169) +* Set_atomicity() (mpi4py.MPI.File method): mpi4py MPI File. (line 722) +* Set_attr() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2044) +* Set_attr() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 658) +* Set_attr() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 700) +* Set_cancelled() (mpi4py.MPI.Status method): mpi4py MPI Status. + (line 129) +* Set_elements() (mpi4py.MPI.Status method): mpi4py MPI Status. + (line 142) +* Set_errhandler() (mpi4py.MPI.Comm method): mpi4py MPI Comm. + (line 2058) +* Set_errhandler() (mpi4py.MPI.File method): mpi4py MPI File. + (line 732) +* Set_errhandler() (mpi4py.MPI.Session method): mpi4py MPI Session. + (line 218) +* Set_errhandler() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 714) +* Set_error() (mpi4py.MPI.Status method): mpi4py MPI Status. (line 159) +* Set_info() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2068) +* Set_info() (mpi4py.MPI.File method): mpi4py MPI File. (line 742) +* Set_info() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 724) +* Set_name() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2078) +* Set_name() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 672) +* Set_name() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 734) +* Set_size() (mpi4py.MPI.File method): mpi4py MPI File. (line 752) +* Set_source() (mpi4py.MPI.Status method): mpi4py MPI Status. + (line 169) +* Set_tag() (mpi4py.MPI.Status method): mpi4py MPI Status. (line 179) +* Set_view() (mpi4py.MPI.File method): mpi4py MPI File. (line 762) +* Shared_query() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 744) +* Shift() (mpi4py.MPI.Cartcomm method): mpi4py MPI Cartcomm. + (line 100) +* SHORT (in module mpi4py.MPI): mpi4py MPI SHORT. (line 6) +* SHORT_INT (in module mpi4py.MPI): mpi4py MPI SHORT_INT. + (line 6) +* Shrink() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2088) +* shutdown() (mpi4py.futures.MPIPoolExecutor method): MPIPoolExecutor. + (line 179) +* SIGNED_CHAR (in module mpi4py.MPI): mpi4py MPI SIGNED_CHAR. + (line 6) +* SIGNED_INT (in module mpi4py.MPI): mpi4py MPI SIGNED_INT. + (line 6) +* SIGNED_LONG (in module mpi4py.MPI): mpi4py MPI SIGNED_LONG. + (line 6) +* SIGNED_LONG_LONG (in module mpi4py.MPI): mpi4py MPI SIGNED_LONG_LONG. + (line 6) +* SIGNED_SHORT (in module mpi4py.MPI): mpi4py MPI SIGNED_SHORT. + (line 6) +* SIMILAR (in module mpi4py.MPI): mpi4py MPI SIMILAR. (line 6) +* SINT16_T (in module mpi4py.MPI): mpi4py MPI SINT16_T. + (line 6) +* SINT32_T (in module mpi4py.MPI): mpi4py MPI SINT32_T. + (line 6) +* SINT64_T (in module mpi4py.MPI): mpi4py MPI SINT64_T. + (line 6) +* SINT8_T (in module mpi4py.MPI): mpi4py MPI SINT8_T. (line 6) +* size (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2545) +* size (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 816) +* size (mpi4py.MPI.File attribute): mpi4py MPI File. (line 1017) +* size (mpi4py.MPI.Group attribute): mpi4py MPI Group. (line 283) +* source (mpi4py.MPI.Status attribute): mpi4py MPI Status. (line 217) +* Spawn() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 396) +* Spawn_multiple() (mpi4py.MPI.Intracomm method): mpi4py MPI Intracomm. + (line 419) +* Split() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2095) +* Split_type() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2109) +* Ssend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2125) +* ssend() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2494) +* ssend() (mpi4py.util.pkl5.Comm method): mpi4py util pkl5. (line 204) +* Ssend_init() (mpi4py.MPI.Comm method): mpi4py MPI Comm. (line 2141) +* starmap() (mpi4py.futures.MPIPoolExecutor method): MPIPoolExecutor. + (line 165) +* starmap() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 191) +* starmap_async() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 221) +* Start() (mpi4py.MPI.Grequest class method): mpi4py MPI Grequest. + (line 44) +* Start() (mpi4py.MPI.Prequest method): mpi4py MPI Prequest. + (line 88) +* Start() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 754) +* Startall() (mpi4py.MPI.Prequest class method): mpi4py MPI Prequest. + (line 95) +* Status (class in mpi4py.MPI): mpi4py MPI Status. (line 6) +* Sub() (mpi4py.MPI.Cartcomm method): mpi4py MPI Cartcomm. + (line 115) +* submit() (mpi4py.futures.MPIPoolExecutor method): MPIPoolExecutor. + (line 126) +* SUBVERSION (in module mpi4py.MPI): mpi4py MPI SUBVERSION. + (line 6) +* SUCCESS (in module mpi4py.MPI): mpi4py MPI SUCCESS. (line 6) +* successful() (mpi4py.util.pool.AsyncResult method): mpi4py util pool. + (line 344) +* SUM (in module mpi4py.MPI): mpi4py MPI SUM. (line 6) +* SupportsBuffer (in module mpi4py.typing): mpi4py typing. (line 72) +* SupportsCAI (in module mpi4py.typing): mpi4py typing. (line 92) +* SupportsDLPack (in module mpi4py.typing): mpi4py typing. (line 82) +* Sync() (mpi4py.MPI.File method): mpi4py MPI File. (line 783) +* Sync() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 768) +* T (in module mpi4py.typing): mpi4py typing. (line 307) +* tag (mpi4py.MPI.Status attribute): mpi4py MPI Status. (line 221) +* TAG_UB (in module mpi4py.MPI): mpi4py MPI TAG_UB. (line 6) +* TargetSpec (in module mpi4py.typing): mpi4py typing. (line 284) +* terminate() (mpi4py.util.pool.Pool method): mpi4py util pool. + (line 287) +* Test() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 189) +* test() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 382) +* Test() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 775) +* test() (mpi4py.util.pkl5.Request method): mpi4py util pkl5. + (line 76) +* Testall() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 199) +* testall() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 392) +* testall() (mpi4py.util.pkl5.Request class method): mpi4py util pkl5. + (line 103) +* Testany() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 213) +* testany() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 406) +* Testsome() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 227) +* testsome() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 420) +* ThreadPool (class in mpi4py.util.pool): mpi4py util pool. (line 301) +* threads (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 56) +* THREAD_FUNNELED (in module mpi4py.MPI): mpi4py MPI THREAD_FUNNELED. + (line 6) +* thread_level (mpi4py.mpi4py.rc attribute): Runtime configuration options. + (line 71) +* THREAD_MULTIPLE (in module mpi4py.MPI): mpi4py MPI THREAD_MULTIPLE. + (line 6) +* THREAD_SERIALIZED (in module mpi4py.MPI): mpi4py MPI THREAD_SERIALIZED. + (line 6) +* THREAD_SINGLE (in module mpi4py.MPI): mpi4py MPI THREAD_SINGLE. + (line 6) +* THRESHOLD (mpi4py.MPI.Pickle attribute): mpi4py MPI Pickle. + (line 100) +* tobytes() (mpi4py.MPI.buffer method): mpi4py MPI buffer. (line 135) +* tocode() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 769) +* tomemory() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 836) +* topo (mpi4py.MPI.Cartcomm attribute): mpi4py MPI Cartcomm. + (line 148) +* topo (mpi4py.MPI.Graphcomm attribute): mpi4py MPI Graphcomm. + (line 130) +* Topocomm (class in mpi4py.MPI): mpi4py MPI Topocomm. + (line 6) +* topology (mpi4py.MPI.Comm attribute): mpi4py MPI Comm. (line 2549) +* toreadonly() (mpi4py.MPI.buffer method): mpi4py MPI buffer. + (line 145) +* to_numpy_dtype() (in module mpi4py.util.dtlib): mpi4py util dtlib. + (line 21) +* Translate_ranks() (mpi4py.MPI.Group method): mpi4py MPI Group. + (line 214) +* true_extent (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 820) +* true_lb (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 824) +* true_ub (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 828) +* TWOINT (in module mpi4py.MPI): mpi4py MPI TWOINT. (line 6) +* typechar (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 832) +* TYPECLASS_COMPLEX (in module mpi4py.MPI): mpi4py MPI TYPECLASS_COMPLEX. + (line 6) +* TYPECLASS_INTEGER (in module mpi4py.MPI): mpi4py MPI TYPECLASS_INTEGER. + (line 6) +* TYPECLASS_REAL (in module mpi4py.MPI): mpi4py MPI TYPECLASS_REAL. + (line 6) +* TypeSpec (in module mpi4py.typing): mpi4py typing. (line 145) +* typestr (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 836) +* U (in module mpi4py.typing): mpi4py typing. (line 311) +* ub (mpi4py.MPI.Datatype attribute): mpi4py MPI Datatype. + (line 840) +* UINT16_T (in module mpi4py.MPI): mpi4py MPI UINT16_T. + (line 6) +* UINT32_T (in module mpi4py.MPI): mpi4py MPI UINT32_T. + (line 6) +* UINT64_T (in module mpi4py.MPI): mpi4py MPI UINT64_T. + (line 6) +* UINT8_T (in module mpi4py.MPI): mpi4py MPI UINT8_T. (line 6) +* UNDEFINED (in module mpi4py.MPI): mpi4py MPI UNDEFINED. + (line 6) +* UNEQUAL (in module mpi4py.MPI): mpi4py MPI UNEQUAL. (line 6) +* Union() (mpi4py.MPI.Group class method): mpi4py MPI Group. (line 228) +* UNIVERSE_SIZE (in module mpi4py.MPI): mpi4py MPI UNIVERSE_SIZE. + (line 6) +* Unlock() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 782) +* Unlock_all() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 792) +* Unpack() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 682) +* Unpack_external() (mpi4py.MPI.Datatype method): mpi4py MPI Datatype. + (line 700) +* Unpublish_name() (in module mpi4py.MPI): mpi4py MPI Unpublish_name. + (line 6) +* UNSIGNED (in module mpi4py.MPI): mpi4py MPI UNSIGNED. + (line 6) +* UNSIGNED_CHAR (in module mpi4py.MPI): mpi4py MPI UNSIGNED_CHAR. + (line 6) +* UNSIGNED_INT (in module mpi4py.MPI): mpi4py MPI UNSIGNED_INT. + (line 6) +* UNSIGNED_LONG (in module mpi4py.MPI): mpi4py MPI UNSIGNED_LONG. + (line 6) +* UNSIGNED_LONG_LONG (in module mpi4py.MPI): mpi4py MPI UNSIGNED_LONG_LONG. + (line 6) +* UNSIGNED_SHORT (in module mpi4py.MPI): mpi4py MPI UNSIGNED_SHORT. + (line 6) +* UNWEIGHTED (in module mpi4py.MPI): mpi4py MPI UNWEIGHTED. + (line 6) +* update() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 276) +* V (in module mpi4py.typing): mpi4py typing. (line 315) +* values() (mpi4py.MPI.Info method): mpi4py MPI Info. (line 292) +* VERSION (in module mpi4py.MPI): mpi4py MPI VERSION. (line 6) +* Wait() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 241) +* wait() (mpi4py.MPI.Request method): mpi4py MPI Request. (line 435) +* Wait() (mpi4py.MPI.Win method): mpi4py MPI Win. (line 799) +* wait() (mpi4py.util.pkl5.Request method): mpi4py util pkl5. + (line 86) +* wait() (mpi4py.util.pool.AsyncResult method): mpi4py util pool. + (line 327) +* wait() (mpi4py.util.sync.Condition method): Condition variable. + (line 86) +* Waitall() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 251) +* waitall() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 445) +* waitall() (mpi4py.util.pkl5.Request class method): mpi4py util pkl5. + (line 110) +* Waitany() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 265) +* waitany() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 460) +* Waitsome() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 279) +* waitsome() (mpi4py.MPI.Request class method): mpi4py MPI Request. + (line 474) +* wait_for() (mpi4py.util.sync.Condition method): Condition variable. + (line 96) +* WCHAR (in module mpi4py.MPI): mpi4py MPI WCHAR. (line 6) +* WEIGHTS_EMPTY (in module mpi4py.MPI): mpi4py MPI WEIGHTS_EMPTY. + (line 6) +* Win (class in mpi4py.MPI): mpi4py MPI Win. (line 6) +* WIN_BASE (in module mpi4py.MPI): mpi4py MPI WIN_BASE. + (line 6) +* WIN_CREATE_FLAVOR (in module mpi4py.MPI): mpi4py MPI WIN_CREATE_FLAVOR. + (line 6) +* WIN_DISP_UNIT (in module mpi4py.MPI): mpi4py MPI WIN_DISP_UNIT. + (line 6) +* WIN_FLAVOR (in module mpi4py.MPI): mpi4py MPI WIN_FLAVOR. + (line 6) +* WIN_FLAVOR_ALLOCATE (in module mpi4py.MPI): mpi4py MPI WIN_FLAVOR_ALLOCATE. + (line 6) +* WIN_FLAVOR_CREATE (in module mpi4py.MPI): mpi4py MPI WIN_FLAVOR_CREATE. + (line 6) +* WIN_FLAVOR_DYNAMIC (in module mpi4py.MPI): mpi4py MPI WIN_FLAVOR_DYNAMIC. + (line 6) +* WIN_FLAVOR_SHARED (in module mpi4py.MPI): mpi4py MPI WIN_FLAVOR_SHARED. + (line 6) +* WIN_MODEL (in module mpi4py.MPI): mpi4py MPI WIN_MODEL. + (line 6) +* WIN_NULL (in module mpi4py.MPI): mpi4py MPI WIN_NULL. + (line 6) +* WIN_SEPARATE (in module mpi4py.MPI): mpi4py MPI WIN_SEPARATE. + (line 6) +* WIN_SIZE (in module mpi4py.MPI): mpi4py MPI WIN_SIZE. + (line 6) +* WIN_UNIFIED (in module mpi4py.MPI): mpi4py MPI WIN_UNIFIED. + (line 6) +* Write() (mpi4py.MPI.File method): mpi4py MPI File. (line 791) +* Write_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 805) +* Write_all_begin() (mpi4py.MPI.File method): mpi4py MPI File. + (line 819) +* Write_all_end() (mpi4py.MPI.File method): mpi4py MPI File. (line 829) +* Write_at() (mpi4py.MPI.File method): mpi4py MPI File. (line 844) +* Write_at_all() (mpi4py.MPI.File method): mpi4py MPI File. (line 860) +* Write_at_all_begin() (mpi4py.MPI.File method): mpi4py MPI File. + (line 876) +* Write_at_all_end() (mpi4py.MPI.File method): mpi4py MPI File. + (line 890) +* Write_ordered() (mpi4py.MPI.File method): mpi4py MPI File. (line 904) +* Write_ordered_begin() (mpi4py.MPI.File method): mpi4py MPI File. + (line 918) +* Write_ordered_end() (mpi4py.MPI.File method): mpi4py MPI File. + (line 928) +* Write_shared() (mpi4py.MPI.File method): mpi4py MPI File. (line 942) +* Wtick() (in module mpi4py.MPI): mpi4py MPI Wtick. (line 6) +* Wtime() (in module mpi4py.MPI): mpi4py MPI Wtime. (line 6) +* WTIME_IS_GLOBAL (in module mpi4py.MPI): mpi4py MPI WTIME_IS_GLOBAL. + (line 6) + + + + + + +Tag Table: +Node: Top322 +Ref: index doc523 +Ref: b523 +Node: Introduction22842 +Ref: intro doc22923 +Ref: c22923 +Ref: intro introduction22923 +Ref: d22923 +Ref: intro mpi-for-python22923 +Ref: e22923 +Ref: Introduction-Footnote-125003 +Ref: Introduction-Footnote-225036 +Node: What is MPI?25100 +Ref: intro what-is-mpi25185 +Ref: f25185 +Ref: What is MPI?-Footnote-126005 +Ref: What is MPI?-Footnote-226040 +Ref: What is MPI?-Footnote-326071 +Node: What is Python?26105 +Ref: intro what-is-python26215 +Ref: 1626215 +Ref: What is Python?-Footnote-127495 +Node: Related Projects27527 +Ref: intro related-projects27616 +Ref: 1927616 +Ref: intro mpi-std131279 +Ref: 1231279 +Ref: intro mpi-std231442 +Ref: 1331442 +Ref: intro mpi-using31593 +Ref: 1031593 +Ref: intro mpi-ref31751 +Ref: 1131751 +Ref: intro mpi-mpich31927 +Ref: 1431927 +Ref: intro mpi-openmpi32129 +Ref: 1532129 +Ref: intro hinsen9732567 +Ref: 1732567 +Ref: intro beazley9732788 +Ref: 1832788 +Ref: Related Projects-Footnote-133032 +Ref: Related Projects-Footnote-233134 +Ref: Related Projects-Footnote-333179 +Ref: Related Projects-Footnote-433227 +Ref: Related Projects-Footnote-533286 +Ref: Related Projects-Footnote-633313 +Ref: Related Projects-Footnote-733340 +Ref: Related Projects-Footnote-833368 +Node: Overview33398 +Ref: overview doc33484 +Ref: 1a33484 +Ref: overview overview33484 +Ref: 1b33484 +Node: Communicating Python Objects and Array Data34160 +Ref: overview communicating-python-objects-and-array-data34270 +Ref: 1c34270 +Ref: Communicating Python Objects and Array Data-Footnote-136846 +Ref: Communicating Python Objects and Array Data-Footnote-236914 +Ref: Communicating Python Objects and Array Data-Footnote-336984 +Node: Communicators37052 +Ref: overview communicators37200 +Ref: 1d37200 +Node: Point-to-Point Communications39001 +Ref: overview point-to-point-communications39131 +Ref: 3839131 +Node: Blocking Communications40054 +Ref: overview blocking-communications40178 +Ref: 3940178 +Node: Nonblocking Communications40874 +Ref: overview nonblocking-communications41032 +Ref: 4041032 +Node: Persistent Communications42373 +Ref: overview persistent-communications42499 +Ref: 4742499 +Node: Collective Communications43465 +Ref: overview collective-communications43607 +Ref: 4c43607 +Node: Support for GPU-aware MPI45872 +Ref: overview support-for-gpu-aware-mpi46011 +Ref: 6846011 +Ref: Support for GPU-aware MPI-Footnote-147134 +Ref: Support for GPU-aware MPI-Footnote-247160 +Ref: Support for GPU-aware MPI-Footnote-347194 +Ref: Support for GPU-aware MPI-Footnote-447223 +Ref: Support for GPU-aware MPI-Footnote-547269 +Ref: Support for GPU-aware MPI-Footnote-647343 +Node: Dynamic Process Management47443 +Ref: overview dynamic-process-management47581 +Ref: 6a47581 +Node: One-Sided Communications49995 +Ref: overview one-sided-communications50129 +Ref: 7550129 +Node: Parallel Input/Output52625 +Ref: overview parallel-input-output52757 +Ref: 8352757 +Node: Environmental Management55785 +Ref: overview environmental-management55884 +Ref: 8a55884 +Node: Initialization and Exit56042 +Ref: overview initialization-and-exit56161 +Ref: 8b56161 +Ref: Initialization and Exit-Footnote-157238 +Node: Implementation Information57299 +Ref: overview implementation-information57433 +Ref: 9157433 +Node: Timers57950 +Ref: overview timers58075 +Ref: 9558075 +Node: Error Handling58204 +Ref: overview error-handling58294 +Ref: 9858294 +Ref: Error Handling-Footnote-159777 +Ref: Error Handling-Footnote-259848 +Node: Tutorial59916 +Ref: tutorial doc59996 +Ref: 6959996 +Ref: tutorial id159996 +Ref: 9f59996 +Ref: tutorial tutorial59996 +Ref: a059996 +Ref: Tutorial-Footnote-165375 +Ref: Tutorial-Footnote-265428 +Ref: Tutorial-Footnote-365457 +Ref: Tutorial-Footnote-465536 +Ref: Tutorial-Footnote-565606 +Ref: Tutorial-Footnote-665639 +Ref: Tutorial-Footnote-765681 +Ref: Tutorial-Footnote-865729 +Ref: Tutorial-Footnote-965791 +Ref: Tutorial-Footnote-1065862 +Ref: Tutorial-Footnote-1165942 +Node: Running Python scripts with MPI66011 +Ref: tutorial running-python-scripts-with-mpi66124 +Ref: a966124 +Node: Point-to-Point Communication66386 +Ref: tutorial point-to-point-communication66532 +Ref: aa66532 +Ref: Point-to-Point Communication-Footnote-168157 +Node: Collective Communication68225 +Ref: tutorial collective-communication68359 +Ref: ab68359 +Node: Input/Output MPI-IO71319 +Ref: tutorial input-output-mpi-io71454 +Ref: ac71454 +Node: Dynamic Process Management<2>72686 +Ref: tutorial dynamic-process-management72830 +Ref: ad72830 +Node: GPU-aware MPI + Python GPU arrays74120 +Ref: tutorial gpu-aware-mpi-python-gpu-arrays74272 +Ref: ae74272 +Node: One-Sided Communication RMA74781 +Ref: tutorial one-sided-communication-rma74922 +Ref: af74922 +Node: Wrapping with SWIG76937 +Ref: tutorial wrapping-with-swig77063 +Ref: b077063 +Node: Wrapping with F2Py77943 +Ref: tutorial wrapping-with-f2py78033 +Ref: b178033 +Node: mpi4py78808 +Ref: mpi4py doc78890 +Ref: b278890 +Ref: mpi4py module-mpi4py78890 +Ref: 078890 +Ref: mpi4py mpi4py78890 +Ref: b378890 +Node: Runtime configuration options79780 +Ref: mpi4py runtime-configuration-options79882 +Ref: b479882 +Ref: mpi4py mpi4py mpi4py rc79951 +Ref: b579951 +Ref: mpi4py mpi4py mpi4py rc initialize80975 +Ref: b680975 +Ref: mpi4py mpi4py mpi4py rc threads81170 +Ref: b781170 +Ref: mpi4py mpi4py mpi4py rc thread_level81363 +Ref: b881363 +Ref: mpi4py mpi4py mpi4py rc finalize81653 +Ref: b981653 +Ref: mpi4py mpi4py mpi4py rc fast_reduce81851 +Ref: ba81851 +Ref: mpi4py mpi4py mpi4py rc recv_mprobe82048 +Ref: bb82048 +Ref: mpi4py mpi4py mpi4py rc irecv_bufsz82246 +Ref: bc82246 +Ref: mpi4py mpi4py mpi4py rc errors82489 +Ref: bd82489 +Ref: Runtime configuration options-Footnote-183419 +Ref: Runtime configuration options-Footnote-283481 +Ref: Runtime configuration options-Footnote-383543 +Ref: Runtime configuration options-Footnote-483605 +Ref: Runtime configuration options-Footnote-583667 +Ref: Runtime configuration options-Footnote-683727 +Ref: Runtime configuration options-Footnote-783789 +Ref: Runtime configuration options-Footnote-883851 +Ref: Runtime configuration options-Footnote-983913 +Ref: Runtime configuration options-Footnote-1083975 +Ref: Runtime configuration options-Footnote-1184038 +Ref: Runtime configuration options-Footnote-1284101 +Ref: Runtime configuration options-Footnote-1384164 +Ref: Runtime configuration options-Footnote-1484226 +Node: Environment variables84287 +Ref: mpi4py environment-variables84421 +Ref: c684421 +Ref: mpi4py envvar-MPI4PY_RC_INITIALIZE84868 +Ref: be84868 +Ref: mpi4py envvar-MPI4PY_RC_FINALIZE85160 +Ref: c185160 +Ref: mpi4py envvar-MPI4PY_RC_THREADS85486 +Ref: bf85486 +Ref: mpi4py envvar-MPI4PY_RC_THREAD_LEVEL85725 +Ref: c085725 +Ref: mpi4py envvar-MPI4PY_RC_FAST_REDUCE86038 +Ref: c286038 +Ref: mpi4py envvar-MPI4PY_RC_RECV_MPROBE86288 +Ref: c386288 +Ref: mpi4py envvar-MPI4PY_RC_IRECV_BUFSZ86508 +Ref: c486508 +Ref: mpi4py envvar-MPI4PY_RC_ERRORS86760 +Ref: c586760 +Ref: mpi4py envvar-MPI4PY_PICKLE_PROTOCOL87062 +Ref: a687062 +Ref: mpi4py envvar-MPI4PY_PICKLE_THRESHOLD87436 +Ref: c787436 +Ref: Environment variables-Footnote-187908 +Ref: Environment variables-Footnote-287971 +Ref: Environment variables-Footnote-388033 +Ref: Environment variables-Footnote-488073 +Ref: Environment variables-Footnote-588135 +Ref: Environment variables-Footnote-688197 +Ref: Environment variables-Footnote-788259 +Ref: Environment variables-Footnote-888321 +Ref: Environment variables-Footnote-988383 +Ref: Environment variables-Footnote-1088445 +Ref: Environment variables-Footnote-1188508 +Ref: Environment variables-Footnote-1288572 +Ref: Environment variables-Footnote-1388635 +Ref: Environment variables-Footnote-1488698 +Ref: Environment variables-Footnote-1588761 +Ref: Environment variables-Footnote-1688824 +Ref: Environment variables-Footnote-1788887 +Ref: Environment variables-Footnote-1888950 +Ref: Environment variables-Footnote-1989013 +Ref: Environment variables-Footnote-2089076 +Ref: Environment variables-Footnote-2189138 +Ref: Environment variables-Footnote-2289218 +Node: Miscellaneous functions89280 +Ref: mpi4py miscellaneous-functions89376 +Ref: c989376 +Ref: mpi4py mpi4py profile89433 +Ref: ca89433 +Ref: mpi4py mpi4py get_include89772 +Ref: cb89772 +Ref: mpi4py mpi4py get_config90229 +Ref: cc90229 +Ref: Miscellaneous functions-Footnote-190850 +Ref: Miscellaneous functions-Footnote-290910 +Ref: Miscellaneous functions-Footnote-390972 +Ref: Miscellaneous functions-Footnote-491032 +Ref: Miscellaneous functions-Footnote-591094 +Ref: Miscellaneous functions-Footnote-691154 +Ref: Miscellaneous functions-Footnote-791235 +Ref: Miscellaneous functions-Footnote-891296 +Ref: Miscellaneous functions-Footnote-991356 +Node: mpi4py MPI91416 +Ref: mpi4py MPI doc91503 +Ref: cd91503 +Ref: mpi4py MPI mpi4py-mpi91503 +Ref: ce91503 +Node: Classes91581 +Ref: mpi4py MPI classes91653 +Ref: cf91653 +Node: Functions93441 +Ref: mpi4py MPI functions93532 +Ref: db93532 +Node: Attributes97913 +Ref: mpi4py MPI attributes97988 +Ref: f497988 +Ref: Attributes-Footnote-1126176 +Ref: Attributes-Footnote-2126237 +Ref: Attributes-Footnote-3126298 +Ref: Attributes-Footnote-4126359 +Ref: Attributes-Footnote-5126420 +Ref: Attributes-Footnote-6126481 +Ref: Attributes-Footnote-7126542 +Ref: Attributes-Footnote-8126603 +Ref: Attributes-Footnote-9126664 +Ref: Attributes-Footnote-10126725 +Ref: Attributes-Footnote-11126787 +Ref: Attributes-Footnote-12126849 +Ref: Attributes-Footnote-13126911 +Ref: Attributes-Footnote-14126973 +Ref: Attributes-Footnote-15127035 +Ref: Attributes-Footnote-16127097 +Ref: Attributes-Footnote-17127159 +Ref: Attributes-Footnote-18127221 +Ref: Attributes-Footnote-19127283 +Ref: Attributes-Footnote-20127345 +Ref: Attributes-Footnote-21127407 +Ref: Attributes-Footnote-22127469 +Ref: Attributes-Footnote-23127531 +Ref: Attributes-Footnote-24127593 +Ref: Attributes-Footnote-25127655 +Ref: Attributes-Footnote-26127717 +Ref: Attributes-Footnote-27127779 +Ref: Attributes-Footnote-28127841 +Ref: Attributes-Footnote-29127903 +Ref: Attributes-Footnote-30127965 +Ref: Attributes-Footnote-31128027 +Ref: Attributes-Footnote-32128089 +Ref: Attributes-Footnote-33128151 +Ref: Attributes-Footnote-34128213 +Ref: Attributes-Footnote-35128275 +Ref: Attributes-Footnote-36128337 +Ref: Attributes-Footnote-37128399 +Ref: Attributes-Footnote-38128461 +Ref: Attributes-Footnote-39128523 +Ref: Attributes-Footnote-40128585 +Ref: Attributes-Footnote-41128647 +Ref: Attributes-Footnote-42128709 +Ref: Attributes-Footnote-43128771 +Ref: Attributes-Footnote-44128833 +Ref: Attributes-Footnote-45128895 +Ref: Attributes-Footnote-46128957 +Ref: Attributes-Footnote-47129019 +Ref: Attributes-Footnote-48129081 +Ref: Attributes-Footnote-49129143 +Ref: Attributes-Footnote-50129205 +Ref: Attributes-Footnote-51129267 +Ref: Attributes-Footnote-52129329 +Ref: Attributes-Footnote-53129391 +Ref: Attributes-Footnote-54129453 +Ref: Attributes-Footnote-55129515 +Ref: Attributes-Footnote-56129577 +Ref: Attributes-Footnote-57129639 +Ref: Attributes-Footnote-58129701 +Ref: Attributes-Footnote-59129763 +Ref: Attributes-Footnote-60129825 +Ref: Attributes-Footnote-61129887 +Ref: Attributes-Footnote-62129949 +Ref: Attributes-Footnote-63130011 +Ref: Attributes-Footnote-64130073 +Ref: Attributes-Footnote-65130135 +Ref: Attributes-Footnote-66130197 +Ref: Attributes-Footnote-67130259 +Ref: Attributes-Footnote-68130321 +Ref: Attributes-Footnote-69130383 +Ref: Attributes-Footnote-70130445 +Ref: Attributes-Footnote-71130507 +Ref: Attributes-Footnote-72130569 +Ref: Attributes-Footnote-73130631 +Ref: Attributes-Footnote-74130693 +Ref: Attributes-Footnote-75130755 +Ref: Attributes-Footnote-76130817 +Ref: Attributes-Footnote-77130879 +Ref: Attributes-Footnote-78130941 +Ref: Attributes-Footnote-79131003 +Ref: Attributes-Footnote-80131065 +Ref: Attributes-Footnote-81131127 +Ref: Attributes-Footnote-82131189 +Ref: Attributes-Footnote-83131251 +Ref: Attributes-Footnote-84131313 +Ref: Attributes-Footnote-85131375 +Ref: Attributes-Footnote-86131437 +Ref: Attributes-Footnote-87131499 +Ref: Attributes-Footnote-88131561 +Ref: Attributes-Footnote-89131623 +Ref: Attributes-Footnote-90131685 +Ref: Attributes-Footnote-91131747 +Ref: Attributes-Footnote-92131809 +Ref: Attributes-Footnote-93131871 +Ref: Attributes-Footnote-94131933 +Ref: Attributes-Footnote-95131995 +Ref: Attributes-Footnote-96132057 +Ref: Attributes-Footnote-97132119 +Ref: Attributes-Footnote-98132181 +Ref: Attributes-Footnote-99132243 +Ref: Attributes-Footnote-100132305 +Ref: Attributes-Footnote-101132368 +Ref: Attributes-Footnote-102132431 +Ref: Attributes-Footnote-103132494 +Ref: Attributes-Footnote-104132557 +Ref: Attributes-Footnote-105132620 +Ref: Attributes-Footnote-106132683 +Ref: Attributes-Footnote-107132746 +Ref: Attributes-Footnote-108132809 +Ref: Attributes-Footnote-109132872 +Ref: Attributes-Footnote-110132935 +Ref: Attributes-Footnote-111132998 +Ref: Attributes-Footnote-112133061 +Ref: Attributes-Footnote-113133124 +Ref: Attributes-Footnote-114133187 +Ref: Attributes-Footnote-115133250 +Ref: Attributes-Footnote-116133313 +Ref: Attributes-Footnote-117133376 +Ref: Attributes-Footnote-118133439 +Ref: Attributes-Footnote-119133502 +Ref: Attributes-Footnote-120133565 +Ref: Attributes-Footnote-121133628 +Ref: Attributes-Footnote-122133691 +Ref: Attributes-Footnote-123133754 +Ref: Attributes-Footnote-124133817 +Ref: Attributes-Footnote-125133880 +Ref: Attributes-Footnote-126133943 +Ref: Attributes-Footnote-127134006 +Ref: Attributes-Footnote-128134069 +Ref: Attributes-Footnote-129134132 +Ref: Attributes-Footnote-130134195 +Ref: Attributes-Footnote-131134258 +Ref: Attributes-Footnote-132134321 +Ref: Attributes-Footnote-133134384 +Ref: Attributes-Footnote-134134447 +Ref: Attributes-Footnote-135134510 +Ref: Attributes-Footnote-136134573 +Ref: Attributes-Footnote-137134636 +Ref: Attributes-Footnote-138134699 +Ref: Attributes-Footnote-139134762 +Ref: Attributes-Footnote-140134825 +Ref: Attributes-Footnote-141134888 +Ref: Attributes-Footnote-142134951 +Ref: Attributes-Footnote-143135014 +Ref: Attributes-Footnote-144135077 +Ref: Attributes-Footnote-145135140 +Ref: Attributes-Footnote-146135203 +Ref: Attributes-Footnote-147135266 +Ref: Attributes-Footnote-148135329 +Ref: Attributes-Footnote-149135392 +Ref: Attributes-Footnote-150135455 +Ref: Attributes-Footnote-151135518 +Ref: Attributes-Footnote-152135581 +Ref: Attributes-Footnote-153135644 +Ref: Attributes-Footnote-154135707 +Ref: Attributes-Footnote-155135770 +Ref: Attributes-Footnote-156135833 +Ref: Attributes-Footnote-157135896 +Node: mpi4py typing135959 +Ref: mpi4py typing doc136054 +Ref: 205136054 +Ref: mpi4py typing module-mpi4py typing136054 +Ref: 5136054 +Ref: mpi4py typing mpi4py-typing136054 +Ref: 206136054 +Ref: mpi4py typing mpi4py typing SupportsBuffer137672 +Ref: 207137672 +Ref: mpi4py typing mpi4py typing SupportsDLPack137847 +Ref: 208137847 +Ref: mpi4py typing mpi4py typing SupportsCAI138048 +Ref: 209138048 +Ref: mpi4py typing mpi4py typing Buffer138247 +Ref: 20a138247 +Ref: mpi4py typing mpi4py typing Bottom138407 +Ref: 20b138407 +Ref: mpi4py typing mpi4py typing InPlace138520 +Ref: 20c138520 +Ref: mpi4py typing mpi4py typing Aint138633 +Ref: 20d138633 +Ref: mpi4py typing mpi4py typing Count138763 +Ref: 20e138763 +Ref: mpi4py typing mpi4py typing Displ138891 +Ref: 20f138891 +Ref: mpi4py typing mpi4py typing Offset139026 +Ref: 210139026 +Ref: mpi4py typing mpi4py typing TypeSpec139156 +Ref: 211139156 +Ref: mpi4py typing mpi4py typing BufSpec139265 +Ref: 212139265 +Ref: mpi4py typing mpi4py typing BufSpecB140250 +Ref: 213140250 +Ref: mpi4py typing mpi4py typing BufSpecV141073 +Ref: 214141073 +Ref: mpi4py typing mpi4py typing BufSpecW143434 +Ref: 215143434 +Ref: mpi4py typing mpi4py typing TargetSpec145040 +Ref: 216145040 +Ref: mpi4py typing mpi4py typing S145543 +Ref: 217145543 +Ref: mpi4py typing mpi4py typing T145615 +Ref: 218145615 +Ref: mpi4py typing mpi4py typing U145687 +Ref: 219145687 +Ref: mpi4py typing mpi4py typing V145759 +Ref: 21a145759 +Ref: mpi4py typing-Footnote-1145867 +Ref: mpi4py typing-Footnote-2145931 +Ref: mpi4py typing-Footnote-3145994 +Ref: mpi4py typing-Footnote-4146062 +Ref: mpi4py typing-Footnote-5146130 +Ref: mpi4py typing-Footnote-6146196 +Ref: mpi4py typing-Footnote-7146270 +Ref: mpi4py typing-Footnote-8146370 +Ref: mpi4py typing-Footnote-9146432 +Ref: mpi4py typing-Footnote-10146494 +Ref: mpi4py typing-Footnote-11146567 +Ref: mpi4py typing-Footnote-12146640 +Ref: mpi4py typing-Footnote-13146713 +Ref: mpi4py typing-Footnote-14146786 +Ref: mpi4py typing-Footnote-15146847 +Ref: mpi4py typing-Footnote-16146915 +Ref: mpi4py typing-Footnote-17146988 +Ref: mpi4py typing-Footnote-18147056 +Ref: mpi4py typing-Footnote-19147117 +Ref: mpi4py typing-Footnote-20147185 +Ref: mpi4py typing-Footnote-21147258 +Ref: mpi4py typing-Footnote-22147319 +Ref: mpi4py typing-Footnote-23147387 +Ref: mpi4py typing-Footnote-24147450 +Ref: mpi4py typing-Footnote-25147523 +Ref: mpi4py typing-Footnote-26147590 +Ref: mpi4py typing-Footnote-27147656 +Ref: mpi4py typing-Footnote-28147724 +Ref: mpi4py typing-Footnote-29147797 +Ref: mpi4py typing-Footnote-30147865 +Ref: mpi4py typing-Footnote-31147926 +Ref: mpi4py typing-Footnote-32147994 +Ref: mpi4py typing-Footnote-33148067 +Ref: mpi4py typing-Footnote-34148128 +Ref: mpi4py typing-Footnote-35148195 +Ref: mpi4py typing-Footnote-36148261 +Ref: mpi4py typing-Footnote-37148329 +Ref: mpi4py typing-Footnote-38148400 +Ref: mpi4py typing-Footnote-39148473 +Ref: mpi4py typing-Footnote-40148541 +Ref: mpi4py typing-Footnote-41148609 +Ref: mpi4py typing-Footnote-42148680 +Ref: mpi4py typing-Footnote-43148753 +Ref: mpi4py typing-Footnote-44148824 +Ref: mpi4py typing-Footnote-45148897 +Ref: mpi4py typing-Footnote-46148965 +Ref: mpi4py typing-Footnote-47149026 +Ref: mpi4py typing-Footnote-48149094 +Ref: mpi4py typing-Footnote-49149165 +Ref: mpi4py typing-Footnote-50149238 +Ref: mpi4py typing-Footnote-51149299 +Ref: mpi4py typing-Footnote-52149367 +Ref: mpi4py typing-Footnote-53149435 +Ref: mpi4py typing-Footnote-54149506 +Ref: mpi4py typing-Footnote-55149579 +Ref: mpi4py typing-Footnote-56149650 +Ref: mpi4py typing-Footnote-57149723 +Ref: mpi4py typing-Footnote-58149784 +Ref: mpi4py typing-Footnote-59149852 +Ref: mpi4py typing-Footnote-60149923 +Ref: mpi4py typing-Footnote-61149996 +Ref: mpi4py typing-Footnote-62150067 +Ref: mpi4py typing-Footnote-63150140 +Ref: mpi4py typing-Footnote-64150201 +Ref: mpi4py typing-Footnote-65150269 +Ref: mpi4py typing-Footnote-66150332 +Ref: mpi4py typing-Footnote-67150400 +Ref: mpi4py typing-Footnote-68150471 +Ref: mpi4py typing-Footnote-69150544 +Ref: mpi4py typing-Footnote-70150615 +Ref: mpi4py typing-Footnote-71150688 +Ref: mpi4py typing-Footnote-72150756 +Ref: mpi4py typing-Footnote-73150819 +Ref: mpi4py typing-Footnote-74150890 +Ref: mpi4py typing-Footnote-75150963 +Ref: mpi4py typing-Footnote-76151034 +Ref: mpi4py typing-Footnote-77151107 +Ref: mpi4py typing-Footnote-78151174 +Ref: mpi4py typing-Footnote-79151240 +Ref: mpi4py typing-Footnote-80151308 +Ref: mpi4py typing-Footnote-81151379 +Ref: mpi4py typing-Footnote-82151447 +Ref: mpi4py typing-Footnote-83151515 +Ref: mpi4py typing-Footnote-84151586 +Ref: mpi4py typing-Footnote-85151659 +Ref: mpi4py typing-Footnote-86151730 +Ref: mpi4py typing-Footnote-87151803 +Ref: mpi4py typing-Footnote-88151874 +Ref: mpi4py typing-Footnote-89151942 +Ref: mpi4py typing-Footnote-90152013 +Ref: mpi4py typing-Footnote-91152086 +Ref: mpi4py typing-Footnote-92152157 +Ref: mpi4py typing-Footnote-93152230 +Ref: mpi4py typing-Footnote-94152301 +Ref: mpi4py typing-Footnote-95152369 +Ref: mpi4py typing-Footnote-96152432 +Ref: mpi4py typing-Footnote-97152500 +Ref: mpi4py typing-Footnote-98152571 +Ref: mpi4py typing-Footnote-99152644 +Ref: mpi4py typing-Footnote-100152715 +Ref: mpi4py typing-Footnote-101152789 +Ref: mpi4py typing-Footnote-102152861 +Ref: mpi4py typing-Footnote-103152930 +Ref: mpi4py typing-Footnote-104152994 +Ref: mpi4py typing-Footnote-105153066 +Ref: mpi4py typing-Footnote-106153140 +Ref: mpi4py typing-Footnote-107153212 +Ref: mpi4py typing-Footnote-108153286 +Ref: mpi4py typing-Footnote-109153358 +Ref: mpi4py typing-Footnote-110153426 +Ref: mpi4py typing-Footnote-111153493 +Ref: mpi4py typing-Footnote-112153567 +Ref: mpi4py typing-Footnote-113153636 +Ref: mpi4py typing-Footnote-114153705 +Ref: mpi4py typing-Footnote-115153779 +Ref: mpi4py typing-Footnote-116153848 +Ref: mpi4py typing-Footnote-117153922 +Ref: mpi4py typing-Footnote-118153996 +Ref: mpi4py typing-Footnote-119154065 +Ref: mpi4py typing-Footnote-120154139 +Ref: mpi4py typing-Footnote-121154213 +Ref: mpi4py typing-Footnote-122154275 +Ref: mpi4py typing-Footnote-123154343 +Ref: mpi4py typing-Footnote-124154410 +Ref: mpi4py typing-Footnote-125154481 +Ref: mpi4py typing-Footnote-126154552 +Ref: mpi4py typing-Footnote-127154623 +Node: mpi4py futures154694 +Ref: mpi4py futures doc154790 +Ref: 21b154790 +Ref: mpi4py futures module-mpi4py futures154790 +Ref: 2154790 +Ref: mpi4py futures mpi4py-futures154790 +Ref: 21c154790 +Ref: mpi4py futures-Footnote-1155859 +Ref: mpi4py futures-Footnote-2155952 +Ref: mpi4py futures-Footnote-3156047 +Ref: mpi4py futures-Footnote-4156149 +Ref: mpi4py futures-Footnote-5156242 +Ref: mpi4py futures-Footnote-6156335 +Ref: mpi4py futures-Footnote-7156428 +Ref: mpi4py futures-Footnote-8156519 +Ref: mpi4py futures-Footnote-9156618 +Ref: mpi4py futures-Footnote-10156711 +Node: MPIPoolExecutor156805 +Ref: mpi4py futures mpipoolexecutor156895 +Ref: 21e156895 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor159179 +Ref: 21d159179 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor submit163598 +Ref: 222163598 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor map163987 +Ref: 223163987 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor starmap165682 +Ref: 224165682 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor shutdown166332 +Ref: 225166332 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor bootup167959 +Ref: 226167959 +Ref: mpi4py futures mpi4py futures MPIPoolExecutor num_workers168457 +Ref: 227168457 +Ref: mpi4py futures envvar-MPI4PY_FUTURES_MAX_WORKERS168541 +Ref: 21f168541 +Ref: mpi4py futures envvar-MPI4PY_FUTURES_USE_PKL5168885 +Ref: 220168885 +Ref: mpi4py futures envvar-MPI4PY_FUTURES_BACKOFF169660 +Ref: 221169660 +Ref: MPIPoolExecutor-Footnote-1171593 +Ref: MPIPoolExecutor-Footnote-2171671 +Ref: MPIPoolExecutor-Footnote-3171743 +Ref: MPIPoolExecutor-Footnote-4171815 +Ref: MPIPoolExecutor-Footnote-5171881 +Ref: MPIPoolExecutor-Footnote-6171953 +Ref: MPIPoolExecutor-Footnote-7172025 +Ref: MPIPoolExecutor-Footnote-8172088 +Ref: MPIPoolExecutor-Footnote-9172183 +Ref: MPIPoolExecutor-Footnote-10172245 +Ref: MPIPoolExecutor-Footnote-11172315 +Ref: MPIPoolExecutor-Footnote-12172417 +Ref: MPIPoolExecutor-Footnote-13172484 +Ref: MPIPoolExecutor-Footnote-14172546 +Ref: MPIPoolExecutor-Footnote-15172608 +Ref: MPIPoolExecutor-Footnote-16172676 +Ref: MPIPoolExecutor-Footnote-17172742 +Ref: MPIPoolExecutor-Footnote-18172804 +Ref: MPIPoolExecutor-Footnote-19172866 +Ref: MPIPoolExecutor-Footnote-20172930 +Ref: MPIPoolExecutor-Footnote-21173003 +Ref: MPIPoolExecutor-Footnote-22173067 +Ref: MPIPoolExecutor-Footnote-23173140 +Ref: MPIPoolExecutor-Footnote-24173202 +Ref: MPIPoolExecutor-Footnote-25173263 +Ref: MPIPoolExecutor-Footnote-26173335 +Ref: MPIPoolExecutor-Footnote-27173395 +Ref: MPIPoolExecutor-Footnote-28173457 +Ref: MPIPoolExecutor-Footnote-29173519 +Ref: MPIPoolExecutor-Footnote-30173582 +Ref: MPIPoolExecutor-Footnote-31173645 +Ref: MPIPoolExecutor-Footnote-32173709 +Ref: MPIPoolExecutor-Footnote-33173773 +Ref: MPIPoolExecutor-Footnote-34173867 +Ref: MPIPoolExecutor-Footnote-35173929 +Ref: MPIPoolExecutor-Footnote-36174029 +Ref: MPIPoolExecutor-Footnote-37174105 +Ref: MPIPoolExecutor-Footnote-38174168 +Ref: MPIPoolExecutor-Footnote-39174231 +Ref: MPIPoolExecutor-Footnote-40174308 +Ref: MPIPoolExecutor-Footnote-41174380 +Ref: MPIPoolExecutor-Footnote-42174443 +Ref: MPIPoolExecutor-Footnote-43174507 +Ref: MPIPoolExecutor-Footnote-44174570 +Ref: MPIPoolExecutor-Footnote-45174640 +Ref: MPIPoolExecutor-Footnote-46174703 +Ref: MPIPoolExecutor-Footnote-47174766 +Ref: MPIPoolExecutor-Footnote-48174829 +Ref: MPIPoolExecutor-Footnote-49174892 +Ref: MPIPoolExecutor-Footnote-50174956 +Ref: MPIPoolExecutor-Footnote-51175019 +Ref: MPIPoolExecutor-Footnote-52175060 +Ref: MPIPoolExecutor-Footnote-53175124 +Ref: MPIPoolExecutor-Footnote-54175188 +Node: MPICommExecutor175262 +Ref: mpi4py futures mpicommexecutor175373 +Ref: 228175373 +Ref: mpi4py futures mpi4py futures MPICommExecutor176759 +Ref: 229176759 +Ref: MPICommExecutor-Footnote-1178677 +Ref: MPICommExecutor-Footnote-2178739 +Ref: MPICommExecutor-Footnote-3178808 +Ref: MPICommExecutor-Footnote-4178870 +Ref: MPICommExecutor-Footnote-5178939 +Ref: MPICommExecutor-Footnote-6178996 +Ref: MPICommExecutor-Footnote-7179053 +Node: Command line179158 +Ref: mpi4py futures command-line179268 +Ref: 22a179268 +Ref: Command line-Footnote-1182142 +Ref: Command line-Footnote-2182203 +Node: Parallel tasks182273 +Ref: mpi4py futures parallel-tasks182377 +Ref: 22b182377 +Ref: mpi4py futures mpi4py futures get_comm_workers182782 +Ref: 22c182782 +Ref: Parallel tasks-Footnote-1184060 +Ref: Parallel tasks-Footnote-2184153 +Ref: Parallel tasks-Footnote-3184244 +Node: Utilities184337 +Ref: mpi4py futures utilities184437 +Ref: 22f184437 +Ref: mpi4py futures mpi4py futures collect184568 +Ref: 230184568 +Ref: mpi4py futures mpi4py futures compose184807 +Ref: 231184807 +Ref: Utilities-Footnote-1186311 +Ref: Utilities-Footnote-2186404 +Node: Examples186472 +Ref: mpi4py futures examples186566 +Ref: 232186566 +Node: Computing the Julia set186691 +Ref: mpi4py futures computing-the-julia-set186794 +Ref: 233186794 +Ref: Computing the Julia set-Footnote-1190628 +Ref: Computing the Julia set-Footnote-2190676 +Ref: Computing the Julia set-Footnote-3190728 +Ref: Computing the Julia set-Footnote-4190927 +Node: Computing Pi parallel task190997 +Ref: mpi4py futures computing-pi-parallel-task191100 +Ref: 235191100 +Node: Citation193764 +Ref: mpi4py futures citation193840 +Ref: 236193840 +Ref: mpi4py futures id4194055 +Ref: 237194055 +Node: mpi4py util194318 +Ref: mpi4py util doc194411 +Ref: 238194411 +Ref: mpi4py util module-mpi4py util194411 +Ref: 6194411 +Ref: mpi4py util mpi4py-util194411 +Ref: 239194411 +Node: mpi4py util dtlib194740 +Ref: mpi4py util dtlib doc194830 +Ref: 23a194830 +Ref: mpi4py util dtlib module-mpi4py util dtlib194830 +Ref: 7194830 +Ref: mpi4py util dtlib mpi4py-util-dtlib194830 +Ref: 23b194830 +Ref: mpi4py util dtlib mpi4py util dtlib from_numpy_dtype195001 +Ref: 23c195001 +Ref: mpi4py util dtlib mpi4py util dtlib to_numpy_dtype195220 +Ref: 23d195220 +Ref: mpi4py util dtlib-Footnote-1195472 +Ref: mpi4py util dtlib-Footnote-2195555 +Ref: mpi4py util dtlib-Footnote-3195642 +Node: mpi4py util pkl5195707 +Ref: mpi4py util pkl5 doc195822 +Ref: 23e195822 +Ref: mpi4py util pkl5 module-mpi4py util pkl5195822 +Ref: 8195822 +Ref: mpi4py util pkl5 mpi4py-util-pkl5195822 +Ref: 23f195822 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request197360 +Ref: 240197360 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request Free197569 +Ref: 241197569 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request free197669 +Ref: 242197669 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request cancel197769 +Ref: 243197769 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request get_status197873 +Ref: 244197873 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request test198087 +Ref: 245198087 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request wait198312 +Ref: 246198312 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request get_status_all198499 +Ref: 247198499 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request testall198663 +Ref: 248198663 +Ref: mpi4py util pkl5 mpi4py util pkl5 Request waitall198804 +Ref: 249198804 +Ref: mpi4py util pkl5 mpi4py util pkl5 Message198939 +Ref: 24a198939 +Ref: mpi4py util pkl5 mpi4py util pkl5 Message free199137 +Ref: 24b199137 +Ref: mpi4py util pkl5 mpi4py util pkl5 Message recv199220 +Ref: 24c199220 +Ref: mpi4py util pkl5 mpi4py util pkl5 Message irecv199412 +Ref: 24d199412 +Ref: mpi4py util pkl5 mpi4py util pkl5 Message probe199535 +Ref: 24e199535 +Ref: mpi4py util pkl5 mpi4py util pkl5 Message iprobe199711 +Ref: 24f199711 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm199891 +Ref: 250199891 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm send199984 +Ref: 251199984 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm bsend200236 +Ref: 252200236 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm ssend200489 +Ref: 253200489 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm isend200745 +Ref: 254200745 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm ibsend201012 +Ref: 255201012 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm issend201280 +Ref: 256201280 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm recv201551 +Ref: 257201551 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm irecv201932 +Ref: 258201932 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm sendrecv202349 +Ref: 259202349 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm mprobe202895 +Ref: 25a202895 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm improbe203224 +Ref: 25b203224 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm bcast203568 +Ref: 25c203568 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm gather203793 +Ref: 25d203793 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm scatter204045 +Ref: 25e204045 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm allgather204321 +Ref: 25f204321 +Ref: mpi4py util pkl5 mpi4py util pkl5 Comm alltoall204511 +Ref: 260204511 +Ref: mpi4py util pkl5 mpi4py util pkl5 Intracomm204738 +Ref: 261204738 +Ref: mpi4py util pkl5 mpi4py util pkl5 Intercomm204841 +Ref: 262204841 +Ref: mpi4py util pkl5-Footnote-1205015 +Ref: mpi4py util pkl5-Footnote-2205083 +Ref: mpi4py util pkl5-Footnote-3205125 +Ref: mpi4py util pkl5-Footnote-4205193 +Ref: mpi4py util pkl5-Footnote-5205235 +Ref: mpi4py util pkl5-Footnote-6205297 +Ref: mpi4py util pkl5-Footnote-7205359 +Ref: mpi4py util pkl5-Footnote-8205421 +Ref: mpi4py util pkl5-Footnote-9205483 +Ref: mpi4py util pkl5-Footnote-10205545 +Ref: mpi4py util pkl5-Footnote-11205608 +Ref: mpi4py util pkl5-Footnote-12205671 +Ref: mpi4py util pkl5-Footnote-13205734 +Ref: mpi4py util pkl5-Footnote-14205800 +Ref: mpi4py util pkl5-Footnote-15205863 +Ref: mpi4py util pkl5-Footnote-16205926 +Ref: mpi4py util pkl5-Footnote-17205992 +Ref: mpi4py util pkl5-Footnote-18206055 +Ref: mpi4py util pkl5-Footnote-19206118 +Ref: mpi4py util pkl5-Footnote-20206184 +Ref: mpi4py util pkl5-Footnote-21206250 +Ref: mpi4py util pkl5-Footnote-22206312 +Ref: mpi4py util pkl5-Footnote-23206374 +Ref: mpi4py util pkl5-Footnote-24206437 +Ref: mpi4py util pkl5-Footnote-25206503 +Ref: mpi4py util pkl5-Footnote-26206565 +Ref: mpi4py util pkl5-Footnote-27206627 +Ref: mpi4py util pkl5-Footnote-28206690 +Ref: mpi4py util pkl5-Footnote-29206756 +Ref: mpi4py util pkl5-Footnote-30206818 +Ref: mpi4py util pkl5-Footnote-31206880 +Ref: mpi4py util pkl5-Footnote-32206943 +Ref: mpi4py util pkl5-Footnote-33207009 +Ref: mpi4py util pkl5-Footnote-34207071 +Ref: mpi4py util pkl5-Footnote-35207133 +Ref: mpi4py util pkl5-Footnote-36207199 +Ref: mpi4py util pkl5-Footnote-37207261 +Ref: mpi4py util pkl5-Footnote-38207323 +Ref: mpi4py util pkl5-Footnote-39207389 +Ref: mpi4py util pkl5-Footnote-40207451 +Ref: mpi4py util pkl5-Footnote-41207513 +Ref: mpi4py util pkl5-Footnote-42207576 +Ref: mpi4py util pkl5-Footnote-43207638 +Ref: mpi4py util pkl5-Footnote-44207700 +Ref: mpi4py util pkl5-Footnote-45207763 +Ref: mpi4py util pkl5-Footnote-46207835 +Ref: mpi4py util pkl5-Footnote-47207898 +Ref: mpi4py util pkl5-Footnote-48207960 +Ref: mpi4py util pkl5-Footnote-49208022 +Ref: mpi4py util pkl5-Footnote-50208084 +Ref: mpi4py util pkl5-Footnote-51208146 +Ref: mpi4py util pkl5-Footnote-52208209 +Ref: mpi4py util pkl5-Footnote-53208271 +Ref: mpi4py util pkl5-Footnote-54208333 +Ref: mpi4py util pkl5-Footnote-55208396 +Ref: mpi4py util pkl5-Footnote-56208458 +Ref: mpi4py util pkl5-Footnote-57208520 +Ref: mpi4py util pkl5-Footnote-58208583 +Ref: mpi4py util pkl5-Footnote-59208645 +Ref: mpi4py util pkl5-Footnote-60208707 +Ref: mpi4py util pkl5-Footnote-61208770 +Ref: mpi4py util pkl5-Footnote-62208833 +Ref: mpi4py util pkl5-Footnote-63208899 +Ref: mpi4py util pkl5-Footnote-64208961 +Ref: mpi4py util pkl5-Footnote-65209027 +Ref: mpi4py util pkl5-Footnote-66209093 +Ref: mpi4py util pkl5-Footnote-67209155 +Ref: mpi4py util pkl5-Footnote-68209217 +Ref: mpi4py util pkl5-Footnote-69209283 +Ref: mpi4py util pkl5-Footnote-70209346 +Ref: mpi4py util pkl5-Footnote-71209417 +Ref: mpi4py util pkl5-Footnote-72209483 +Ref: mpi4py util pkl5-Footnote-73209546 +Ref: mpi4py util pkl5-Footnote-74209608 +Ref: mpi4py util pkl5-Footnote-75209674 +Ref: mpi4py util pkl5-Footnote-76209740 +Ref: mpi4py util pkl5-Footnote-77209802 +Ref: mpi4py util pkl5-Footnote-78209868 +Ref: mpi4py util pkl5-Footnote-79209939 +Ref: mpi4py util pkl5-Footnote-80210005 +Ref: mpi4py util pkl5-Footnote-81210067 +Node: Examples<2>210133 +Ref: mpi4py util pkl5 examples210197 +Ref: 263210197 +Node: mpi4py util pool211422 +Ref: mpi4py util pool doc211536 +Ref: 264211536 +Ref: mpi4py util pool module-mpi4py util pool211536 +Ref: 9211536 +Ref: mpi4py util pool mpi4py-util-pool211536 +Ref: 265211536 +Ref: mpi4py util pool mpi4py util pool Pool212095 +Ref: 266212095 +Ref: mpi4py util pool mpi4py util pool Pool __init__212172 +Ref: 267212172 +Ref: mpi4py util pool mpi4py util pool Pool apply213304 +Ref: 268213304 +Ref: mpi4py util pool mpi4py util pool Pool apply_async213805 +Ref: 269213805 +Ref: mpi4py util pool mpi4py util pool Pool map214622 +Ref: 26c214622 +Ref: mpi4py util pool mpi4py util pool Pool map_async215588 +Ref: 26f215588 +Ref: mpi4py util pool mpi4py util pool Pool imap216420 +Ref: 26d216420 +Ref: mpi4py util pool mpi4py util pool Pool imap_unordered216898 +Ref: 26e216898 +Ref: mpi4py util pool mpi4py util pool Pool starmap217345 +Ref: 271217345 +Ref: mpi4py util pool mpi4py util pool Pool starmap_async218355 +Ref: 274218355 +Ref: mpi4py util pool mpi4py util pool Pool istarmap219186 +Ref: 272219186 +Ref: mpi4py util pool mpi4py util pool Pool istarmap_unordered219687 +Ref: 273219687 +Ref: mpi4py util pool mpi4py util pool Pool close220153 +Ref: 275220153 +Ref: mpi4py util pool mpi4py util pool Pool terminate220282 +Ref: 276220282 +Ref: mpi4py util pool mpi4py util pool Pool join220418 +Ref: 277220418 +Ref: mpi4py util pool mpi4py util pool ThreadPool220528 +Ref: 278220528 +Ref: mpi4py util pool mpi4py util pool AsyncResult220635 +Ref: 26b220635 +Ref: mpi4py util pool mpi4py util pool AsyncResult get220703 +Ref: 279220703 +Ref: mpi4py util pool mpi4py util pool AsyncResult wait221133 +Ref: 27a221133 +Ref: mpi4py util pool mpi4py util pool AsyncResult ready221349 +Ref: 27b221349 +Ref: mpi4py util pool mpi4py util pool AsyncResult successful221460 +Ref: 27c221460 +Ref: mpi4py util pool mpi4py util pool ApplyResult221676 +Ref: 26a221676 +Ref: mpi4py util pool mpi4py util pool MapResult221801 +Ref: 270221801 +Ref: mpi4py util pool-Footnote-1221995 +Ref: mpi4py util pool-Footnote-2222087 +Ref: mpi4py util pool-Footnote-3222148 +Ref: mpi4py util pool-Footnote-4222210 +Ref: mpi4py util pool-Footnote-5222280 +Ref: mpi4py util pool-Footnote-6222342 +Ref: mpi4py util pool-Footnote-7222404 +Ref: mpi4py util pool-Footnote-8222474 +Ref: mpi4py util pool-Footnote-9222539 +Ref: mpi4py util pool-Footnote-10222604 +Ref: mpi4py util pool-Footnote-11222667 +Ref: mpi4py util pool-Footnote-12222758 +Ref: mpi4py util pool-Footnote-13222821 +Ref: mpi4py util pool-Footnote-14222892 +Ref: mpi4py util pool-Footnote-15222963 +Ref: mpi4py util pool-Footnote-16223034 +Ref: mpi4py util pool-Footnote-17223100 +Ref: mpi4py util pool-Footnote-18223170 +Ref: mpi4py util pool-Footnote-19223231 +Ref: mpi4py util pool-Footnote-20223297 +Ref: mpi4py util pool-Footnote-21223358 +Ref: mpi4py util pool-Footnote-22223423 +Ref: mpi4py util pool-Footnote-23223486 +Ref: mpi4py util pool-Footnote-24223559 +Ref: mpi4py util pool-Footnote-25223624 +Ref: mpi4py util pool-Footnote-26223687 +Ref: mpi4py util pool-Footnote-27223749 +Ref: mpi4py util pool-Footnote-28223820 +Ref: mpi4py util pool-Footnote-29223891 +Ref: mpi4py util pool-Footnote-30223953 +Ref: mpi4py util pool-Footnote-31224016 +Ref: mpi4py util pool-Footnote-32224078 +Ref: mpi4py util pool-Footnote-33224140 +Ref: mpi4py util pool-Footnote-34224203 +Ref: mpi4py util pool-Footnote-35224266 +Ref: mpi4py util pool-Footnote-36224329 +Ref: mpi4py util pool-Footnote-37224402 +Ref: mpi4py util pool-Footnote-38224465 +Ref: mpi4py util pool-Footnote-39224528 +Ref: mpi4py util pool-Footnote-40224591 +Ref: mpi4py util pool-Footnote-41224662 +Ref: mpi4py util pool-Footnote-42224733 +Ref: mpi4py util pool-Footnote-43224795 +Ref: mpi4py util pool-Footnote-44224866 +Ref: mpi4py util pool-Footnote-45224937 +Ref: mpi4py util pool-Footnote-46225008 +Ref: mpi4py util pool-Footnote-47225070 +Ref: mpi4py util pool-Footnote-48225141 +Ref: mpi4py util pool-Footnote-49225203 +Ref: mpi4py util pool-Footnote-50225274 +Ref: mpi4py util pool-Footnote-51225345 +Ref: mpi4py util pool-Footnote-52225416 +Ref: mpi4py util pool-Footnote-53225482 +Ref: mpi4py util pool-Footnote-54225544 +Ref: mpi4py util pool-Footnote-55225607 +Ref: mpi4py util pool-Footnote-56225669 +Ref: mpi4py util pool-Footnote-57225731 +Ref: mpi4py util pool-Footnote-58225794 +Ref: mpi4py util pool-Footnote-59225857 +Ref: mpi4py util pool-Footnote-60225920 +Ref: mpi4py util pool-Footnote-61225993 +Ref: mpi4py util pool-Footnote-62226056 +Ref: mpi4py util pool-Footnote-63226119 +Ref: mpi4py util pool-Footnote-64226182 +Ref: mpi4py util pool-Footnote-65226253 +Ref: mpi4py util pool-Footnote-66226324 +Ref: mpi4py util pool-Footnote-67226395 +Ref: mpi4py util pool-Footnote-68226461 +Ref: mpi4py util pool-Footnote-69226523 +Ref: mpi4py util pool-Footnote-70226594 +Ref: mpi4py util pool-Footnote-71226665 +Ref: mpi4py util pool-Footnote-72226736 +Ref: mpi4py util pool-Footnote-73226807 +Ref: mpi4py util pool-Footnote-74226873 +Ref: mpi4py util pool-Footnote-75226935 +Ref: mpi4py util pool-Footnote-76227006 +Ref: mpi4py util pool-Footnote-77227069 +Ref: mpi4py util pool-Footnote-78227132 +Ref: mpi4py util pool-Footnote-79227195 +Ref: mpi4py util pool-Footnote-80227258 +Ref: mpi4py util pool-Footnote-81227330 +Ref: mpi4py util pool-Footnote-82227394 +Ref: mpi4py util pool-Footnote-83227457 +Ref: mpi4py util pool-Footnote-84227521 +Ref: mpi4py util pool-Footnote-85227584 +Ref: mpi4py util pool-Footnote-86227647 +Ref: mpi4py util pool-Footnote-87227710 +Ref: mpi4py util pool-Footnote-88227780 +Node: mpi4py util sync227843 +Ref: mpi4py util sync doc227932 +Ref: 27d227932 +Ref: mpi4py util sync module-mpi4py util sync227932 +Ref: a227932 +Ref: mpi4py util sync mpi4py-util-sync227932 +Ref: 27e227932 +Node: Sequential execution228228 +Ref: mpi4py util sync sequential-execution228324 +Ref: 27f228324 +Ref: mpi4py util sync mpi4py util sync Sequential228379 +Ref: 280228379 +Ref: mpi4py util sync mpi4py util sync Sequential __init__228782 +Ref: 281228782 +Ref: mpi4py util sync mpi4py util sync Sequential __enter__229097 +Ref: 282229097 +Ref: mpi4py util sync mpi4py util sync Sequential __exit__229200 +Ref: 283229200 +Ref: mpi4py util sync mpi4py util sync Sequential begin229351 +Ref: 284229351 +Ref: mpi4py util sync mpi4py util sync Sequential end229450 +Ref: 285229450 +Ref: Sequential execution-Footnote-1229581 +Ref: Sequential execution-Footnote-2229642 +Ref: Sequential execution-Footnote-3229704 +Ref: Sequential execution-Footnote-4229770 +Ref: Sequential execution-Footnote-5229834 +Ref: Sequential execution-Footnote-6229896 +Ref: Sequential execution-Footnote-7229958 +Node: Global counter230020 +Ref: mpi4py util sync global-counter230141 +Ref: 286230141 +Ref: mpi4py util sync mpi4py util sync Counter230184 +Ref: 287230184 +Ref: mpi4py util sync mpi4py util sync Counter __init__230608 +Ref: 288230608 +Ref: mpi4py util sync mpi4py util sync Counter __iter__231329 +Ref: 289231329 +Ref: mpi4py util sync mpi4py util sync Counter __next__231431 +Ref: 28a231431 +Ref: mpi4py util sync mpi4py util sync Counter next231532 +Ref: 28b231532 +Ref: mpi4py util sync mpi4py util sync Counter free231790 +Ref: 28c231790 +Ref: Global counter-Footnote-1231921 +Ref: Global counter-Footnote-2231994 +Ref: Global counter-Footnote-3232055 +Ref: Global counter-Footnote-4232116 +Ref: Global counter-Footnote-5232176 +Ref: Global counter-Footnote-6232242 +Ref: Global counter-Footnote-7232303 +Ref: Global counter-Footnote-8232365 +Ref: Global counter-Footnote-9232431 +Ref: Global counter-Footnote-10232492 +Ref: Global counter-Footnote-11232554 +Ref: Global counter-Footnote-12232617 +Ref: Global counter-Footnote-13232679 +Node: Mutual exclusion232742 +Ref: mpi4py util sync mutual-exclusion232861 +Ref: 28d232861 +Ref: mpi4py util sync mpi4py util sync Mutex232908 +Ref: 28e232908 +Ref: mpi4py util sync mpi4py util sync Mutex __init__233864 +Ref: 291233864 +Ref: mpi4py util sync mpi4py util sync Mutex __enter__234351 +Ref: 292234351 +Ref: mpi4py util sync mpi4py util sync Mutex __exit__234441 +Ref: 293234441 +Ref: mpi4py util sync mpi4py util sync Mutex acquire234581 +Ref: 294234581 +Ref: mpi4py util sync mpi4py util sync Mutex release234890 +Ref: 295234890 +Ref: mpi4py util sync mpi4py util sync Mutex locked234979 +Ref: 296234979 +Ref: mpi4py util sync mpi4py util sync Mutex count235086 +Ref: 297235086 +Ref: mpi4py util sync mpi4py util sync Mutex free235185 +Ref: 298235185 +Ref: mpi4py util sync mcs-paper235278 +Ref: 28f235278 +Ref: mpi4py util sync uam-book235521 +Ref: 290235521 +Ref: Mutual exclusion-Footnote-1235834 +Ref: Mutual exclusion-Footnote-2235906 +Ref: Mutual exclusion-Footnote-3235979 +Ref: Mutual exclusion-Footnote-4236051 +Ref: Mutual exclusion-Footnote-5236122 +Ref: Mutual exclusion-Footnote-6236193 +Ref: Mutual exclusion-Footnote-7236255 +Ref: Mutual exclusion-Footnote-8236317 +Ref: Mutual exclusion-Footnote-9236383 +Ref: Mutual exclusion-Footnote-10236447 +Ref: Mutual exclusion-Footnote-11236510 +Ref: Mutual exclusion-Footnote-12236573 +Ref: Mutual exclusion-Footnote-13236636 +Ref: Mutual exclusion-Footnote-14236699 +Ref: Mutual exclusion-Footnote-15236763 +Ref: Mutual exclusion-Footnote-16236826 +Ref: Mutual exclusion-Footnote-17236889 +Ref: Mutual exclusion-Footnote-18236952 +Ref: Mutual exclusion-Footnote-19237014 +Node: Condition variable237077 +Ref: mpi4py util sync condition-variable237198 +Ref: 299237198 +Ref: mpi4py util sync mpi4py util sync Condition237249 +Ref: 29a237249 +Ref: mpi4py util sync mpi4py util sync Condition __init__237857 +Ref: 29b237857 +Ref: mpi4py util sync mpi4py util sync Condition __enter__238469 +Ref: 29c238469 +Ref: mpi4py util sync mpi4py util sync Condition __exit__238574 +Ref: 29d238574 +Ref: mpi4py util sync mpi4py util sync Condition acquire238728 +Ref: 29e238728 +Ref: mpi4py util sync mpi4py util sync Condition release238893 +Ref: 29f238893 +Ref: mpi4py util sync mpi4py util sync Condition locked238997 +Ref: 2a0238997 +Ref: mpi4py util sync mpi4py util sync Condition wait239115 +Ref: 2a1239115 +Ref: mpi4py util sync mpi4py util sync Condition wait_for239273 +Ref: 2a2239273 +Ref: mpi4py util sync mpi4py util sync Condition notify239642 +Ref: 2a3239642 +Ref: mpi4py util sync mpi4py util sync Condition notify_all239932 +Ref: 2a4239932 +Ref: mpi4py util sync mpi4py util sync Condition free240119 +Ref: 2a5240119 +Ref: Condition variable-Footnote-1240252 +Ref: Condition variable-Footnote-2240330 +Ref: Condition variable-Footnote-3240392 +Ref: Condition variable-Footnote-4240454 +Ref: Condition variable-Footnote-5240516 +Ref: Condition variable-Footnote-6240582 +Ref: Condition variable-Footnote-7240646 +Ref: Condition variable-Footnote-8240708 +Ref: Condition variable-Footnote-9240770 +Ref: Condition variable-Footnote-10240832 +Ref: Condition variable-Footnote-11240895 +Ref: Condition variable-Footnote-12240958 +Ref: Condition variable-Footnote-13241021 +Ref: Condition variable-Footnote-14241091 +Ref: Condition variable-Footnote-15241154 +Ref: Condition variable-Footnote-16241225 +Ref: Condition variable-Footnote-17241288 +Ref: Condition variable-Footnote-18241350 +Ref: Condition variable-Footnote-19241412 +Ref: Condition variable-Footnote-20241474 +Node: Semaphore object241537 +Ref: mpi4py util sync semaphore-object241653 +Ref: 2a6241653 +Ref: mpi4py util sync mpi4py util sync Semaphore241700 +Ref: 2a7241700 +Ref: mpi4py util sync mpi4py util sync Semaphore __init__242618 +Ref: 2aa242618 +Ref: mpi4py util sync mpi4py util sync Semaphore __enter__243191 +Ref: 2ab243191 +Ref: mpi4py util sync mpi4py util sync Semaphore __exit__243285 +Ref: 2ac243285 +Ref: mpi4py util sync mpi4py util sync Semaphore acquire243428 +Ref: 2a8243428 +Ref: mpi4py util sync mpi4py util sync Semaphore release243783 +Ref: 2a9243783 +Ref: mpi4py util sync mpi4py util sync Semaphore free244031 +Ref: 2ad244031 +Ref: Semaphore object-Footnote-1244164 +Ref: Semaphore object-Footnote-2244242 +Ref: Semaphore object-Footnote-3244327 +Ref: Semaphore object-Footnote-4244396 +Ref: Semaphore object-Footnote-5244457 +Ref: Semaphore object-Footnote-6244519 +Ref: Semaphore object-Footnote-7244581 +Ref: Semaphore object-Footnote-8244647 +Ref: Semaphore object-Footnote-9244711 +Ref: Semaphore object-Footnote-10244773 +Ref: Semaphore object-Footnote-11244836 +Ref: Semaphore object-Footnote-12244899 +Ref: Semaphore object-Footnote-13244962 +Ref: Semaphore object-Footnote-14245026 +Ref: Semaphore object-Footnote-15245089 +Ref: Semaphore object-Footnote-16245151 +Ref: Semaphore object-Footnote-17245214 +Node: Examples<3>245277 +Ref: mpi4py util sync examples245366 +Ref: 2ae245366 +Node: mpi4py run246062 +Ref: mpi4py run doc246153 +Ref: 2af246153 +Ref: mpi4py run module-mpi4py run246153 +Ref: 4246153 +Ref: mpi4py run mpi4py-run246153 +Ref: 2b0246153 +Ref: mpi4py run-Footnote-1247516 +Ref: mpi4py run-Footnote-2247584 +Ref: mpi4py run-Footnote-3247655 +Node: Exceptions and deadlocks247727 +Ref: mpi4py run exceptions-and-deadlocks247822 +Ref: 2b1247822 +Ref: Exceptions and deadlocks-Footnote-1249940 +Ref: Exceptions and deadlocks-Footnote-2250017 +Ref: Exceptions and deadlocks-Footnote-3250087 +Ref: Exceptions and deadlocks-Footnote-4250153 +Ref: Exceptions and deadlocks-Footnote-5250221 +Node: Command line<2>250282 +Ref: mpi4py run command-line250377 +Ref: 2b2250377 +Ref: mpi4py run cmdoption-m251046 +Ref: 2b3251046 +Ref: mpi4py run cmdoption-c251163 +Ref: 2b4251163 +Ref: Command line<2>-Footnote-1251455 +Ref: Command line<2>-Footnote-2251515 +Ref: Command line<2>-Footnote-3251576 +Node: mpi4py bench251646 +Ref: mpi4py bench doc251735 +Ref: 2b5251735 +Ref: mpi4py bench module-mpi4py bench251735 +Ref: 1251735 +Ref: mpi4py bench mpi4py-bench251735 +Ref: 2b6251735 +Node: Reference251793 +Ref: reference doc251883 +Ref: 2b7251883 +Ref: reference id1251883 +Ref: 2b8251883 +Ref: reference reference251883 +Ref: 2b9251883 +Node: mpi4py MPI<2>252013 +Ref: reference/mpi4py MPI doc252072 +Ref: 2ba252072 +Ref: reference/mpi4py MPI module-mpi4py MPI252072 +Ref: 3252072 +Ref: reference/mpi4py MPI mpi4py-mpi252072 +Ref: 2bb252072 +Node: mpi4py MPI BottomType271989 +Ref: reference/mpi4py MPI BottomType doc272099 +Ref: 2bd272099 +Ref: reference/mpi4py MPI BottomType mpi4py-mpi-bottomtype272099 +Ref: 2be272099 +Ref: reference/mpi4py MPI BottomType mpi4py MPI BottomType272158 +Ref: fb272158 +Ref: reference/mpi4py MPI BottomType mpi4py MPI BottomType __new__272244 +Ref: 2bf272244 +Ref: mpi4py MPI BottomType-Footnote-1272352 +Ref: mpi4py MPI BottomType-Footnote-2272413 +Node: mpi4py MPI BufferAutomaticType272479 +Ref: reference/mpi4py MPI BufferAutomaticType doc272617 +Ref: 2c0272617 +Ref: reference/mpi4py MPI BufferAutomaticType mpi4py-mpi-bufferautomatictype272617 +Ref: 2c1272617 +Ref: reference/mpi4py MPI BufferAutomaticType mpi4py MPI BufferAutomaticType272694 +Ref: ff272694 +Ref: reference/mpi4py MPI BufferAutomaticType mpi4py MPI BufferAutomaticType __new__272799 +Ref: 2c2272799 +Ref: mpi4py MPI BufferAutomaticType-Footnote-1272907 +Ref: mpi4py MPI BufferAutomaticType-Footnote-2272968 +Node: mpi4py MPI Cartcomm273034 +Ref: reference/mpi4py MPI Cartcomm doc273166 +Ref: 2c3273166 +Ref: reference/mpi4py MPI Cartcomm mpi4py-mpi-cartcomm273166 +Ref: 2c4273166 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm273221 +Ref: 33273221 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm __new__273330 +Ref: 2c5273330 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm Get_cart_rank274769 +Ref: 2c6274769 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm Get_coords274964 +Ref: 2c7274964 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm Get_dim275136 +Ref: 2c8275136 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm Get_topo275237 +Ref: 2c9275237 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm Shift275426 +Ref: 2ca275426 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm Sub275711 +Ref: 2cb275711 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm coords275990 +Ref: 2cc275990 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm dim276042 +Ref: 2cd276042 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm dims276100 +Ref: 2ce276100 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm ndim276149 +Ref: 2cf276149 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm periods276208 +Ref: 2d0276208 +Ref: reference/mpi4py MPI Cartcomm mpi4py MPI Cartcomm topo276261 +Ref: 2d1276261 +Ref: mpi4py MPI Cartcomm-Footnote-1276356 +Ref: mpi4py MPI Cartcomm-Footnote-2276418 +Ref: mpi4py MPI Cartcomm-Footnote-3276484 +Ref: mpi4py MPI Cartcomm-Footnote-4276554 +Ref: mpi4py MPI Cartcomm-Footnote-5276615 +Ref: mpi4py MPI Cartcomm-Footnote-6276676 +Ref: mpi4py MPI Cartcomm-Footnote-7276737 +Ref: mpi4py MPI Cartcomm-Footnote-8276798 +Ref: mpi4py MPI Cartcomm-Footnote-9276859 +Ref: mpi4py MPI Cartcomm-Footnote-10276920 +Ref: mpi4py MPI Cartcomm-Footnote-11276983 +Ref: mpi4py MPI Cartcomm-Footnote-12277045 +Ref: mpi4py MPI Cartcomm-Footnote-13277107 +Ref: mpi4py MPI Cartcomm-Footnote-14277169 +Ref: mpi4py MPI Cartcomm-Footnote-15277231 +Ref: mpi4py MPI Cartcomm-Footnote-16277293 +Ref: mpi4py MPI Cartcomm-Footnote-17277355 +Ref: mpi4py MPI Cartcomm-Footnote-18277417 +Ref: mpi4py MPI Cartcomm-Footnote-19277479 +Ref: mpi4py MPI Cartcomm-Footnote-20277542 +Ref: mpi4py MPI Cartcomm-Footnote-21277604 +Ref: mpi4py MPI Cartcomm-Footnote-22277666 +Ref: mpi4py MPI Cartcomm-Footnote-23277737 +Node: mpi4py MPI Comm277800 +Ref: reference/mpi4py MPI Comm doc277921 +Ref: 2d2277921 +Ref: reference/mpi4py MPI Comm mpi4py-mpi-comm277921 +Ref: 2d3277921 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm277968 +Ref: 1e277968 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm __new__278048 +Ref: 2d4278048 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Abort293266 +Ref: 2d5293266 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ack_failed293708 +Ref: 2d6293708 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Agree293904 +Ref: 2d7293904 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Allgather294043 +Ref: 50294043 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Allgather_init294415 +Ref: 2d8294415 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Allgatherv294767 +Ref: 59294767 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Allgatherv_init295191 +Ref: 2d9295191 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Allreduce295551 +Ref: 5e295551 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Allreduce_init295863 +Ref: 2da295863 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Alltoall296278 +Ref: 51296278 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Alltoall_init296626 +Ref: 2db296626 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Alltoallv296990 +Ref: 5a296990 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Alltoallv_init297410 +Ref: 2dc297410 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Alltoallw297782 +Ref: 5b297782 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Alltoallw_init298234 +Ref: 2dd298234 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Attach_buffer298607 +Ref: 2de298607 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Barrier298822 +Ref: 22e298822 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Barrier_init298921 +Ref: 2df298921 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Bcast299098 +Ref: 4d299098 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Bcast_init299346 +Ref: 2e0299346 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Bsend299637 +Ref: 2e1299637 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Bsend_init299902 +Ref: 2e2299902 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Call_errhandler300198 +Ref: 2e3300198 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Clone300391 +Ref: 2e300391 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Compare300495 +Ref: 2e4300495 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Create300652 +Ref: 2c300652 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Create_errhandler300824 +Ref: 9d300824 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Create_keyval301135 +Ref: 2e5301135 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Delete_attr301730 +Ref: 2e6301730 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Detach_buffer301907 +Ref: 2e7301907 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Disconnect302044 +Ref: 72302044 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Dup302153 +Ref: 2f302153 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Dup_with_info302328 +Ref: 2e8302328 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Flush_buffer302502 +Ref: 2e9302502 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Free302638 +Ref: 2ea302638 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Free_keyval302730 +Ref: 2eb302730 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Gather302913 +Ref: 4f302913 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Gather_init303274 +Ref: 2ec303274 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Gatherv303678 +Ref: 58303678 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Gatherv_init304130 +Ref: 2ed304130 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_attr304542 +Ref: 94304542 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_errhandler304723 +Ref: 9c304723 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_failed304859 +Ref: 2ee304859 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_group304983 +Ref: 27304983 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_info305116 +Ref: 2ef305116 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_name305243 +Ref: 2f0305243 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_parent305359 +Ref: 6c305359 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_rank305514 +Ref: 26305514 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_size305639 +Ref: 25305639 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Get_topology305763 +Ref: 2f1305763 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iagree305920 +Ref: 2f2305920 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iallgather306086 +Ref: 2f3306086 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iallgatherv306373 +Ref: 2f4306373 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iallreduce306668 +Ref: 2f5306668 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ialltoall307003 +Ref: 2f6307003 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ialltoallv307302 +Ref: 2f7307302 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ialltoallw307609 +Ref: 2f8307609 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ibarrier307917 +Ref: 2f9307917 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ibcast308023 +Ref: 2fa308023 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ibsend308249 +Ref: 2fb308249 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Idup308528 +Ref: 2fc308528 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Idup_with_info308747 +Ref: 2fd308747 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iflush_buffer308965 +Ref: 2fe308965 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Igather309096 +Ref: 2ff309096 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Igatherv309435 +Ref: 300309435 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Improbe309782 +Ref: 301309782 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iprobe310125 +Ref: 302310125 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Irecv310438 +Ref: 42310438 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ireduce310723 +Ref: 303310723 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ireduce_scatter311118 +Ref: 304311118 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ireduce_scatter_block311598 +Ref: 305311598 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Irsend312021 +Ref: 306312021 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Is_inter312299 +Ref: 21312299 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Is_intra312432 +Ref: 22312432 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Is_revoked312565 +Ref: 307312565 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iscatter312695 +Ref: 308312695 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Iscatterv313038 +Ref: 309313038 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Isend313389 +Ref: 41313389 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Isendrecv313652 +Ref: 30a313652 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Isendrecv_replace314163 +Ref: 30b314163 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ishrink314945 +Ref: 30c314945 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Issend315133 +Ref: 30d315133 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Join315417 +Ref: 30e315417 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Mprobe315608 +Ref: 30f315608 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Precv_init315939 +Ref: 310315939 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Probe316392 +Ref: 311316392 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Psend_init316784 +Ref: 312316784 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Recv317216 +Ref: 3b317216 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Recv_init317644 +Ref: 49317644 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Reduce317958 +Ref: 5c317958 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Reduce_init318333 +Ref: 313318333 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Reduce_scatter318810 +Ref: 5d318810 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Reduce_scatter_block319268 +Ref: 314319268 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Reduce_scatter_block_init319659 +Ref: 315319659 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Reduce_scatter_init320152 +Ref: 316320152 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Revoke320697 +Ref: 317320697 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Rsend320794 +Ref: 318320794 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Rsend_init321059 +Ref: 319321059 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Scatter321354 +Ref: 4e321354 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Scatter_init321720 +Ref: 31a321720 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Scatterv322128 +Ref: 57322128 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Scatterv_init322586 +Ref: 31b322586 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Send323017 +Ref: 3a323017 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Send_init323473 +Ref: 48323473 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Sendrecv323772 +Ref: 3c323772 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Sendrecv_replace324708 +Ref: 31c324708 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Set_attr325560 +Ref: 31d325560 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Set_errhandler325801 +Ref: 9b325801 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Set_info326000 +Ref: 31e326000 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Set_name326194 +Ref: 31f326194 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Shrink326362 +Ref: 320326362 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Split326496 +Ref: 30326496 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Split_type326726 +Ref: 321326726 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ssend327027 +Ref: 322327027 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm Ssend_init327298 +Ref: 323327298 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm allgather327599 +Ref: 55327599 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm allreduce327757 +Ref: 62327757 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm alltoall328074 +Ref: 56328074 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm barrier328270 +Ref: 324328270 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm bcast328441 +Ref: 52328441 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm bsend328634 +Ref: 325328634 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm f2py328882 +Ref: 326328882 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm free329009 +Ref: 327329009 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm fromhandle329130 +Ref: 328329130 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm gather329311 +Ref: 54329311 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm ibsend329533 +Ref: 329329533 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm improbe329803 +Ref: 32a329803 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm iprobe330150 +Ref: 32b330150 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm irecv330467 +Ref: a2330467 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm isend330776 +Ref: a1330776 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm issend331028 +Ref: 32c331028 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm mprobe331301 +Ref: 32d331301 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm probe331632 +Ref: 32e331632 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm py2f331954 +Ref: 32f331954 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm recv332014 +Ref: 3e332014 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm reduce332390 +Ref: 61332390 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm scatter332763 +Ref: 53332763 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm send333009 +Ref: 3d333009 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm sendrecv333256 +Ref: 3f333256 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm ssend333808 +Ref: 330333808 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm group334120 +Ref: 331334120 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm handle334165 +Ref: 332334165 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm info334216 +Ref: 333334216 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm is_inter334265 +Ref: 334334265 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm is_intra334328 +Ref: 335334328 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm is_topo334391 +Ref: 336334391 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm name334446 +Ref: 337334446 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm rank334495 +Ref: 338334495 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm size334554 +Ref: a5334554 +Ref: reference/mpi4py MPI Comm mpi4py MPI Comm topology334612 +Ref: 339334612 +Ref: mpi4py MPI Comm-Footnote-1334704 +Ref: mpi4py MPI Comm-Footnote-2334768 +Ref: mpi4py MPI Comm-Footnote-3334830 +Ref: mpi4py MPI Comm-Footnote-4334896 +Ref: mpi4py MPI Comm-Footnote-5334957 +Ref: mpi4py MPI Comm-Footnote-6335027 +Ref: mpi4py MPI Comm-Footnote-7335088 +Ref: mpi4py MPI Comm-Footnote-8335150 +Ref: mpi4py MPI Comm-Footnote-9335211 +Ref: mpi4py MPI Comm-Footnote-10335272 +Ref: mpi4py MPI Comm-Footnote-11335334 +Ref: mpi4py MPI Comm-Footnote-12335397 +Ref: mpi4py MPI Comm-Footnote-13335460 +Ref: mpi4py MPI Comm-Footnote-14335523 +Ref: mpi4py MPI Comm-Footnote-15335586 +Ref: mpi4py MPI Comm-Footnote-16335649 +Ref: mpi4py MPI Comm-Footnote-17335712 +Ref: mpi4py MPI Comm-Footnote-18335775 +Ref: mpi4py MPI Comm-Footnote-19335838 +Ref: mpi4py MPI Comm-Footnote-20335901 +Ref: mpi4py MPI Comm-Footnote-21335963 +Ref: mpi4py MPI Comm-Footnote-22336026 +Ref: mpi4py MPI Comm-Footnote-23336088 +Ref: mpi4py MPI Comm-Footnote-24336150 +Ref: mpi4py MPI Comm-Footnote-25336212 +Ref: mpi4py MPI Comm-Footnote-26336275 +Ref: mpi4py MPI Comm-Footnote-27336337 +Ref: mpi4py MPI Comm-Footnote-28336399 +Ref: mpi4py MPI Comm-Footnote-29336461 +Ref: mpi4py MPI Comm-Footnote-30336524 +Ref: mpi4py MPI Comm-Footnote-31336591 +Ref: mpi4py MPI Comm-Footnote-32336653 +Ref: mpi4py MPI Comm-Footnote-33336724 +Ref: mpi4py MPI Comm-Footnote-34336786 +Ref: mpi4py MPI Comm-Footnote-35336849 +Ref: mpi4py MPI Comm-Footnote-36336920 +Ref: mpi4py MPI Comm-Footnote-37336982 +Ref: mpi4py MPI Comm-Footnote-38337048 +Ref: mpi4py MPI Comm-Footnote-39337114 +Ref: mpi4py MPI Comm-Footnote-40337177 +Ref: mpi4py MPI Comm-Footnote-41337248 +Ref: mpi4py MPI Comm-Footnote-42337310 +Ref: mpi4py MPI Comm-Footnote-43337376 +Ref: mpi4py MPI Comm-Footnote-44337439 +Ref: mpi4py MPI Comm-Footnote-45337502 +Ref: mpi4py MPI Comm-Footnote-46337565 +Ref: mpi4py MPI Comm-Footnote-47337627 +Ref: mpi4py MPI Comm-Footnote-48337689 +Ref: mpi4py MPI Comm-Footnote-49337752 +Ref: mpi4py MPI Comm-Footnote-50337815 +Ref: mpi4py MPI Comm-Footnote-51337878 +Ref: mpi4py MPI Comm-Footnote-52337941 +Ref: mpi4py MPI Comm-Footnote-53338008 +Ref: mpi4py MPI Comm-Footnote-54338075 +Ref: mpi4py MPI Comm-Footnote-55338138 +Ref: mpi4py MPI Comm-Footnote-56338201 +Ref: mpi4py MPI Comm-Footnote-57338263 +Ref: mpi4py MPI Comm-Footnote-58338325 +Ref: mpi4py MPI Comm-Footnote-59338388 +Ref: mpi4py MPI Comm-Footnote-60338450 +Ref: mpi4py MPI Comm-Footnote-61338513 +Ref: mpi4py MPI Comm-Footnote-62338576 +Ref: mpi4py MPI Comm-Footnote-63338638 +Ref: mpi4py MPI Comm-Footnote-64338701 +Ref: mpi4py MPI Comm-Footnote-65338763 +Ref: mpi4py MPI Comm-Footnote-66338826 +Ref: mpi4py MPI Comm-Footnote-67338889 +Ref: mpi4py MPI Comm-Footnote-68338951 +Ref: mpi4py MPI Comm-Footnote-69339013 +Ref: mpi4py MPI Comm-Footnote-70339075 +Ref: mpi4py MPI Comm-Footnote-71339141 +Ref: mpi4py MPI Comm-Footnote-72339204 +Ref: mpi4py MPI Comm-Footnote-73339265 +Ref: mpi4py MPI Comm-Footnote-74339327 +Ref: mpi4py MPI Comm-Footnote-75339389 +Ref: mpi4py MPI Comm-Footnote-76339451 +Ref: mpi4py MPI Comm-Footnote-77339513 +Ref: mpi4py MPI Comm-Footnote-78339575 +Ref: mpi4py MPI Comm-Footnote-79339637 +Ref: mpi4py MPI Comm-Footnote-80339700 +Ref: mpi4py MPI Comm-Footnote-81339763 +Ref: mpi4py MPI Comm-Footnote-82339830 +Ref: mpi4py MPI Comm-Footnote-83339893 +Ref: mpi4py MPI Comm-Footnote-84339960 +Ref: mpi4py MPI Comm-Footnote-85340023 +Ref: mpi4py MPI Comm-Footnote-86340085 +Ref: mpi4py MPI Comm-Footnote-87340148 +Ref: mpi4py MPI Comm-Footnote-88340210 +Ref: mpi4py MPI Comm-Footnote-89340272 +Ref: mpi4py MPI Comm-Footnote-90340334 +Ref: mpi4py MPI Comm-Footnote-91340397 +Ref: mpi4py MPI Comm-Footnote-92340460 +Ref: mpi4py MPI Comm-Footnote-93340522 +Ref: mpi4py MPI Comm-Footnote-94340584 +Ref: mpi4py MPI Comm-Footnote-95340647 +Ref: mpi4py MPI Comm-Footnote-96340710 +Ref: mpi4py MPI Comm-Footnote-97340772 +Ref: mpi4py MPI Comm-Footnote-98340834 +Ref: mpi4py MPI Comm-Footnote-99340897 +Ref: mpi4py MPI Comm-Footnote-100340959 +Ref: mpi4py MPI Comm-Footnote-101341022 +Ref: mpi4py MPI Comm-Footnote-102341086 +Ref: mpi4py MPI Comm-Footnote-103341149 +Ref: mpi4py MPI Comm-Footnote-104341212 +Ref: mpi4py MPI Comm-Footnote-105341276 +Ref: mpi4py MPI Comm-Footnote-106341340 +Ref: mpi4py MPI Comm-Footnote-107341404 +Ref: mpi4py MPI Comm-Footnote-108341468 +Ref: mpi4py MPI Comm-Footnote-109341531 +Ref: mpi4py MPI Comm-Footnote-110341595 +Ref: mpi4py MPI Comm-Footnote-111341658 +Ref: mpi4py MPI Comm-Footnote-112341721 +Ref: mpi4py MPI Comm-Footnote-113341784 +Ref: mpi4py MPI Comm-Footnote-114341847 +Ref: mpi4py MPI Comm-Footnote-115341910 +Ref: mpi4py MPI Comm-Footnote-116341974 +Ref: mpi4py MPI Comm-Footnote-117342037 +Ref: mpi4py MPI Comm-Footnote-118342100 +Ref: mpi4py MPI Comm-Footnote-119342163 +Ref: mpi4py MPI Comm-Footnote-120342226 +Ref: mpi4py MPI Comm-Footnote-121342289 +Ref: mpi4py MPI Comm-Footnote-122342352 +Ref: mpi4py MPI Comm-Footnote-123342416 +Ref: mpi4py MPI Comm-Footnote-124342479 +Ref: mpi4py MPI Comm-Footnote-125342542 +Ref: mpi4py MPI Comm-Footnote-126342605 +Ref: mpi4py MPI Comm-Footnote-127342668 +Ref: mpi4py MPI Comm-Footnote-128342731 +Ref: mpi4py MPI Comm-Footnote-129342795 +Ref: mpi4py MPI Comm-Footnote-130342858 +Ref: mpi4py MPI Comm-Footnote-131342921 +Ref: mpi4py MPI Comm-Footnote-132342984 +Ref: mpi4py MPI Comm-Footnote-133343047 +Ref: mpi4py MPI Comm-Footnote-134343110 +Ref: mpi4py MPI Comm-Footnote-135343174 +Ref: mpi4py MPI Comm-Footnote-136343245 +Ref: mpi4py MPI Comm-Footnote-137343308 +Ref: mpi4py MPI Comm-Footnote-138343371 +Ref: mpi4py MPI Comm-Footnote-139343434 +Ref: mpi4py MPI Comm-Footnote-140343497 +Ref: mpi4py MPI Comm-Footnote-141343560 +Ref: mpi4py MPI Comm-Footnote-142343624 +Ref: mpi4py MPI Comm-Footnote-143343688 +Ref: mpi4py MPI Comm-Footnote-144343751 +Ref: mpi4py MPI Comm-Footnote-145343814 +Ref: mpi4py MPI Comm-Footnote-146343878 +Ref: mpi4py MPI Comm-Footnote-147343941 +Ref: mpi4py MPI Comm-Footnote-148344005 +Ref: mpi4py MPI Comm-Footnote-149344069 +Ref: mpi4py MPI Comm-Footnote-150344132 +Ref: mpi4py MPI Comm-Footnote-151344195 +Ref: mpi4py MPI Comm-Footnote-152344259 +Ref: mpi4py MPI Comm-Footnote-153344323 +Ref: mpi4py MPI Comm-Footnote-154344387 +Ref: mpi4py MPI Comm-Footnote-155344450 +Ref: mpi4py MPI Comm-Footnote-156344514 +Ref: mpi4py MPI Comm-Footnote-157344578 +Ref: mpi4py MPI Comm-Footnote-158344641 +Ref: mpi4py MPI Comm-Footnote-159344704 +Ref: mpi4py MPI Comm-Footnote-160344768 +Ref: mpi4py MPI Comm-Footnote-161344831 +Ref: mpi4py MPI Comm-Footnote-162344894 +Ref: mpi4py MPI Comm-Footnote-163344958 +Ref: mpi4py MPI Comm-Footnote-164345021 +Ref: mpi4py MPI Comm-Footnote-165345085 +Ref: mpi4py MPI Comm-Footnote-166345149 +Ref: mpi4py MPI Comm-Footnote-167345212 +Ref: mpi4py MPI Comm-Footnote-168345276 +Ref: mpi4py MPI Comm-Footnote-169345339 +Ref: mpi4py MPI Comm-Footnote-170345403 +Ref: mpi4py MPI Comm-Footnote-171345467 +Ref: mpi4py MPI Comm-Footnote-172345530 +Ref: mpi4py MPI Comm-Footnote-173345593 +Ref: mpi4py MPI Comm-Footnote-174345656 +Ref: mpi4py MPI Comm-Footnote-175345720 +Ref: mpi4py MPI Comm-Footnote-176345783 +Ref: mpi4py MPI Comm-Footnote-177345846 +Ref: mpi4py MPI Comm-Footnote-178345909 +Ref: mpi4py MPI Comm-Footnote-179345972 +Ref: mpi4py MPI Comm-Footnote-180346036 +Ref: mpi4py MPI Comm-Footnote-181346099 +Ref: mpi4py MPI Comm-Footnote-182346162 +Ref: mpi4py MPI Comm-Footnote-183346226 +Ref: mpi4py MPI Comm-Footnote-184346290 +Ref: mpi4py MPI Comm-Footnote-185346353 +Ref: mpi4py MPI Comm-Footnote-186346416 +Ref: mpi4py MPI Comm-Footnote-187346479 +Ref: mpi4py MPI Comm-Footnote-188346542 +Ref: mpi4py MPI Comm-Footnote-189346606 +Ref: mpi4py MPI Comm-Footnote-190346670 +Ref: mpi4py MPI Comm-Footnote-191346733 +Ref: mpi4py MPI Comm-Footnote-192346800 +Ref: mpi4py MPI Comm-Footnote-193346864 +Ref: mpi4py MPI Comm-Footnote-194346928 +Ref: mpi4py MPI Comm-Footnote-195346992 +Ref: mpi4py MPI Comm-Footnote-196347054 +Ref: mpi4py MPI Comm-Footnote-197347118 +Ref: mpi4py MPI Comm-Footnote-198347181 +Ref: mpi4py MPI Comm-Footnote-199347244 +Ref: mpi4py MPI Comm-Footnote-200347307 +Ref: mpi4py MPI Comm-Footnote-201347370 +Ref: mpi4py MPI Comm-Footnote-202347433 +Ref: mpi4py MPI Comm-Footnote-203347496 +Ref: mpi4py MPI Comm-Footnote-204347560 +Ref: mpi4py MPI Comm-Footnote-205347623 +Ref: mpi4py MPI Comm-Footnote-206347686 +Ref: mpi4py MPI Comm-Footnote-207347753 +Ref: mpi4py MPI Comm-Footnote-208347816 +Ref: mpi4py MPI Comm-Footnote-209347883 +Ref: mpi4py MPI Comm-Footnote-210347950 +Ref: mpi4py MPI Comm-Footnote-211348022 +Ref: mpi4py MPI Comm-Footnote-212348089 +Ref: mpi4py MPI Comm-Footnote-213348156 +Ref: mpi4py MPI Comm-Footnote-214348223 +Ref: mpi4py MPI Comm-Footnote-215348290 +Ref: mpi4py MPI Comm-Footnote-216348362 +Ref: mpi4py MPI Comm-Footnote-217348429 +Ref: mpi4py MPI Comm-Footnote-218348492 +Ref: mpi4py MPI Comm-Footnote-219348559 +Ref: mpi4py MPI Comm-Footnote-220348623 +Ref: mpi4py MPI Comm-Footnote-221348690 +Ref: mpi4py MPI Comm-Footnote-222348753 +Ref: mpi4py MPI Comm-Footnote-223348820 +Ref: mpi4py MPI Comm-Footnote-224348887 +Ref: mpi4py MPI Comm-Footnote-225348950 +Ref: mpi4py MPI Comm-Footnote-226349013 +Ref: mpi4py MPI Comm-Footnote-227349077 +Ref: mpi4py MPI Comm-Footnote-228349140 +Ref: mpi4py MPI Comm-Footnote-229349204 +Ref: mpi4py MPI Comm-Footnote-230349267 +Ref: mpi4py MPI Comm-Footnote-231349334 +Ref: mpi4py MPI Comm-Footnote-232349397 +Ref: mpi4py MPI Comm-Footnote-233349460 +Ref: mpi4py MPI Comm-Footnote-234349527 +Ref: mpi4py MPI Comm-Footnote-235349591 +Ref: mpi4py MPI Comm-Footnote-236349658 +Ref: mpi4py MPI Comm-Footnote-237349721 +Ref: mpi4py MPI Comm-Footnote-238349784 +Ref: mpi4py MPI Comm-Footnote-239349847 +Ref: mpi4py MPI Comm-Footnote-240349910 +Ref: mpi4py MPI Comm-Footnote-241349974 +Ref: mpi4py MPI Comm-Footnote-242350038 +Ref: mpi4py MPI Comm-Footnote-243350101 +Ref: mpi4py MPI Comm-Footnote-244350164 +Ref: mpi4py MPI Comm-Footnote-245350228 +Ref: mpi4py MPI Comm-Footnote-246350292 +Ref: mpi4py MPI Comm-Footnote-247350356 +Ref: mpi4py MPI Comm-Footnote-248350419 +Ref: mpi4py MPI Comm-Footnote-249350482 +Ref: mpi4py MPI Comm-Footnote-250350549 +Ref: mpi4py MPI Comm-Footnote-251350612 +Ref: mpi4py MPI Comm-Footnote-252350675 +Ref: mpi4py MPI Comm-Footnote-253350742 +Ref: mpi4py MPI Comm-Footnote-254350805 +Ref: mpi4py MPI Comm-Footnote-255350868 +Ref: mpi4py MPI Comm-Footnote-256350931 +Ref: mpi4py MPI Comm-Footnote-257350994 +Ref: mpi4py MPI Comm-Footnote-258351058 +Ref: mpi4py MPI Comm-Footnote-259351121 +Ref: mpi4py MPI Comm-Footnote-260351184 +Ref: mpi4py MPI Comm-Footnote-261351248 +Ref: mpi4py MPI Comm-Footnote-262351319 +Ref: mpi4py MPI Comm-Footnote-263351382 +Ref: mpi4py MPI Comm-Footnote-264351446 +Ref: mpi4py MPI Comm-Footnote-265351509 +Ref: mpi4py MPI Comm-Footnote-266351572 +Ref: mpi4py MPI Comm-Footnote-267351636 +Ref: mpi4py MPI Comm-Footnote-268351703 +Ref: mpi4py MPI Comm-Footnote-269351775 +Ref: mpi4py MPI Comm-Footnote-270351842 +Ref: mpi4py MPI Comm-Footnote-271351909 +Ref: mpi4py MPI Comm-Footnote-272351976 +Ref: mpi4py MPI Comm-Footnote-273352039 +Ref: mpi4py MPI Comm-Footnote-274352106 +Ref: mpi4py MPI Comm-Footnote-275352170 +Ref: mpi4py MPI Comm-Footnote-276352242 +Ref: mpi4py MPI Comm-Footnote-277352309 +Ref: mpi4py MPI Comm-Footnote-278352373 +Ref: mpi4py MPI Comm-Footnote-279352436 +Ref: mpi4py MPI Comm-Footnote-280352503 +Ref: mpi4py MPI Comm-Footnote-281352570 +Ref: mpi4py MPI Comm-Footnote-282352633 +Ref: mpi4py MPI Comm-Footnote-283352696 +Ref: mpi4py MPI Comm-Footnote-284352760 +Ref: mpi4py MPI Comm-Footnote-285352823 +Ref: mpi4py MPI Comm-Footnote-286352886 +Ref: mpi4py MPI Comm-Footnote-287352950 +Ref: mpi4py MPI Comm-Footnote-288353013 +Ref: mpi4py MPI Comm-Footnote-289353076 +Ref: mpi4py MPI Comm-Footnote-290353140 +Ref: mpi4py MPI Comm-Footnote-291353207 +Ref: mpi4py MPI Comm-Footnote-292353270 +Ref: mpi4py MPI Comm-Footnote-293353333 +Node: mpi4py MPI Datatype353397 +Ref: reference/mpi4py MPI Datatype doc353523 +Ref: 33a353523 +Ref: reference/mpi4py MPI Datatype mpi4py-mpi-datatype353523 +Ref: 33b353523 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype353578 +Ref: d0353578 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype __new__353656 +Ref: 33c353656 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Commit360175 +Ref: 33d360175 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_contiguous360268 +Ref: 33e360268 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_darray360431 +Ref: 33f360431 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_f90_complex361058 +Ref: 340361058 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_f90_integer361286 +Ref: 341361286 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_f90_real361461 +Ref: 342361461 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_hindexed361683 +Ref: 343361683 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_hindexed_block362046 +Ref: 344362046 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_hvector362414 +Ref: 345362414 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_indexed362723 +Ref: 346362723 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_indexed_block363026 +Ref: 347363026 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_keyval363334 +Ref: 348363334 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_resized363933 +Ref: 349363933 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_struct364175 +Ref: 34a364175 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_subarray364672 +Ref: 34b364672 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Create_vector365127 +Ref: 34c365127 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Delete_attr365414 +Ref: 34d365414 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Dup365591 +Ref: 34e365591 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Free365683 +Ref: 34f365683 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Free_keyval365773 +Ref: 350365773 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_attr365952 +Ref: 351365952 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_contents366133 +Ref: 352366133 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_envelope366365 +Ref: 353366365 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_extent366580 +Ref: 354366580 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_name366722 +Ref: 355366722 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_size366835 +Ref: 356366835 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_true_extent366984 +Ref: 357366984 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Get_value_index367142 +Ref: 358367142 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Match_size367408 +Ref: 359367408 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Pack367670 +Ref: 35a367670 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Pack_external368033 +Ref: 35b368033 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Pack_external_size368471 +Ref: 35c368471 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Pack_size368861 +Ref: 35d368861 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Set_attr369176 +Ref: 35e369176 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Set_name369417 +Ref: 35f369417 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Unpack369581 +Ref: 360369581 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype Unpack_external369948 +Ref: 361369948 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype decode370390 +Ref: 362370390 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype f2py370580 +Ref: 363370580 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype free370711 +Ref: 364370711 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype fromcode370832 +Ref: 365370832 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype fromhandle371054 +Ref: 366371054 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype py2f371239 +Ref: 367371239 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype tocode371299 +Ref: 368371299 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype combiner371507 +Ref: 369371507 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype contents371558 +Ref: 36a371558 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype envelope371609 +Ref: 36b371609 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype extent371660 +Ref: 36c371660 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype handle371707 +Ref: 36d371707 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype is_named371758 +Ref: 36e371758 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype is_predefined371820 +Ref: 36f371820 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype lb371892 +Ref: 370371892 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype name371940 +Ref: 371371940 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype size371989 +Ref: 372371989 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype true_extent372043 +Ref: 373372043 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype true_lb372100 +Ref: 374372100 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype true_ub372158 +Ref: 375372158 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype typechar372216 +Ref: 376372216 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype typestr372273 +Ref: 377372273 +Ref: reference/mpi4py MPI Datatype mpi4py MPI Datatype ub372326 +Ref: 378372326 +Ref: mpi4py MPI Datatype-Footnote-1372410 +Ref: mpi4py MPI Datatype-Footnote-2372474 +Ref: mpi4py MPI Datatype-Footnote-3372536 +Ref: mpi4py MPI Datatype-Footnote-4372602 +Ref: mpi4py MPI Datatype-Footnote-5372668 +Ref: mpi4py MPI Datatype-Footnote-6372729 +Ref: mpi4py MPI Datatype-Footnote-7372795 +Ref: mpi4py MPI Datatype-Footnote-8372856 +Ref: mpi4py MPI Datatype-Footnote-9372917 +Ref: mpi4py MPI Datatype-Footnote-10372987 +Ref: mpi4py MPI Datatype-Footnote-11373049 +Ref: mpi4py MPI Datatype-Footnote-12373120 +Ref: mpi4py MPI Datatype-Footnote-13373182 +Ref: mpi4py MPI Datatype-Footnote-14373253 +Ref: mpi4py MPI Datatype-Footnote-15373315 +Ref: mpi4py MPI Datatype-Footnote-16373386 +Ref: mpi4py MPI Datatype-Footnote-17373448 +Ref: mpi4py MPI Datatype-Footnote-18373510 +Ref: mpi4py MPI Datatype-Footnote-19373577 +Ref: mpi4py MPI Datatype-Footnote-20373639 +Ref: mpi4py MPI Datatype-Footnote-21373701 +Ref: mpi4py MPI Datatype-Footnote-22373768 +Ref: mpi4py MPI Datatype-Footnote-23373830 +Ref: mpi4py MPI Datatype-Footnote-24373897 +Ref: mpi4py MPI Datatype-Footnote-25373959 +Ref: mpi4py MPI Datatype-Footnote-26374021 +Ref: mpi4py MPI Datatype-Footnote-27374088 +Ref: mpi4py MPI Datatype-Footnote-28374159 +Ref: mpi4py MPI Datatype-Footnote-29374221 +Ref: mpi4py MPI Datatype-Footnote-30374292 +Ref: mpi4py MPI Datatype-Footnote-31374354 +Ref: mpi4py MPI Datatype-Footnote-32374421 +Ref: mpi4py MPI Datatype-Footnote-33374483 +Ref: mpi4py MPI Datatype-Footnote-34374554 +Ref: mpi4py MPI Datatype-Footnote-35374616 +Ref: mpi4py MPI Datatype-Footnote-36374683 +Ref: mpi4py MPI Datatype-Footnote-37374745 +Ref: mpi4py MPI Datatype-Footnote-38374807 +Ref: mpi4py MPI Datatype-Footnote-39374869 +Ref: mpi4py MPI Datatype-Footnote-40374936 +Ref: mpi4py MPI Datatype-Footnote-41375007 +Ref: mpi4py MPI Datatype-Footnote-42375069 +Ref: mpi4py MPI Datatype-Footnote-43375140 +Ref: mpi4py MPI Datatype-Footnote-44375202 +Ref: mpi4py MPI Datatype-Footnote-45375269 +Ref: mpi4py MPI Datatype-Footnote-46375331 +Ref: mpi4py MPI Datatype-Footnote-47375402 +Ref: mpi4py MPI Datatype-Footnote-48375464 +Ref: mpi4py MPI Datatype-Footnote-49375531 +Ref: mpi4py MPI Datatype-Footnote-50375602 +Ref: mpi4py MPI Datatype-Footnote-51375664 +Ref: mpi4py MPI Datatype-Footnote-52375730 +Ref: mpi4py MPI Datatype-Footnote-53375796 +Ref: mpi4py MPI Datatype-Footnote-54375859 +Ref: mpi4py MPI Datatype-Footnote-55375930 +Ref: mpi4py MPI Datatype-Footnote-56375992 +Ref: mpi4py MPI Datatype-Footnote-57376058 +Ref: mpi4py MPI Datatype-Footnote-58376121 +Ref: mpi4py MPI Datatype-Footnote-59376184 +Ref: mpi4py MPI Datatype-Footnote-60376247 +Ref: mpi4py MPI Datatype-Footnote-61376309 +Ref: mpi4py MPI Datatype-Footnote-62376371 +Ref: mpi4py MPI Datatype-Footnote-63376433 +Ref: mpi4py MPI Datatype-Footnote-64376500 +Ref: mpi4py MPI Datatype-Footnote-65376571 +Ref: mpi4py MPI Datatype-Footnote-66376633 +Ref: mpi4py MPI Datatype-Footnote-67376704 +Ref: mpi4py MPI Datatype-Footnote-68376766 +Ref: mpi4py MPI Datatype-Footnote-69376837 +Ref: mpi4py MPI Datatype-Footnote-70376904 +Ref: mpi4py MPI Datatype-Footnote-71376975 +Ref: mpi4py MPI Datatype-Footnote-72377037 +Ref: mpi4py MPI Datatype-Footnote-73377108 +Ref: mpi4py MPI Datatype-Footnote-74377170 +Ref: mpi4py MPI Datatype-Footnote-75377241 +Ref: mpi4py MPI Datatype-Footnote-76377303 +Ref: mpi4py MPI Datatype-Footnote-77377365 +Ref: mpi4py MPI Datatype-Footnote-78377432 +Ref: mpi4py MPI Datatype-Footnote-79377494 +Ref: mpi4py MPI Datatype-Footnote-80377556 +Ref: mpi4py MPI Datatype-Footnote-81377618 +Ref: mpi4py MPI Datatype-Footnote-82377685 +Ref: mpi4py MPI Datatype-Footnote-83377747 +Ref: mpi4py MPI Datatype-Footnote-84377810 +Ref: mpi4py MPI Datatype-Footnote-85377877 +Ref: mpi4py MPI Datatype-Footnote-86377940 +Ref: mpi4py MPI Datatype-Footnote-87378002 +Ref: mpi4py MPI Datatype-Footnote-88378064 +Ref: mpi4py MPI Datatype-Footnote-89378126 +Ref: mpi4py MPI Datatype-Footnote-90378188 +Ref: mpi4py MPI Datatype-Footnote-91378254 +Ref: mpi4py MPI Datatype-Footnote-92378317 +Ref: mpi4py MPI Datatype-Footnote-93378380 +Ref: mpi4py MPI Datatype-Footnote-94378442 +Ref: mpi4py MPI Datatype-Footnote-95378504 +Ref: mpi4py MPI Datatype-Footnote-96378566 +Ref: mpi4py MPI Datatype-Footnote-97378628 +Ref: mpi4py MPI Datatype-Footnote-98378690 +Ref: mpi4py MPI Datatype-Footnote-99378752 +Ref: mpi4py MPI Datatype-Footnote-100378814 +Ref: mpi4py MPI Datatype-Footnote-101378878 +Ref: mpi4py MPI Datatype-Footnote-102378941 +Ref: mpi4py MPI Datatype-Footnote-103379004 +Ref: mpi4py MPI Datatype-Footnote-104379067 +Ref: mpi4py MPI Datatype-Footnote-105379130 +Ref: mpi4py MPI Datatype-Footnote-106379193 +Ref: mpi4py MPI Datatype-Footnote-107379257 +Ref: mpi4py MPI Datatype-Footnote-108379320 +Ref: mpi4py MPI Datatype-Footnote-109379383 +Ref: mpi4py MPI Datatype-Footnote-110379445 +Ref: mpi4py MPI Datatype-Footnote-111379508 +Ref: mpi4py MPI Datatype-Footnote-112379572 +Ref: mpi4py MPI Datatype-Footnote-113379635 +Ref: mpi4py MPI Datatype-Footnote-114379698 +Ref: mpi4py MPI Datatype-Footnote-115379766 +Ref: mpi4py MPI Datatype-Footnote-116379829 +Ref: mpi4py MPI Datatype-Footnote-117379892 +Ref: mpi4py MPI Datatype-Footnote-118379960 +Ref: mpi4py MPI Datatype-Footnote-119380023 +Ref: mpi4py MPI Datatype-Footnote-120380086 +Ref: mpi4py MPI Datatype-Footnote-121380148 +Ref: mpi4py MPI Datatype-Footnote-122380211 +Ref: mpi4py MPI Datatype-Footnote-123380274 +Ref: mpi4py MPI Datatype-Footnote-124380336 +Ref: mpi4py MPI Datatype-Footnote-125380399 +Ref: mpi4py MPI Datatype-Footnote-126380462 +Ref: mpi4py MPI Datatype-Footnote-127380525 +Ref: mpi4py MPI Datatype-Footnote-128380588 +Ref: mpi4py MPI Datatype-Footnote-129380651 +Ref: mpi4py MPI Datatype-Footnote-130380718 +Ref: mpi4py MPI Datatype-Footnote-131380782 +Ref: mpi4py MPI Datatype-Footnote-132380844 +Ref: mpi4py MPI Datatype-Footnote-133380908 +Ref: mpi4py MPI Datatype-Footnote-134380971 +Ref: mpi4py MPI Datatype-Footnote-135381034 +Ref: mpi4py MPI Datatype-Footnote-136381096 +Ref: mpi4py MPI Datatype-Footnote-137381159 +Ref: mpi4py MPI Datatype-Footnote-138381222 +Ref: mpi4py MPI Datatype-Footnote-139381286 +Ref: mpi4py MPI Datatype-Footnote-140381348 +Ref: mpi4py MPI Datatype-Footnote-141381411 +Ref: mpi4py MPI Datatype-Footnote-142381473 +Ref: mpi4py MPI Datatype-Footnote-143381540 +Ref: mpi4py MPI Datatype-Footnote-144381603 +Ref: mpi4py MPI Datatype-Footnote-145381667 +Ref: mpi4py MPI Datatype-Footnote-146381729 +Ref: mpi4py MPI Datatype-Footnote-147381792 +Ref: mpi4py MPI Datatype-Footnote-148381855 +Node: mpi4py MPI Distgraphcomm381917 +Ref: reference/mpi4py MPI Distgraphcomm doc382049 +Ref: 379382049 +Ref: reference/mpi4py MPI Distgraphcomm mpi4py-mpi-distgraphcomm382049 +Ref: 37a382049 +Ref: reference/mpi4py MPI Distgraphcomm mpi4py MPI Distgraphcomm382114 +Ref: 35382114 +Ref: reference/mpi4py MPI Distgraphcomm mpi4py MPI Distgraphcomm __new__382236 +Ref: 37b382236 +Ref: reference/mpi4py MPI Distgraphcomm mpi4py MPI Distgraphcomm Get_dist_neighbors382765 +Ref: 37c382765 +Ref: reference/mpi4py MPI Distgraphcomm mpi4py MPI Distgraphcomm Get_dist_neighbors_count383015 +Ref: 37d383015 +Ref: mpi4py MPI Distgraphcomm-Footnote-1383204 +Ref: mpi4py MPI Distgraphcomm-Footnote-2383266 +Ref: mpi4py MPI Distgraphcomm-Footnote-3383332 +Ref: mpi4py MPI Distgraphcomm-Footnote-4383394 +Ref: mpi4py MPI Distgraphcomm-Footnote-5383455 +Ref: mpi4py MPI Distgraphcomm-Footnote-6383516 +Ref: mpi4py MPI Distgraphcomm-Footnote-7383577 +Ref: mpi4py MPI Distgraphcomm-Footnote-8383638 +Ref: mpi4py MPI Distgraphcomm-Footnote-9383700 +Ref: mpi4py MPI Distgraphcomm-Footnote-10383761 +Ref: mpi4py MPI Distgraphcomm-Footnote-11383823 +Ref: mpi4py MPI Distgraphcomm-Footnote-12383885 +Ref: mpi4py MPI Distgraphcomm-Footnote-13383947 +Ref: mpi4py MPI Distgraphcomm-Footnote-14384010 +Node: mpi4py MPI Errhandler384072 +Ref: reference/mpi4py MPI Errhandler doc384200 +Ref: 37e384200 +Ref: reference/mpi4py MPI Errhandler mpi4py-mpi-errhandler384200 +Ref: 37f384200 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler384259 +Ref: d8384259 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler __new__384337 +Ref: 380384337 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler Free385060 +Ref: 381385060 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler f2py385153 +Ref: 382385153 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler free385284 +Ref: 383385284 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler fromhandle385389 +Ref: 384385389 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler py2f385574 +Ref: 385385574 +Ref: reference/mpi4py MPI Errhandler mpi4py MPI Errhandler handle385693 +Ref: 386385693 +Ref: mpi4py MPI Errhandler-Footnote-1385780 +Ref: mpi4py MPI Errhandler-Footnote-2385844 +Ref: mpi4py MPI Errhandler-Footnote-3385906 +Ref: mpi4py MPI Errhandler-Footnote-4385972 +Ref: mpi4py MPI Errhandler-Footnote-5386034 +Ref: mpi4py MPI Errhandler-Footnote-6386095 +Ref: mpi4py MPI Errhandler-Footnote-7386157 +Ref: mpi4py MPI Errhandler-Footnote-8386218 +Node: mpi4py MPI File386279 +Ref: reference/mpi4py MPI File doc386403 +Ref: 387386403 +Ref: reference/mpi4py MPI File mpi4py-mpi-file386403 +Ref: 388386403 +Ref: reference/mpi4py MPI File mpi4py MPI File386450 +Ref: 84386450 +Ref: reference/mpi4py MPI File mpi4py MPI File __new__386525 +Ref: 389386525 +Ref: reference/mpi4py MPI File mpi4py MPI File Call_errhandler394252 +Ref: 38a394252 +Ref: reference/mpi4py MPI File mpi4py MPI File Close394435 +Ref: 86394435 +Ref: reference/mpi4py MPI File mpi4py MPI File Create_errhandler394520 +Ref: 38b394520 +Ref: reference/mpi4py MPI File mpi4py MPI File Delete394820 +Ref: 87394820 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_amode395093 +Ref: 38c395093 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_atomicity395197 +Ref: 38d395197 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_byte_offset395304 +Ref: 38e395304 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_errhandler395603 +Ref: 38f395603 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_group395731 +Ref: 390395731 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_info395867 +Ref: 391395867 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_position395986 +Ref: 392395986 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_position_shared396232 +Ref: 393396232 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_size396476 +Ref: 394396476 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_type_extent396572 +Ref: 395396572 +Ref: reference/mpi4py MPI File mpi4py MPI File Get_view396765 +Ref: 89396765 +Ref: reference/mpi4py MPI File mpi4py MPI File Iread396931 +Ref: 396396931 +Ref: reference/mpi4py MPI File mpi4py MPI File Iread_all397120 +Ref: 397397120 +Ref: reference/mpi4py MPI File mpi4py MPI File Iread_at397324 +Ref: 398397324 +Ref: reference/mpi4py MPI File mpi4py MPI File Iread_at_all397571 +Ref: 399397571 +Ref: reference/mpi4py MPI File mpi4py MPI File Iread_shared397833 +Ref: 39a397833 +Ref: reference/mpi4py MPI File mpi4py MPI File Iwrite398025 +Ref: 39b398025 +Ref: reference/mpi4py MPI File mpi4py MPI File Iwrite_all398216 +Ref: 39c398216 +Ref: reference/mpi4py MPI File mpi4py MPI File Iwrite_at398422 +Ref: 39d398422 +Ref: reference/mpi4py MPI File mpi4py MPI File Iwrite_at_all398671 +Ref: 39e398671 +Ref: reference/mpi4py MPI File mpi4py MPI File Iwrite_shared398935 +Ref: 39f398935 +Ref: reference/mpi4py MPI File mpi4py MPI File Open399129 +Ref: 85399129 +Ref: reference/mpi4py MPI File mpi4py MPI File Preallocate399526 +Ref: 3a0399526 +Ref: reference/mpi4py MPI File mpi4py MPI File Read399691 +Ref: 3a1399691 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_all399952 +Ref: 3a2399952 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_all_begin400228 +Ref: 3a3400228 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_all_end400429 +Ref: 3a4400429 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_at400736 +Ref: 3a5400736 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_at_all401039 +Ref: 3a6401039 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_at_all_begin401357 +Ref: 3a7401357 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_at_all_end401616 +Ref: 3a8401616 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_ordered401908 +Ref: 3a9401908 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_ordered_begin402184 +Ref: 3aa402184 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_ordered_end402385 +Ref: 3ab402385 +Ref: reference/mpi4py MPI File mpi4py MPI File Read_shared402682 +Ref: 3ac402682 +Ref: reference/mpi4py MPI File mpi4py MPI File Seek402946 +Ref: 3ad402946 +Ref: reference/mpi4py MPI File mpi4py MPI File Seek_shared403178 +Ref: 3ae403178 +Ref: reference/mpi4py MPI File mpi4py MPI File Set_atomicity403413 +Ref: 3af403413 +Ref: reference/mpi4py MPI File mpi4py MPI File Set_errhandler403567 +Ref: 3b0403567 +Ref: reference/mpi4py MPI File mpi4py MPI File Set_info403757 +Ref: 3b1403757 +Ref: reference/mpi4py MPI File mpi4py MPI File Set_size403942 +Ref: 3b2403942 +Ref: reference/mpi4py MPI File mpi4py MPI File Set_view404085 +Ref: 88404085 +Ref: reference/mpi4py MPI File mpi4py MPI File Sync404527 +Ref: 3b3404527 +Ref: reference/mpi4py MPI File mpi4py MPI File Write404676 +Ref: 3b4404676 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_all404939 +Ref: 3b5404939 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_all_begin405217 +Ref: 3b6405217 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_all_end405420 +Ref: 3b7405420 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_at405729 +Ref: 3b8405729 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_at_all406034 +Ref: 3b9406034 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_at_all_begin406354 +Ref: 3ba406354 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_at_all_end406615 +Ref: 3bb406615 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_ordered406909 +Ref: 3bc406909 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_ordered_begin407187 +Ref: 3bd407187 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_ordered_end407390 +Ref: 3be407390 +Ref: reference/mpi4py MPI File mpi4py MPI File Write_shared407689 +Ref: 3bf407689 +Ref: reference/mpi4py MPI File mpi4py MPI File f2py407956 +Ref: 3c0407956 +Ref: reference/mpi4py MPI File mpi4py MPI File free408083 +Ref: 3c1408083 +Ref: reference/mpi4py MPI File mpi4py MPI File fromhandle408190 +Ref: 3c2408190 +Ref: reference/mpi4py MPI File mpi4py MPI File py2f408371 +Ref: 3c3408371 +Ref: reference/mpi4py MPI File mpi4py MPI File amode408492 +Ref: 3c4408492 +Ref: reference/mpi4py MPI File mpi4py MPI File atomicity408543 +Ref: 3c5408543 +Ref: reference/mpi4py MPI File mpi4py MPI File group408601 +Ref: 3c6408601 +Ref: reference/mpi4py MPI File mpi4py MPI File group_rank408646 +Ref: 3c7408646 +Ref: reference/mpi4py MPI File mpi4py MPI File group_size408701 +Ref: 3c8408701 +Ref: reference/mpi4py MPI File mpi4py MPI File handle408756 +Ref: 3c9408756 +Ref: reference/mpi4py MPI File mpi4py MPI File info408807 +Ref: 3ca408807 +Ref: reference/mpi4py MPI File mpi4py MPI File size408856 +Ref: 3cb408856 +Ref: mpi4py MPI File-Footnote-1408946 +Ref: mpi4py MPI File-Footnote-2409010 +Ref: mpi4py MPI File-Footnote-3409072 +Ref: mpi4py MPI File-Footnote-4409138 +Ref: mpi4py MPI File-Footnote-5409199 +Ref: mpi4py MPI File-Footnote-6409261 +Ref: mpi4py MPI File-Footnote-7409323 +Ref: mpi4py MPI File-Footnote-8409393 +Ref: mpi4py MPI File-Footnote-9409454 +Ref: mpi4py MPI File-Footnote-10409516 +Ref: mpi4py MPI File-Footnote-11409579 +Ref: mpi4py MPI File-Footnote-12409640 +Ref: mpi4py MPI File-Footnote-13409703 +Ref: mpi4py MPI File-Footnote-14409766 +Ref: mpi4py MPI File-Footnote-15409828 +Ref: mpi4py MPI File-Footnote-16409891 +Ref: mpi4py MPI File-Footnote-17409953 +Ref: mpi4py MPI File-Footnote-18410015 +Ref: mpi4py MPI File-Footnote-19410077 +Ref: mpi4py MPI File-Footnote-20410139 +Ref: mpi4py MPI File-Footnote-21410201 +Ref: mpi4py MPI File-Footnote-22410263 +Ref: mpi4py MPI File-Footnote-23410326 +Ref: mpi4py MPI File-Footnote-24410388 +Ref: mpi4py MPI File-Footnote-25410449 +Ref: mpi4py MPI File-Footnote-26410511 +Ref: mpi4py MPI File-Footnote-27410573 +Ref: mpi4py MPI File-Footnote-28410635 +Ref: mpi4py MPI File-Footnote-29410697 +Ref: mpi4py MPI File-Footnote-30410760 +Ref: mpi4py MPI File-Footnote-31410821 +Ref: mpi4py MPI File-Footnote-32410884 +Ref: mpi4py MPI File-Footnote-33410946 +Ref: mpi4py MPI File-Footnote-34411013 +Ref: mpi4py MPI File-Footnote-35411075 +Ref: mpi4py MPI File-Footnote-36411138 +Ref: mpi4py MPI File-Footnote-37411201 +Ref: mpi4py MPI File-Footnote-38411264 +Ref: mpi4py MPI File-Footnote-39411327 +Ref: mpi4py MPI File-Footnote-40411390 +Ref: mpi4py MPI File-Footnote-41411453 +Ref: mpi4py MPI File-Footnote-42411516 +Ref: mpi4py MPI File-Footnote-43411579 +Ref: mpi4py MPI File-Footnote-44411641 +Ref: mpi4py MPI File-Footnote-45411704 +Ref: mpi4py MPI File-Footnote-46411767 +Ref: mpi4py MPI File-Footnote-47411829 +Ref: mpi4py MPI File-Footnote-48411892 +Ref: mpi4py MPI File-Footnote-49411955 +Ref: mpi4py MPI File-Footnote-50412017 +Ref: mpi4py MPI File-Footnote-51412080 +Ref: mpi4py MPI File-Footnote-52412143 +Ref: mpi4py MPI File-Footnote-53412206 +Ref: mpi4py MPI File-Footnote-54412269 +Ref: mpi4py MPI File-Footnote-55412332 +Ref: mpi4py MPI File-Footnote-56412395 +Ref: mpi4py MPI File-Footnote-57412458 +Ref: mpi4py MPI File-Footnote-58412521 +Ref: mpi4py MPI File-Footnote-59412584 +Ref: mpi4py MPI File-Footnote-60412647 +Ref: mpi4py MPI File-Footnote-61412709 +Ref: mpi4py MPI File-Footnote-62412771 +Ref: mpi4py MPI File-Footnote-63412834 +Ref: mpi4py MPI File-Footnote-64412896 +Ref: mpi4py MPI File-Footnote-65412958 +Ref: mpi4py MPI File-Footnote-66413021 +Ref: mpi4py MPI File-Footnote-67413084 +Ref: mpi4py MPI File-Footnote-68413147 +Ref: mpi4py MPI File-Footnote-69413210 +Ref: mpi4py MPI File-Footnote-70413273 +Ref: mpi4py MPI File-Footnote-71413335 +Ref: mpi4py MPI File-Footnote-72413398 +Ref: mpi4py MPI File-Footnote-73413460 +Ref: mpi4py MPI File-Footnote-74413523 +Ref: mpi4py MPI File-Footnote-75413584 +Ref: mpi4py MPI File-Footnote-76413647 +Ref: mpi4py MPI File-Footnote-77413710 +Ref: mpi4py MPI File-Footnote-78413773 +Ref: mpi4py MPI File-Footnote-79413836 +Ref: mpi4py MPI File-Footnote-80413899 +Ref: mpi4py MPI File-Footnote-81413962 +Ref: mpi4py MPI File-Footnote-82414025 +Ref: mpi4py MPI File-Footnote-83414088 +Ref: mpi4py MPI File-Footnote-84414151 +Ref: mpi4py MPI File-Footnote-85414213 +Ref: mpi4py MPI File-Footnote-86414276 +Ref: mpi4py MPI File-Footnote-87414339 +Ref: mpi4py MPI File-Footnote-88414401 +Ref: mpi4py MPI File-Footnote-89414464 +Ref: mpi4py MPI File-Footnote-90414527 +Ref: mpi4py MPI File-Footnote-91414589 +Ref: mpi4py MPI File-Footnote-92414652 +Ref: mpi4py MPI File-Footnote-93414715 +Ref: mpi4py MPI File-Footnote-94414778 +Ref: mpi4py MPI File-Footnote-95414841 +Ref: mpi4py MPI File-Footnote-96414904 +Ref: mpi4py MPI File-Footnote-97414967 +Ref: mpi4py MPI File-Footnote-98415030 +Ref: mpi4py MPI File-Footnote-99415093 +Ref: mpi4py MPI File-Footnote-100415156 +Ref: mpi4py MPI File-Footnote-101415220 +Ref: mpi4py MPI File-Footnote-102415283 +Ref: mpi4py MPI File-Footnote-103415347 +Ref: mpi4py MPI File-Footnote-104415410 +Node: mpi4py MPI Graphcomm415473 +Ref: reference/mpi4py MPI Graphcomm doc415595 +Ref: 3cc415595 +Ref: reference/mpi4py MPI Graphcomm mpi4py-mpi-graphcomm415595 +Ref: 3cd415595 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm415652 +Ref: 34415652 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm __new__415766 +Ref: 3ce415766 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm Get_dims417122 +Ref: 3cf417122 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm Get_neighbors417251 +Ref: 3d0417251 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm Get_neighbors_count417425 +Ref: 3d1417425 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm Get_topo417599 +Ref: 3d2417599 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm dims417798 +Ref: 3d3417798 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm edges417862 +Ref: 3d4417862 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm index417907 +Ref: 3d5417907 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm nedges417952 +Ref: 3d6417952 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm neighbors418008 +Ref: 3d7418008 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm nneighbors418061 +Ref: 3d8418061 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm nnodes418125 +Ref: 3d9418125 +Ref: reference/mpi4py MPI Graphcomm mpi4py MPI Graphcomm topo418181 +Ref: 3da418181 +Ref: mpi4py MPI Graphcomm-Footnote-1418276 +Ref: mpi4py MPI Graphcomm-Footnote-2418338 +Ref: mpi4py MPI Graphcomm-Footnote-3418404 +Ref: mpi4py MPI Graphcomm-Footnote-4418466 +Ref: mpi4py MPI Graphcomm-Footnote-5418527 +Ref: mpi4py MPI Graphcomm-Footnote-6418588 +Ref: mpi4py MPI Graphcomm-Footnote-7418649 +Ref: mpi4py MPI Graphcomm-Footnote-8418710 +Ref: mpi4py MPI Graphcomm-Footnote-9418771 +Ref: mpi4py MPI Graphcomm-Footnote-10418832 +Ref: mpi4py MPI Graphcomm-Footnote-11418894 +Ref: mpi4py MPI Graphcomm-Footnote-12418957 +Ref: mpi4py MPI Graphcomm-Footnote-13419019 +Ref: mpi4py MPI Graphcomm-Footnote-14419081 +Ref: mpi4py MPI Graphcomm-Footnote-15419143 +Node: mpi4py MPI Grequest419205 +Ref: reference/mpi4py MPI Grequest doc419328 +Ref: 3db419328 +Ref: reference/mpi4py MPI Grequest mpi4py-mpi-grequest419328 +Ref: 3dc419328 +Ref: reference/mpi4py MPI Grequest mpi4py MPI Grequest419385 +Ref: d2419385 +Ref: reference/mpi4py MPI Grequest mpi4py MPI Grequest __new__419484 +Ref: 3dd419484 +Ref: reference/mpi4py MPI Grequest mpi4py MPI Grequest Complete420093 +Ref: 3de420093 +Ref: reference/mpi4py MPI Grequest mpi4py MPI Grequest Start420215 +Ref: 3df420215 +Ref: reference/mpi4py MPI Grequest mpi4py MPI Grequest complete421015 +Ref: 3e0421015 +Ref: mpi4py MPI Grequest-Footnote-1421226 +Ref: mpi4py MPI Grequest-Footnote-2421288 +Ref: mpi4py MPI Grequest-Footnote-3421354 +Ref: mpi4py MPI Grequest-Footnote-4421416 +Ref: mpi4py MPI Grequest-Footnote-5421486 +Ref: mpi4py MPI Grequest-Footnote-6421548 +Ref: mpi4py MPI Grequest-Footnote-7421610 +Ref: mpi4py MPI Grequest-Footnote-8421680 +Ref: mpi4py MPI Grequest-Footnote-9421742 +Ref: mpi4py MPI Grequest-Footnote-10421804 +Ref: mpi4py MPI Grequest-Footnote-11421875 +Ref: mpi4py MPI Grequest-Footnote-12421938 +Ref: mpi4py MPI Grequest-Footnote-13422001 +Ref: mpi4py MPI Grequest-Footnote-14422064 +Ref: mpi4py MPI Grequest-Footnote-15422130 +Ref: mpi4py MPI Grequest-Footnote-16422193 +Ref: mpi4py MPI Grequest-Footnote-17422255 +Ref: mpi4py MPI Grequest-Footnote-18422316 +Ref: mpi4py MPI Grequest-Footnote-19422382 +Ref: mpi4py MPI Grequest-Footnote-20422445 +Ref: mpi4py MPI Grequest-Footnote-21422511 +Node: mpi4py MPI Group422574 +Ref: reference/mpi4py MPI Group doc422699 +Ref: 3e1422699 +Ref: reference/mpi4py MPI Group mpi4py-mpi-group422699 +Ref: 3e2422699 +Ref: reference/mpi4py MPI Group mpi4py MPI Group422750 +Ref: 28422750 +Ref: reference/mpi4py MPI Group mpi4py MPI Group __new__422828 +Ref: 3e3422828 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Compare425189 +Ref: 3e4425189 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Create_from_session_pset425341 +Ref: 3e5425341 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Difference425641 +Ref: 2b425641 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Dup425926 +Ref: 3e6425926 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Excl426014 +Ref: 3e7426014 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Free426209 +Ref: 3e8426209 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Get_rank426294 +Ref: 3e9426294 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Get_size426412 +Ref: 3ea426412 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Incl426529 +Ref: 3eb426529 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Intersection426725 +Ref: 2a426725 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Range_excl427025 +Ref: 3ec427025 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Range_incl427293 +Ref: 3ed427293 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Translate_ranks427561 +Ref: 3ee427561 +Ref: reference/mpi4py MPI Group mpi4py MPI Group Union427897 +Ref: 29427897 +Ref: reference/mpi4py MPI Group mpi4py MPI Group f2py428173 +Ref: 3ef428173 +Ref: reference/mpi4py MPI Group mpi4py MPI Group free428300 +Ref: 3f0428300 +Ref: reference/mpi4py MPI Group mpi4py MPI Group fromhandle428420 +Ref: 3f1428420 +Ref: reference/mpi4py MPI Group mpi4py MPI Group py2f428601 +Ref: 3f2428601 +Ref: reference/mpi4py MPI Group mpi4py MPI Group handle428721 +Ref: 3f3428721 +Ref: reference/mpi4py MPI Group mpi4py MPI Group rank428772 +Ref: 3f4428772 +Ref: reference/mpi4py MPI Group mpi4py MPI Group size428831 +Ref: 3f5428831 +Ref: mpi4py MPI Group-Footnote-1428925 +Ref: mpi4py MPI Group-Footnote-2428989 +Ref: mpi4py MPI Group-Footnote-3429051 +Ref: mpi4py MPI Group-Footnote-4429117 +Ref: mpi4py MPI Group-Footnote-5429178 +Ref: mpi4py MPI Group-Footnote-6429238 +Ref: mpi4py MPI Group-Footnote-7429304 +Ref: mpi4py MPI Group-Footnote-8429370 +Ref: mpi4py MPI Group-Footnote-9429436 +Ref: mpi4py MPI Group-Footnote-10429506 +Ref: mpi4py MPI Group-Footnote-11429568 +Ref: mpi4py MPI Group-Footnote-12429635 +Ref: mpi4py MPI Group-Footnote-13429698 +Ref: mpi4py MPI Group-Footnote-14429760 +Ref: mpi4py MPI Group-Footnote-15429822 +Ref: mpi4py MPI Group-Footnote-16429893 +Ref: mpi4py MPI Group-Footnote-17429955 +Ref: mpi4py MPI Group-Footnote-18430022 +Ref: mpi4py MPI Group-Footnote-19430089 +Ref: mpi4py MPI Group-Footnote-20430160 +Ref: mpi4py MPI Group-Footnote-21430223 +Ref: mpi4py MPI Group-Footnote-22430285 +Ref: mpi4py MPI Group-Footnote-23430347 +Ref: mpi4py MPI Group-Footnote-24430409 +Ref: mpi4py MPI Group-Footnote-25430476 +Ref: mpi4py MPI Group-Footnote-26430547 +Ref: mpi4py MPI Group-Footnote-27430610 +Ref: mpi4py MPI Group-Footnote-28430672 +Ref: mpi4py MPI Group-Footnote-29430734 +Ref: mpi4py MPI Group-Footnote-30430796 +Ref: mpi4py MPI Group-Footnote-31430863 +Ref: mpi4py MPI Group-Footnote-32430934 +Ref: mpi4py MPI Group-Footnote-33430996 +Ref: mpi4py MPI Group-Footnote-34431059 +Ref: mpi4py MPI Group-Footnote-35431122 +Ref: mpi4py MPI Group-Footnote-36431184 +Ref: mpi4py MPI Group-Footnote-37431246 +Ref: mpi4py MPI Group-Footnote-38431313 +Ref: mpi4py MPI Group-Footnote-39431375 +Ref: mpi4py MPI Group-Footnote-40431438 +Ref: mpi4py MPI Group-Footnote-41431500 +Node: mpi4py MPI InPlaceType431562 +Ref: reference/mpi4py MPI InPlaceType doc431683 +Ref: 3f6431683 +Ref: reference/mpi4py MPI InPlaceType mpi4py-mpi-inplacetype431683 +Ref: 3f7431683 +Ref: reference/mpi4py MPI InPlaceType mpi4py MPI InPlaceType431746 +Ref: fd431746 +Ref: reference/mpi4py MPI InPlaceType mpi4py MPI InPlaceType __new__431835 +Ref: 3f8431835 +Ref: mpi4py MPI InPlaceType-Footnote-1431943 +Ref: mpi4py MPI InPlaceType-Footnote-2432004 +Node: mpi4py MPI Info432070 +Ref: reference/mpi4py MPI Info doc432195 +Ref: 3f9432195 +Ref: reference/mpi4py MPI Info mpi4py-mpi-info432195 +Ref: 3fa432195 +Ref: reference/mpi4py MPI Info mpi4py MPI Info432244 +Ref: d4432244 +Ref: reference/mpi4py MPI Info mpi4py MPI Info __new__432314 +Ref: 3fb432314 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Create434601 +Ref: 3fc434601 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Create_env434943 +Ref: 3fd434943 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Delete435167 +Ref: 3fe435167 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Dup435325 +Ref: 3ff435325 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Free435430 +Ref: 400435430 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Get435522 +Ref: 401435522 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Get_nkeys435691 +Ref: 402435691 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Get_nthkey435819 +Ref: 403435819 +Ref: reference/mpi4py MPI Info mpi4py MPI Info Set435981 +Ref: 404435981 +Ref: reference/mpi4py MPI Info mpi4py MPI Info clear436196 +Ref: 405436196 +Ref: reference/mpi4py MPI Info mpi4py MPI Info copy436284 +Ref: 406436284 +Ref: reference/mpi4py MPI Info mpi4py MPI Info f2py436370 +Ref: 407436370 +Ref: reference/mpi4py MPI Info mpi4py MPI Info free436496 +Ref: 408436496 +Ref: reference/mpi4py MPI Info mpi4py MPI Info fromhandle436616 +Ref: 409436616 +Ref: reference/mpi4py MPI Info mpi4py MPI Info get436796 +Ref: 40a436796 +Ref: reference/mpi4py MPI Info mpi4py MPI Info items437033 +Ref: 40b437033 +Ref: reference/mpi4py MPI Info mpi4py MPI Info keys437156 +Ref: 40c437156 +Ref: reference/mpi4py MPI Info mpi4py MPI Info pop437257 +Ref: 40d437257 +Ref: reference/mpi4py MPI Info mpi4py MPI Info popitem437457 +Ref: 40e437457 +Ref: reference/mpi4py MPI Info mpi4py MPI Info py2f437566 +Ref: 40f437566 +Ref: reference/mpi4py MPI Info mpi4py MPI Info update437625 +Ref: 410437625 +Ref: reference/mpi4py MPI Info mpi4py MPI Info values438004 +Ref: 411438004 +Ref: reference/mpi4py MPI Info mpi4py MPI Info handle438170 +Ref: 412438170 +Ref: mpi4py MPI Info-Footnote-1438257 +Ref: mpi4py MPI Info-Footnote-2438321 +Ref: mpi4py MPI Info-Footnote-3438383 +Ref: mpi4py MPI Info-Footnote-4438449 +Ref: mpi4py MPI Info-Footnote-5438518 +Ref: mpi4py MPI Info-Footnote-6438578 +Ref: mpi4py MPI Info-Footnote-7438638 +Ref: mpi4py MPI Info-Footnote-8438708 +Ref: mpi4py MPI Info-Footnote-9438770 +Ref: mpi4py MPI Info-Footnote-10438830 +Ref: mpi4py MPI Info-Footnote-11438891 +Ref: mpi4py MPI Info-Footnote-12438954 +Ref: mpi4py MPI Info-Footnote-13439021 +Ref: mpi4py MPI Info-Footnote-14439092 +Ref: mpi4py MPI Info-Footnote-15439153 +Ref: mpi4py MPI Info-Footnote-16439216 +Ref: mpi4py MPI Info-Footnote-17439283 +Ref: mpi4py MPI Info-Footnote-18439344 +Ref: mpi4py MPI Info-Footnote-19439407 +Ref: mpi4py MPI Info-Footnote-20439474 +Ref: mpi4py MPI Info-Footnote-21439537 +Ref: mpi4py MPI Info-Footnote-22439598 +Ref: mpi4py MPI Info-Footnote-23439659 +Ref: mpi4py MPI Info-Footnote-24439722 +Ref: mpi4py MPI Info-Footnote-25439784 +Ref: mpi4py MPI Info-Footnote-26439846 +Ref: mpi4py MPI Info-Footnote-27439907 +Ref: mpi4py MPI Info-Footnote-28439968 +Ref: mpi4py MPI Info-Footnote-29440029 +Ref: mpi4py MPI Info-Footnote-30440092 +Ref: mpi4py MPI Info-Footnote-31440155 +Ref: mpi4py MPI Info-Footnote-32440222 +Ref: mpi4py MPI Info-Footnote-33440284 +Ref: mpi4py MPI Info-Footnote-34440347 +Ref: mpi4py MPI Info-Footnote-35440409 +Ref: mpi4py MPI Info-Footnote-36440470 +Ref: mpi4py MPI Info-Footnote-37440531 +Ref: mpi4py MPI Info-Footnote-38440594 +Ref: mpi4py MPI Info-Footnote-39440655 +Ref: mpi4py MPI Info-Footnote-40440718 +Ref: mpi4py MPI Info-Footnote-41440780 +Ref: mpi4py MPI Info-Footnote-42440843 +Ref: mpi4py MPI Info-Footnote-43440904 +Ref: mpi4py MPI Info-Footnote-44440965 +Ref: mpi4py MPI Info-Footnote-45441027 +Ref: mpi4py MPI Info-Footnote-46441088 +Ref: mpi4py MPI Info-Footnote-47441149 +Ref: mpi4py MPI Info-Footnote-48441210 +Ref: mpi4py MPI Info-Footnote-49441271 +Ref: mpi4py MPI Info-Footnote-50441334 +Ref: mpi4py MPI Info-Footnote-51441395 +Ref: mpi4py MPI Info-Footnote-52441456 +Ref: mpi4py MPI Info-Footnote-53441518 +Ref: mpi4py MPI Info-Footnote-54441588 +Ref: mpi4py MPI Info-Footnote-55441649 +Ref: mpi4py MPI Info-Footnote-56441710 +Ref: mpi4py MPI Info-Footnote-57441781 +Ref: mpi4py MPI Info-Footnote-58441844 +Ref: mpi4py MPI Info-Footnote-59441905 +Ref: mpi4py MPI Info-Footnote-60441966 +Ref: mpi4py MPI Info-Footnote-61442027 +Ref: mpi4py MPI Info-Footnote-62442090 +Ref: mpi4py MPI Info-Footnote-63442152 +Node: mpi4py MPI Intercomm442213 +Ref: reference/mpi4py MPI Intercomm doc442336 +Ref: 413442336 +Ref: reference/mpi4py MPI Intercomm mpi4py-mpi-intercomm442336 +Ref: 414442336 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm442395 +Ref: 20442395 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm __new__442482 +Ref: 415442482 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm Create_from_groups443401 +Ref: 416443401 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm Get_remote_group444062 +Ref: 417444062 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm Get_remote_size444227 +Ref: 418444227 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm Merge444338 +Ref: 32444338 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm remote_group444589 +Ref: 419444589 +Ref: reference/mpi4py MPI Intercomm mpi4py MPI Intercomm remote_size444648 +Ref: 41a444648 +Ref: mpi4py MPI Intercomm-Footnote-1444756 +Ref: mpi4py MPI Intercomm-Footnote-2444818 +Ref: mpi4py MPI Intercomm-Footnote-3444884 +Ref: mpi4py MPI Intercomm-Footnote-4444945 +Ref: mpi4py MPI Intercomm-Footnote-5445006 +Ref: mpi4py MPI Intercomm-Footnote-6445066 +Ref: mpi4py MPI Intercomm-Footnote-7445128 +Ref: mpi4py MPI Intercomm-Footnote-8445189 +Node: mpi4py MPI Intracomm445251 +Ref: reference/mpi4py MPI Intracomm doc445377 +Ref: 41b445377 +Ref: reference/mpi4py MPI Intracomm mpi4py-mpi-intracomm445377 +Ref: 41c445377 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm445436 +Ref: 1f445436 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm __new__445523 +Ref: 41d445523 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Accept447892 +Ref: 6f447892 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Cart_map448206 +Ref: 41e448206 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Connect448525 +Ref: 71448525 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_cart448840 +Ref: 36448840 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_dist_graph449205 +Ref: 41f449205 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_dist_graph_adjacent449830 +Ref: 420449830 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_from_group450521 +Ref: 421450521 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_graph450970 +Ref: 37450970 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_group451308 +Ref: 2d451308 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Create_intercomm451550 +Ref: 31451550 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Exscan451937 +Ref: 60451937 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Exscan_init452247 +Ref: 422452247 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Graph_map452645 +Ref: 423452645 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Iexscan452941 +Ref: 424452941 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Iscan453262 +Ref: 425453262 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Scan453581 +Ref: 5f453581 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Scan_init453889 +Ref: 426453889 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Spawn454285 +Ref: 6b454285 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm Spawn_multiple454845 +Ref: 427454845 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm exscan455630 +Ref: 64455630 +Ref: reference/mpi4py MPI Intracomm mpi4py MPI Intracomm scan455939 +Ref: 63455939 +Ref: mpi4py MPI Intracomm-Footnote-1456282 +Ref: mpi4py MPI Intracomm-Footnote-2456344 +Ref: mpi4py MPI Intracomm-Footnote-3456410 +Ref: mpi4py MPI Intracomm-Footnote-4456470 +Ref: mpi4py MPI Intracomm-Footnote-5456531 +Ref: mpi4py MPI Intracomm-Footnote-6456601 +Ref: mpi4py MPI Intracomm-Footnote-7456662 +Ref: mpi4py MPI Intracomm-Footnote-8456732 +Ref: mpi4py MPI Intracomm-Footnote-9456794 +Ref: mpi4py MPI Intracomm-Footnote-10456856 +Ref: mpi4py MPI Intracomm-Footnote-11456918 +Ref: mpi4py MPI Intracomm-Footnote-12456979 +Ref: mpi4py MPI Intracomm-Footnote-13457041 +Ref: mpi4py MPI Intracomm-Footnote-14457112 +Ref: mpi4py MPI Intracomm-Footnote-15457174 +Ref: mpi4py MPI Intracomm-Footnote-16457245 +Ref: mpi4py MPI Intracomm-Footnote-17457308 +Ref: mpi4py MPI Intracomm-Footnote-18457371 +Ref: mpi4py MPI Intracomm-Footnote-19457434 +Ref: mpi4py MPI Intracomm-Footnote-20457505 +Ref: mpi4py MPI Intracomm-Footnote-21457567 +Ref: mpi4py MPI Intracomm-Footnote-22457638 +Ref: mpi4py MPI Intracomm-Footnote-23457700 +Ref: mpi4py MPI Intracomm-Footnote-24457771 +Ref: mpi4py MPI Intracomm-Footnote-25457833 +Ref: mpi4py MPI Intracomm-Footnote-26457904 +Ref: mpi4py MPI Intracomm-Footnote-27457966 +Ref: mpi4py MPI Intracomm-Footnote-28458029 +Ref: mpi4py MPI Intracomm-Footnote-29458092 +Ref: mpi4py MPI Intracomm-Footnote-30458163 +Ref: mpi4py MPI Intracomm-Footnote-31458225 +Ref: mpi4py MPI Intracomm-Footnote-32458296 +Ref: mpi4py MPI Intracomm-Footnote-33458358 +Ref: mpi4py MPI Intracomm-Footnote-34458429 +Ref: mpi4py MPI Intracomm-Footnote-35458491 +Ref: mpi4py MPI Intracomm-Footnote-36458554 +Ref: mpi4py MPI Intracomm-Footnote-37458625 +Ref: mpi4py MPI Intracomm-Footnote-38458687 +Ref: mpi4py MPI Intracomm-Footnote-39458750 +Ref: mpi4py MPI Intracomm-Footnote-40458813 +Ref: mpi4py MPI Intracomm-Footnote-41458874 +Ref: mpi4py MPI Intracomm-Footnote-42458937 +Ref: mpi4py MPI Intracomm-Footnote-43459008 +Ref: mpi4py MPI Intracomm-Footnote-44459070 +Ref: mpi4py MPI Intracomm-Footnote-45459141 +Ref: mpi4py MPI Intracomm-Footnote-46459203 +Ref: mpi4py MPI Intracomm-Footnote-47459266 +Ref: mpi4py MPI Intracomm-Footnote-48459328 +Ref: mpi4py MPI Intracomm-Footnote-49459390 +Ref: mpi4py MPI Intracomm-Footnote-50459452 +Ref: mpi4py MPI Intracomm-Footnote-51459514 +Ref: mpi4py MPI Intracomm-Footnote-52459577 +Ref: mpi4py MPI Intracomm-Footnote-53459648 +Ref: mpi4py MPI Intracomm-Footnote-54459710 +Ref: mpi4py MPI Intracomm-Footnote-55459781 +Ref: mpi4py MPI Intracomm-Footnote-56459843 +Ref: mpi4py MPI Intracomm-Footnote-57459905 +Ref: mpi4py MPI Intracomm-Footnote-58459968 +Ref: mpi4py MPI Intracomm-Footnote-59460029 +Ref: mpi4py MPI Intracomm-Footnote-60460100 +Ref: mpi4py MPI Intracomm-Footnote-61460161 +Ref: mpi4py MPI Intracomm-Footnote-62460224 +Ref: mpi4py MPI Intracomm-Footnote-63460286 +Ref: mpi4py MPI Intracomm-Footnote-64460348 +Ref: mpi4py MPI Intracomm-Footnote-65460410 +Ref: mpi4py MPI Intracomm-Footnote-66460472 +Ref: mpi4py MPI Intracomm-Footnote-67460535 +Ref: mpi4py MPI Intracomm-Footnote-68460606 +Ref: mpi4py MPI Intracomm-Footnote-69460667 +Ref: mpi4py MPI Intracomm-Footnote-70460738 +Ref: mpi4py MPI Intracomm-Footnote-71460809 +Ref: mpi4py MPI Intracomm-Footnote-72460870 +Ref: mpi4py MPI Intracomm-Footnote-73460933 +Ref: mpi4py MPI Intracomm-Footnote-74461004 +Ref: mpi4py MPI Intracomm-Footnote-75461066 +Ref: mpi4py MPI Intracomm-Footnote-76461129 +Ref: mpi4py MPI Intracomm-Footnote-77461200 +Ref: mpi4py MPI Intracomm-Footnote-78461262 +Ref: mpi4py MPI Intracomm-Footnote-79461324 +Ref: mpi4py MPI Intracomm-Footnote-80461386 +Ref: mpi4py MPI Intracomm-Footnote-81461448 +Ref: mpi4py MPI Intracomm-Footnote-82461511 +Ref: mpi4py MPI Intracomm-Footnote-83461577 +Ref: mpi4py MPI Intracomm-Footnote-84461648 +Ref: mpi4py MPI Intracomm-Footnote-85461714 +Ref: mpi4py MPI Intracomm-Footnote-86461780 +Ref: mpi4py MPI Intracomm-Footnote-87461846 +Ref: mpi4py MPI Intracomm-Footnote-88461912 +Ref: mpi4py MPI Intracomm-Footnote-89461978 +Ref: mpi4py MPI Intracomm-Footnote-90462049 +Ref: mpi4py MPI Intracomm-Footnote-91462115 +Ref: mpi4py MPI Intracomm-Footnote-92462181 +Ref: mpi4py MPI Intracomm-Footnote-93462247 +Node: mpi4py MPI Message462313 +Ref: reference/mpi4py MPI Message doc462432 +Ref: 428462432 +Ref: reference/mpi4py MPI Message mpi4py-mpi-message462432 +Ref: 429462432 +Ref: reference/mpi4py MPI Message mpi4py MPI Message462487 +Ref: d7462487 +Ref: reference/mpi4py MPI Message mpi4py MPI Message __new__462564 +Ref: 42a462564 +Ref: reference/mpi4py MPI Message mpi4py MPI Message Iprobe463974 +Ref: 42b463974 +Ref: reference/mpi4py MPI Message mpi4py MPI Message Irecv464379 +Ref: 42c464379 +Ref: reference/mpi4py MPI Message mpi4py MPI Message Probe464560 +Ref: 42d464560 +Ref: reference/mpi4py MPI Message mpi4py MPI Message Recv464954 +Ref: 42e464954 +Ref: reference/mpi4py MPI Message mpi4py MPI Message f2py465216 +Ref: 42f465216 +Ref: reference/mpi4py MPI Message mpi4py MPI Message free465345 +Ref: 430465345 +Ref: reference/mpi4py MPI Message mpi4py MPI Message fromhandle465428 +Ref: 431465428 +Ref: reference/mpi4py MPI Message mpi4py MPI Message iprobe465611 +Ref: 432465611 +Ref: reference/mpi4py MPI Message mpi4py MPI Message irecv466021 +Ref: 433466021 +Ref: reference/mpi4py MPI Message mpi4py MPI Message probe466143 +Ref: 434466143 +Ref: reference/mpi4py MPI Message mpi4py MPI Message py2f466538 +Ref: 435466538 +Ref: reference/mpi4py MPI Message mpi4py MPI Message recv466597 +Ref: 436466597 +Ref: reference/mpi4py MPI Message mpi4py MPI Message handle466850 +Ref: 437466850 +Ref: mpi4py MPI Message-Footnote-1466937 +Ref: mpi4py MPI Message-Footnote-2467001 +Ref: mpi4py MPI Message-Footnote-3467063 +Ref: mpi4py MPI Message-Footnote-4467129 +Ref: mpi4py MPI Message-Footnote-5467190 +Ref: mpi4py MPI Message-Footnote-6467251 +Ref: mpi4py MPI Message-Footnote-7467313 +Ref: mpi4py MPI Message-Footnote-8467379 +Ref: mpi4py MPI Message-Footnote-9467441 +Ref: mpi4py MPI Message-Footnote-10467502 +Ref: mpi4py MPI Message-Footnote-11467564 +Ref: mpi4py MPI Message-Footnote-12467627 +Ref: mpi4py MPI Message-Footnote-13467694 +Ref: mpi4py MPI Message-Footnote-14467757 +Ref: mpi4py MPI Message-Footnote-15467820 +Ref: mpi4py MPI Message-Footnote-16467882 +Ref: mpi4py MPI Message-Footnote-17467945 +Ref: mpi4py MPI Message-Footnote-18468007 +Ref: mpi4py MPI Message-Footnote-19468069 +Ref: mpi4py MPI Message-Footnote-20468131 +Ref: mpi4py MPI Message-Footnote-21468194 +Ref: mpi4py MPI Message-Footnote-22468261 +Ref: mpi4py MPI Message-Footnote-23468324 +Ref: mpi4py MPI Message-Footnote-24468386 +Ref: mpi4py MPI Message-Footnote-25468448 +Ref: mpi4py MPI Message-Footnote-26468511 +Ref: mpi4py MPI Message-Footnote-27468578 +Ref: mpi4py MPI Message-Footnote-28468640 +Ref: mpi4py MPI Message-Footnote-29468703 +Node: mpi4py MPI Op468769 +Ref: reference/mpi4py MPI Op doc468885 +Ref: 438468885 +Ref: reference/mpi4py MPI Op mpi4py-mpi-op468885 +Ref: 439468885 +Ref: reference/mpi4py MPI Op mpi4py MPI Op468930 +Ref: d3468930 +Ref: reference/mpi4py MPI Op mpi4py MPI Op __new__469006 +Ref: 43a469006 +Ref: reference/mpi4py MPI Op mpi4py MPI Op Create470264 +Ref: 43b470264 +Ref: reference/mpi4py MPI Op mpi4py MPI Op Free470652 +Ref: 43c470652 +Ref: reference/mpi4py MPI Op mpi4py MPI Op Is_commutative470763 +Ref: 43d470763 +Ref: reference/mpi4py MPI Op mpi4py MPI Op Reduce_local470895 +Ref: 43e470895 +Ref: reference/mpi4py MPI Op mpi4py MPI Op f2py471159 +Ref: 43f471159 +Ref: reference/mpi4py MPI Op mpi4py MPI Op free471283 +Ref: 440471283 +Ref: reference/mpi4py MPI Op mpi4py MPI Op fromhandle471403 +Ref: 441471403 +Ref: reference/mpi4py MPI Op mpi4py MPI Op py2f471581 +Ref: 442471581 +Ref: reference/mpi4py MPI Op mpi4py MPI Op handle471701 +Ref: 443471701 +Ref: reference/mpi4py MPI Op mpi4py MPI Op is_commutative471752 +Ref: 444471752 +Ref: reference/mpi4py MPI Op mpi4py MPI Op is_predefined471827 +Ref: 445471827 +Ref: mpi4py MPI Op-Footnote-1471936 +Ref: mpi4py MPI Op-Footnote-2472000 +Ref: mpi4py MPI Op-Footnote-3472062 +Ref: mpi4py MPI Op-Footnote-4472128 +Ref: mpi4py MPI Op-Footnote-5472198 +Ref: mpi4py MPI Op-Footnote-6472260 +Ref: mpi4py MPI Op-Footnote-7472322 +Ref: mpi4py MPI Op-Footnote-8472388 +Ref: mpi4py MPI Op-Footnote-9472450 +Ref: mpi4py MPI Op-Footnote-10472512 +Ref: mpi4py MPI Op-Footnote-11472575 +Ref: mpi4py MPI Op-Footnote-12472637 +Ref: mpi4py MPI Op-Footnote-13472700 +Ref: mpi4py MPI Op-Footnote-14472762 +Node: mpi4py MPI Pickle472824 +Ref: reference/mpi4py MPI Pickle doc472941 +Ref: 446472941 +Ref: reference/mpi4py MPI Pickle mpi4py-mpi-pickle472941 +Ref: 447472941 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle472994 +Ref: d9472994 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle __new__473085 +Ref: 448473085 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle dumps474026 +Ref: 449474026 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle dumps_oob474184 +Ref: 44a474184 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle loads474418 +Ref: 44b474418 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle loads_oob474593 +Ref: 44c474593 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle PROTOCOL474969 +Ref: a7474969 +Ref: reference/mpi4py MPI Pickle mpi4py MPI Pickle THRESHOLD475028 +Ref: c8475028 +Ref: mpi4py MPI Pickle-Footnote-1475129 +Ref: mpi4py MPI Pickle-Footnote-2475193 +Ref: mpi4py MPI Pickle-Footnote-3475255 +Ref: mpi4py MPI Pickle-Footnote-4475321 +Ref: mpi4py MPI Pickle-Footnote-5475386 +Ref: mpi4py MPI Pickle-Footnote-6475448 +Ref: mpi4py MPI Pickle-Footnote-7475513 +Ref: mpi4py MPI Pickle-Footnote-8475575 +Ref: mpi4py MPI Pickle-Footnote-9475637 +Ref: mpi4py MPI Pickle-Footnote-10475698 +Ref: mpi4py MPI Pickle-Footnote-11475764 +Ref: mpi4py MPI Pickle-Footnote-12475835 +Node: mpi4py MPI Prequest475901 +Ref: reference/mpi4py MPI Prequest doc476023 +Ref: 44d476023 +Ref: reference/mpi4py MPI Prequest mpi4py-mpi-prequest476023 +Ref: 44e476023 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest476080 +Ref: 4a476080 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest __new__476178 +Ref: 44f476178 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest Parrived477127 +Ref: 450477127 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest Pready477319 +Ref: 451477319 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest Pready_list477482 +Ref: 452477482 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest Pready_range477684 +Ref: 453477684 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest Start477946 +Ref: 4b477946 +Ref: reference/mpi4py MPI Prequest mpi4py MPI Prequest Startall478070 +Ref: 454478070 +Ref: mpi4py MPI Prequest-Footnote-1478327 +Ref: mpi4py MPI Prequest-Footnote-2478389 +Ref: mpi4py MPI Prequest-Footnote-3478455 +Ref: mpi4py MPI Prequest-Footnote-4478516 +Ref: mpi4py MPI Prequest-Footnote-5478578 +Ref: mpi4py MPI Prequest-Footnote-6478639 +Ref: mpi4py MPI Prequest-Footnote-7478701 +Ref: mpi4py MPI Prequest-Footnote-8478771 +Ref: mpi4py MPI Prequest-Footnote-9478832 +Ref: mpi4py MPI Prequest-Footnote-10478894 +Ref: mpi4py MPI Prequest-Footnote-11478956 +Ref: mpi4py MPI Prequest-Footnote-12479018 +Ref: mpi4py MPI Prequest-Footnote-13479081 +Ref: mpi4py MPI Prequest-Footnote-14479144 +Ref: mpi4py MPI Prequest-Footnote-15479206 +Node: mpi4py MPI Request479269 +Ref: reference/mpi4py MPI Request doc479392 +Ref: 455479392 +Ref: reference/mpi4py MPI Request mpi4py-mpi-request479392 +Ref: 456479392 +Ref: reference/mpi4py MPI Request mpi4py MPI Request479447 +Ref: 43479447 +Ref: reference/mpi4py MPI Request mpi4py MPI Request __new__479524 +Ref: 457479524 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Cancel483262 +Ref: 46483262 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Free483352 +Ref: 458483352 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Get_status483452 +Ref: 459483452 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Get_status_all483666 +Ref: 45a483666 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Get_status_any484029 +Ref: 45b484029 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Get_status_some484388 +Ref: 45c484388 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Test484771 +Ref: 44484771 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Testall484980 +Ref: 45d484980 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Testany485339 +Ref: 45e485339 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Testsome485691 +Ref: 45f485691 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Wait486072 +Ref: 45486072 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Waitall486284 +Ref: 460486284 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Waitany486650 +Ref: 461486650 +Ref: reference/mpi4py MPI Request mpi4py MPI Request Waitsome486979 +Ref: 462486979 +Ref: reference/mpi4py MPI Request mpi4py MPI Request cancel487358 +Ref: 463487358 +Ref: reference/mpi4py MPI Request mpi4py MPI Request f2py487449 +Ref: 464487449 +Ref: reference/mpi4py MPI Request mpi4py MPI Request free487578 +Ref: 465487578 +Ref: reference/mpi4py MPI Request mpi4py MPI Request fromhandle487684 +Ref: 466487684 +Ref: reference/mpi4py MPI Request mpi4py MPI Request get_status487867 +Ref: 467487867 +Ref: reference/mpi4py MPI Request mpi4py MPI Request get_status_all488083 +Ref: 468488083 +Ref: reference/mpi4py MPI Request mpi4py MPI Request get_status_any488448 +Ref: 469488448 +Ref: reference/mpi4py MPI Request mpi4py MPI Request get_status_some488807 +Ref: 46a488807 +Ref: reference/mpi4py MPI Request mpi4py MPI Request py2f489190 +Ref: 46b489190 +Ref: reference/mpi4py MPI Request mpi4py MPI Request test489249 +Ref: a3489249 +Ref: reference/mpi4py MPI Request mpi4py MPI Request testall489489 +Ref: 46c489489 +Ref: reference/mpi4py MPI Request mpi4py MPI Request testany489889 +Ref: 46d489889 +Ref: reference/mpi4py MPI Request mpi4py MPI Request testsome490261 +Ref: 46e490261 +Ref: reference/mpi4py MPI Request mpi4py MPI Request wait490700 +Ref: a4490700 +Ref: reference/mpi4py MPI Request mpi4py MPI Request waitall490904 +Ref: 46f490904 +Ref: reference/mpi4py MPI Request mpi4py MPI Request waitany491290 +Ref: 470491290 +Ref: reference/mpi4py MPI Request mpi4py MPI Request waitsome491644 +Ref: 471491644 +Ref: reference/mpi4py MPI Request mpi4py MPI Request handle492160 +Ref: 472492160 +Ref: mpi4py MPI Request-Footnote-1492247 +Ref: mpi4py MPI Request-Footnote-2492311 +Ref: mpi4py MPI Request-Footnote-3492373 +Ref: mpi4py MPI Request-Footnote-4492439 +Ref: mpi4py MPI Request-Footnote-5492501 +Ref: mpi4py MPI Request-Footnote-6492563 +Ref: mpi4py MPI Request-Footnote-7492625 +Ref: mpi4py MPI Request-Footnote-8492687 +Ref: mpi4py MPI Request-Footnote-9492757 +Ref: mpi4py MPI Request-Footnote-10492818 +Ref: mpi4py MPI Request-Footnote-11492881 +Ref: mpi4py MPI Request-Footnote-12492944 +Ref: mpi4py MPI Request-Footnote-13493015 +Ref: mpi4py MPI Request-Footnote-14493078 +Ref: mpi4py MPI Request-Footnote-15493141 +Ref: mpi4py MPI Request-Footnote-16493203 +Ref: mpi4py MPI Request-Footnote-17493266 +Ref: mpi4py MPI Request-Footnote-18493337 +Ref: mpi4py MPI Request-Footnote-19493399 +Ref: mpi4py MPI Request-Footnote-20493462 +Ref: mpi4py MPI Request-Footnote-21493524 +Ref: mpi4py MPI Request-Footnote-22493586 +Ref: mpi4py MPI Request-Footnote-23493649 +Ref: mpi4py MPI Request-Footnote-24493712 +Ref: mpi4py MPI Request-Footnote-25493775 +Ref: mpi4py MPI Request-Footnote-26493846 +Ref: mpi4py MPI Request-Footnote-27493908 +Ref: mpi4py MPI Request-Footnote-28493971 +Ref: mpi4py MPI Request-Footnote-29494034 +Ref: mpi4py MPI Request-Footnote-30494105 +Ref: mpi4py MPI Request-Footnote-31494168 +Ref: mpi4py MPI Request-Footnote-32494231 +Ref: mpi4py MPI Request-Footnote-33494293 +Ref: mpi4py MPI Request-Footnote-34494356 +Ref: mpi4py MPI Request-Footnote-35494427 +Ref: mpi4py MPI Request-Footnote-36494489 +Ref: mpi4py MPI Request-Footnote-37494552 +Ref: mpi4py MPI Request-Footnote-38494614 +Ref: mpi4py MPI Request-Footnote-39494676 +Ref: mpi4py MPI Request-Footnote-40494739 +Ref: mpi4py MPI Request-Footnote-41494802 +Ref: mpi4py MPI Request-Footnote-42494872 +Ref: mpi4py MPI Request-Footnote-43494943 +Ref: mpi4py MPI Request-Footnote-44495005 +Ref: mpi4py MPI Request-Footnote-45495068 +Ref: mpi4py MPI Request-Footnote-46495138 +Ref: mpi4py MPI Request-Footnote-47495209 +Ref: mpi4py MPI Request-Footnote-48495272 +Ref: mpi4py MPI Request-Footnote-49495334 +Ref: mpi4py MPI Request-Footnote-50495405 +Ref: mpi4py MPI Request-Footnote-51495467 +Ref: mpi4py MPI Request-Footnote-52495530 +Ref: mpi4py MPI Request-Footnote-53495592 +Ref: mpi4py MPI Request-Footnote-54495654 +Ref: mpi4py MPI Request-Footnote-55495717 +Ref: mpi4py MPI Request-Footnote-56495780 +Ref: mpi4py MPI Request-Footnote-57495842 +Ref: mpi4py MPI Request-Footnote-58495905 +Ref: mpi4py MPI Request-Footnote-59495967 +Ref: mpi4py MPI Request-Footnote-60496030 +Ref: mpi4py MPI Request-Footnote-61496093 +Ref: mpi4py MPI Request-Footnote-62496164 +Ref: mpi4py MPI Request-Footnote-63496226 +Ref: mpi4py MPI Request-Footnote-64496289 +Ref: mpi4py MPI Request-Footnote-65496352 +Ref: mpi4py MPI Request-Footnote-66496423 +Ref: mpi4py MPI Request-Footnote-67496486 +Ref: mpi4py MPI Request-Footnote-68496549 +Ref: mpi4py MPI Request-Footnote-69496611 +Ref: mpi4py MPI Request-Footnote-70496674 +Ref: mpi4py MPI Request-Footnote-71496745 +Ref: mpi4py MPI Request-Footnote-72496807 +Ref: mpi4py MPI Request-Footnote-73496870 +Ref: mpi4py MPI Request-Footnote-74496932 +Ref: mpi4py MPI Request-Footnote-75496994 +Ref: mpi4py MPI Request-Footnote-76497057 +Ref: mpi4py MPI Request-Footnote-77497119 +Ref: mpi4py MPI Request-Footnote-78497182 +Ref: mpi4py MPI Request-Footnote-79497245 +Ref: mpi4py MPI Request-Footnote-80497308 +Ref: mpi4py MPI Request-Footnote-81497374 +Ref: mpi4py MPI Request-Footnote-82497437 +Ref: mpi4py MPI Request-Footnote-83497508 +Ref: mpi4py MPI Request-Footnote-84497570 +Ref: mpi4py MPI Request-Footnote-85497633 +Ref: mpi4py MPI Request-Footnote-86497696 +Ref: mpi4py MPI Request-Footnote-87497759 +Ref: mpi4py MPI Request-Footnote-88497821 +Ref: mpi4py MPI Request-Footnote-89497887 +Ref: mpi4py MPI Request-Footnote-90497950 +Ref: mpi4py MPI Request-Footnote-91498021 +Ref: mpi4py MPI Request-Footnote-92498084 +Ref: mpi4py MPI Request-Footnote-93498147 +Ref: mpi4py MPI Request-Footnote-94498209 +Ref: mpi4py MPI Request-Footnote-95498272 +Ref: mpi4py MPI Request-Footnote-96498338 +Ref: mpi4py MPI Request-Footnote-97498401 +Ref: mpi4py MPI Request-Footnote-98498472 +Ref: mpi4py MPI Request-Footnote-99498534 +Ref: mpi4py MPI Request-Footnote-100498597 +Ref: mpi4py MPI Request-Footnote-101498661 +Ref: mpi4py MPI Request-Footnote-102498724 +Ref: mpi4py MPI Request-Footnote-103498787 +Ref: mpi4py MPI Request-Footnote-104498851 +Ref: mpi4py MPI Request-Footnote-105498914 +Ref: mpi4py MPI Request-Footnote-106498981 +Ref: mpi4py MPI Request-Footnote-107499045 +Ref: mpi4py MPI Request-Footnote-108499109 +Ref: mpi4py MPI Request-Footnote-109499176 +Ref: mpi4py MPI Request-Footnote-110499248 +Ref: mpi4py MPI Request-Footnote-111499311 +Ref: mpi4py MPI Request-Footnote-112499375 +Ref: mpi4py MPI Request-Footnote-113499438 +Ref: mpi4py MPI Request-Footnote-114499505 +Ref: mpi4py MPI Request-Footnote-115499577 +Ref: mpi4py MPI Request-Footnote-116499641 +Ref: mpi4py MPI Request-Footnote-117499705 +Ref: mpi4py MPI Request-Footnote-118499768 +Ref: mpi4py MPI Request-Footnote-119499835 +Ref: mpi4py MPI Request-Footnote-120499907 +Ref: mpi4py MPI Request-Footnote-121499970 +Ref: mpi4py MPI Request-Footnote-122500034 +Ref: mpi4py MPI Request-Footnote-123500098 +Ref: mpi4py MPI Request-Footnote-124500161 +Ref: mpi4py MPI Request-Footnote-125500224 +Ref: mpi4py MPI Request-Footnote-126500288 +Ref: mpi4py MPI Request-Footnote-127500351 +Ref: mpi4py MPI Request-Footnote-128500418 +Node: mpi4py MPI Session500482 +Ref: reference/mpi4py MPI Session doc500603 +Ref: 473500603 +Ref: reference/mpi4py MPI Session mpi4py-mpi-session500603 +Ref: 474500603 +Ref: reference/mpi4py MPI Session mpi4py MPI Session500658 +Ref: d5500658 +Ref: reference/mpi4py MPI Session mpi4py MPI Session __new__500735 +Ref: 475500735 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Attach_buffer503100 +Ref: 476503100 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Call_errhandler503313 +Ref: 477503313 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Create_errhandler503499 +Ref: 478503499 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Create_group503806 +Ref: 479503806 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Detach_buffer504001 +Ref: 47a504001 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Finalize504138 +Ref: 47b504138 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Flush_buffer504233 +Ref: 47c504233 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Get_errhandler504369 +Ref: 47d504369 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Get_info504500 +Ref: 47e504500 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Get_nth_pset504622 +Ref: 47f504622 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Get_num_psets504856 +Ref: 480504856 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Get_pset_info505036 +Ref: 481505036 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Iflush_buffer505238 +Ref: 482505238 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Init505369 +Ref: 483505369 +Ref: reference/mpi4py MPI Session mpi4py MPI Session Set_errhandler505648 +Ref: 484505648 +Ref: reference/mpi4py MPI Session mpi4py MPI Session f2py505841 +Ref: 485505841 +Ref: reference/mpi4py MPI Session mpi4py MPI Session free505970 +Ref: 486505970 +Ref: reference/mpi4py MPI Session mpi4py MPI Session fromhandle506080 +Ref: 487506080 +Ref: reference/mpi4py MPI Session mpi4py MPI Session py2f506263 +Ref: 488506263 +Ref: reference/mpi4py MPI Session mpi4py MPI Session handle506383 +Ref: 489506383 +Ref: mpi4py MPI Session-Footnote-1506470 +Ref: mpi4py MPI Session-Footnote-2506534 +Ref: mpi4py MPI Session-Footnote-3506596 +Ref: mpi4py MPI Session-Footnote-4506662 +Ref: mpi4py MPI Session-Footnote-5506724 +Ref: mpi4py MPI Session-Footnote-6506786 +Ref: mpi4py MPI Session-Footnote-7506847 +Ref: mpi4py MPI Session-Footnote-8506909 +Ref: mpi4py MPI Session-Footnote-9506979 +Ref: mpi4py MPI Session-Footnote-10507040 +Ref: mpi4py MPI Session-Footnote-11507103 +Ref: mpi4py MPI Session-Footnote-12507164 +Ref: mpi4py MPI Session-Footnote-13507227 +Ref: mpi4py MPI Session-Footnote-14507290 +Ref: mpi4py MPI Session-Footnote-15507353 +Ref: mpi4py MPI Session-Footnote-16507415 +Ref: mpi4py MPI Session-Footnote-17507476 +Ref: mpi4py MPI Session-Footnote-18507538 +Ref: mpi4py MPI Session-Footnote-19507599 +Ref: mpi4py MPI Session-Footnote-20507662 +Ref: mpi4py MPI Session-Footnote-21507729 +Ref: mpi4py MPI Session-Footnote-22507792 +Ref: mpi4py MPI Session-Footnote-23507854 +Ref: mpi4py MPI Session-Footnote-24507917 +Ref: mpi4py MPI Session-Footnote-25507979 +Node: mpi4py MPI Status508041 +Ref: reference/mpi4py MPI Status doc508163 +Ref: 48a508163 +Ref: reference/mpi4py MPI Status mpi4py-mpi-status508163 +Ref: 48b508163 +Ref: reference/mpi4py MPI Status mpi4py MPI Status508216 +Ref: d1508216 +Ref: reference/mpi4py MPI Status mpi4py MPI Status __new__508290 +Ref: 48c508290 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Get_count510163 +Ref: 48d510163 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Get_elements510355 +Ref: 48e510355 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Get_error510549 +Ref: 48f510549 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Get_source510642 +Ref: 490510642 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Get_tag510737 +Ref: 491510737 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Is_cancelled510826 +Ref: 492510826 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Set_cancelled510944 +Ref: 493510944 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Set_elements511262 +Ref: 494511262 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Set_error511649 +Ref: 495511649 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Set_source511795 +Ref: 496511795 +Ref: reference/mpi4py MPI Status mpi4py MPI Status Set_tag511945 +Ref: 497511945 +Ref: reference/mpi4py MPI Status mpi4py MPI Status f2py512083 +Ref: 498512083 +Ref: reference/mpi4py MPI Status mpi4py MPI Status py2f512224 +Ref: 499512224 +Ref: reference/mpi4py MPI Status mpi4py MPI Status cancelled512354 +Ref: 49a512354 +Ref: reference/mpi4py MPI Status mpi4py MPI Status count512413 +Ref: 49b512413 +Ref: reference/mpi4py MPI Status mpi4py MPI Status error512463 +Ref: 49c512463 +Ref: reference/mpi4py MPI Status mpi4py MPI Status source512516 +Ref: 49d512516 +Ref: reference/mpi4py MPI Status mpi4py MPI Status tag512571 +Ref: 49e512571 +Ref: mpi4py MPI Status-Footnote-1512656 +Ref: mpi4py MPI Status-Footnote-2512720 +Ref: mpi4py MPI Status-Footnote-3512782 +Ref: mpi4py MPI Status-Footnote-4512848 +Ref: mpi4py MPI Status-Footnote-5512909 +Ref: mpi4py MPI Status-Footnote-6512970 +Ref: mpi4py MPI Status-Footnote-7513031 +Ref: mpi4py MPI Status-Footnote-8513092 +Ref: mpi4py MPI Status-Footnote-9513153 +Ref: mpi4py MPI Status-Footnote-10513215 +Ref: mpi4py MPI Status-Footnote-11513278 +Ref: mpi4py MPI Status-Footnote-12513341 +Ref: mpi4py MPI Status-Footnote-13513403 +Ref: mpi4py MPI Status-Footnote-14513466 +Ref: mpi4py MPI Status-Footnote-15513528 +Ref: mpi4py MPI Status-Footnote-16513591 +Ref: mpi4py MPI Status-Footnote-17513653 +Ref: mpi4py MPI Status-Footnote-18513716 +Ref: mpi4py MPI Status-Footnote-19513778 +Ref: mpi4py MPI Status-Footnote-20513841 +Ref: mpi4py MPI Status-Footnote-21513903 +Ref: mpi4py MPI Status-Footnote-22513965 +Ref: mpi4py MPI Status-Footnote-23514032 +Ref: mpi4py MPI Status-Footnote-24514094 +Node: mpi4py MPI Topocomm514156 +Ref: reference/mpi4py MPI Topocomm doc514274 +Ref: 49f514274 +Ref: reference/mpi4py MPI Topocomm mpi4py-mpi-topocomm514274 +Ref: 4a0514274 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm514331 +Ref: d6514331 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm __new__514431 +Ref: 4a1514431 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Ineighbor_allgather517082 +Ref: 4a2517082 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Ineighbor_allgatherv517359 +Ref: 4a3517359 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Ineighbor_alltoall517644 +Ref: 4a4517644 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Ineighbor_alltoallv517918 +Ref: 4a5517918 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Ineighbor_alltoallw518200 +Ref: 4a6518200 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_allgather518483 +Ref: 4a7518483 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_allgather_init518736 +Ref: 4a8518736 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_allgatherv519093 +Ref: 4a9519093 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_allgatherv_init519354 +Ref: 4aa519354 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_alltoall519719 +Ref: 4ab519719 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_alltoall_init519969 +Ref: 4ac519969 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_alltoallv520323 +Ref: 4ad520323 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_alltoallv_init520581 +Ref: 4ae520581 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_alltoallw520943 +Ref: 4af520943 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm Neighbor_alltoallw_init521202 +Ref: 4b0521202 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm neighbor_allgather521565 +Ref: 4b1521565 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm neighbor_alltoall521736 +Ref: 4b2521736 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm degrees521988 +Ref: 4b3521988 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm indegree522071 +Ref: 4b4522071 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm inedges522142 +Ref: 4b5522142 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm inoutedges522202 +Ref: 4b6522202 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm outdegree522278 +Ref: 4b7522278 +Ref: reference/mpi4py MPI Topocomm mpi4py MPI Topocomm outedges522350 +Ref: 4b8522350 +Ref: mpi4py MPI Topocomm-Footnote-1522447 +Ref: mpi4py MPI Topocomm-Footnote-2522509 +Ref: mpi4py MPI Topocomm-Footnote-3522575 +Ref: mpi4py MPI Topocomm-Footnote-4522637 +Ref: mpi4py MPI Topocomm-Footnote-5522699 +Ref: mpi4py MPI Topocomm-Footnote-6522761 +Ref: mpi4py MPI Topocomm-Footnote-7522823 +Ref: mpi4py MPI Topocomm-Footnote-8522885 +Ref: mpi4py MPI Topocomm-Footnote-9522950 +Ref: mpi4py MPI Topocomm-Footnote-10523011 +Ref: mpi4py MPI Topocomm-Footnote-11523077 +Ref: mpi4py MPI Topocomm-Footnote-12523139 +Ref: mpi4py MPI Topocomm-Footnote-13523205 +Ref: mpi4py MPI Topocomm-Footnote-14523267 +Node: mpi4py MPI Win523333 +Ref: reference/mpi4py MPI Win doc523451 +Ref: 4b9523451 +Ref: reference/mpi4py MPI Win mpi4py-mpi-win523451 +Ref: 4ba523451 +Ref: reference/mpi4py MPI Win mpi4py MPI Win523498 +Ref: 76523498 +Ref: reference/mpi4py MPI Win mpi4py MPI Win __new__523584 +Ref: 4bb523584 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Accumulate530447 +Ref: 7b530447 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Allocate530833 +Ref: 4bc530833 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Allocate_shared531232 +Ref: 4bd531232 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Attach531641 +Ref: 4be531641 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Call_errhandler531808 +Ref: 4bf531808 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Compare_and_swap531995 +Ref: 4c0531995 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Complete532453 +Ref: 7d532453 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Create532586 +Ref: 77532586 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Create_dynamic533024 +Ref: 4c1533024 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Create_errhandler533334 +Ref: 4c2533334 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Create_keyval533638 +Ref: 4c3533638 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Delete_attr534225 +Ref: 4c4534225 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Detach534402 +Ref: 4c5534402 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Fence534569 +Ref: 80534569 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Fetch_and_op534752 +Ref: 4c6534752 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Flush535188 +Ref: 4c7535188 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Flush_all535362 +Ref: 4c8535362 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Flush_local535494 +Ref: 4c9535494 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Flush_local_all535682 +Ref: 4ca535682 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Free535838 +Ref: 78535838 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Free_keyval535924 +Ref: 4cb535924 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get536101 +Ref: 7a536101 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get_accumulate536444 +Ref: 4cc536444 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get_attr536921 +Ref: 4cd536921 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get_errhandler537102 +Ref: 4ce537102 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get_group537232 +Ref: 4cf537232 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get_info537371 +Ref: 4d0537371 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Get_name537492 +Ref: 4d1537492 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Lock537602 +Ref: 81537602 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Lock_all537910 +Ref: 4d2537910 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Post538090 +Ref: 7e538090 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Put538321 +Ref: 79538321 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Raccumulate538664 +Ref: 4d3538664 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Rget539074 +Ref: 4d4539074 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Rget_accumulate539428 +Ref: 4d5539428 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Rput539943 +Ref: 4d6539943 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Set_attr540297 +Ref: 4d7540297 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Set_errhandler540535 +Ref: 4d8540535 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Set_info540727 +Ref: 4d9540727 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Set_name540914 +Ref: 4da540914 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Shared_query541074 +Ref: 4db541074 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Start541290 +Ref: 7c541290 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Sync541528 +Ref: 4dc541528 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Test541652 +Ref: 4dd541652 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Unlock541773 +Ref: 82541773 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Unlock_all541947 +Ref: 4de541947 +Ref: reference/mpi4py MPI Win mpi4py MPI Win Wait542072 +Ref: 7f542072 +Ref: reference/mpi4py MPI Win mpi4py MPI Win f2py542211 +Ref: 4df542211 +Ref: reference/mpi4py MPI Win mpi4py MPI Win free542337 +Ref: 4e0542337 +Ref: reference/mpi4py MPI Win mpi4py MPI Win fromhandle542443 +Ref: 4e1542443 +Ref: reference/mpi4py MPI Win mpi4py MPI Win py2f542623 +Ref: 4e2542623 +Ref: reference/mpi4py MPI Win mpi4py MPI Win tomemory542683 +Ref: 4e3542683 +Ref: reference/mpi4py MPI Win mpi4py MPI Win attrs542857 +Ref: 4e4542857 +Ref: reference/mpi4py MPI Win mpi4py MPI Win flavor542907 +Ref: 4e5542907 +Ref: reference/mpi4py MPI Win mpi4py MPI Win group542961 +Ref: 4e6542961 +Ref: reference/mpi4py MPI Win mpi4py MPI Win group_rank543006 +Ref: 4e7543006 +Ref: reference/mpi4py MPI Win mpi4py MPI Win group_size543061 +Ref: 4e8543061 +Ref: reference/mpi4py MPI Win mpi4py MPI Win handle543116 +Ref: 4e9543116 +Ref: reference/mpi4py MPI Win mpi4py MPI Win info543167 +Ref: 4ea543167 +Ref: reference/mpi4py MPI Win mpi4py MPI Win model543216 +Ref: 4eb543216 +Ref: reference/mpi4py MPI Win mpi4py MPI Win name543268 +Ref: 4ec543268 +Ref: mpi4py MPI Win-Footnote-1543353 +Ref: mpi4py MPI Win-Footnote-2543417 +Ref: mpi4py MPI Win-Footnote-3543479 +Ref: mpi4py MPI Win-Footnote-4543545 +Ref: mpi4py MPI Win-Footnote-5543606 +Ref: mpi4py MPI Win-Footnote-6543668 +Ref: mpi4py MPI Win-Footnote-7543730 +Ref: mpi4py MPI Win-Footnote-8543791 +Ref: mpi4py MPI Win-Footnote-9543852 +Ref: mpi4py MPI Win-Footnote-10543918 +Ref: mpi4py MPI Win-Footnote-11543980 +Ref: mpi4py MPI Win-Footnote-12544042 +Ref: mpi4py MPI Win-Footnote-13544109 +Ref: mpi4py MPI Win-Footnote-14544172 +Ref: mpi4py MPI Win-Footnote-15544234 +Ref: mpi4py MPI Win-Footnote-16544297 +Ref: mpi4py MPI Win-Footnote-17544359 +Ref: mpi4py MPI Win-Footnote-18544421 +Ref: mpi4py MPI Win-Footnote-19544484 +Ref: mpi4py MPI Win-Footnote-20544547 +Ref: mpi4py MPI Win-Footnote-21544609 +Ref: mpi4py MPI Win-Footnote-22544676 +Ref: mpi4py MPI Win-Footnote-23544747 +Ref: mpi4py MPI Win-Footnote-24544809 +Ref: mpi4py MPI Win-Footnote-25544872 +Ref: mpi4py MPI Win-Footnote-26544943 +Ref: mpi4py MPI Win-Footnote-27545005 +Ref: mpi4py MPI Win-Footnote-28545071 +Ref: mpi4py MPI Win-Footnote-29545137 +Ref: mpi4py MPI Win-Footnote-30545200 +Ref: mpi4py MPI Win-Footnote-31545271 +Ref: mpi4py MPI Win-Footnote-32545333 +Ref: mpi4py MPI Win-Footnote-33545399 +Ref: mpi4py MPI Win-Footnote-34545462 +Ref: mpi4py MPI Win-Footnote-35545525 +Ref: mpi4py MPI Win-Footnote-36545588 +Ref: mpi4py MPI Win-Footnote-37545650 +Ref: mpi4py MPI Win-Footnote-38545712 +Ref: mpi4py MPI Win-Footnote-39545775 +Ref: mpi4py MPI Win-Footnote-40545838 +Ref: mpi4py MPI Win-Footnote-41545900 +Ref: mpi4py MPI Win-Footnote-42545963 +Ref: mpi4py MPI Win-Footnote-43546025 +Ref: mpi4py MPI Win-Footnote-44546087 +Ref: mpi4py MPI Win-Footnote-45546150 +Ref: mpi4py MPI Win-Footnote-46546212 +Ref: mpi4py MPI Win-Footnote-47546275 +Ref: mpi4py MPI Win-Footnote-48546338 +Ref: mpi4py MPI Win-Footnote-49546400 +Ref: mpi4py MPI Win-Footnote-50546463 +Ref: mpi4py MPI Win-Footnote-51546526 +Ref: mpi4py MPI Win-Footnote-52546589 +Ref: mpi4py MPI Win-Footnote-53546651 +Ref: mpi4py MPI Win-Footnote-54546713 +Ref: mpi4py MPI Win-Footnote-55546775 +Ref: mpi4py MPI Win-Footnote-56546838 +Ref: mpi4py MPI Win-Footnote-57546901 +Ref: mpi4py MPI Win-Footnote-58546963 +Ref: mpi4py MPI Win-Footnote-59547026 +Ref: mpi4py MPI Win-Footnote-60547089 +Ref: mpi4py MPI Win-Footnote-61547151 +Ref: mpi4py MPI Win-Footnote-62547213 +Ref: mpi4py MPI Win-Footnote-63547279 +Ref: mpi4py MPI Win-Footnote-64547342 +Ref: mpi4py MPI Win-Footnote-65547403 +Ref: mpi4py MPI Win-Footnote-66547465 +Ref: mpi4py MPI Win-Footnote-67547527 +Ref: mpi4py MPI Win-Footnote-68547589 +Ref: mpi4py MPI Win-Footnote-69547652 +Ref: mpi4py MPI Win-Footnote-70547714 +Ref: mpi4py MPI Win-Footnote-71547777 +Ref: mpi4py MPI Win-Footnote-72547839 +Ref: mpi4py MPI Win-Footnote-73547902 +Ref: mpi4py MPI Win-Footnote-74547964 +Ref: mpi4py MPI Win-Footnote-75548027 +Ref: mpi4py MPI Win-Footnote-76548090 +Ref: mpi4py MPI Win-Footnote-77548152 +Ref: mpi4py MPI Win-Footnote-78548215 +Ref: mpi4py MPI Win-Footnote-79548277 +Ref: mpi4py MPI Win-Footnote-80548340 +Ref: mpi4py MPI Win-Footnote-81548402 +Ref: mpi4py MPI Win-Footnote-82548465 +Ref: mpi4py MPI Win-Footnote-83548527 +Ref: mpi4py MPI Win-Footnote-84548590 +Ref: mpi4py MPI Win-Footnote-85548652 +Ref: mpi4py MPI Win-Footnote-86548718 +Ref: mpi4py MPI Win-Footnote-87548781 +Ref: mpi4py MPI Win-Footnote-88548844 +Ref: mpi4py MPI Win-Footnote-89548907 +Ref: mpi4py MPI Win-Footnote-90548968 +Ref: mpi4py MPI Win-Footnote-91549031 +Ref: mpi4py MPI Win-Footnote-92549093 +Ref: mpi4py MPI Win-Footnote-93549156 +Ref: mpi4py MPI Win-Footnote-94549218 +Ref: mpi4py MPI Win-Footnote-95549280 +Ref: mpi4py MPI Win-Footnote-96549343 +Ref: mpi4py MPI Win-Footnote-97549406 +Ref: mpi4py MPI Win-Footnote-98549469 +Ref: mpi4py MPI Win-Footnote-99549531 +Ref: mpi4py MPI Win-Footnote-100549594 +Ref: mpi4py MPI Win-Footnote-101549658 +Ref: mpi4py MPI Win-Footnote-102549729 +Ref: mpi4py MPI Win-Footnote-103549792 +Ref: mpi4py MPI Win-Footnote-104549856 +Ref: mpi4py MPI Win-Footnote-105549919 +Node: mpi4py MPI buffer549982 +Ref: reference/mpi4py MPI buffer doc550098 +Ref: 4ed550098 +Ref: reference/mpi4py MPI buffer mpi4py-mpi-buffer550098 +Ref: 4ee550098 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer550151 +Ref: da550151 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer __new__550218 +Ref: 4ef550218 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer allocate551739 +Ref: 4f0551739 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer cast551968 +Ref: 4f1551968 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer fromaddress552308 +Ref: 4f2552308 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer frombuffer552617 +Ref: 4f3552617 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer release552874 +Ref: 4f4552874 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer tobytes553008 +Ref: 4f5553008 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer toreadonly553204 +Ref: 4f6553204 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer address553399 +Ref: 4f7553399 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer format553455 +Ref: 4f8553455 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer itemsize553518 +Ref: 4f9553518 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer nbytes553592 +Ref: 4fa553592 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer obj553655 +Ref: 4fb553655 +Ref: reference/mpi4py MPI buffer mpi4py MPI buffer readonly553715 +Ref: 4fc553715 +Ref: mpi4py MPI buffer-Footnote-1553813 +Ref: mpi4py MPI buffer-Footnote-2553877 +Ref: mpi4py MPI buffer-Footnote-3553943 +Ref: mpi4py MPI buffer-Footnote-4554010 +Ref: mpi4py MPI buffer-Footnote-5554071 +Ref: mpi4py MPI buffer-Footnote-6554133 +Ref: mpi4py MPI buffer-Footnote-7554200 +Ref: mpi4py MPI buffer-Footnote-8554260 +Ref: mpi4py MPI buffer-Footnote-9554321 +Ref: mpi4py MPI buffer-Footnote-10554382 +Ref: mpi4py MPI buffer-Footnote-11554445 +Ref: mpi4py MPI buffer-Footnote-12554507 +Ref: mpi4py MPI buffer-Footnote-13554575 +Ref: mpi4py MPI buffer-Footnote-14554637 +Ref: mpi4py MPI buffer-Footnote-15554699 +Ref: mpi4py MPI buffer-Footnote-16554762 +Ref: mpi4py MPI buffer-Footnote-17554825 +Ref: mpi4py MPI buffer-Footnote-18554888 +Ref: mpi4py MPI buffer-Footnote-19554949 +Ref: mpi4py MPI buffer-Footnote-20555012 +Node: mpi4py MPI memory555075 +Ref: reference/mpi4py MPI memory doc555197 +Ref: 4fd555197 +Ref: reference/mpi4py MPI memory mpi4py-mpi-memory555197 +Ref: 4fe555197 +Ref: reference/mpi4py MPI memory mpi4py MPI memory555250 +Ref: 2bc555250 +Node: mpi4py MPI Exception555394 +Ref: reference/mpi4py MPI Exception doc555525 +Ref: 4ff555525 +Ref: reference/mpi4py MPI Exception mpi4py-mpi-exception555525 +Ref: 500555525 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception555584 +Ref: 9e555584 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception __new__555673 +Ref: 501555673 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception Get_error_class556426 +Ref: 502556426 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception Get_error_code556519 +Ref: 503556519 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception Get_error_string556610 +Ref: 504556610 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception error_class556766 +Ref: 505556766 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception error_code556823 +Ref: 506556823 +Ref: reference/mpi4py MPI Exception mpi4py MPI Exception error_string556878 +Ref: 507556878 +Ref: mpi4py MPI Exception-Footnote-1561252 +Ref: mpi4py MPI Exception-Footnote-2561323 +Ref: mpi4py MPI Exception-Footnote-3561384 +Ref: mpi4py MPI Exception-Footnote-4561450 +Ref: mpi4py MPI Exception-Footnote-5561511 +Ref: mpi4py MPI Exception-Footnote-6561572 +Node: mpi4py MPI Add_error_class561632 +Ref: reference/mpi4py MPI Add_error_class doc561771 +Ref: 509561771 +Ref: reference/mpi4py MPI Add_error_class mpi4py-mpi-add-error-class561771 +Ref: 50a561771 +Ref: reference/mpi4py MPI Add_error_class mpi4py MPI Add_error_class561842 +Ref: e6561842 +Ref: mpi4py MPI Add_error_class-Footnote-1562009 +Node: mpi4py MPI Add_error_code562070 +Ref: reference/mpi4py MPI Add_error_code doc562216 +Ref: 50b562216 +Ref: reference/mpi4py MPI Add_error_code mpi4py-mpi-add-error-code562216 +Ref: 50c562216 +Ref: reference/mpi4py MPI Add_error_code mpi4py MPI Add_error_code562285 +Ref: e7562285 +Ref: mpi4py MPI Add_error_code-Footnote-1562502 +Ref: mpi4py MPI Add_error_code-Footnote-2562563 +Node: mpi4py MPI Add_error_string562624 +Ref: reference/mpi4py MPI Add_error_string doc562763 +Ref: 50d562763 +Ref: reference/mpi4py MPI Add_error_string mpi4py-mpi-add-error-string562763 +Ref: 50e562763 +Ref: reference/mpi4py MPI Add_error_string mpi4py MPI Add_error_string562836 +Ref: e8562836 +Ref: mpi4py MPI Add_error_string-Footnote-1563136 +Ref: mpi4py MPI Add_error_string-Footnote-2563197 +Ref: mpi4py MPI Add_error_string-Footnote-3563257 +Node: mpi4py MPI Aint_add563319 +Ref: reference/mpi4py MPI Aint_add doc563453 +Ref: 50f563453 +Ref: reference/mpi4py MPI Aint_add mpi4py-mpi-aint-add563453 +Ref: 510563453 +Ref: reference/mpi4py MPI Aint_add mpi4py MPI Aint_add563510 +Ref: e2563510 +Ref: mpi4py MPI Aint_add-Footnote-1563757 +Ref: mpi4py MPI Aint_add-Footnote-2563818 +Ref: mpi4py MPI Aint_add-Footnote-3563879 +Node: mpi4py MPI Aint_diff563940 +Ref: reference/mpi4py MPI Aint_diff doc564067 +Ref: 511564067 +Ref: reference/mpi4py MPI Aint_diff mpi4py-mpi-aint-diff564067 +Ref: 512564067 +Ref: reference/mpi4py MPI Aint_diff mpi4py MPI Aint_diff564126 +Ref: e3564126 +Ref: mpi4py MPI Aint_diff-Footnote-1564379 +Ref: mpi4py MPI Aint_diff-Footnote-2564440 +Ref: mpi4py MPI Aint_diff-Footnote-3564501 +Node: mpi4py MPI Alloc_mem564562 +Ref: reference/mpi4py MPI Alloc_mem doc564694 +Ref: 513564694 +Ref: reference/mpi4py MPI Alloc_mem mpi4py-mpi-alloc-mem564694 +Ref: 514564694 +Ref: reference/mpi4py MPI Alloc_mem mpi4py MPI Alloc_mem564753 +Ref: df564753 +Ref: mpi4py MPI Alloc_mem-Footnote-1565044 +Node: mpi4py MPI Attach_buffer565105 +Ref: reference/mpi4py MPI Attach_buffer doc565238 +Ref: 515565238 +Ref: reference/mpi4py MPI Attach_buffer mpi4py-mpi-attach-buffer565238 +Ref: 516565238 +Ref: reference/mpi4py MPI Attach_buffer mpi4py MPI Attach_buffer565305 +Ref: ec565305 +Ref: mpi4py MPI Attach_buffer-Footnote-1565547 +Ref: mpi4py MPI Attach_buffer-Footnote-2565609 +Node: mpi4py MPI Close_port565671 +Ref: reference/mpi4py MPI Close_port doc565807 +Ref: 517565807 +Ref: reference/mpi4py MPI Close_port mpi4py-mpi-close-port565807 +Ref: 518565807 +Ref: reference/mpi4py MPI Close_port mpi4py MPI Close_port565868 +Ref: 74565868 +Ref: mpi4py MPI Close_port-Footnote-1566045 +Ref: mpi4py MPI Close_port-Footnote-2566105 +Node: mpi4py MPI Compute_dims566167 +Ref: reference/mpi4py MPI Compute_dims doc566303 +Ref: 519566303 +Ref: reference/mpi4py MPI Compute_dims mpi4py-mpi-compute-dims566303 +Ref: 51a566303 +Ref: reference/mpi4py MPI Compute_dims mpi4py MPI Compute_dims566368 +Ref: f0566368 +Ref: mpi4py MPI Compute_dims-Footnote-1566698 +Ref: mpi4py MPI Compute_dims-Footnote-2566759 +Ref: mpi4py MPI Compute_dims-Footnote-3566820 +Ref: mpi4py MPI Compute_dims-Footnote-4566890 +Ref: mpi4py MPI Compute_dims-Footnote-5566951 +Ref: mpi4py MPI Compute_dims-Footnote-6567012 +Node: mpi4py MPI Detach_buffer567073 +Ref: reference/mpi4py MPI Detach_buffer doc567207 +Ref: 51b567207 +Ref: reference/mpi4py MPI Detach_buffer mpi4py-mpi-detach-buffer567207 +Ref: 51c567207 +Ref: reference/mpi4py MPI Detach_buffer mpi4py MPI Detach_buffer567274 +Ref: ed567274 +Ref: mpi4py MPI Detach_buffer-Footnote-1567444 +Node: mpi4py MPI Finalize567506 +Ref: reference/mpi4py MPI Finalize doc567640 +Ref: 51d567640 +Ref: reference/mpi4py MPI Finalize mpi4py-mpi-finalize567640 +Ref: 51e567640 +Ref: reference/mpi4py MPI Finalize mpi4py MPI Finalize567697 +Ref: 8e567697 +Ref: mpi4py MPI Finalize-Footnote-1567846 +Node: mpi4py MPI Flush_buffer567908 +Ref: reference/mpi4py MPI Flush_buffer doc568037 +Ref: 51f568037 +Ref: reference/mpi4py MPI Flush_buffer mpi4py-mpi-flush-buffer568037 +Ref: 520568037 +Ref: reference/mpi4py MPI Flush_buffer mpi4py MPI Flush_buffer568102 +Ref: ee568102 +Ref: mpi4py MPI Flush_buffer-Footnote-1568271 +Node: mpi4py MPI Free_mem568333 +Ref: reference/mpi4py MPI Free_mem doc568465 +Ref: 521568465 +Ref: reference/mpi4py MPI Free_mem mpi4py-mpi-free-mem568465 +Ref: 522568465 +Ref: reference/mpi4py MPI Free_mem mpi4py MPI Free_mem568522 +Ref: e0568522 +Ref: mpi4py MPI Free_mem-Footnote-1568730 +Node: mpi4py MPI Get_address568792 +Ref: reference/mpi4py MPI Get_address doc568927 +Ref: 523568927 +Ref: reference/mpi4py MPI Get_address mpi4py-mpi-get-address568927 +Ref: 524568927 +Ref: reference/mpi4py MPI Get_address mpi4py MPI Get_address568990 +Ref: e1568990 +Ref: mpi4py MPI Get_address-Footnote-1569231 +Node: mpi4py MPI Get_error_class569292 +Ref: reference/mpi4py MPI Get_error_class doc569435 +Ref: 525569435 +Ref: reference/mpi4py MPI Get_error_class mpi4py-mpi-get-error-class569435 +Ref: 526569435 +Ref: reference/mpi4py MPI Get_error_class mpi4py MPI Get_error_class569506 +Ref: e4569506 +Ref: mpi4py MPI Get_error_class-Footnote-1569728 +Ref: mpi4py MPI Get_error_class-Footnote-2569789 +Node: mpi4py MPI Get_error_string569850 +Ref: reference/mpi4py MPI Get_error_string doc570002 +Ref: 527570002 +Ref: reference/mpi4py MPI Get_error_string mpi4py-mpi-get-error-string570002 +Ref: 528570002 +Ref: reference/mpi4py MPI Get_error_string mpi4py MPI Get_error_string570075 +Ref: e5570075 +Ref: mpi4py MPI Get_error_string-Footnote-1570329 +Ref: mpi4py MPI Get_error_string-Footnote-2570390 +Node: mpi4py MPI Get_hw_resource_info570450 +Ref: reference/mpi4py MPI Get_hw_resource_info doc570606 +Ref: 529570606 +Ref: reference/mpi4py MPI Get_hw_resource_info mpi4py-mpi-get-hw-resource-info570606 +Ref: 52a570606 +Ref: reference/mpi4py MPI Get_hw_resource_info mpi4py MPI Get_hw_resource_info570687 +Ref: 508570687 +Node: mpi4py MPI Get_library_version570857 +Ref: reference/mpi4py MPI Get_library_version doc571015 +Ref: 52b571015 +Ref: reference/mpi4py MPI Get_library_version mpi4py-mpi-get-library-version571015 +Ref: 52c571015 +Ref: reference/mpi4py MPI Get_library_version mpi4py MPI Get_library_version571094 +Ref: dc571094 +Ref: mpi4py MPI Get_library_version-Footnote-1571258 +Node: mpi4py MPI Get_processor_name571318 +Ref: reference/mpi4py MPI Get_processor_name doc571467 +Ref: 52d571467 +Ref: reference/mpi4py MPI Get_processor_name mpi4py-mpi-get-processor-name571467 +Ref: 52e571467 +Ref: reference/mpi4py MPI Get_processor_name mpi4py MPI Get_processor_name571544 +Ref: 93571544 +Ref: mpi4py MPI Get_processor_name-Footnote-1571703 +Node: mpi4py MPI Get_version571763 +Ref: reference/mpi4py MPI Get_version doc571906 +Ref: 52f571906 +Ref: reference/mpi4py MPI Get_version mpi4py-mpi-get-version571906 +Ref: 530571906 +Ref: reference/mpi4py MPI Get_version mpi4py MPI Get_version571969 +Ref: 92571969 +Ref: mpi4py MPI Get_version-Footnote-1572144 +Ref: mpi4py MPI Get_version-Footnote-2572206 +Ref: mpi4py MPI Get_version-Footnote-3572267 +Node: mpi4py MPI Iflush_buffer572328 +Ref: reference/mpi4py MPI Iflush_buffer doc572457 +Ref: 531572457 +Ref: reference/mpi4py MPI Iflush_buffer mpi4py-mpi-iflush-buffer572457 +Ref: 532572457 +Ref: reference/mpi4py MPI Iflush_buffer mpi4py MPI Iflush_buffer572524 +Ref: ef572524 +Node: mpi4py MPI Init572653 +Ref: reference/mpi4py MPI Init doc572782 +Ref: 533572782 +Ref: reference/mpi4py MPI Init mpi4py-mpi-init572782 +Ref: 534572782 +Ref: reference/mpi4py MPI Init mpi4py MPI Init572831 +Ref: 8c572831 +Ref: mpi4py MPI Init-Footnote-1572977 +Node: mpi4py MPI Init_thread573039 +Ref: reference/mpi4py MPI Init_thread doc573167 +Ref: 535573167 +Ref: reference/mpi4py MPI Init_thread mpi4py-mpi-init-thread573167 +Ref: 536573167 +Ref: reference/mpi4py MPI Init_thread mpi4py MPI Init_thread573230 +Ref: 8d573230 +Ref: mpi4py MPI Init_thread-Footnote-1573449 +Ref: mpi4py MPI Init_thread-Footnote-2573510 +Node: mpi4py MPI Is_finalized573571 +Ref: reference/mpi4py MPI Is_finalized doc573709 +Ref: 537573709 +Ref: reference/mpi4py MPI Is_finalized mpi4py-mpi-is-finalized573709 +Ref: 538573709 +Ref: reference/mpi4py MPI Is_finalized mpi4py MPI Is_finalized573774 +Ref: 90573774 +Ref: mpi4py MPI Is_finalized-Footnote-1573938 +Node: mpi4py MPI Is_initialized574000 +Ref: reference/mpi4py MPI Is_initialized doc574141 +Ref: 539574141 +Ref: reference/mpi4py MPI Is_initialized mpi4py-mpi-is-initialized574141 +Ref: 53a574141 +Ref: reference/mpi4py MPI Is_initialized mpi4py MPI Is_initialized574210 +Ref: 8f574210 +Ref: mpi4py MPI Is_initialized-Footnote-1574374 +Node: mpi4py MPI Is_thread_main574436 +Ref: reference/mpi4py MPI Is_thread_main doc574576 +Ref: 53b574576 +Ref: reference/mpi4py MPI Is_thread_main mpi4py-mpi-is-thread-main574576 +Ref: 53c574576 +Ref: reference/mpi4py MPI Is_thread_main mpi4py MPI Is_thread_main574645 +Ref: de574645 +Ref: mpi4py MPI Is_thread_main-Footnote-1574842 +Node: mpi4py MPI Lookup_name574904 +Ref: reference/mpi4py MPI Lookup_name doc575039 +Ref: 53d575039 +Ref: reference/mpi4py MPI Lookup_name mpi4py-mpi-lookup-name575039 +Ref: 53e575039 +Ref: reference/mpi4py MPI Lookup_name mpi4py MPI Lookup_name575102 +Ref: 70575102 +Ref: mpi4py MPI Lookup_name-Footnote-1575379 +Ref: mpi4py MPI Lookup_name-Footnote-2575439 +Node: mpi4py MPI Open_port575499 +Ref: reference/mpi4py MPI Open_port doc575628 +Ref: 53f575628 +Ref: reference/mpi4py MPI Open_port mpi4py-mpi-open-port575628 +Ref: 540575628 +Ref: reference/mpi4py MPI Open_port mpi4py MPI Open_port575687 +Ref: 6d575687 +Ref: mpi4py MPI Open_port-Footnote-1575911 +Node: mpi4py MPI Pcontrol575971 +Ref: reference/mpi4py MPI Pcontrol doc576101 +Ref: 541576101 +Ref: reference/mpi4py MPI Pcontrol mpi4py-mpi-pcontrol576101 +Ref: 542576101 +Ref: reference/mpi4py MPI Pcontrol mpi4py MPI Pcontrol576158 +Ref: f2576158 +Ref: mpi4py MPI Pcontrol-Footnote-1576330 +Ref: mpi4py MPI Pcontrol-Footnote-2576391 +Node: mpi4py MPI Publish_name576453 +Ref: reference/mpi4py MPI Publish_name doc576586 +Ref: 543576586 +Ref: reference/mpi4py MPI Publish_name mpi4py-mpi-publish-name576586 +Ref: 544576586 +Ref: reference/mpi4py MPI Publish_name mpi4py MPI Publish_name576651 +Ref: 6e576651 +Ref: mpi4py MPI Publish_name-Footnote-1576970 +Ref: mpi4py MPI Publish_name-Footnote-2577030 +Ref: mpi4py MPI Publish_name-Footnote-3577090 +Node: mpi4py MPI Query_thread577152 +Ref: reference/mpi4py MPI Query_thread doc577293 +Ref: 545577293 +Ref: reference/mpi4py MPI Query_thread mpi4py-mpi-query-thread577293 +Ref: 546577293 +Ref: reference/mpi4py MPI Query_thread mpi4py MPI Query_thread577358 +Ref: dd577358 +Ref: mpi4py MPI Query_thread-Footnote-1577533 +Node: mpi4py MPI Register_datarep577594 +Ref: reference/mpi4py MPI Register_datarep doc577741 +Ref: 547577741 +Ref: reference/mpi4py MPI Register_datarep mpi4py-mpi-register-datarep577741 +Ref: 548577741 +Ref: reference/mpi4py MPI Register_datarep mpi4py MPI Register_datarep577814 +Ref: f1577814 +Ref: mpi4py MPI Register_datarep-Footnote-1578592 +Ref: mpi4py MPI Register_datarep-Footnote-2578652 +Ref: mpi4py MPI Register_datarep-Footnote-3578722 +Ref: mpi4py MPI Register_datarep-Footnote-4578783 +Ref: mpi4py MPI Register_datarep-Footnote-5578844 +Ref: mpi4py MPI Register_datarep-Footnote-6578906 +Ref: mpi4py MPI Register_datarep-Footnote-7578976 +Ref: mpi4py MPI Register_datarep-Footnote-8579037 +Ref: mpi4py MPI Register_datarep-Footnote-9579098 +Ref: mpi4py MPI Register_datarep-Footnote-10579160 +Ref: mpi4py MPI Register_datarep-Footnote-11579231 +Ref: mpi4py MPI Register_datarep-Footnote-12579293 +Node: mpi4py MPI Remove_error_class579356 +Ref: reference/mpi4py MPI Remove_error_class doc579508 +Ref: 549579508 +Ref: reference/mpi4py MPI Remove_error_class mpi4py-mpi-remove-error-class579508 +Ref: 54a579508 +Ref: reference/mpi4py MPI Remove_error_class mpi4py MPI Remove_error_class579585 +Ref: e9579585 +Ref: mpi4py MPI Remove_error_class-Footnote-1579816 +Ref: mpi4py MPI Remove_error_class-Footnote-2579877 +Node: mpi4py MPI Remove_error_code579939 +Ref: reference/mpi4py MPI Remove_error_code doc580094 +Ref: 54b580094 +Ref: reference/mpi4py MPI Remove_error_code mpi4py-mpi-remove-error-code580094 +Ref: 54c580094 +Ref: reference/mpi4py MPI Remove_error_code mpi4py MPI Remove_error_code580169 +Ref: ea580169 +Ref: mpi4py MPI Remove_error_code-Footnote-1580394 +Ref: mpi4py MPI Remove_error_code-Footnote-2580455 +Node: mpi4py MPI Remove_error_string580517 +Ref: reference/mpi4py MPI Remove_error_string doc580668 +Ref: 54d580668 +Ref: reference/mpi4py MPI Remove_error_string mpi4py-mpi-remove-error-string580668 +Ref: 54e580668 +Ref: reference/mpi4py MPI Remove_error_string mpi4py MPI Remove_error_string580747 +Ref: eb580747 +Ref: mpi4py MPI Remove_error_string-Footnote-1581006 +Ref: mpi4py MPI Remove_error_string-Footnote-2581067 +Node: mpi4py MPI Unpublish_name581129 +Ref: reference/mpi4py MPI Unpublish_name doc581268 +Ref: 54f581268 +Ref: reference/mpi4py MPI Unpublish_name mpi4py-mpi-unpublish-name581268 +Ref: 550581268 +Ref: reference/mpi4py MPI Unpublish_name mpi4py MPI Unpublish_name581337 +Ref: 73581337 +Ref: mpi4py MPI Unpublish_name-Footnote-1581660 +Ref: mpi4py MPI Unpublish_name-Footnote-2581720 +Ref: mpi4py MPI Unpublish_name-Footnote-3581780 +Node: mpi4py MPI Wtick581842 +Ref: reference/mpi4py MPI Wtick doc581967 +Ref: 551581967 +Ref: reference/mpi4py MPI Wtick mpi4py-mpi-wtick581967 +Ref: 552581967 +Ref: reference/mpi4py MPI Wtick mpi4py MPI Wtick582018 +Ref: 97582018 +Ref: mpi4py MPI Wtick-Footnote-1582166 +Node: mpi4py MPI Wtime582229 +Ref: reference/mpi4py MPI Wtime doc582350 +Ref: 553582350 +Ref: reference/mpi4py MPI Wtime mpi4py-mpi-wtime582350 +Ref: 554582350 +Ref: reference/mpi4py MPI Wtime mpi4py MPI Wtime582401 +Ref: 96582401 +Ref: mpi4py MPI Wtime-Footnote-1582556 +Node: mpi4py MPI get_vendor582619 +Ref: reference/mpi4py MPI get_vendor doc582744 +Ref: 555582744 +Ref: reference/mpi4py MPI get_vendor mpi4py-mpi-get-vendor582744 +Ref: 556582744 +Ref: reference/mpi4py MPI get_vendor mpi4py MPI get_vendor582805 +Ref: f3582805 +Ref: mpi4py MPI get_vendor-Footnote-1613143 +Ref: mpi4py MPI get_vendor-Footnote-2613205 +Ref: mpi4py MPI get_vendor-Footnote-3613265 +Ref: mpi4py MPI get_vendor-Footnote-4613327 +Ref: mpi4py MPI get_vendor-Footnote-5613388 +Ref: mpi4py MPI get_vendor-Footnote-6613449 +Ref: mpi4py MPI get_vendor-Footnote-7613510 +Ref: mpi4py MPI get_vendor-Footnote-8613571 +Ref: mpi4py MPI get_vendor-Footnote-9613632 +Ref: mpi4py MPI get_vendor-Footnote-10613693 +Ref: mpi4py MPI get_vendor-Footnote-11613755 +Ref: mpi4py MPI get_vendor-Footnote-12613817 +Ref: mpi4py MPI get_vendor-Footnote-13613879 +Ref: mpi4py MPI get_vendor-Footnote-14613941 +Ref: mpi4py MPI get_vendor-Footnote-15614003 +Ref: mpi4py MPI get_vendor-Footnote-16614065 +Ref: mpi4py MPI get_vendor-Footnote-17614127 +Ref: mpi4py MPI get_vendor-Footnote-18614189 +Ref: mpi4py MPI get_vendor-Footnote-19614251 +Ref: mpi4py MPI get_vendor-Footnote-20614313 +Ref: mpi4py MPI get_vendor-Footnote-21614375 +Ref: mpi4py MPI get_vendor-Footnote-22614437 +Ref: mpi4py MPI get_vendor-Footnote-23614499 +Ref: mpi4py MPI get_vendor-Footnote-24614561 +Ref: mpi4py MPI get_vendor-Footnote-25614623 +Ref: mpi4py MPI get_vendor-Footnote-26614685 +Ref: mpi4py MPI get_vendor-Footnote-27614747 +Ref: mpi4py MPI get_vendor-Footnote-28614809 +Ref: mpi4py MPI get_vendor-Footnote-29614871 +Ref: mpi4py MPI get_vendor-Footnote-30614933 +Ref: mpi4py MPI get_vendor-Footnote-31614995 +Ref: mpi4py MPI get_vendor-Footnote-32615057 +Ref: mpi4py MPI get_vendor-Footnote-33615119 +Ref: mpi4py MPI get_vendor-Footnote-34615181 +Ref: mpi4py MPI get_vendor-Footnote-35615243 +Ref: mpi4py MPI get_vendor-Footnote-36615305 +Ref: mpi4py MPI get_vendor-Footnote-37615367 +Ref: mpi4py MPI get_vendor-Footnote-38615429 +Ref: mpi4py MPI get_vendor-Footnote-39615491 +Ref: mpi4py MPI get_vendor-Footnote-40615553 +Ref: mpi4py MPI get_vendor-Footnote-41615615 +Ref: mpi4py MPI get_vendor-Footnote-42615677 +Ref: mpi4py MPI get_vendor-Footnote-43615739 +Ref: mpi4py MPI get_vendor-Footnote-44615801 +Ref: mpi4py MPI get_vendor-Footnote-45615863 +Ref: mpi4py MPI get_vendor-Footnote-46615925 +Ref: mpi4py MPI get_vendor-Footnote-47615987 +Ref: mpi4py MPI get_vendor-Footnote-48616049 +Ref: mpi4py MPI get_vendor-Footnote-49616111 +Ref: mpi4py MPI get_vendor-Footnote-50616173 +Ref: mpi4py MPI get_vendor-Footnote-51616235 +Ref: mpi4py MPI get_vendor-Footnote-52616297 +Ref: mpi4py MPI get_vendor-Footnote-53616359 +Ref: mpi4py MPI get_vendor-Footnote-54616421 +Ref: mpi4py MPI get_vendor-Footnote-55616483 +Ref: mpi4py MPI get_vendor-Footnote-56616545 +Ref: mpi4py MPI get_vendor-Footnote-57616607 +Ref: mpi4py MPI get_vendor-Footnote-58616669 +Ref: mpi4py MPI get_vendor-Footnote-59616731 +Ref: mpi4py MPI get_vendor-Footnote-60616793 +Ref: mpi4py MPI get_vendor-Footnote-61616855 +Ref: mpi4py MPI get_vendor-Footnote-62616917 +Ref: mpi4py MPI get_vendor-Footnote-63616979 +Ref: mpi4py MPI get_vendor-Footnote-64617041 +Ref: mpi4py MPI get_vendor-Footnote-65617103 +Ref: mpi4py MPI get_vendor-Footnote-66617165 +Ref: mpi4py MPI get_vendor-Footnote-67617227 +Ref: mpi4py MPI get_vendor-Footnote-68617289 +Ref: mpi4py MPI get_vendor-Footnote-69617351 +Ref: mpi4py MPI get_vendor-Footnote-70617413 +Ref: mpi4py MPI get_vendor-Footnote-71617475 +Ref: mpi4py MPI get_vendor-Footnote-72617537 +Ref: mpi4py MPI get_vendor-Footnote-73617599 +Ref: mpi4py MPI get_vendor-Footnote-74617661 +Ref: mpi4py MPI get_vendor-Footnote-75617723 +Ref: mpi4py MPI get_vendor-Footnote-76617785 +Ref: mpi4py MPI get_vendor-Footnote-77617847 +Ref: mpi4py MPI get_vendor-Footnote-78617909 +Ref: mpi4py MPI get_vendor-Footnote-79617971 +Ref: mpi4py MPI get_vendor-Footnote-80618033 +Ref: mpi4py MPI get_vendor-Footnote-81618095 +Ref: mpi4py MPI get_vendor-Footnote-82618157 +Ref: mpi4py MPI get_vendor-Footnote-83618219 +Ref: mpi4py MPI get_vendor-Footnote-84618281 +Ref: mpi4py MPI get_vendor-Footnote-85618343 +Ref: mpi4py MPI get_vendor-Footnote-86618405 +Ref: mpi4py MPI get_vendor-Footnote-87618467 +Ref: mpi4py MPI get_vendor-Footnote-88618529 +Ref: mpi4py MPI get_vendor-Footnote-89618591 +Ref: mpi4py MPI get_vendor-Footnote-90618653 +Ref: mpi4py MPI get_vendor-Footnote-91618715 +Ref: mpi4py MPI get_vendor-Footnote-92618777 +Ref: mpi4py MPI get_vendor-Footnote-93618839 +Ref: mpi4py MPI get_vendor-Footnote-94618901 +Ref: mpi4py MPI get_vendor-Footnote-95618963 +Ref: mpi4py MPI get_vendor-Footnote-96619025 +Ref: mpi4py MPI get_vendor-Footnote-97619087 +Ref: mpi4py MPI get_vendor-Footnote-98619149 +Ref: mpi4py MPI get_vendor-Footnote-99619211 +Ref: mpi4py MPI get_vendor-Footnote-100619273 +Ref: mpi4py MPI get_vendor-Footnote-101619336 +Ref: mpi4py MPI get_vendor-Footnote-102619399 +Ref: mpi4py MPI get_vendor-Footnote-103619462 +Ref: mpi4py MPI get_vendor-Footnote-104619525 +Ref: mpi4py MPI get_vendor-Footnote-105619588 +Ref: mpi4py MPI get_vendor-Footnote-106619651 +Ref: mpi4py MPI get_vendor-Footnote-107619714 +Ref: mpi4py MPI get_vendor-Footnote-108619777 +Ref: mpi4py MPI get_vendor-Footnote-109619840 +Ref: mpi4py MPI get_vendor-Footnote-110619903 +Ref: mpi4py MPI get_vendor-Footnote-111619966 +Ref: mpi4py MPI get_vendor-Footnote-112620029 +Ref: mpi4py MPI get_vendor-Footnote-113620092 +Ref: mpi4py MPI get_vendor-Footnote-114620155 +Ref: mpi4py MPI get_vendor-Footnote-115620218 +Ref: mpi4py MPI get_vendor-Footnote-116620281 +Ref: mpi4py MPI get_vendor-Footnote-117620344 +Ref: mpi4py MPI get_vendor-Footnote-118620407 +Ref: mpi4py MPI get_vendor-Footnote-119620470 +Ref: mpi4py MPI get_vendor-Footnote-120620533 +Ref: mpi4py MPI get_vendor-Footnote-121620596 +Ref: mpi4py MPI get_vendor-Footnote-122620659 +Ref: mpi4py MPI get_vendor-Footnote-123620722 +Ref: mpi4py MPI get_vendor-Footnote-124620785 +Ref: mpi4py MPI get_vendor-Footnote-125620848 +Ref: mpi4py MPI get_vendor-Footnote-126620911 +Ref: mpi4py MPI get_vendor-Footnote-127620974 +Ref: mpi4py MPI get_vendor-Footnote-128621037 +Ref: mpi4py MPI get_vendor-Footnote-129621100 +Ref: mpi4py MPI get_vendor-Footnote-130621163 +Ref: mpi4py MPI get_vendor-Footnote-131621226 +Ref: mpi4py MPI get_vendor-Footnote-132621289 +Ref: mpi4py MPI get_vendor-Footnote-133621352 +Ref: mpi4py MPI get_vendor-Footnote-134621415 +Ref: mpi4py MPI get_vendor-Footnote-135621478 +Ref: mpi4py MPI get_vendor-Footnote-136621541 +Ref: mpi4py MPI get_vendor-Footnote-137621604 +Ref: mpi4py MPI get_vendor-Footnote-138621667 +Ref: mpi4py MPI get_vendor-Footnote-139621730 +Ref: mpi4py MPI get_vendor-Footnote-140621793 +Ref: mpi4py MPI get_vendor-Footnote-141621856 +Ref: mpi4py MPI get_vendor-Footnote-142621919 +Ref: mpi4py MPI get_vendor-Footnote-143621982 +Ref: mpi4py MPI get_vendor-Footnote-144622045 +Ref: mpi4py MPI get_vendor-Footnote-145622108 +Ref: mpi4py MPI get_vendor-Footnote-146622171 +Ref: mpi4py MPI get_vendor-Footnote-147622234 +Ref: mpi4py MPI get_vendor-Footnote-148622297 +Ref: mpi4py MPI get_vendor-Footnote-149622360 +Ref: mpi4py MPI get_vendor-Footnote-150622423 +Ref: mpi4py MPI get_vendor-Footnote-151622486 +Ref: mpi4py MPI get_vendor-Footnote-152622549 +Ref: mpi4py MPI get_vendor-Footnote-153622612 +Ref: mpi4py MPI get_vendor-Footnote-154622675 +Ref: mpi4py MPI get_vendor-Footnote-155622738 +Ref: mpi4py MPI get_vendor-Footnote-156622801 +Ref: mpi4py MPI get_vendor-Footnote-157622864 +Ref: mpi4py MPI get_vendor-Footnote-158622927 +Ref: mpi4py MPI get_vendor-Footnote-159622990 +Ref: mpi4py MPI get_vendor-Footnote-160623053 +Ref: mpi4py MPI get_vendor-Footnote-161623116 +Ref: mpi4py MPI get_vendor-Footnote-162623179 +Ref: mpi4py MPI get_vendor-Footnote-163623242 +Ref: mpi4py MPI get_vendor-Footnote-164623305 +Ref: mpi4py MPI get_vendor-Footnote-165623368 +Ref: mpi4py MPI get_vendor-Footnote-166623431 +Ref: mpi4py MPI get_vendor-Footnote-167623494 +Ref: mpi4py MPI get_vendor-Footnote-168623557 +Ref: mpi4py MPI get_vendor-Footnote-169623620 +Ref: mpi4py MPI get_vendor-Footnote-170623683 +Ref: mpi4py MPI get_vendor-Footnote-171623746 +Ref: mpi4py MPI get_vendor-Footnote-172623809 +Ref: mpi4py MPI get_vendor-Footnote-173623872 +Ref: mpi4py MPI get_vendor-Footnote-174623935 +Ref: mpi4py MPI get_vendor-Footnote-175623998 +Ref: mpi4py MPI get_vendor-Footnote-176624061 +Ref: mpi4py MPI get_vendor-Footnote-177624124 +Ref: mpi4py MPI get_vendor-Footnote-178624187 +Node: mpi4py MPI UNDEFINED624250 +Ref: reference/mpi4py MPI UNDEFINED doc624380 +Ref: 568624380 +Ref: reference/mpi4py MPI UNDEFINED mpi4py-mpi-undefined624380 +Ref: 569624380 +Ref: reference/mpi4py MPI UNDEFINED mpi4py MPI UNDEFINED624439 +Ref: f5624439 +Ref: mpi4py MPI UNDEFINED-Footnote-1624573 +Ref: mpi4py MPI UNDEFINED-Footnote-2624634 +Node: mpi4py MPI ANY_SOURCE624695 +Ref: reference/mpi4py MPI ANY_SOURCE doc624822 +Ref: 56a624822 +Ref: reference/mpi4py MPI ANY_SOURCE mpi4py-mpi-any-source624822 +Ref: 56b624822 +Ref: reference/mpi4py MPI ANY_SOURCE mpi4py MPI ANY_SOURCE624883 +Ref: f6624883 +Ref: mpi4py MPI ANY_SOURCE-Footnote-1625020 +Ref: mpi4py MPI ANY_SOURCE-Footnote-2625081 +Node: mpi4py MPI ANY_TAG625142 +Ref: reference/mpi4py MPI ANY_TAG doc625269 +Ref: 56c625269 +Ref: reference/mpi4py MPI ANY_TAG mpi4py-mpi-any-tag625269 +Ref: 56d625269 +Ref: reference/mpi4py MPI ANY_TAG mpi4py MPI ANY_TAG625324 +Ref: f7625324 +Ref: mpi4py MPI ANY_TAG-Footnote-1625452 +Ref: mpi4py MPI ANY_TAG-Footnote-2625513 +Node: mpi4py MPI PROC_NULL625574 +Ref: reference/mpi4py MPI PROC_NULL doc625695 +Ref: 56e625695 +Ref: reference/mpi4py MPI PROC_NULL mpi4py-mpi-proc-null625695 +Ref: 56f625695 +Ref: reference/mpi4py MPI PROC_NULL mpi4py MPI PROC_NULL625754 +Ref: f8625754 +Ref: mpi4py MPI PROC_NULL-Footnote-1625888 +Ref: mpi4py MPI PROC_NULL-Footnote-2625949 +Node: mpi4py MPI ROOT626010 +Ref: reference/mpi4py MPI ROOT doc626130 +Ref: 570626130 +Ref: reference/mpi4py MPI ROOT mpi4py-mpi-root626130 +Ref: 571626130 +Ref: reference/mpi4py MPI ROOT mpi4py MPI ROOT626179 +Ref: f9626179 +Ref: mpi4py MPI ROOT-Footnote-1626298 +Ref: mpi4py MPI ROOT-Footnote-2626359 +Node: mpi4py MPI BOTTOM626420 +Ref: reference/mpi4py MPI BOTTOM doc626539 +Ref: 572626539 +Ref: reference/mpi4py MPI BOTTOM mpi4py-mpi-bottom626539 +Ref: 573626539 +Ref: reference/mpi4py MPI BOTTOM mpi4py MPI BOTTOM626592 +Ref: fa626592 +Node: mpi4py MPI IN_PLACE626711 +Ref: reference/mpi4py MPI IN_PLACE doc626840 +Ref: 574626840 +Ref: reference/mpi4py MPI IN_PLACE mpi4py-mpi-in-place626840 +Ref: 575626840 +Ref: reference/mpi4py MPI IN_PLACE mpi4py MPI IN_PLACE626897 +Ref: fc626897 +Node: mpi4py MPI KEYVAL_INVALID627024 +Ref: reference/mpi4py MPI KEYVAL_INVALID doc627153 +Ref: 576627153 +Ref: reference/mpi4py MPI KEYVAL_INVALID mpi4py-mpi-keyval-invalid627153 +Ref: 577627153 +Ref: reference/mpi4py MPI KEYVAL_INVALID mpi4py MPI KEYVAL_INVALID627222 +Ref: 100627222 +Ref: mpi4py MPI KEYVAL_INVALID-Footnote-1627371 +Ref: mpi4py MPI KEYVAL_INVALID-Footnote-2627432 +Node: mpi4py MPI TAG_UB627493 +Ref: reference/mpi4py MPI TAG_UB doc627616 +Ref: 578627616 +Ref: reference/mpi4py MPI TAG_UB mpi4py-mpi-tag-ub627616 +Ref: 579627616 +Ref: reference/mpi4py MPI TAG_UB mpi4py MPI TAG_UB627669 +Ref: 101627669 +Ref: mpi4py MPI TAG_UB-Footnote-1627794 +Ref: mpi4py MPI TAG_UB-Footnote-2627855 +Node: mpi4py MPI IO627916 +Ref: reference/mpi4py MPI IO doc628040 +Ref: 57a628040 +Ref: reference/mpi4py MPI IO mpi4py-mpi-io628040 +Ref: 57b628040 +Ref: reference/mpi4py MPI IO mpi4py MPI IO628085 +Ref: 102628085 +Ref: mpi4py MPI IO-Footnote-1628198 +Ref: mpi4py MPI IO-Footnote-2628259 +Node: mpi4py MPI WTIME_IS_GLOBAL628320 +Ref: reference/mpi4py MPI WTIME_IS_GLOBAL doc628451 +Ref: 57c628451 +Ref: reference/mpi4py MPI WTIME_IS_GLOBAL mpi4py-mpi-wtime-is-global628451 +Ref: 57d628451 +Ref: reference/mpi4py MPI WTIME_IS_GLOBAL mpi4py MPI WTIME_IS_GLOBAL628522 +Ref: 103628522 +Ref: mpi4py MPI WTIME_IS_GLOBAL-Footnote-1628674 +Ref: mpi4py MPI WTIME_IS_GLOBAL-Footnote-2628735 +Node: mpi4py MPI UNIVERSE_SIZE628796 +Ref: reference/mpi4py MPI UNIVERSE_SIZE doc628931 +Ref: 57e628931 +Ref: reference/mpi4py MPI UNIVERSE_SIZE mpi4py-mpi-universe-size628931 +Ref: 57f628931 +Ref: reference/mpi4py MPI UNIVERSE_SIZE mpi4py MPI UNIVERSE_SIZE628998 +Ref: 104628998 +Ref: mpi4py MPI UNIVERSE_SIZE-Footnote-1629144 +Ref: mpi4py MPI UNIVERSE_SIZE-Footnote-2629205 +Node: mpi4py MPI APPNUM629266 +Ref: reference/mpi4py MPI APPNUM doc629398 +Ref: 580629398 +Ref: reference/mpi4py MPI APPNUM mpi4py-mpi-appnum629398 +Ref: 581629398 +Ref: reference/mpi4py MPI APPNUM mpi4py MPI APPNUM629451 +Ref: 105629451 +Ref: mpi4py MPI APPNUM-Footnote-1629576 +Ref: mpi4py MPI APPNUM-Footnote-2629637 +Node: mpi4py MPI LASTUSEDCODE629698 +Ref: reference/mpi4py MPI LASTUSEDCODE doc629825 +Ref: 582629825 +Ref: reference/mpi4py MPI LASTUSEDCODE mpi4py-mpi-lastusedcode629825 +Ref: 583629825 +Ref: reference/mpi4py MPI LASTUSEDCODE mpi4py MPI LASTUSEDCODE629890 +Ref: 106629890 +Ref: mpi4py MPI LASTUSEDCODE-Footnote-1630033 +Ref: mpi4py MPI LASTUSEDCODE-Footnote-2630094 +Node: mpi4py MPI WIN_BASE630155 +Ref: reference/mpi4py MPI WIN_BASE doc630284 +Ref: 584630284 +Ref: reference/mpi4py MPI WIN_BASE mpi4py-mpi-win-base630284 +Ref: 585630284 +Ref: reference/mpi4py MPI WIN_BASE mpi4py MPI WIN_BASE630341 +Ref: 107630341 +Ref: mpi4py MPI WIN_BASE-Footnote-1630472 +Ref: mpi4py MPI WIN_BASE-Footnote-2630533 +Node: mpi4py MPI WIN_SIZE630594 +Ref: reference/mpi4py MPI WIN_SIZE doc630724 +Ref: 586630724 +Ref: reference/mpi4py MPI WIN_SIZE mpi4py-mpi-win-size630724 +Ref: 587630724 +Ref: reference/mpi4py MPI WIN_SIZE mpi4py MPI WIN_SIZE630781 +Ref: 108630781 +Ref: mpi4py MPI WIN_SIZE-Footnote-1630912 +Ref: mpi4py MPI WIN_SIZE-Footnote-2630973 +Node: mpi4py MPI WIN_DISP_UNIT631034 +Ref: reference/mpi4py MPI WIN_DISP_UNIT doc631173 +Ref: 588631173 +Ref: reference/mpi4py MPI WIN_DISP_UNIT mpi4py-mpi-win-disp-unit631173 +Ref: 589631173 +Ref: reference/mpi4py MPI WIN_DISP_UNIT mpi4py MPI WIN_DISP_UNIT631240 +Ref: 109631240 +Ref: mpi4py MPI WIN_DISP_UNIT-Footnote-1631386 +Ref: mpi4py MPI WIN_DISP_UNIT-Footnote-2631447 +Node: mpi4py MPI WIN_CREATE_FLAVOR631508 +Ref: reference/mpi4py MPI WIN_CREATE_FLAVOR doc631649 +Ref: 58a631649 +Ref: reference/mpi4py MPI WIN_CREATE_FLAVOR mpi4py-mpi-win-create-flavor631649 +Ref: 58b631649 +Ref: reference/mpi4py MPI WIN_CREATE_FLAVOR mpi4py MPI WIN_CREATE_FLAVOR631724 +Ref: 10a631724 +Ref: mpi4py MPI WIN_CREATE_FLAVOR-Footnote-1631882 +Ref: mpi4py MPI WIN_CREATE_FLAVOR-Footnote-2631943 +Node: mpi4py MPI WIN_FLAVOR632004 +Ref: reference/mpi4py MPI WIN_FLAVOR doc632141 +Ref: 58c632141 +Ref: reference/mpi4py MPI WIN_FLAVOR mpi4py-mpi-win-flavor632141 +Ref: 58d632141 +Ref: reference/mpi4py MPI WIN_FLAVOR mpi4py MPI WIN_FLAVOR632202 +Ref: 10b632202 +Ref: mpi4py MPI WIN_FLAVOR-Footnote-1632339 +Ref: mpi4py MPI WIN_FLAVOR-Footnote-2632400 +Node: mpi4py MPI WIN_MODEL632461 +Ref: reference/mpi4py MPI WIN_MODEL doc632588 +Ref: 58e632588 +Ref: reference/mpi4py MPI WIN_MODEL mpi4py-mpi-win-model632588 +Ref: 58f632588 +Ref: reference/mpi4py MPI WIN_MODEL mpi4py MPI WIN_MODEL632647 +Ref: 10c632647 +Ref: mpi4py MPI WIN_MODEL-Footnote-1632781 +Ref: mpi4py MPI WIN_MODEL-Footnote-2632842 +Node: mpi4py MPI SUCCESS632903 +Ref: reference/mpi4py MPI SUCCESS doc633032 +Ref: 590633032 +Ref: reference/mpi4py MPI SUCCESS mpi4py-mpi-success633032 +Ref: 591633032 +Ref: reference/mpi4py MPI SUCCESS mpi4py MPI SUCCESS633087 +Ref: 10d633087 +Ref: mpi4py MPI SUCCESS-Footnote-1633215 +Ref: mpi4py MPI SUCCESS-Footnote-2633276 +Node: mpi4py MPI ERR_LASTCODE633337 +Ref: reference/mpi4py MPI ERR_LASTCODE doc633465 +Ref: 592633465 +Ref: reference/mpi4py MPI ERR_LASTCODE mpi4py-mpi-err-lastcode633465 +Ref: 593633465 +Ref: reference/mpi4py MPI ERR_LASTCODE mpi4py MPI ERR_LASTCODE633530 +Ref: 10e633530 +Ref: mpi4py MPI ERR_LASTCODE-Footnote-1633673 +Ref: mpi4py MPI ERR_LASTCODE-Footnote-2633734 +Node: mpi4py MPI ERR_TYPE633795 +Ref: reference/mpi4py MPI ERR_TYPE doc633927 +Ref: 594633927 +Ref: reference/mpi4py MPI ERR_TYPE mpi4py-mpi-err-type633927 +Ref: 595633927 +Ref: reference/mpi4py MPI ERR_TYPE mpi4py MPI ERR_TYPE633984 +Ref: 111633984 +Ref: mpi4py MPI ERR_TYPE-Footnote-1634115 +Ref: mpi4py MPI ERR_TYPE-Footnote-2634176 +Node: mpi4py MPI ERR_REQUEST634237 +Ref: reference/mpi4py MPI ERR_REQUEST doc634363 +Ref: 596634363 +Ref: reference/mpi4py MPI ERR_REQUEST mpi4py-mpi-err-request634363 +Ref: 597634363 +Ref: reference/mpi4py MPI ERR_REQUEST mpi4py MPI ERR_REQUEST634426 +Ref: 112634426 +Ref: mpi4py MPI ERR_REQUEST-Footnote-1634566 +Ref: mpi4py MPI ERR_REQUEST-Footnote-2634627 +Node: mpi4py MPI ERR_OP634688 +Ref: reference/mpi4py MPI ERR_OP doc634815 +Ref: 598634815 +Ref: reference/mpi4py MPI ERR_OP mpi4py-mpi-err-op634815 +Ref: 599634815 +Ref: reference/mpi4py MPI ERR_OP mpi4py MPI ERR_OP634868 +Ref: 113634868 +Ref: mpi4py MPI ERR_OP-Footnote-1634993 +Ref: mpi4py MPI ERR_OP-Footnote-2635054 +Node: mpi4py MPI ERR_GROUP635115 +Ref: reference/mpi4py MPI ERR_GROUP doc635239 +Ref: 59a635239 +Ref: reference/mpi4py MPI ERR_GROUP mpi4py-mpi-err-group635239 +Ref: 59b635239 +Ref: reference/mpi4py MPI ERR_GROUP mpi4py MPI ERR_GROUP635298 +Ref: 110635298 +Ref: mpi4py MPI ERR_GROUP-Footnote-1635432 +Ref: mpi4py MPI ERR_GROUP-Footnote-2635493 +Node: mpi4py MPI ERR_INFO635554 +Ref: reference/mpi4py MPI ERR_INFO doc635686 +Ref: 59c635686 +Ref: reference/mpi4py MPI ERR_INFO mpi4py-mpi-err-info635686 +Ref: 59d635686 +Ref: reference/mpi4py MPI ERR_INFO mpi4py MPI ERR_INFO635743 +Ref: 123635743 +Ref: mpi4py MPI ERR_INFO-Footnote-1635874 +Ref: mpi4py MPI ERR_INFO-Footnote-2635935 +Node: mpi4py MPI ERR_ERRHANDLER635996 +Ref: reference/mpi4py MPI ERR_ERRHANDLER doc636130 +Ref: 59e636130 +Ref: reference/mpi4py MPI ERR_ERRHANDLER mpi4py-mpi-err-errhandler636130 +Ref: 59f636130 +Ref: reference/mpi4py MPI ERR_ERRHANDLER mpi4py MPI ERR_ERRHANDLER636199 +Ref: 114636199 +Ref: mpi4py MPI ERR_ERRHANDLER-Footnote-1636348 +Ref: mpi4py MPI ERR_ERRHANDLER-Footnote-2636409 +Node: mpi4py MPI ERR_SESSION636470 +Ref: reference/mpi4py MPI ERR_SESSION doc636604 +Ref: 5a0636604 +Ref: reference/mpi4py MPI ERR_SESSION mpi4py-mpi-err-session636604 +Ref: 5a1636604 +Ref: reference/mpi4py MPI ERR_SESSION mpi4py MPI ERR_SESSION636667 +Ref: 557636667 +Ref: mpi4py MPI ERR_SESSION-Footnote-1636807 +Ref: mpi4py MPI ERR_SESSION-Footnote-2636868 +Node: mpi4py MPI ERR_COMM636929 +Ref: reference/mpi4py MPI ERR_COMM doc637056 +Ref: 5a2637056 +Ref: reference/mpi4py MPI ERR_COMM mpi4py-mpi-err-comm637056 +Ref: 5a3637056 +Ref: reference/mpi4py MPI ERR_COMM mpi4py MPI ERR_COMM637113 +Ref: 10f637113 +Ref: mpi4py MPI ERR_COMM-Footnote-1637244 +Ref: mpi4py MPI ERR_COMM-Footnote-2637305 +Node: mpi4py MPI ERR_WIN637366 +Ref: reference/mpi4py MPI ERR_WIN doc637490 +Ref: 5a4637490 +Ref: reference/mpi4py MPI ERR_WIN mpi4py-mpi-err-win637490 +Ref: 5a5637490 +Ref: reference/mpi4py MPI ERR_WIN mpi4py MPI ERR_WIN637545 +Ref: 125637545 +Ref: mpi4py MPI ERR_WIN-Footnote-1637673 +Ref: mpi4py MPI ERR_WIN-Footnote-2637734 +Node: mpi4py MPI ERR_FILE637795 +Ref: reference/mpi4py MPI ERR_FILE doc637921 +Ref: 5a6637921 +Ref: reference/mpi4py MPI ERR_FILE mpi4py-mpi-err-file637921 +Ref: 5a7637921 +Ref: reference/mpi4py MPI ERR_FILE mpi4py MPI ERR_FILE637978 +Ref: 124637978 +Ref: mpi4py MPI ERR_FILE-Footnote-1638109 +Ref: mpi4py MPI ERR_FILE-Footnote-2638170 +Node: mpi4py MPI ERR_BUFFER638231 +Ref: reference/mpi4py MPI ERR_BUFFER doc638359 +Ref: 5a8638359 +Ref: reference/mpi4py MPI ERR_BUFFER mpi4py-mpi-err-buffer638359 +Ref: 5a9638359 +Ref: reference/mpi4py MPI ERR_BUFFER mpi4py MPI ERR_BUFFER638420 +Ref: 115638420 +Ref: mpi4py MPI ERR_BUFFER-Footnote-1638557 +Ref: mpi4py MPI ERR_BUFFER-Footnote-2638618 +Node: mpi4py MPI ERR_COUNT638679 +Ref: reference/mpi4py MPI ERR_COUNT doc638806 +Ref: 5aa638806 +Ref: reference/mpi4py MPI ERR_COUNT mpi4py-mpi-err-count638806 +Ref: 5ab638806 +Ref: reference/mpi4py MPI ERR_COUNT mpi4py MPI ERR_COUNT638867 +Ref: 116638867 +Ref: mpi4py MPI ERR_COUNT-Footnote-1639001 +Ref: mpi4py MPI ERR_COUNT-Footnote-2639062 +Node: mpi4py MPI ERR_TAG639123 +Ref: reference/mpi4py MPI ERR_TAG doc639248 +Ref: 5ac639248 +Ref: reference/mpi4py MPI ERR_TAG mpi4py-mpi-err-tag639248 +Ref: 5ad639248 +Ref: reference/mpi4py MPI ERR_TAG mpi4py MPI ERR_TAG639305 +Ref: 117639305 +Ref: mpi4py MPI ERR_TAG-Footnote-1639433 +Ref: mpi4py MPI ERR_TAG-Footnote-2639494 +Node: mpi4py MPI ERR_RANK639555 +Ref: reference/mpi4py MPI ERR_RANK doc639679 +Ref: 5ae639679 +Ref: reference/mpi4py MPI ERR_RANK mpi4py-mpi-err-rank639679 +Ref: 5af639679 +Ref: reference/mpi4py MPI ERR_RANK mpi4py MPI ERR_RANK639738 +Ref: 118639738 +Ref: mpi4py MPI ERR_RANK-Footnote-1639869 +Ref: mpi4py MPI ERR_RANK-Footnote-2639930 +Node: mpi4py MPI ERR_ROOT639991 +Ref: reference/mpi4py MPI ERR_ROOT doc640120 +Ref: 5b0640120 +Ref: reference/mpi4py MPI ERR_ROOT mpi4py-mpi-err-root640120 +Ref: 5b1640120 +Ref: reference/mpi4py MPI ERR_ROOT mpi4py MPI ERR_ROOT640179 +Ref: 119640179 +Ref: mpi4py MPI ERR_ROOT-Footnote-1640310 +Ref: mpi4py MPI ERR_ROOT-Footnote-2640371 +Node: mpi4py MPI ERR_TRUNCATE640432 +Ref: reference/mpi4py MPI ERR_TRUNCATE doc640566 +Ref: 5b2640566 +Ref: reference/mpi4py MPI ERR_TRUNCATE mpi4py-mpi-err-truncate640566 +Ref: 5b3640566 +Ref: reference/mpi4py MPI ERR_TRUNCATE mpi4py MPI ERR_TRUNCATE640633 +Ref: 11a640633 +Ref: mpi4py MPI ERR_TRUNCATE-Footnote-1640776 +Ref: mpi4py MPI ERR_TRUNCATE-Footnote-2640837 +Node: mpi4py MPI ERR_IN_STATUS640898 +Ref: reference/mpi4py MPI ERR_IN_STATUS doc641035 +Ref: 5b4641035 +Ref: reference/mpi4py MPI ERR_IN_STATUS mpi4py-mpi-err-in-status641035 +Ref: 5b5641035 +Ref: reference/mpi4py MPI ERR_IN_STATUS mpi4py MPI ERR_IN_STATUS641104 +Ref: 11b641104 +Ref: mpi4py MPI ERR_IN_STATUS-Footnote-1641250 +Ref: mpi4py MPI ERR_IN_STATUS-Footnote-2641311 +Node: mpi4py MPI ERR_PENDING641372 +Ref: reference/mpi4py MPI ERR_PENDING doc641509 +Ref: 5b6641509 +Ref: reference/mpi4py MPI ERR_PENDING mpi4py-mpi-err-pending641509 +Ref: 5b7641509 +Ref: reference/mpi4py MPI ERR_PENDING mpi4py MPI ERR_PENDING641574 +Ref: 11c641574 +Ref: mpi4py MPI ERR_PENDING-Footnote-1641714 +Ref: mpi4py MPI ERR_PENDING-Footnote-2641775 +Node: mpi4py MPI ERR_TOPOLOGY641836 +Ref: reference/mpi4py MPI ERR_TOPOLOGY doc641968 +Ref: 5b8641968 +Ref: reference/mpi4py MPI ERR_TOPOLOGY mpi4py-mpi-err-topology641968 +Ref: 5b9641968 +Ref: reference/mpi4py MPI ERR_TOPOLOGY mpi4py MPI ERR_TOPOLOGY642035 +Ref: 11d642035 +Ref: mpi4py MPI ERR_TOPOLOGY-Footnote-1642178 +Ref: mpi4py MPI ERR_TOPOLOGY-Footnote-2642239 +Node: mpi4py MPI ERR_DIMS642300 +Ref: reference/mpi4py MPI ERR_DIMS doc642428 +Ref: 5ba642428 +Ref: reference/mpi4py MPI ERR_DIMS mpi4py-mpi-err-dims642428 +Ref: 5bb642428 +Ref: reference/mpi4py MPI ERR_DIMS mpi4py MPI ERR_DIMS642487 +Ref: 11e642487 +Ref: mpi4py MPI ERR_DIMS-Footnote-1642618 +Ref: mpi4py MPI ERR_DIMS-Footnote-2642679 +Node: mpi4py MPI ERR_ARG642740 +Ref: reference/mpi4py MPI ERR_ARG doc642865 +Ref: 5bc642865 +Ref: reference/mpi4py MPI ERR_ARG mpi4py-mpi-err-arg642865 +Ref: 5bd642865 +Ref: reference/mpi4py MPI ERR_ARG mpi4py MPI ERR_ARG642922 +Ref: 11f642922 +Ref: mpi4py MPI ERR_ARG-Footnote-1643050 +Ref: mpi4py MPI ERR_ARG-Footnote-2643111 +Node: mpi4py MPI ERR_OTHER643172 +Ref: reference/mpi4py MPI ERR_OTHER doc643300 +Ref: 5be643300 +Ref: reference/mpi4py MPI ERR_OTHER mpi4py-mpi-err-other643300 +Ref: 5bf643300 +Ref: reference/mpi4py MPI ERR_OTHER mpi4py MPI ERR_OTHER643361 +Ref: 120643361 +Ref: mpi4py MPI ERR_OTHER-Footnote-1643495 +Ref: mpi4py MPI ERR_OTHER-Footnote-2643556 +Node: mpi4py MPI ERR_UNKNOWN643617 +Ref: reference/mpi4py MPI ERR_UNKNOWN doc643748 +Ref: 5c0643748 +Ref: reference/mpi4py MPI ERR_UNKNOWN mpi4py-mpi-err-unknown643748 +Ref: 5c1643748 +Ref: reference/mpi4py MPI ERR_UNKNOWN mpi4py MPI ERR_UNKNOWN643813 +Ref: 121643813 +Ref: mpi4py MPI ERR_UNKNOWN-Footnote-1643953 +Ref: mpi4py MPI ERR_UNKNOWN-Footnote-2644014 +Node: mpi4py MPI ERR_INTERN644075 +Ref: reference/mpi4py MPI ERR_INTERN doc644207 +Ref: 5c2644207 +Ref: reference/mpi4py MPI ERR_INTERN mpi4py-mpi-err-intern644207 +Ref: 5c3644207 +Ref: reference/mpi4py MPI ERR_INTERN mpi4py MPI ERR_INTERN644270 +Ref: 122644270 +Ref: mpi4py MPI ERR_INTERN-Footnote-1644407 +Ref: mpi4py MPI ERR_INTERN-Footnote-2644468 +Node: mpi4py MPI ERR_KEYVAL644529 +Ref: reference/mpi4py MPI ERR_KEYVAL doc644660 +Ref: 5c4644660 +Ref: reference/mpi4py MPI ERR_KEYVAL mpi4py-mpi-err-keyval644660 +Ref: 5c5644660 +Ref: reference/mpi4py MPI ERR_KEYVAL mpi4py MPI ERR_KEYVAL644723 +Ref: 126644723 +Ref: mpi4py MPI ERR_KEYVAL-Footnote-1644860 +Ref: mpi4py MPI ERR_KEYVAL-Footnote-2644921 +Node: mpi4py MPI ERR_NO_MEM644982 +Ref: reference/mpi4py MPI ERR_NO_MEM doc645115 +Ref: 5c6645115 +Ref: reference/mpi4py MPI ERR_NO_MEM mpi4py-mpi-err-no-mem645115 +Ref: 5c7645115 +Ref: reference/mpi4py MPI ERR_NO_MEM mpi4py MPI ERR_NO_MEM645178 +Ref: 138645178 +Ref: mpi4py MPI ERR_NO_MEM-Footnote-1645315 +Ref: mpi4py MPI ERR_NO_MEM-Footnote-2645376 +Node: mpi4py MPI ERR_INFO_KEY645437 +Ref: reference/mpi4py MPI ERR_INFO_KEY doc645574 +Ref: 5c8645574 +Ref: reference/mpi4py MPI ERR_INFO_KEY mpi4py-mpi-err-info-key645574 +Ref: 5c9645574 +Ref: reference/mpi4py MPI ERR_INFO_KEY mpi4py MPI ERR_INFO_KEY645641 +Ref: 127645641 +Ref: mpi4py MPI ERR_INFO_KEY-Footnote-1645784 +Ref: mpi4py MPI ERR_INFO_KEY-Footnote-2645845 +Node: mpi4py MPI ERR_INFO_VALUE645906 +Ref: reference/mpi4py MPI ERR_INFO_VALUE doc646047 +Ref: 5ca646047 +Ref: reference/mpi4py MPI ERR_INFO_VALUE mpi4py-mpi-err-info-value646047 +Ref: 5cb646047 +Ref: reference/mpi4py MPI ERR_INFO_VALUE mpi4py MPI ERR_INFO_VALUE646118 +Ref: 128646118 +Ref: mpi4py MPI ERR_INFO_VALUE-Footnote-1646267 +Ref: mpi4py MPI ERR_INFO_VALUE-Footnote-2646328 +Node: mpi4py MPI ERR_INFO_NOKEY646389 +Ref: reference/mpi4py MPI ERR_INFO_NOKEY doc646527 +Ref: 5cc646527 +Ref: reference/mpi4py MPI ERR_INFO_NOKEY mpi4py-mpi-err-info-nokey646527 +Ref: 5cd646527 +Ref: reference/mpi4py MPI ERR_INFO_NOKEY mpi4py MPI ERR_INFO_NOKEY646598 +Ref: 129646598 +Ref: mpi4py MPI ERR_INFO_NOKEY-Footnote-1646747 +Ref: mpi4py MPI ERR_INFO_NOKEY-Footnote-2646808 +Node: mpi4py MPI ERR_SPAWN646869 +Ref: reference/mpi4py MPI ERR_SPAWN doc647001 +Ref: 5ce647001 +Ref: reference/mpi4py MPI ERR_SPAWN mpi4py-mpi-err-spawn647001 +Ref: 5cf647001 +Ref: reference/mpi4py MPI ERR_SPAWN mpi4py MPI ERR_SPAWN647062 +Ref: 13d647062 +Ref: mpi4py MPI ERR_SPAWN-Footnote-1647196 +Ref: mpi4py MPI ERR_SPAWN-Footnote-2647257 +Node: mpi4py MPI ERR_PORT647318 +Ref: reference/mpi4py MPI ERR_PORT doc647447 +Ref: 5d0647447 +Ref: reference/mpi4py MPI ERR_PORT mpi4py-mpi-err-port647447 +Ref: 5d1647447 +Ref: reference/mpi4py MPI ERR_PORT mpi4py MPI ERR_PORT647506 +Ref: 13a647506 +Ref: mpi4py MPI ERR_PORT-Footnote-1647637 +Ref: mpi4py MPI ERR_PORT-Footnote-2647698 +Node: mpi4py MPI ERR_SERVICE647759 +Ref: reference/mpi4py MPI ERR_SERVICE doc647887 +Ref: 5d2647887 +Ref: reference/mpi4py MPI ERR_SERVICE mpi4py-mpi-err-service647887 +Ref: 5d3647887 +Ref: reference/mpi4py MPI ERR_SERVICE mpi4py MPI ERR_SERVICE647952 +Ref: 13c647952 +Ref: mpi4py MPI ERR_SERVICE-Footnote-1648092 +Ref: mpi4py MPI ERR_SERVICE-Footnote-2648153 +Node: mpi4py MPI ERR_NAME648214 +Ref: reference/mpi4py MPI ERR_NAME doc648350 +Ref: 5d4648350 +Ref: reference/mpi4py MPI ERR_NAME mpi4py-mpi-err-name648350 +Ref: 5d5648350 +Ref: reference/mpi4py MPI ERR_NAME mpi4py MPI ERR_NAME648409 +Ref: 137648409 +Ref: mpi4py MPI ERR_NAME-Footnote-1648540 +Ref: mpi4py MPI ERR_NAME-Footnote-2648601 +Node: mpi4py MPI ERR_PROC_ABORTED648662 +Ref: reference/mpi4py MPI ERR_PROC_ABORTED doc648795 +Ref: 5d6648795 +Ref: reference/mpi4py MPI ERR_PROC_ABORTED mpi4py-mpi-err-proc-aborted648795 +Ref: 5d7648795 +Ref: reference/mpi4py MPI ERR_PROC_ABORTED mpi4py MPI ERR_PROC_ABORTED648870 +Ref: 558648870 +Ref: mpi4py MPI ERR_PROC_ABORTED-Footnote-1649025 +Ref: mpi4py MPI ERR_PROC_ABORTED-Footnote-2649086 +Node: mpi4py MPI ERR_BASE649147 +Ref: reference/mpi4py MPI ERR_BASE doc649280 +Ref: 5d8649280 +Ref: reference/mpi4py MPI ERR_BASE mpi4py-mpi-err-base649280 +Ref: 5d9649280 +Ref: reference/mpi4py MPI ERR_BASE mpi4py MPI ERR_BASE649339 +Ref: 13e649339 +Ref: mpi4py MPI ERR_BASE-Footnote-1649470 +Ref: mpi4py MPI ERR_BASE-Footnote-2649531 +Node: mpi4py MPI ERR_SIZE649592 +Ref: reference/mpi4py MPI ERR_SIZE doc649717 +Ref: 5da649717 +Ref: reference/mpi4py MPI ERR_SIZE mpi4py-mpi-err-size649717 +Ref: 5db649717 +Ref: reference/mpi4py MPI ERR_SIZE mpi4py MPI ERR_SIZE649776 +Ref: 13f649776 +Ref: mpi4py MPI ERR_SIZE-Footnote-1649907 +Ref: mpi4py MPI ERR_SIZE-Footnote-2649968 +Node: mpi4py MPI ERR_DISP650029 +Ref: reference/mpi4py MPI ERR_DISP doc650156 +Ref: 5dc650156 +Ref: reference/mpi4py MPI ERR_DISP mpi4py-mpi-err-disp650156 +Ref: 5dd650156 +Ref: reference/mpi4py MPI ERR_DISP mpi4py MPI ERR_DISP650215 +Ref: 140650215 +Ref: mpi4py MPI ERR_DISP-Footnote-1650346 +Ref: mpi4py MPI ERR_DISP-Footnote-2650407 +Node: mpi4py MPI ERR_ASSERT650468 +Ref: reference/mpi4py MPI ERR_ASSERT doc650599 +Ref: 5de650599 +Ref: reference/mpi4py MPI ERR_ASSERT mpi4py-mpi-err-assert650599 +Ref: 5df650599 +Ref: reference/mpi4py MPI ERR_ASSERT mpi4py MPI ERR_ASSERT650662 +Ref: 141650662 +Ref: mpi4py MPI ERR_ASSERT-Footnote-1650799 +Ref: mpi4py MPI ERR_ASSERT-Footnote-2650860 +Node: mpi4py MPI ERR_LOCKTYPE650921 +Ref: reference/mpi4py MPI ERR_LOCKTYPE doc651060 +Ref: 5e0651060 +Ref: reference/mpi4py MPI ERR_LOCKTYPE mpi4py-mpi-err-locktype651060 +Ref: 5e1651060 +Ref: reference/mpi4py MPI ERR_LOCKTYPE mpi4py MPI ERR_LOCKTYPE651127 +Ref: 142651127 +Ref: mpi4py MPI ERR_LOCKTYPE-Footnote-1651270 +Ref: mpi4py MPI ERR_LOCKTYPE-Footnote-2651331 +Node: mpi4py MPI ERR_RMA_CONFLICT651392 +Ref: reference/mpi4py MPI ERR_RMA_CONFLICT doc651533 +Ref: 5e2651533 +Ref: reference/mpi4py MPI ERR_RMA_CONFLICT mpi4py-mpi-err-rma-conflict651533 +Ref: 5e3651533 +Ref: reference/mpi4py MPI ERR_RMA_CONFLICT mpi4py MPI ERR_RMA_CONFLICT651608 +Ref: 143651608 +Ref: mpi4py MPI ERR_RMA_CONFLICT-Footnote-1651763 +Ref: mpi4py MPI ERR_RMA_CONFLICT-Footnote-2651824 +Node: mpi4py MPI ERR_RMA_SYNC651885 +Ref: reference/mpi4py MPI ERR_RMA_SYNC doc652027 +Ref: 5e4652027 +Ref: reference/mpi4py MPI ERR_RMA_SYNC mpi4py-mpi-err-rma-sync652027 +Ref: 5e5652027 +Ref: reference/mpi4py MPI ERR_RMA_SYNC mpi4py MPI ERR_RMA_SYNC652094 +Ref: 144652094 +Ref: mpi4py MPI ERR_RMA_SYNC-Footnote-1652237 +Ref: mpi4py MPI ERR_RMA_SYNC-Footnote-2652298 +Node: mpi4py MPI ERR_RMA_RANGE652359 +Ref: reference/mpi4py MPI ERR_RMA_RANGE doc652499 +Ref: 5e6652499 +Ref: reference/mpi4py MPI ERR_RMA_RANGE mpi4py-mpi-err-rma-range652499 +Ref: 5e7652499 +Ref: reference/mpi4py MPI ERR_RMA_RANGE mpi4py MPI ERR_RMA_RANGE652568 +Ref: 145652568 +Ref: mpi4py MPI ERR_RMA_RANGE-Footnote-1652714 +Ref: mpi4py MPI ERR_RMA_RANGE-Footnote-2652775 +Node: mpi4py MPI ERR_RMA_ATTACH652836 +Ref: reference/mpi4py MPI ERR_RMA_ATTACH doc652978 +Ref: 5e8652978 +Ref: reference/mpi4py MPI ERR_RMA_ATTACH mpi4py-mpi-err-rma-attach652978 +Ref: 5e9652978 +Ref: reference/mpi4py MPI ERR_RMA_ATTACH mpi4py MPI ERR_RMA_ATTACH653049 +Ref: 146653049 +Ref: mpi4py MPI ERR_RMA_ATTACH-Footnote-1653198 +Ref: mpi4py MPI ERR_RMA_ATTACH-Footnote-2653259 +Node: mpi4py MPI ERR_RMA_SHARED653320 +Ref: reference/mpi4py MPI ERR_RMA_SHARED doc653463 +Ref: 5ea653463 +Ref: reference/mpi4py MPI ERR_RMA_SHARED mpi4py-mpi-err-rma-shared653463 +Ref: 5eb653463 +Ref: reference/mpi4py MPI ERR_RMA_SHARED mpi4py MPI ERR_RMA_SHARED653534 +Ref: 147653534 +Ref: mpi4py MPI ERR_RMA_SHARED-Footnote-1653683 +Ref: mpi4py MPI ERR_RMA_SHARED-Footnote-2653744 +Node: mpi4py MPI ERR_RMA_FLAVOR653805 +Ref: reference/mpi4py MPI ERR_RMA_FLAVOR doc653946 +Ref: 5ec653946 +Ref: reference/mpi4py MPI ERR_RMA_FLAVOR mpi4py-mpi-err-rma-flavor653946 +Ref: 5ed653946 +Ref: reference/mpi4py MPI ERR_RMA_FLAVOR mpi4py MPI ERR_RMA_FLAVOR654017 +Ref: 148654017 +Ref: mpi4py MPI ERR_RMA_FLAVOR-Footnote-1654166 +Ref: mpi4py MPI ERR_RMA_FLAVOR-Footnote-2654227 +Node: mpi4py MPI ERR_BAD_FILE654288 +Ref: reference/mpi4py MPI ERR_BAD_FILE doc654431 +Ref: 5ee654431 +Ref: reference/mpi4py MPI ERR_BAD_FILE mpi4py-mpi-err-bad-file654431 +Ref: 5ef654431 +Ref: reference/mpi4py MPI ERR_BAD_FILE mpi4py MPI ERR_BAD_FILE654498 +Ref: 12c654498 +Ref: mpi4py MPI ERR_BAD_FILE-Footnote-1654641 +Ref: mpi4py MPI ERR_BAD_FILE-Footnote-2654702 +Node: mpi4py MPI ERR_NO_SUCH_FILE654763 +Ref: reference/mpi4py MPI ERR_NO_SUCH_FILE doc654907 +Ref: 5f0654907 +Ref: reference/mpi4py MPI ERR_NO_SUCH_FILE mpi4py-mpi-err-no-such-file654907 +Ref: 5f1654907 +Ref: reference/mpi4py MPI ERR_NO_SUCH_FILE mpi4py MPI ERR_NO_SUCH_FILE654982 +Ref: 130654982 +Ref: mpi4py MPI ERR_NO_SUCH_FILE-Footnote-1655137 +Ref: mpi4py MPI ERR_NO_SUCH_FILE-Footnote-2655198 +Node: mpi4py MPI ERR_FILE_EXISTS655259 +Ref: reference/mpi4py MPI ERR_FILE_EXISTS doc655406 +Ref: 5f2655406 +Ref: reference/mpi4py MPI ERR_FILE_EXISTS mpi4py-mpi-err-file-exists655406 +Ref: 5f3655406 +Ref: reference/mpi4py MPI ERR_FILE_EXISTS mpi4py MPI ERR_FILE_EXISTS655479 +Ref: 12d655479 +Ref: mpi4py MPI ERR_FILE_EXISTS-Footnote-1655631 +Ref: mpi4py MPI ERR_FILE_EXISTS-Footnote-2655692 +Node: mpi4py MPI ERR_FILE_IN_USE655753 +Ref: reference/mpi4py MPI ERR_FILE_IN_USE doc655893 +Ref: 5f4655893 +Ref: reference/mpi4py MPI ERR_FILE_IN_USE mpi4py-mpi-err-file-in-use655893 +Ref: 5f5655893 +Ref: reference/mpi4py MPI ERR_FILE_IN_USE mpi4py MPI ERR_FILE_IN_USE655966 +Ref: 12e655966 +Ref: mpi4py MPI ERR_FILE_IN_USE-Footnote-1656118 +Ref: mpi4py MPI ERR_FILE_IN_USE-Footnote-2656179 +Node: mpi4py MPI ERR_AMODE656240 +Ref: reference/mpi4py MPI ERR_AMODE doc656375 +Ref: 5f6656375 +Ref: reference/mpi4py MPI ERR_AMODE mpi4py-mpi-err-amode656375 +Ref: 5f7656375 +Ref: reference/mpi4py MPI ERR_AMODE mpi4py MPI ERR_AMODE656436 +Ref: 12b656436 +Ref: mpi4py MPI ERR_AMODE-Footnote-1656570 +Ref: mpi4py MPI ERR_AMODE-Footnote-2656631 +Node: mpi4py MPI ERR_ACCESS656692 +Ref: reference/mpi4py MPI ERR_ACCESS doc656825 +Ref: 5f8656825 +Ref: reference/mpi4py MPI ERR_ACCESS mpi4py-mpi-err-access656825 +Ref: 5f9656825 +Ref: reference/mpi4py MPI ERR_ACCESS mpi4py MPI ERR_ACCESS656888 +Ref: 12a656888 +Ref: mpi4py MPI ERR_ACCESS-Footnote-1657025 +Ref: mpi4py MPI ERR_ACCESS-Footnote-2657086 +Node: mpi4py MPI ERR_READ_ONLY657147 +Ref: reference/mpi4py MPI ERR_READ_ONLY doc657283 +Ref: 5fa657283 +Ref: reference/mpi4py MPI ERR_READ_ONLY mpi4py-mpi-err-read-only657283 +Ref: 5fb657283 +Ref: reference/mpi4py MPI ERR_READ_ONLY mpi4py MPI ERR_READ_ONLY657352 +Ref: 132657352 +Ref: mpi4py MPI ERR_READ_ONLY-Footnote-1657498 +Ref: mpi4py MPI ERR_READ_ONLY-Footnote-2657559 +Node: mpi4py MPI ERR_NO_SPACE657620 +Ref: reference/mpi4py MPI ERR_NO_SPACE doc657755 +Ref: 5fc657755 +Ref: reference/mpi4py MPI ERR_NO_SPACE mpi4py-mpi-err-no-space657755 +Ref: 5fd657755 +Ref: reference/mpi4py MPI ERR_NO_SPACE mpi4py MPI ERR_NO_SPACE657822 +Ref: 12f657822 +Ref: mpi4py MPI ERR_NO_SPACE-Footnote-1657965 +Ref: mpi4py MPI ERR_NO_SPACE-Footnote-2658026 +Node: mpi4py MPI ERR_QUOTA658087 +Ref: reference/mpi4py MPI ERR_QUOTA doc658221 +Ref: 5fe658221 +Ref: reference/mpi4py MPI ERR_QUOTA mpi4py-mpi-err-quota658221 +Ref: 5ff658221 +Ref: reference/mpi4py MPI ERR_QUOTA mpi4py MPI ERR_QUOTA658282 +Ref: 13b658282 +Ref: mpi4py MPI ERR_QUOTA-Footnote-1658416 +Ref: mpi4py MPI ERR_QUOTA-Footnote-2658477 +Node: mpi4py MPI ERR_NOT_SAME658538 +Ref: reference/mpi4py MPI ERR_NOT_SAME doc658666 +Ref: 600658666 +Ref: reference/mpi4py MPI ERR_NOT_SAME mpi4py-mpi-err-not-same658666 +Ref: 601658666 +Ref: reference/mpi4py MPI ERR_NOT_SAME mpi4py MPI ERR_NOT_SAME658733 +Ref: 139658733 +Ref: mpi4py MPI ERR_NOT_SAME-Footnote-1658876 +Ref: mpi4py MPI ERR_NOT_SAME-Footnote-2658937 +Node: mpi4py MPI ERR_IO658998 +Ref: reference/mpi4py MPI ERR_IO doc659142 +Ref: 602659142 +Ref: reference/mpi4py MPI ERR_IO mpi4py-mpi-err-io659142 +Ref: 603659142 +Ref: reference/mpi4py MPI ERR_IO mpi4py MPI ERR_IO659197 +Ref: 131659197 +Ref: mpi4py MPI ERR_IO-Footnote-1659322 +Ref: mpi4py MPI ERR_IO-Footnote-2659383 +Node: mpi4py MPI ERR_UNSUPPORTED_OPERATION659444 +Ref: reference/mpi4py MPI ERR_UNSUPPORTED_OPERATION doc659599 +Ref: 604659599 +Ref: reference/mpi4py MPI ERR_UNSUPPORTED_OPERATION mpi4py-mpi-err-unsupported-operation659599 +Ref: 605659599 +Ref: reference/mpi4py MPI ERR_UNSUPPORTED_OPERATION mpi4py MPI ERR_UNSUPPORTED_OPERATION659692 +Ref: 136659692 +Ref: mpi4py MPI ERR_UNSUPPORTED_OPERATION-Footnote-1659884 +Ref: mpi4py MPI ERR_UNSUPPORTED_OPERATION-Footnote-2659945 +Node: mpi4py MPI ERR_UNSUPPORTED_DATAREP660006 +Ref: reference/mpi4py MPI ERR_UNSUPPORTED_DATAREP doc660169 +Ref: 606660169 +Ref: reference/mpi4py MPI ERR_UNSUPPORTED_DATAREP mpi4py-mpi-err-unsupported-datarep660169 +Ref: 607660169 +Ref: reference/mpi4py MPI ERR_UNSUPPORTED_DATAREP mpi4py MPI ERR_UNSUPPORTED_DATAREP660258 +Ref: 135660258 +Ref: mpi4py MPI ERR_UNSUPPORTED_DATAREP-Footnote-1660444 +Ref: mpi4py MPI ERR_UNSUPPORTED_DATAREP-Footnote-2660505 +Node: mpi4py MPI ERR_CONVERSION660566 +Ref: reference/mpi4py MPI ERR_CONVERSION doc660719 +Ref: 608660719 +Ref: reference/mpi4py MPI ERR_CONVERSION mpi4py-mpi-err-conversion660719 +Ref: 609660719 +Ref: reference/mpi4py MPI ERR_CONVERSION mpi4py MPI ERR_CONVERSION660790 +Ref: 133660790 +Ref: mpi4py MPI ERR_CONVERSION-Footnote-1660939 +Ref: mpi4py MPI ERR_CONVERSION-Footnote-2661000 +Node: mpi4py MPI ERR_DUP_DATAREP661061 +Ref: reference/mpi4py MPI ERR_DUP_DATAREP doc661210 +Ref: 60a661210 +Ref: reference/mpi4py MPI ERR_DUP_DATAREP mpi4py-mpi-err-dup-datarep661210 +Ref: 60b661210 +Ref: reference/mpi4py MPI ERR_DUP_DATAREP mpi4py MPI ERR_DUP_DATAREP661283 +Ref: 134661283 +Ref: mpi4py MPI ERR_DUP_DATAREP-Footnote-1661435 +Ref: mpi4py MPI ERR_DUP_DATAREP-Footnote-2661496 +Node: mpi4py MPI ERR_VALUE_TOO_LARGE661557 +Ref: reference/mpi4py MPI ERR_VALUE_TOO_LARGE doc661703 +Ref: 60c661703 +Ref: reference/mpi4py MPI ERR_VALUE_TOO_LARGE mpi4py-mpi-err-value-too-large661703 +Ref: 60d661703 +Ref: reference/mpi4py MPI ERR_VALUE_TOO_LARGE mpi4py MPI ERR_VALUE_TOO_LARGE661784 +Ref: 559661784 +Ref: mpi4py MPI ERR_VALUE_TOO_LARGE-Footnote-1661948 +Ref: mpi4py MPI ERR_VALUE_TOO_LARGE-Footnote-2662009 +Node: mpi4py MPI ERR_REVOKED662070 +Ref: reference/mpi4py MPI ERR_REVOKED doc662216 +Ref: 60e662216 +Ref: reference/mpi4py MPI ERR_REVOKED mpi4py-mpi-err-revoked662216 +Ref: 60f662216 +Ref: reference/mpi4py MPI ERR_REVOKED mpi4py MPI ERR_REVOKED662281 +Ref: 55a662281 +Ref: mpi4py MPI ERR_REVOKED-Footnote-1662421 +Ref: mpi4py MPI ERR_REVOKED-Footnote-2662482 +Node: mpi4py MPI ERR_PROC_FAILED662543 +Ref: reference/mpi4py MPI ERR_PROC_FAILED doc662693 +Ref: 610662693 +Ref: reference/mpi4py MPI ERR_PROC_FAILED mpi4py-mpi-err-proc-failed662693 +Ref: 611662693 +Ref: reference/mpi4py MPI ERR_PROC_FAILED mpi4py MPI ERR_PROC_FAILED662766 +Ref: 55b662766 +Ref: mpi4py MPI ERR_PROC_FAILED-Footnote-1662918 +Ref: mpi4py MPI ERR_PROC_FAILED-Footnote-2662979 +Node: mpi4py MPI ERR_PROC_FAILED_PENDING663040 +Ref: reference/mpi4py MPI ERR_PROC_FAILED_PENDING doc663186 +Ref: 612663186 +Ref: reference/mpi4py MPI ERR_PROC_FAILED_PENDING mpi4py-mpi-err-proc-failed-pending663186 +Ref: 613663186 +Ref: reference/mpi4py MPI ERR_PROC_FAILED_PENDING mpi4py MPI ERR_PROC_FAILED_PENDING663275 +Ref: 55c663275 +Ref: mpi4py MPI ERR_PROC_FAILED_PENDING-Footnote-1663461 +Ref: mpi4py MPI ERR_PROC_FAILED_PENDING-Footnote-2663522 +Node: mpi4py MPI ORDER_C663583 +Ref: reference/mpi4py MPI ORDER_C doc663727 +Ref: 614663727 +Ref: reference/mpi4py MPI ORDER_C mpi4py-mpi-order-c663727 +Ref: 615663727 +Ref: reference/mpi4py MPI ORDER_C mpi4py MPI ORDER_C663784 +Ref: 149663784 +Ref: mpi4py MPI ORDER_C-Footnote-1663912 +Ref: mpi4py MPI ORDER_C-Footnote-2663973 +Node: mpi4py MPI ORDER_FORTRAN664034 +Ref: reference/mpi4py MPI ORDER_FORTRAN doc664162 +Ref: 616664162 +Ref: reference/mpi4py MPI ORDER_FORTRAN mpi4py-mpi-order-fortran664162 +Ref: 617664162 +Ref: reference/mpi4py MPI ORDER_FORTRAN mpi4py MPI ORDER_FORTRAN664231 +Ref: 14b664231 +Ref: mpi4py MPI ORDER_FORTRAN-Footnote-1664377 +Ref: mpi4py MPI ORDER_FORTRAN-Footnote-2664438 +Node: mpi4py MPI ORDER_F664499 +Ref: reference/mpi4py MPI ORDER_F doc664637 +Ref: 618664637 +Ref: reference/mpi4py MPI ORDER_F mpi4py-mpi-order-f664637 +Ref: 619664637 +Ref: reference/mpi4py MPI ORDER_F mpi4py MPI ORDER_F664694 +Ref: 14a664694 +Ref: mpi4py MPI ORDER_F-Footnote-1664822 +Ref: mpi4py MPI ORDER_F-Footnote-2664883 +Node: mpi4py MPI TYPECLASS_INTEGER664944 +Ref: reference/mpi4py MPI TYPECLASS_INTEGER doc665083 +Ref: 61a665083 +Ref: reference/mpi4py MPI TYPECLASS_INTEGER mpi4py-mpi-typeclass-integer665083 +Ref: 61b665083 +Ref: reference/mpi4py MPI TYPECLASS_INTEGER mpi4py MPI TYPECLASS_INTEGER665160 +Ref: 14c665160 +Ref: mpi4py MPI TYPECLASS_INTEGER-Footnote-1665318 +Ref: mpi4py MPI TYPECLASS_INTEGER-Footnote-2665379 +Node: mpi4py MPI TYPECLASS_REAL665440 +Ref: reference/mpi4py MPI TYPECLASS_REAL doc665589 +Ref: 61c665589 +Ref: reference/mpi4py MPI TYPECLASS_REAL mpi4py-mpi-typeclass-real665589 +Ref: 61d665589 +Ref: reference/mpi4py MPI TYPECLASS_REAL mpi4py MPI TYPECLASS_REAL665660 +Ref: 14d665660 +Ref: mpi4py MPI TYPECLASS_REAL-Footnote-1665809 +Ref: mpi4py MPI TYPECLASS_REAL-Footnote-2665870 +Node: mpi4py MPI TYPECLASS_COMPLEX665931 +Ref: reference/mpi4py MPI TYPECLASS_COMPLEX doc666078 +Ref: 61e666078 +Ref: reference/mpi4py MPI TYPECLASS_COMPLEX mpi4py-mpi-typeclass-complex666078 +Ref: 61f666078 +Ref: reference/mpi4py MPI TYPECLASS_COMPLEX mpi4py MPI TYPECLASS_COMPLEX666155 +Ref: 14e666155 +Ref: mpi4py MPI TYPECLASS_COMPLEX-Footnote-1666313 +Ref: mpi4py MPI TYPECLASS_COMPLEX-Footnote-2666374 +Node: mpi4py MPI DISTRIBUTE_NONE666435 +Ref: reference/mpi4py MPI DISTRIBUTE_NONE doc666584 +Ref: 620666584 +Ref: reference/mpi4py MPI DISTRIBUTE_NONE mpi4py-mpi-distribute-none666584 +Ref: 621666584 +Ref: reference/mpi4py MPI DISTRIBUTE_NONE mpi4py MPI DISTRIBUTE_NONE666657 +Ref: 14f666657 +Ref: mpi4py MPI DISTRIBUTE_NONE-Footnote-1666809 +Ref: mpi4py MPI DISTRIBUTE_NONE-Footnote-2666870 +Node: mpi4py MPI DISTRIBUTE_BLOCK666931 +Ref: reference/mpi4py MPI DISTRIBUTE_BLOCK doc667080 +Ref: 622667080 +Ref: reference/mpi4py MPI DISTRIBUTE_BLOCK mpi4py-mpi-distribute-block667080 +Ref: 623667080 +Ref: reference/mpi4py MPI DISTRIBUTE_BLOCK mpi4py MPI DISTRIBUTE_BLOCK667155 +Ref: 150667155 +Ref: mpi4py MPI DISTRIBUTE_BLOCK-Footnote-1667310 +Ref: mpi4py MPI DISTRIBUTE_BLOCK-Footnote-2667371 +Node: mpi4py MPI DISTRIBUTE_CYCLIC667432 +Ref: reference/mpi4py MPI DISTRIBUTE_CYCLIC doc667586 +Ref: 624667586 +Ref: reference/mpi4py MPI DISTRIBUTE_CYCLIC mpi4py-mpi-distribute-cyclic667586 +Ref: 625667586 +Ref: reference/mpi4py MPI DISTRIBUTE_CYCLIC mpi4py MPI DISTRIBUTE_CYCLIC667663 +Ref: 151667663 +Ref: mpi4py MPI DISTRIBUTE_CYCLIC-Footnote-1667821 +Ref: mpi4py MPI DISTRIBUTE_CYCLIC-Footnote-2667882 +Node: mpi4py MPI DISTRIBUTE_DFLT_DARG667943 +Ref: reference/mpi4py MPI DISTRIBUTE_DFLT_DARG doc668095 +Ref: 626668095 +Ref: reference/mpi4py MPI DISTRIBUTE_DFLT_DARG mpi4py-mpi-distribute-dflt-darg668095 +Ref: 627668095 +Ref: reference/mpi4py MPI DISTRIBUTE_DFLT_DARG mpi4py MPI DISTRIBUTE_DFLT_DARG668178 +Ref: 152668178 +Ref: mpi4py MPI DISTRIBUTE_DFLT_DARG-Footnote-1668345 +Ref: mpi4py MPI DISTRIBUTE_DFLT_DARG-Footnote-2668406 +Node: mpi4py MPI COMBINER_NAMED668467 +Ref: reference/mpi4py MPI COMBINER_NAMED doc668614 +Ref: 628668614 +Ref: reference/mpi4py MPI COMBINER_NAMED mpi4py-mpi-combiner-named668614 +Ref: 629668614 +Ref: reference/mpi4py MPI COMBINER_NAMED mpi4py MPI COMBINER_NAMED668685 +Ref: 153668685 +Ref: mpi4py MPI COMBINER_NAMED-Footnote-1668834 +Ref: mpi4py MPI COMBINER_NAMED-Footnote-2668895 +Node: mpi4py MPI COMBINER_DUP668956 +Ref: reference/mpi4py MPI COMBINER_DUP doc669102 +Ref: 62a669102 +Ref: reference/mpi4py MPI COMBINER_DUP mpi4py-mpi-combiner-dup669102 +Ref: 62b669102 +Ref: reference/mpi4py MPI COMBINER_DUP mpi4py MPI COMBINER_DUP669169 +Ref: 154669169 +Ref: mpi4py MPI COMBINER_DUP-Footnote-1669312 +Ref: mpi4py MPI COMBINER_DUP-Footnote-2669373 +Node: mpi4py MPI COMBINER_CONTIGUOUS669434 +Ref: reference/mpi4py MPI COMBINER_CONTIGUOUS doc669581 +Ref: 62c669581 +Ref: reference/mpi4py MPI COMBINER_CONTIGUOUS mpi4py-mpi-combiner-contiguous669581 +Ref: 62d669581 +Ref: reference/mpi4py MPI COMBINER_CONTIGUOUS mpi4py MPI COMBINER_CONTIGUOUS669662 +Ref: 155669662 +Ref: mpi4py MPI COMBINER_CONTIGUOUS-Footnote-1669826 +Ref: mpi4py MPI COMBINER_CONTIGUOUS-Footnote-2669887 +Node: mpi4py MPI COMBINER_VECTOR669948 +Ref: reference/mpi4py MPI COMBINER_VECTOR doc670099 +Ref: 62e670099 +Ref: reference/mpi4py MPI COMBINER_VECTOR mpi4py-mpi-combiner-vector670099 +Ref: 62f670099 +Ref: reference/mpi4py MPI COMBINER_VECTOR mpi4py MPI COMBINER_VECTOR670172 +Ref: 156670172 +Ref: mpi4py MPI COMBINER_VECTOR-Footnote-1670324 +Ref: mpi4py MPI COMBINER_VECTOR-Footnote-2670385 +Node: mpi4py MPI COMBINER_HVECTOR670446 +Ref: reference/mpi4py MPI COMBINER_HVECTOR doc670594 +Ref: 630670594 +Ref: reference/mpi4py MPI COMBINER_HVECTOR mpi4py-mpi-combiner-hvector670594 +Ref: 631670594 +Ref: reference/mpi4py MPI COMBINER_HVECTOR mpi4py MPI COMBINER_HVECTOR670669 +Ref: 157670669 +Ref: mpi4py MPI COMBINER_HVECTOR-Footnote-1670824 +Ref: mpi4py MPI COMBINER_HVECTOR-Footnote-2670885 +Node: mpi4py MPI COMBINER_INDEXED670946 +Ref: reference/mpi4py MPI COMBINER_INDEXED doc671096 +Ref: 632671096 +Ref: reference/mpi4py MPI COMBINER_INDEXED mpi4py-mpi-combiner-indexed671096 +Ref: 633671096 +Ref: reference/mpi4py MPI COMBINER_INDEXED mpi4py MPI COMBINER_INDEXED671171 +Ref: 158671171 +Ref: mpi4py MPI COMBINER_INDEXED-Footnote-1671326 +Ref: mpi4py MPI COMBINER_INDEXED-Footnote-2671387 +Node: mpi4py MPI COMBINER_HINDEXED671448 +Ref: reference/mpi4py MPI COMBINER_HINDEXED doc671604 +Ref: 634671604 +Ref: reference/mpi4py MPI COMBINER_HINDEXED mpi4py-mpi-combiner-hindexed671604 +Ref: 635671604 +Ref: reference/mpi4py MPI COMBINER_HINDEXED mpi4py MPI COMBINER_HINDEXED671681 +Ref: 159671681 +Ref: mpi4py MPI COMBINER_HINDEXED-Footnote-1671839 +Ref: mpi4py MPI COMBINER_HINDEXED-Footnote-2671900 +Node: mpi4py MPI COMBINER_INDEXED_BLOCK671961 +Ref: reference/mpi4py MPI COMBINER_INDEXED_BLOCK doc672124 +Ref: 636672124 +Ref: reference/mpi4py MPI COMBINER_INDEXED_BLOCK mpi4py-mpi-combiner-indexed-block672124 +Ref: 637672124 +Ref: reference/mpi4py MPI COMBINER_INDEXED_BLOCK mpi4py MPI COMBINER_INDEXED_BLOCK672211 +Ref: 15a672211 +Ref: mpi4py MPI COMBINER_INDEXED_BLOCK-Footnote-1672394 +Ref: mpi4py MPI COMBINER_INDEXED_BLOCK-Footnote-2672455 +Node: mpi4py MPI COMBINER_HINDEXED_BLOCK672516 +Ref: reference/mpi4py MPI COMBINER_HINDEXED_BLOCK doc672677 +Ref: 638672677 +Ref: reference/mpi4py MPI COMBINER_HINDEXED_BLOCK mpi4py-mpi-combiner-hindexed-block672677 +Ref: 639672677 +Ref: reference/mpi4py MPI COMBINER_HINDEXED_BLOCK mpi4py MPI COMBINER_HINDEXED_BLOCK672766 +Ref: 15b672766 +Ref: mpi4py MPI COMBINER_HINDEXED_BLOCK-Footnote-1672952 +Ref: mpi4py MPI COMBINER_HINDEXED_BLOCK-Footnote-2673013 +Node: mpi4py MPI COMBINER_STRUCT673074 +Ref: reference/mpi4py MPI COMBINER_STRUCT doc673230 +Ref: 63a673230 +Ref: reference/mpi4py MPI COMBINER_STRUCT mpi4py-mpi-combiner-struct673230 +Ref: 63b673230 +Ref: reference/mpi4py MPI COMBINER_STRUCT mpi4py MPI COMBINER_STRUCT673303 +Ref: 15c673303 +Ref: mpi4py MPI COMBINER_STRUCT-Footnote-1673455 +Ref: mpi4py MPI COMBINER_STRUCT-Footnote-2673516 +Node: mpi4py MPI COMBINER_SUBARRAY673577 +Ref: reference/mpi4py MPI COMBINER_SUBARRAY doc673725 +Ref: 63c673725 +Ref: reference/mpi4py MPI COMBINER_SUBARRAY mpi4py-mpi-combiner-subarray673725 +Ref: 63d673725 +Ref: reference/mpi4py MPI COMBINER_SUBARRAY mpi4py MPI COMBINER_SUBARRAY673802 +Ref: 15d673802 +Ref: mpi4py MPI COMBINER_SUBARRAY-Footnote-1673960 +Ref: mpi4py MPI COMBINER_SUBARRAY-Footnote-2674021 +Node: mpi4py MPI COMBINER_DARRAY674082 +Ref: reference/mpi4py MPI COMBINER_DARRAY doc674231 +Ref: 63e674231 +Ref: reference/mpi4py MPI COMBINER_DARRAY mpi4py-mpi-combiner-darray674231 +Ref: 63f674231 +Ref: reference/mpi4py MPI COMBINER_DARRAY mpi4py MPI COMBINER_DARRAY674304 +Ref: 15e674304 +Ref: mpi4py MPI COMBINER_DARRAY-Footnote-1674456 +Ref: mpi4py MPI COMBINER_DARRAY-Footnote-2674517 +Node: mpi4py MPI COMBINER_RESIZED674578 +Ref: reference/mpi4py MPI COMBINER_RESIZED doc674730 +Ref: 640674730 +Ref: reference/mpi4py MPI COMBINER_RESIZED mpi4py-mpi-combiner-resized674730 +Ref: 641674730 +Ref: reference/mpi4py MPI COMBINER_RESIZED mpi4py MPI COMBINER_RESIZED674805 +Ref: 15f674805 +Ref: mpi4py MPI COMBINER_RESIZED-Footnote-1674960 +Ref: mpi4py MPI COMBINER_RESIZED-Footnote-2675021 +Node: mpi4py MPI COMBINER_VALUE_INDEX675082 +Ref: reference/mpi4py MPI COMBINER_VALUE_INDEX doc675239 +Ref: 642675239 +Ref: reference/mpi4py MPI COMBINER_VALUE_INDEX mpi4py-mpi-combiner-value-index675239 +Ref: 643675239 +Ref: reference/mpi4py MPI COMBINER_VALUE_INDEX mpi4py MPI COMBINER_VALUE_INDEX675322 +Ref: 160675322 +Ref: mpi4py MPI COMBINER_VALUE_INDEX-Footnote-1675489 +Ref: mpi4py MPI COMBINER_VALUE_INDEX-Footnote-2675550 +Node: mpi4py MPI COMBINER_F90_INTEGER675611 +Ref: reference/mpi4py MPI COMBINER_F90_INTEGER doc675769 +Ref: 644675769 +Ref: reference/mpi4py MPI COMBINER_F90_INTEGER mpi4py-mpi-combiner-f90-integer675769 +Ref: 645675769 +Ref: reference/mpi4py MPI COMBINER_F90_INTEGER mpi4py MPI COMBINER_F90_INTEGER675852 +Ref: 163675852 +Ref: mpi4py MPI COMBINER_F90_INTEGER-Footnote-1676019 +Ref: mpi4py MPI COMBINER_F90_INTEGER-Footnote-2676080 +Node: mpi4py MPI COMBINER_F90_REAL676141 +Ref: reference/mpi4py MPI COMBINER_F90_REAL doc676299 +Ref: 646676299 +Ref: reference/mpi4py MPI COMBINER_F90_REAL mpi4py-mpi-combiner-f90-real676299 +Ref: 647676299 +Ref: reference/mpi4py MPI COMBINER_F90_REAL mpi4py MPI COMBINER_F90_REAL676376 +Ref: 161676376 +Ref: mpi4py MPI COMBINER_F90_REAL-Footnote-1676534 +Ref: mpi4py MPI COMBINER_F90_REAL-Footnote-2676595 +Node: mpi4py MPI COMBINER_F90_COMPLEX676656 +Ref: reference/mpi4py MPI COMBINER_F90_COMPLEX doc676802 +Ref: 648676802 +Ref: reference/mpi4py MPI COMBINER_F90_COMPLEX mpi4py-mpi-combiner-f90-complex676802 +Ref: 649676802 +Ref: reference/mpi4py MPI COMBINER_F90_COMPLEX mpi4py MPI COMBINER_F90_COMPLEX676885 +Ref: 162676885 +Ref: mpi4py MPI COMBINER_F90_COMPLEX-Footnote-1677052 +Ref: mpi4py MPI COMBINER_F90_COMPLEX-Footnote-2677113 +Node: mpi4py MPI F_SOURCE677174 +Ref: reference/mpi4py MPI F_SOURCE doc677308 +Ref: 64a677308 +Ref: reference/mpi4py MPI F_SOURCE mpi4py-mpi-f-source677308 +Ref: 64b677308 +Ref: reference/mpi4py MPI F_SOURCE mpi4py MPI F_SOURCE677367 +Ref: 55d677367 +Ref: mpi4py MPI F_SOURCE-Footnote-1677498 +Ref: mpi4py MPI F_SOURCE-Footnote-2677559 +Node: mpi4py MPI F_TAG677620 +Ref: reference/mpi4py MPI F_TAG doc677741 +Ref: 64c677741 +Ref: reference/mpi4py MPI F_TAG mpi4py-mpi-f-tag677741 +Ref: 64d677741 +Ref: reference/mpi4py MPI F_TAG mpi4py MPI F_TAG677794 +Ref: 55e677794 +Ref: mpi4py MPI F_TAG-Footnote-1677916 +Ref: mpi4py MPI F_TAG-Footnote-2677977 +Node: mpi4py MPI F_ERROR678038 +Ref: reference/mpi4py MPI F_ERROR doc678164 +Ref: 64e678164 +Ref: reference/mpi4py MPI F_ERROR mpi4py-mpi-f-error678164 +Ref: 64f678164 +Ref: reference/mpi4py MPI F_ERROR mpi4py MPI F_ERROR678221 +Ref: 55f678221 +Ref: mpi4py MPI F_ERROR-Footnote-1678349 +Ref: mpi4py MPI F_ERROR-Footnote-2678410 +Node: mpi4py MPI F_STATUS_SIZE678471 +Ref: reference/mpi4py MPI F_STATUS_SIZE doc678597 +Ref: 650678597 +Ref: reference/mpi4py MPI F_STATUS_SIZE mpi4py-mpi-f-status-size678597 +Ref: 651678597 +Ref: reference/mpi4py MPI F_STATUS_SIZE mpi4py MPI F_STATUS_SIZE678666 +Ref: 560678666 +Ref: mpi4py MPI F_STATUS_SIZE-Footnote-1678812 +Ref: mpi4py MPI F_STATUS_SIZE-Footnote-2678873 +Node: mpi4py MPI IDENT678934 +Ref: reference/mpi4py MPI IDENT doc679062 +Ref: 652679062 +Ref: reference/mpi4py MPI IDENT mpi4py-mpi-ident679062 +Ref: 653679062 +Ref: reference/mpi4py MPI IDENT mpi4py MPI IDENT679115 +Ref: 164679115 +Ref: mpi4py MPI IDENT-Footnote-1679237 +Ref: mpi4py MPI IDENT-Footnote-2679298 +Node: mpi4py MPI CONGRUENT679359 +Ref: reference/mpi4py MPI CONGRUENT doc679481 +Ref: 654679481 +Ref: reference/mpi4py MPI CONGRUENT mpi4py-mpi-congruent679481 +Ref: 655679481 +Ref: reference/mpi4py MPI CONGRUENT mpi4py MPI CONGRUENT679542 +Ref: 165679542 +Ref: mpi4py MPI CONGRUENT-Footnote-1679676 +Ref: mpi4py MPI CONGRUENT-Footnote-2679737 +Node: mpi4py MPI SIMILAR679798 +Ref: reference/mpi4py MPI SIMILAR doc679922 +Ref: 656679922 +Ref: reference/mpi4py MPI SIMILAR mpi4py-mpi-similar679922 +Ref: 657679922 +Ref: reference/mpi4py MPI SIMILAR mpi4py MPI SIMILAR679979 +Ref: 166679979 +Ref: mpi4py MPI SIMILAR-Footnote-1680107 +Ref: mpi4py MPI SIMILAR-Footnote-2680168 +Node: mpi4py MPI UNEQUAL680229 +Ref: reference/mpi4py MPI UNEQUAL doc680348 +Ref: 658680348 +Ref: reference/mpi4py MPI UNEQUAL mpi4py-mpi-unequal680348 +Ref: 659680348 +Ref: reference/mpi4py MPI UNEQUAL mpi4py MPI UNEQUAL680405 +Ref: 167680405 +Ref: mpi4py MPI UNEQUAL-Footnote-1680533 +Ref: mpi4py MPI UNEQUAL-Footnote-2680594 +Node: mpi4py MPI CART680655 +Ref: reference/mpi4py MPI CART doc680772 +Ref: 65a680772 +Ref: reference/mpi4py MPI CART mpi4py-mpi-cart680772 +Ref: 65b680772 +Ref: reference/mpi4py MPI CART mpi4py MPI CART680823 +Ref: 168680823 +Ref: mpi4py MPI CART-Footnote-1680942 +Ref: mpi4py MPI CART-Footnote-2681003 +Node: mpi4py MPI GRAPH681064 +Ref: reference/mpi4py MPI GRAPH doc681184 +Ref: 65c681184 +Ref: reference/mpi4py MPI GRAPH mpi4py-mpi-graph681184 +Ref: 65d681184 +Ref: reference/mpi4py MPI GRAPH mpi4py MPI GRAPH681237 +Ref: 169681237 +Ref: mpi4py MPI GRAPH-Footnote-1681359 +Ref: mpi4py MPI GRAPH-Footnote-2681420 +Node: mpi4py MPI DIST_GRAPH681481 +Ref: reference/mpi4py MPI DIST_GRAPH doc681607 +Ref: 65e681607 +Ref: reference/mpi4py MPI DIST_GRAPH mpi4py-mpi-dist-graph681607 +Ref: 65f681607 +Ref: reference/mpi4py MPI DIST_GRAPH mpi4py MPI DIST_GRAPH681670 +Ref: 16a681670 +Ref: mpi4py MPI DIST_GRAPH-Footnote-1681807 +Ref: mpi4py MPI DIST_GRAPH-Footnote-2681868 +Node: mpi4py MPI UNWEIGHTED681929 +Ref: reference/mpi4py MPI UNWEIGHTED doc682063 +Ref: 660682063 +Ref: reference/mpi4py MPI UNWEIGHTED mpi4py-mpi-unweighted682063 +Ref: 661682063 +Ref: reference/mpi4py MPI UNWEIGHTED mpi4py MPI UNWEIGHTED682126 +Ref: 16b682126 +Ref: mpi4py MPI UNWEIGHTED-Footnote-1682263 +Ref: mpi4py MPI UNWEIGHTED-Footnote-2682324 +Node: mpi4py MPI WEIGHTS_EMPTY682385 +Ref: reference/mpi4py MPI WEIGHTS_EMPTY doc682525 +Ref: 662682525 +Ref: reference/mpi4py MPI WEIGHTS_EMPTY mpi4py-mpi-weights-empty682525 +Ref: 663682525 +Ref: reference/mpi4py MPI WEIGHTS_EMPTY mpi4py MPI WEIGHTS_EMPTY682594 +Ref: 16c682594 +Ref: mpi4py MPI WEIGHTS_EMPTY-Footnote-1682740 +Ref: mpi4py MPI WEIGHTS_EMPTY-Footnote-2682801 +Node: mpi4py MPI COMM_TYPE_SHARED682862 +Ref: reference/mpi4py MPI COMM_TYPE_SHARED doc683011 +Ref: 664683011 +Ref: reference/mpi4py MPI COMM_TYPE_SHARED mpi4py-mpi-comm-type-shared683011 +Ref: 665683011 +Ref: reference/mpi4py MPI COMM_TYPE_SHARED mpi4py MPI COMM_TYPE_SHARED683086 +Ref: 16d683086 +Ref: mpi4py MPI COMM_TYPE_SHARED-Footnote-1683241 +Ref: mpi4py MPI COMM_TYPE_SHARED-Footnote-2683302 +Node: mpi4py MPI COMM_TYPE_HW_GUIDED683363 +Ref: reference/mpi4py MPI COMM_TYPE_HW_GUIDED doc683520 +Ref: 666683520 +Ref: reference/mpi4py MPI COMM_TYPE_HW_GUIDED mpi4py-mpi-comm-type-hw-guided683520 +Ref: 667683520 +Ref: reference/mpi4py MPI COMM_TYPE_HW_GUIDED mpi4py MPI COMM_TYPE_HW_GUIDED683601 +Ref: 561683601 +Ref: mpi4py MPI COMM_TYPE_HW_GUIDED-Footnote-1683765 +Ref: mpi4py MPI COMM_TYPE_HW_GUIDED-Footnote-2683826 +Node: mpi4py MPI COMM_TYPE_HW_UNGUIDED683887 +Ref: reference/mpi4py MPI COMM_TYPE_HW_UNGUIDED doc684053 +Ref: 668684053 +Ref: reference/mpi4py MPI COMM_TYPE_HW_UNGUIDED mpi4py-mpi-comm-type-hw-unguided684053 +Ref: 669684053 +Ref: reference/mpi4py MPI COMM_TYPE_HW_UNGUIDED mpi4py MPI COMM_TYPE_HW_UNGUIDED684138 +Ref: 562684138 +Ref: mpi4py MPI COMM_TYPE_HW_UNGUIDED-Footnote-1684318 +Ref: mpi4py MPI COMM_TYPE_HW_UNGUIDED-Footnote-2684379 +Node: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED684440 +Ref: reference/mpi4py MPI COMM_TYPE_RESOURCE_GUIDED doc684601 +Ref: 66a684601 +Ref: reference/mpi4py MPI COMM_TYPE_RESOURCE_GUIDED mpi4py-mpi-comm-type-resource-guided684601 +Ref: 66b684601 +Ref: reference/mpi4py MPI COMM_TYPE_RESOURCE_GUIDED mpi4py MPI COMM_TYPE_RESOURCE_GUIDED684694 +Ref: 563684694 +Ref: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED-Footnote-1684886 +Ref: mpi4py MPI COMM_TYPE_RESOURCE_GUIDED-Footnote-2684947 +Node: mpi4py MPI BSEND_OVERHEAD685008 +Ref: reference/mpi4py MPI BSEND_OVERHEAD doc685164 +Ref: 66c685164 +Ref: reference/mpi4py MPI BSEND_OVERHEAD mpi4py-mpi-bsend-overhead685164 +Ref: 66d685164 +Ref: reference/mpi4py MPI BSEND_OVERHEAD mpi4py MPI BSEND_OVERHEAD685235 +Ref: 16e685235 +Ref: mpi4py MPI BSEND_OVERHEAD-Footnote-1685384 +Ref: mpi4py MPI BSEND_OVERHEAD-Footnote-2685445 +Node: mpi4py MPI BUFFER_AUTOMATIC685506 +Ref: reference/mpi4py MPI BUFFER_AUTOMATIC doc685654 +Ref: 66e685654 +Ref: reference/mpi4py MPI BUFFER_AUTOMATIC mpi4py-mpi-buffer-automatic685654 +Ref: 66f685654 +Ref: reference/mpi4py MPI BUFFER_AUTOMATIC mpi4py MPI BUFFER_AUTOMATIC685729 +Ref: fe685729 +Node: mpi4py MPI WIN_FLAVOR_CREATE685906 +Ref: reference/mpi4py MPI WIN_FLAVOR_CREATE doc686059 +Ref: 670686059 +Ref: reference/mpi4py MPI WIN_FLAVOR_CREATE mpi4py-mpi-win-flavor-create686059 +Ref: 671686059 +Ref: reference/mpi4py MPI WIN_FLAVOR_CREATE mpi4py MPI WIN_FLAVOR_CREATE686136 +Ref: 16f686136 +Ref: mpi4py MPI WIN_FLAVOR_CREATE-Footnote-1686294 +Ref: mpi4py MPI WIN_FLAVOR_CREATE-Footnote-2686355 +Node: mpi4py MPI WIN_FLAVOR_ALLOCATE686416 +Ref: reference/mpi4py MPI WIN_FLAVOR_ALLOCATE doc686571 +Ref: 672686571 +Ref: reference/mpi4py MPI WIN_FLAVOR_ALLOCATE mpi4py-mpi-win-flavor-allocate686571 +Ref: 673686571 +Ref: reference/mpi4py MPI WIN_FLAVOR_ALLOCATE mpi4py MPI WIN_FLAVOR_ALLOCATE686652 +Ref: 170686652 +Ref: mpi4py MPI WIN_FLAVOR_ALLOCATE-Footnote-1686816 +Ref: mpi4py MPI WIN_FLAVOR_ALLOCATE-Footnote-2686877 +Node: mpi4py MPI WIN_FLAVOR_DYNAMIC686938 +Ref: reference/mpi4py MPI WIN_FLAVOR_DYNAMIC doc687093 +Ref: 674687093 +Ref: reference/mpi4py MPI WIN_FLAVOR_DYNAMIC mpi4py-mpi-win-flavor-dynamic687093 +Ref: 675687093 +Ref: reference/mpi4py MPI WIN_FLAVOR_DYNAMIC mpi4py MPI WIN_FLAVOR_DYNAMIC687172 +Ref: 171687172 +Ref: mpi4py MPI WIN_FLAVOR_DYNAMIC-Footnote-1687333 +Ref: mpi4py MPI WIN_FLAVOR_DYNAMIC-Footnote-2687394 +Node: mpi4py MPI WIN_FLAVOR_SHARED687455 +Ref: reference/mpi4py MPI WIN_FLAVOR_SHARED doc687603 +Ref: 676687603 +Ref: reference/mpi4py MPI WIN_FLAVOR_SHARED mpi4py-mpi-win-flavor-shared687603 +Ref: 677687603 +Ref: reference/mpi4py MPI WIN_FLAVOR_SHARED mpi4py MPI WIN_FLAVOR_SHARED687680 +Ref: 172687680 +Ref: mpi4py MPI WIN_FLAVOR_SHARED-Footnote-1687838 +Ref: mpi4py MPI WIN_FLAVOR_SHARED-Footnote-2687899 +Node: mpi4py MPI WIN_SEPARATE687960 +Ref: reference/mpi4py MPI WIN_SEPARATE doc688101 +Ref: 678688101 +Ref: reference/mpi4py MPI WIN_SEPARATE mpi4py-mpi-win-separate688101 +Ref: 679688101 +Ref: reference/mpi4py MPI WIN_SEPARATE mpi4py MPI WIN_SEPARATE688168 +Ref: 173688168 +Ref: mpi4py MPI WIN_SEPARATE-Footnote-1688311 +Ref: mpi4py MPI WIN_SEPARATE-Footnote-2688372 +Node: mpi4py MPI WIN_UNIFIED688433 +Ref: reference/mpi4py MPI WIN_UNIFIED doc688569 +Ref: 67a688569 +Ref: reference/mpi4py MPI WIN_UNIFIED mpi4py-mpi-win-unified688569 +Ref: 67b688569 +Ref: reference/mpi4py MPI WIN_UNIFIED mpi4py MPI WIN_UNIFIED688634 +Ref: 174688634 +Ref: mpi4py MPI WIN_UNIFIED-Footnote-1688774 +Ref: mpi4py MPI WIN_UNIFIED-Footnote-2688835 +Node: mpi4py MPI MODE_NOCHECK688896 +Ref: reference/mpi4py MPI MODE_NOCHECK doc689032 +Ref: 67c689032 +Ref: reference/mpi4py MPI MODE_NOCHECK mpi4py-mpi-mode-nocheck689032 +Ref: 67d689032 +Ref: reference/mpi4py MPI MODE_NOCHECK mpi4py MPI MODE_NOCHECK689099 +Ref: 175689099 +Ref: mpi4py MPI MODE_NOCHECK-Footnote-1689242 +Ref: mpi4py MPI MODE_NOCHECK-Footnote-2689303 +Node: mpi4py MPI MODE_NOSTORE689364 +Ref: reference/mpi4py MPI MODE_NOSTORE doc689499 +Ref: 67e689499 +Ref: reference/mpi4py MPI MODE_NOSTORE mpi4py-mpi-mode-nostore689499 +Ref: 67f689499 +Ref: reference/mpi4py MPI MODE_NOSTORE mpi4py MPI MODE_NOSTORE689566 +Ref: 176689566 +Ref: mpi4py MPI MODE_NOSTORE-Footnote-1689709 +Ref: mpi4py MPI MODE_NOSTORE-Footnote-2689770 +Node: mpi4py MPI MODE_NOPUT689831 +Ref: reference/mpi4py MPI MODE_NOPUT doc689968 +Ref: 680689968 +Ref: reference/mpi4py MPI MODE_NOPUT mpi4py-mpi-mode-noput689968 +Ref: 681689968 +Ref: reference/mpi4py MPI MODE_NOPUT mpi4py MPI MODE_NOPUT690031 +Ref: 177690031 +Ref: mpi4py MPI MODE_NOPUT-Footnote-1690168 +Ref: mpi4py MPI MODE_NOPUT-Footnote-2690229 +Node: mpi4py MPI MODE_NOPRECEDE690290 +Ref: reference/mpi4py MPI MODE_NOPRECEDE doc690429 +Ref: 682690429 +Ref: reference/mpi4py MPI MODE_NOPRECEDE mpi4py-mpi-mode-noprecede690429 +Ref: 683690429 +Ref: reference/mpi4py MPI MODE_NOPRECEDE mpi4py MPI MODE_NOPRECEDE690500 +Ref: 178690500 +Ref: mpi4py MPI MODE_NOPRECEDE-Footnote-1690649 +Ref: mpi4py MPI MODE_NOPRECEDE-Footnote-2690710 +Node: mpi4py MPI MODE_NOSUCCEED690771 +Ref: reference/mpi4py MPI MODE_NOSUCCEED doc690914 +Ref: 684690914 +Ref: reference/mpi4py MPI MODE_NOSUCCEED mpi4py-mpi-mode-nosucceed690914 +Ref: 685690914 +Ref: reference/mpi4py MPI MODE_NOSUCCEED mpi4py MPI MODE_NOSUCCEED690985 +Ref: 179690985 +Ref: mpi4py MPI MODE_NOSUCCEED-Footnote-1691134 +Ref: mpi4py MPI MODE_NOSUCCEED-Footnote-2691195 +Node: mpi4py MPI LOCK_EXCLUSIVE691256 +Ref: reference/mpi4py MPI LOCK_EXCLUSIVE doc691396 +Ref: 686691396 +Ref: reference/mpi4py MPI LOCK_EXCLUSIVE mpi4py-mpi-lock-exclusive691396 +Ref: 687691396 +Ref: reference/mpi4py MPI LOCK_EXCLUSIVE mpi4py MPI LOCK_EXCLUSIVE691467 +Ref: 17a691467 +Ref: mpi4py MPI LOCK_EXCLUSIVE-Footnote-1691616 +Ref: mpi4py MPI LOCK_EXCLUSIVE-Footnote-2691677 +Node: mpi4py MPI LOCK_SHARED691738 +Ref: reference/mpi4py MPI LOCK_SHARED doc691875 +Ref: 688691875 +Ref: reference/mpi4py MPI LOCK_SHARED mpi4py-mpi-lock-shared691875 +Ref: 689691875 +Ref: reference/mpi4py MPI LOCK_SHARED mpi4py MPI LOCK_SHARED691940 +Ref: 17b691940 +Ref: mpi4py MPI LOCK_SHARED-Footnote-1692080 +Ref: mpi4py MPI LOCK_SHARED-Footnote-2692141 +Node: mpi4py MPI MODE_RDONLY692202 +Ref: reference/mpi4py MPI MODE_RDONLY doc692336 +Ref: 68a692336 +Ref: reference/mpi4py MPI MODE_RDONLY mpi4py-mpi-mode-rdonly692336 +Ref: 68b692336 +Ref: reference/mpi4py MPI MODE_RDONLY mpi4py MPI MODE_RDONLY692401 +Ref: 17c692401 +Ref: mpi4py MPI MODE_RDONLY-Footnote-1692541 +Ref: mpi4py MPI MODE_RDONLY-Footnote-2692602 +Node: mpi4py MPI MODE_WRONLY692663 +Ref: reference/mpi4py MPI MODE_WRONLY doc692795 +Ref: 68c692795 +Ref: reference/mpi4py MPI MODE_WRONLY mpi4py-mpi-mode-wronly692795 +Ref: 68d692795 +Ref: reference/mpi4py MPI MODE_WRONLY mpi4py MPI MODE_WRONLY692860 +Ref: 17d692860 +Ref: mpi4py MPI MODE_WRONLY-Footnote-1693000 +Ref: mpi4py MPI MODE_WRONLY-Footnote-2693061 +Node: mpi4py MPI MODE_RDWR693122 +Ref: reference/mpi4py MPI MODE_RDWR doc693254 +Ref: 68e693254 +Ref: reference/mpi4py MPI MODE_RDWR mpi4py-mpi-mode-rdwr693254 +Ref: 68f693254 +Ref: reference/mpi4py MPI MODE_RDWR mpi4py MPI MODE_RDWR693315 +Ref: 17e693315 +Ref: mpi4py MPI MODE_RDWR-Footnote-1693449 +Ref: mpi4py MPI MODE_RDWR-Footnote-2693510 +Node: mpi4py MPI MODE_CREATE693571 +Ref: reference/mpi4py MPI MODE_CREATE doc693701 +Ref: 690693701 +Ref: reference/mpi4py MPI MODE_CREATE mpi4py-mpi-mode-create693701 +Ref: 691693701 +Ref: reference/mpi4py MPI MODE_CREATE mpi4py MPI MODE_CREATE693766 +Ref: 17f693766 +Ref: mpi4py MPI MODE_CREATE-Footnote-1693906 +Ref: mpi4py MPI MODE_CREATE-Footnote-2693967 +Node: mpi4py MPI MODE_EXCL694028 +Ref: reference/mpi4py MPI MODE_EXCL doc694169 +Ref: 692694169 +Ref: reference/mpi4py MPI MODE_EXCL mpi4py-mpi-mode-excl694169 +Ref: 693694169 +Ref: reference/mpi4py MPI MODE_EXCL mpi4py MPI MODE_EXCL694230 +Ref: 180694230 +Ref: mpi4py MPI MODE_EXCL-Footnote-1694364 +Ref: mpi4py MPI MODE_EXCL-Footnote-2694425 +Node: mpi4py MPI MODE_DELETE_ON_CLOSE694486 +Ref: reference/mpi4py MPI MODE_DELETE_ON_CLOSE doc694632 +Ref: 694694632 +Ref: reference/mpi4py MPI MODE_DELETE_ON_CLOSE mpi4py-mpi-mode-delete-on-close694632 +Ref: 695694632 +Ref: reference/mpi4py MPI MODE_DELETE_ON_CLOSE mpi4py MPI MODE_DELETE_ON_CLOSE694715 +Ref: 181694715 +Ref: mpi4py MPI MODE_DELETE_ON_CLOSE-Footnote-1694882 +Ref: mpi4py MPI MODE_DELETE_ON_CLOSE-Footnote-2694943 +Node: mpi4py MPI MODE_UNIQUE_OPEN695004 +Ref: reference/mpi4py MPI MODE_UNIQUE_OPEN doc695156 +Ref: 696695156 +Ref: reference/mpi4py MPI MODE_UNIQUE_OPEN mpi4py-mpi-mode-unique-open695156 +Ref: 697695156 +Ref: reference/mpi4py MPI MODE_UNIQUE_OPEN mpi4py MPI MODE_UNIQUE_OPEN695231 +Ref: 182695231 +Ref: mpi4py MPI MODE_UNIQUE_OPEN-Footnote-1695386 +Ref: mpi4py MPI MODE_UNIQUE_OPEN-Footnote-2695447 +Node: mpi4py MPI MODE_SEQUENTIAL695508 +Ref: reference/mpi4py MPI MODE_SEQUENTIAL doc695651 +Ref: 698695651 +Ref: reference/mpi4py MPI MODE_SEQUENTIAL mpi4py-mpi-mode-sequential695651 +Ref: 699695651 +Ref: reference/mpi4py MPI MODE_SEQUENTIAL mpi4py MPI MODE_SEQUENTIAL695724 +Ref: 183695724 +Ref: mpi4py MPI MODE_SEQUENTIAL-Footnote-1695876 +Ref: mpi4py MPI MODE_SEQUENTIAL-Footnote-2695937 +Node: mpi4py MPI MODE_APPEND695998 +Ref: reference/mpi4py MPI MODE_APPEND doc696133 +Ref: 69a696133 +Ref: reference/mpi4py MPI MODE_APPEND mpi4py-mpi-mode-append696133 +Ref: 69b696133 +Ref: reference/mpi4py MPI MODE_APPEND mpi4py MPI MODE_APPEND696198 +Ref: 184696198 +Ref: mpi4py MPI MODE_APPEND-Footnote-1696338 +Ref: mpi4py MPI MODE_APPEND-Footnote-2696399 +Node: mpi4py MPI SEEK_SET696460 +Ref: reference/mpi4py MPI SEEK_SET doc696588 +Ref: 69c696588 +Ref: reference/mpi4py MPI SEEK_SET mpi4py-mpi-seek-set696588 +Ref: 69d696588 +Ref: reference/mpi4py MPI SEEK_SET mpi4py MPI SEEK_SET696647 +Ref: 185696647 +Ref: mpi4py MPI SEEK_SET-Footnote-1696778 +Ref: mpi4py MPI SEEK_SET-Footnote-2696839 +Node: mpi4py MPI SEEK_CUR696900 +Ref: reference/mpi4py MPI SEEK_CUR doc697025 +Ref: 69e697025 +Ref: reference/mpi4py MPI SEEK_CUR mpi4py-mpi-seek-cur697025 +Ref: 69f697025 +Ref: reference/mpi4py MPI SEEK_CUR mpi4py MPI SEEK_CUR697084 +Ref: 186697084 +Ref: mpi4py MPI SEEK_CUR-Footnote-1697215 +Ref: mpi4py MPI SEEK_CUR-Footnote-2697276 +Node: mpi4py MPI SEEK_END697337 +Ref: reference/mpi4py MPI SEEK_END doc697474 +Ref: 6a0697474 +Ref: reference/mpi4py MPI SEEK_END mpi4py-mpi-seek-end697474 +Ref: 6a1697474 +Ref: reference/mpi4py MPI SEEK_END mpi4py MPI SEEK_END697533 +Ref: 187697533 +Ref: mpi4py MPI SEEK_END-Footnote-1697664 +Ref: mpi4py MPI SEEK_END-Footnote-2697725 +Node: mpi4py MPI DISPLACEMENT_CURRENT697786 +Ref: reference/mpi4py MPI DISPLACEMENT_CURRENT doc697923 +Ref: 6a2697923 +Ref: reference/mpi4py MPI DISPLACEMENT_CURRENT mpi4py-mpi-displacement-current697923 +Ref: 6a3697923 +Ref: reference/mpi4py MPI DISPLACEMENT_CURRENT mpi4py MPI DISPLACEMENT_CURRENT698006 +Ref: 188698006 +Ref: mpi4py MPI DISPLACEMENT_CURRENT-Footnote-1698173 +Ref: mpi4py MPI DISPLACEMENT_CURRENT-Footnote-2698234 +Node: mpi4py MPI DISP_CUR698295 +Ref: reference/mpi4py MPI DISP_CUR doc698437 +Ref: 6a4698437 +Ref: reference/mpi4py MPI DISP_CUR mpi4py-mpi-disp-cur698437 +Ref: 6a5698437 +Ref: reference/mpi4py MPI DISP_CUR mpi4py MPI DISP_CUR698496 +Ref: 189698496 +Ref: mpi4py MPI DISP_CUR-Footnote-1698627 +Ref: mpi4py MPI DISP_CUR-Footnote-2698688 +Node: mpi4py MPI THREAD_SINGLE698749 +Ref: reference/mpi4py MPI THREAD_SINGLE doc698886 +Ref: 6a6698886 +Ref: reference/mpi4py MPI THREAD_SINGLE mpi4py-mpi-thread-single698886 +Ref: 6a7698886 +Ref: reference/mpi4py MPI THREAD_SINGLE mpi4py MPI THREAD_SINGLE698955 +Ref: 18a698955 +Ref: mpi4py MPI THREAD_SINGLE-Footnote-1699101 +Ref: mpi4py MPI THREAD_SINGLE-Footnote-2699162 +Node: mpi4py MPI THREAD_FUNNELED699223 +Ref: reference/mpi4py MPI THREAD_FUNNELED doc699369 +Ref: 6a8699369 +Ref: reference/mpi4py MPI THREAD_FUNNELED mpi4py-mpi-thread-funneled699369 +Ref: 6a9699369 +Ref: reference/mpi4py MPI THREAD_FUNNELED mpi4py MPI THREAD_FUNNELED699442 +Ref: 18b699442 +Ref: mpi4py MPI THREAD_FUNNELED-Footnote-1699594 +Ref: mpi4py MPI THREAD_FUNNELED-Footnote-2699655 +Node: mpi4py MPI THREAD_SERIALIZED699716 +Ref: reference/mpi4py MPI THREAD_SERIALIZED doc699864 +Ref: 6aa699864 +Ref: reference/mpi4py MPI THREAD_SERIALIZED mpi4py-mpi-thread-serialized699864 +Ref: 6ab699864 +Ref: reference/mpi4py MPI THREAD_SERIALIZED mpi4py MPI THREAD_SERIALIZED699941 +Ref: 18c699941 +Ref: mpi4py MPI THREAD_SERIALIZED-Footnote-1700099 +Ref: mpi4py MPI THREAD_SERIALIZED-Footnote-2700160 +Node: mpi4py MPI THREAD_MULTIPLE700221 +Ref: reference/mpi4py MPI THREAD_MULTIPLE doc700361 +Ref: 6ac700361 +Ref: reference/mpi4py MPI THREAD_MULTIPLE mpi4py-mpi-thread-multiple700361 +Ref: 6ad700361 +Ref: reference/mpi4py MPI THREAD_MULTIPLE mpi4py MPI THREAD_MULTIPLE700434 +Ref: 18d700434 +Ref: mpi4py MPI THREAD_MULTIPLE-Footnote-1700586 +Ref: mpi4py MPI THREAD_MULTIPLE-Footnote-2700647 +Node: mpi4py MPI VERSION700708 +Ref: reference/mpi4py MPI VERSION doc700841 +Ref: 6ae700841 +Ref: reference/mpi4py MPI VERSION mpi4py-mpi-version700841 +Ref: 6af700841 +Ref: reference/mpi4py MPI VERSION mpi4py MPI VERSION700898 +Ref: 18e700898 +Ref: mpi4py MPI VERSION-Footnote-1701026 +Ref: mpi4py MPI VERSION-Footnote-2701087 +Node: mpi4py MPI SUBVERSION701148 +Ref: reference/mpi4py MPI SUBVERSION doc701284 +Ref: 6b0701284 +Ref: reference/mpi4py MPI SUBVERSION mpi4py-mpi-subversion701284 +Ref: 6b1701284 +Ref: reference/mpi4py MPI SUBVERSION mpi4py MPI SUBVERSION701347 +Ref: 18f701347 +Ref: mpi4py MPI SUBVERSION-Footnote-1701484 +Ref: mpi4py MPI SUBVERSION-Footnote-2701545 +Node: mpi4py MPI MAX_PROCESSOR_NAME701606 +Ref: reference/mpi4py MPI MAX_PROCESSOR_NAME doc701751 +Ref: 6b2701751 +Ref: reference/mpi4py MPI MAX_PROCESSOR_NAME mpi4py-mpi-max-processor-name701751 +Ref: 6b3701751 +Ref: reference/mpi4py MPI MAX_PROCESSOR_NAME mpi4py MPI MAX_PROCESSOR_NAME701830 +Ref: 190701830 +Ref: mpi4py MPI MAX_PROCESSOR_NAME-Footnote-1701991 +Ref: mpi4py MPI MAX_PROCESSOR_NAME-Footnote-2702052 +Node: mpi4py MPI MAX_ERROR_STRING702113 +Ref: reference/mpi4py MPI MAX_ERROR_STRING doc702261 +Ref: 6b4702261 +Ref: reference/mpi4py MPI MAX_ERROR_STRING mpi4py-mpi-max-error-string702261 +Ref: 6b5702261 +Ref: reference/mpi4py MPI MAX_ERROR_STRING mpi4py MPI MAX_ERROR_STRING702336 +Ref: 191702336 +Ref: mpi4py MPI MAX_ERROR_STRING-Footnote-1702491 +Ref: mpi4py MPI MAX_ERROR_STRING-Footnote-2702552 +Node: mpi4py MPI MAX_PORT_NAME702613 +Ref: reference/mpi4py MPI MAX_PORT_NAME doc702755 +Ref: 6b6702755 +Ref: reference/mpi4py MPI MAX_PORT_NAME mpi4py-mpi-max-port-name702755 +Ref: 6b7702755 +Ref: reference/mpi4py MPI MAX_PORT_NAME mpi4py MPI MAX_PORT_NAME702824 +Ref: 192702824 +Ref: mpi4py MPI MAX_PORT_NAME-Footnote-1702970 +Ref: mpi4py MPI MAX_PORT_NAME-Footnote-2703031 +Node: mpi4py MPI MAX_INFO_KEY703092 +Ref: reference/mpi4py MPI MAX_INFO_KEY doc703230 +Ref: 6b8703230 +Ref: reference/mpi4py MPI MAX_INFO_KEY mpi4py-mpi-max-info-key703230 +Ref: 6b9703230 +Ref: reference/mpi4py MPI MAX_INFO_KEY mpi4py MPI MAX_INFO_KEY703297 +Ref: 193703297 +Ref: mpi4py MPI MAX_INFO_KEY-Footnote-1703440 +Ref: mpi4py MPI MAX_INFO_KEY-Footnote-2703501 +Node: mpi4py MPI MAX_INFO_VAL703562 +Ref: reference/mpi4py MPI MAX_INFO_VAL doc703702 +Ref: 6ba703702 +Ref: reference/mpi4py MPI MAX_INFO_VAL mpi4py-mpi-max-info-val703702 +Ref: 6bb703702 +Ref: reference/mpi4py MPI MAX_INFO_VAL mpi4py MPI MAX_INFO_VAL703769 +Ref: 194703769 +Ref: mpi4py MPI MAX_INFO_VAL-Footnote-1703912 +Ref: mpi4py MPI MAX_INFO_VAL-Footnote-2703973 +Node: mpi4py MPI MAX_OBJECT_NAME704034 +Ref: reference/mpi4py MPI MAX_OBJECT_NAME doc704180 +Ref: 6bc704180 +Ref: reference/mpi4py MPI MAX_OBJECT_NAME mpi4py-mpi-max-object-name704180 +Ref: 6bd704180 +Ref: reference/mpi4py MPI MAX_OBJECT_NAME mpi4py MPI MAX_OBJECT_NAME704253 +Ref: 195704253 +Ref: mpi4py MPI MAX_OBJECT_NAME-Footnote-1704405 +Ref: mpi4py MPI MAX_OBJECT_NAME-Footnote-2704466 +Node: mpi4py MPI MAX_DATAREP_STRING704527 +Ref: reference/mpi4py MPI MAX_DATAREP_STRING doc704687 +Ref: 6be704687 +Ref: reference/mpi4py MPI MAX_DATAREP_STRING mpi4py-mpi-max-datarep-string704687 +Ref: 6bf704687 +Ref: reference/mpi4py MPI MAX_DATAREP_STRING mpi4py MPI MAX_DATAREP_STRING704766 +Ref: 196704766 +Ref: mpi4py MPI MAX_DATAREP_STRING-Footnote-1704927 +Ref: mpi4py MPI MAX_DATAREP_STRING-Footnote-2704988 +Node: mpi4py MPI MAX_LIBRARY_VERSION_STRING705049 +Ref: reference/mpi4py MPI MAX_LIBRARY_VERSION_STRING doc705211 +Ref: 6c0705211 +Ref: reference/mpi4py MPI MAX_LIBRARY_VERSION_STRING mpi4py-mpi-max-library-version-string705211 +Ref: 6c1705211 +Ref: reference/mpi4py MPI MAX_LIBRARY_VERSION_STRING mpi4py MPI MAX_LIBRARY_VERSION_STRING705306 +Ref: 197705306 +Ref: mpi4py MPI MAX_LIBRARY_VERSION_STRING-Footnote-1705501 +Ref: mpi4py MPI MAX_LIBRARY_VERSION_STRING-Footnote-2705562 +Node: mpi4py MPI MAX_PSET_NAME_LEN705623 +Ref: reference/mpi4py MPI MAX_PSET_NAME_LEN doc705784 +Ref: 6c2705784 +Ref: reference/mpi4py MPI MAX_PSET_NAME_LEN mpi4py-mpi-max-pset-name-len705784 +Ref: 6c3705784 +Ref: reference/mpi4py MPI MAX_PSET_NAME_LEN mpi4py MPI MAX_PSET_NAME_LEN705861 +Ref: 564705861 +Ref: mpi4py MPI MAX_PSET_NAME_LEN-Footnote-1706019 +Ref: mpi4py MPI MAX_PSET_NAME_LEN-Footnote-2706080 +Node: mpi4py MPI MAX_STRINGTAG_LEN706141 +Ref: reference/mpi4py MPI MAX_STRINGTAG_LEN doc706289 +Ref: 6c4706289 +Ref: reference/mpi4py MPI MAX_STRINGTAG_LEN mpi4py-mpi-max-stringtag-len706289 +Ref: 6c5706289 +Ref: reference/mpi4py MPI MAX_STRINGTAG_LEN mpi4py MPI MAX_STRINGTAG_LEN706366 +Ref: 565706366 +Ref: mpi4py MPI MAX_STRINGTAG_LEN-Footnote-1706524 +Ref: mpi4py MPI MAX_STRINGTAG_LEN-Footnote-2706585 +Node: mpi4py MPI DATATYPE_NULL706646 +Ref: reference/mpi4py MPI DATATYPE_NULL doc706783 +Ref: 6c6706783 +Ref: reference/mpi4py MPI DATATYPE_NULL mpi4py-mpi-datatype-null706783 +Ref: 6c7706783 +Ref: reference/mpi4py MPI DATATYPE_NULL mpi4py MPI DATATYPE_NULL706852 +Ref: 198706852 +Node: mpi4py MPI PACKED706986 +Ref: reference/mpi4py MPI PACKED doc707110 +Ref: 6c8707110 +Ref: reference/mpi4py MPI PACKED mpi4py-mpi-packed707110 +Ref: 6c9707110 +Ref: reference/mpi4py MPI PACKED mpi4py MPI PACKED707165 +Ref: 199707165 +Node: mpi4py MPI BYTE707278 +Ref: reference/mpi4py MPI BYTE doc707393 +Ref: 6ca707393 +Ref: reference/mpi4py MPI BYTE mpi4py-mpi-byte707393 +Ref: 6cb707393 +Ref: reference/mpi4py MPI BYTE mpi4py MPI BYTE707444 +Ref: 19a707444 +Node: mpi4py MPI AINT707551 +Ref: reference/mpi4py MPI AINT doc707666 +Ref: 6cc707666 +Ref: reference/mpi4py MPI AINT mpi4py-mpi-aint707666 +Ref: 6cd707666 +Ref: reference/mpi4py MPI AINT mpi4py MPI AINT707717 +Ref: 19b707717 +Node: mpi4py MPI OFFSET707824 +Ref: reference/mpi4py MPI OFFSET doc707940 +Ref: 6ce707940 +Ref: reference/mpi4py MPI OFFSET mpi4py-mpi-offset707940 +Ref: 6cf707940 +Ref: reference/mpi4py MPI OFFSET mpi4py MPI OFFSET707995 +Ref: 19c707995 +Node: mpi4py MPI COUNT708108 +Ref: reference/mpi4py MPI COUNT doc708224 +Ref: 6d0708224 +Ref: reference/mpi4py MPI COUNT mpi4py-mpi-count708224 +Ref: 6d1708224 +Ref: reference/mpi4py MPI COUNT mpi4py MPI COUNT708277 +Ref: 19d708277 +Node: mpi4py MPI CHAR708387 +Ref: reference/mpi4py MPI CHAR doc708502 +Ref: 6d2708502 +Ref: reference/mpi4py MPI CHAR mpi4py-mpi-char708502 +Ref: 6d3708502 +Ref: reference/mpi4py MPI CHAR mpi4py MPI CHAR708553 +Ref: 19e708553 +Node: mpi4py MPI WCHAR708660 +Ref: reference/mpi4py MPI WCHAR doc708781 +Ref: 6d4708781 +Ref: reference/mpi4py MPI WCHAR mpi4py-mpi-wchar708781 +Ref: 6d5708781 +Ref: reference/mpi4py MPI WCHAR mpi4py MPI WCHAR708834 +Ref: 19f708834 +Node: mpi4py MPI SIGNED_CHAR708944 +Ref: reference/mpi4py MPI SIGNED_CHAR doc709066 +Ref: 6d6709066 +Ref: reference/mpi4py MPI SIGNED_CHAR mpi4py-mpi-signed-char709066 +Ref: 6d7709066 +Ref: reference/mpi4py MPI SIGNED_CHAR mpi4py MPI SIGNED_CHAR709131 +Ref: 1a0709131 +Node: mpi4py MPI SHORT709259 +Ref: reference/mpi4py MPI SHORT doc709379 +Ref: 6d8709379 +Ref: reference/mpi4py MPI SHORT mpi4py-mpi-short709379 +Ref: 6d9709379 +Ref: reference/mpi4py MPI SHORT mpi4py MPI SHORT709432 +Ref: 1a1709432 +Node: mpi4py MPI INT709542 +Ref: reference/mpi4py MPI INT doc709655 +Ref: 6da709655 +Ref: reference/mpi4py MPI INT mpi4py-mpi-int709655 +Ref: 6db709655 +Ref: reference/mpi4py MPI INT mpi4py MPI INT709704 +Ref: 1a2709704 +Node: mpi4py MPI LONG709808 +Ref: reference/mpi4py MPI LONG doc709925 +Ref: 6dc709925 +Ref: reference/mpi4py MPI LONG mpi4py-mpi-long709925 +Ref: 6dd709925 +Ref: reference/mpi4py MPI LONG mpi4py MPI LONG709976 +Ref: 1a3709976 +Node: mpi4py MPI LONG_LONG710083 +Ref: reference/mpi4py MPI LONG_LONG doc710210 +Ref: 6de710210 +Ref: reference/mpi4py MPI LONG_LONG mpi4py-mpi-long-long710210 +Ref: 6df710210 +Ref: reference/mpi4py MPI LONG_LONG mpi4py MPI LONG_LONG710271 +Ref: 1a4710271 +Node: mpi4py MPI UNSIGNED_CHAR710393 +Ref: reference/mpi4py MPI UNSIGNED_CHAR doc710530 +Ref: 6e0710530 +Ref: reference/mpi4py MPI UNSIGNED_CHAR mpi4py-mpi-unsigned-char710530 +Ref: 6e1710530 +Ref: reference/mpi4py MPI UNSIGNED_CHAR mpi4py MPI UNSIGNED_CHAR710599 +Ref: 1a5710599 +Node: mpi4py MPI UNSIGNED_SHORT710733 +Ref: reference/mpi4py MPI UNSIGNED_SHORT doc710869 +Ref: 6e2710869 +Ref: reference/mpi4py MPI UNSIGNED_SHORT mpi4py-mpi-unsigned-short710869 +Ref: 6e3710869 +Ref: reference/mpi4py MPI UNSIGNED_SHORT mpi4py MPI UNSIGNED_SHORT710940 +Ref: 1a6710940 +Node: mpi4py MPI UNSIGNED711087 +Ref: reference/mpi4py MPI UNSIGNED doc711223 +Ref: 6e4711223 +Ref: reference/mpi4py MPI UNSIGNED mpi4py-mpi-unsigned711223 +Ref: 6e5711223 +Ref: reference/mpi4py MPI UNSIGNED mpi4py MPI UNSIGNED711282 +Ref: 1a7711282 +Node: mpi4py MPI UNSIGNED_LONG711401 +Ref: reference/mpi4py MPI UNSIGNED_LONG doc711541 +Ref: 6e6711541 +Ref: reference/mpi4py MPI UNSIGNED_LONG mpi4py-mpi-unsigned-long711541 +Ref: 6e7711541 +Ref: reference/mpi4py MPI UNSIGNED_LONG mpi4py MPI UNSIGNED_LONG711610 +Ref: 1a8711610 +Node: mpi4py MPI UNSIGNED_LONG_LONG711744 +Ref: reference/mpi4py MPI UNSIGNED_LONG_LONG doc711881 +Ref: 6e8711881 +Ref: reference/mpi4py MPI UNSIGNED_LONG_LONG mpi4py-mpi-unsigned-long-long711881 +Ref: 6e9711881 +Ref: reference/mpi4py MPI UNSIGNED_LONG_LONG mpi4py MPI UNSIGNED_LONG_LONG711960 +Ref: 1a9711960 +Node: mpi4py MPI FLOAT712119 +Ref: reference/mpi4py MPI FLOAT doc712249 +Ref: 6ea712249 +Ref: reference/mpi4py MPI FLOAT mpi4py-mpi-float712249 +Ref: 6eb712249 +Ref: reference/mpi4py MPI FLOAT mpi4py MPI FLOAT712302 +Ref: 1aa712302 +Node: mpi4py MPI DOUBLE712412 +Ref: reference/mpi4py MPI DOUBLE doc712535 +Ref: 6ec712535 +Ref: reference/mpi4py MPI DOUBLE mpi4py-mpi-double712535 +Ref: 6ed712535 +Ref: reference/mpi4py MPI DOUBLE mpi4py MPI DOUBLE712590 +Ref: 1ab712590 +Node: mpi4py MPI LONG_DOUBLE712703 +Ref: reference/mpi4py MPI LONG_DOUBLE doc712827 +Ref: 6ee712827 +Ref: reference/mpi4py MPI LONG_DOUBLE mpi4py-mpi-long-double712827 +Ref: 6ef712827 +Ref: reference/mpi4py MPI LONG_DOUBLE mpi4py MPI LONG_DOUBLE712892 +Ref: 1ac712892 +Node: mpi4py MPI C_BOOL713020 +Ref: reference/mpi4py MPI C_BOOL doc713144 +Ref: 6f0713144 +Ref: reference/mpi4py MPI C_BOOL mpi4py-mpi-c-bool713144 +Ref: 6f1713144 +Ref: reference/mpi4py MPI C_BOOL mpi4py MPI C_BOOL713199 +Ref: 1ad713199 +Node: mpi4py MPI INT8_T713312 +Ref: reference/mpi4py MPI INT8_T doc713432 +Ref: 6f2713432 +Ref: reference/mpi4py MPI INT8_T mpi4py-mpi-int8-t713432 +Ref: 6f3713432 +Ref: reference/mpi4py MPI INT8_T mpi4py MPI INT8_T713487 +Ref: 1ae713487 +Node: mpi4py MPI INT16_T713600 +Ref: reference/mpi4py MPI INT16_T doc713721 +Ref: 6f4713721 +Ref: reference/mpi4py MPI INT16_T mpi4py-mpi-int16-t713721 +Ref: 6f5713721 +Ref: reference/mpi4py MPI INT16_T mpi4py MPI INT16_T713778 +Ref: 1af713778 +Node: mpi4py MPI INT32_T713894 +Ref: reference/mpi4py MPI INT32_T doc714016 +Ref: 6f6714016 +Ref: reference/mpi4py MPI INT32_T mpi4py-mpi-int32-t714016 +Ref: 6f7714016 +Ref: reference/mpi4py MPI INT32_T mpi4py MPI INT32_T714073 +Ref: 1b0714073 +Node: mpi4py MPI INT64_T714189 +Ref: reference/mpi4py MPI INT64_T doc714311 +Ref: 6f8714311 +Ref: reference/mpi4py MPI INT64_T mpi4py-mpi-int64-t714311 +Ref: 6f9714311 +Ref: reference/mpi4py MPI INT64_T mpi4py MPI INT64_T714368 +Ref: 1b1714368 +Node: mpi4py MPI UINT8_T714484 +Ref: reference/mpi4py MPI UINT8_T doc714607 +Ref: 6fa714607 +Ref: reference/mpi4py MPI UINT8_T mpi4py-mpi-uint8-t714607 +Ref: 6fb714607 +Ref: reference/mpi4py MPI UINT8_T mpi4py MPI UINT8_T714664 +Ref: 1b2714664 +Node: mpi4py MPI UINT16_T714780 +Ref: reference/mpi4py MPI UINT16_T doc714904 +Ref: 6fc714904 +Ref: reference/mpi4py MPI UINT16_T mpi4py-mpi-uint16-t714904 +Ref: 6fd714904 +Ref: reference/mpi4py MPI UINT16_T mpi4py MPI UINT16_T714963 +Ref: 1b3714963 +Node: mpi4py MPI UINT32_T715082 +Ref: reference/mpi4py MPI UINT32_T doc715207 +Ref: 6fe715207 +Ref: reference/mpi4py MPI UINT32_T mpi4py-mpi-uint32-t715207 +Ref: 6ff715207 +Ref: reference/mpi4py MPI UINT32_T mpi4py MPI UINT32_T715266 +Ref: 1b4715266 +Node: mpi4py MPI UINT64_T715385 +Ref: reference/mpi4py MPI UINT64_T doc715511 +Ref: 700715511 +Ref: reference/mpi4py MPI UINT64_T mpi4py-mpi-uint64-t715511 +Ref: 701715511 +Ref: reference/mpi4py MPI UINT64_T mpi4py MPI UINT64_T715570 +Ref: 1b5715570 +Node: mpi4py MPI C_COMPLEX715689 +Ref: reference/mpi4py MPI C_COMPLEX doc715822 +Ref: 702715822 +Ref: reference/mpi4py MPI C_COMPLEX mpi4py-mpi-c-complex715822 +Ref: 703715822 +Ref: reference/mpi4py MPI C_COMPLEX mpi4py MPI C_COMPLEX715883 +Ref: 1b6715883 +Node: mpi4py MPI C_FLOAT_COMPLEX716005 +Ref: reference/mpi4py MPI C_FLOAT_COMPLEX doc716146 +Ref: 704716146 +Ref: reference/mpi4py MPI C_FLOAT_COMPLEX mpi4py-mpi-c-float-complex716146 +Ref: 705716146 +Ref: reference/mpi4py MPI C_FLOAT_COMPLEX mpi4py MPI C_FLOAT_COMPLEX716219 +Ref: 1b7716219 +Node: mpi4py MPI C_DOUBLE_COMPLEX716369 +Ref: reference/mpi4py MPI C_DOUBLE_COMPLEX doc716522 +Ref: 706716522 +Ref: reference/mpi4py MPI C_DOUBLE_COMPLEX mpi4py-mpi-c-double-complex716522 +Ref: 707716522 +Ref: reference/mpi4py MPI C_DOUBLE_COMPLEX mpi4py MPI C_DOUBLE_COMPLEX716597 +Ref: 1b8716597 +Node: mpi4py MPI C_LONG_DOUBLE_COMPLEX716750 +Ref: reference/mpi4py MPI C_LONG_DOUBLE_COMPLEX doc716896 +Ref: 708716896 +Ref: reference/mpi4py MPI C_LONG_DOUBLE_COMPLEX mpi4py-mpi-c-long-double-complex716896 +Ref: 709716896 +Ref: reference/mpi4py MPI C_LONG_DOUBLE_COMPLEX mpi4py MPI C_LONG_DOUBLE_COMPLEX716981 +Ref: 1b9716981 +Node: mpi4py MPI CXX_BOOL717149 +Ref: reference/mpi4py MPI CXX_BOOL doc717296 +Ref: 70a717296 +Ref: reference/mpi4py MPI CXX_BOOL mpi4py-mpi-cxx-bool717296 +Ref: 70b717296 +Ref: reference/mpi4py MPI CXX_BOOL mpi4py MPI CXX_BOOL717355 +Ref: 1ba717355 +Node: mpi4py MPI CXX_FLOAT_COMPLEX717474 +Ref: reference/mpi4py MPI CXX_FLOAT_COMPLEX doc717618 +Ref: 70c717618 +Ref: reference/mpi4py MPI CXX_FLOAT_COMPLEX mpi4py-mpi-cxx-float-complex717618 +Ref: 70d717618 +Ref: reference/mpi4py MPI CXX_FLOAT_COMPLEX mpi4py MPI CXX_FLOAT_COMPLEX717695 +Ref: 1bb717695 +Node: mpi4py MPI CXX_DOUBLE_COMPLEX717851 +Ref: reference/mpi4py MPI CXX_DOUBLE_COMPLEX doc718010 +Ref: 70e718010 +Ref: reference/mpi4py MPI CXX_DOUBLE_COMPLEX mpi4py-mpi-cxx-double-complex718010 +Ref: 70f718010 +Ref: reference/mpi4py MPI CXX_DOUBLE_COMPLEX mpi4py MPI CXX_DOUBLE_COMPLEX718089 +Ref: 1bc718089 +Node: mpi4py MPI CXX_LONG_DOUBLE_COMPLEX718248 +Ref: reference/mpi4py MPI CXX_LONG_DOUBLE_COMPLEX doc718399 +Ref: 710718399 +Ref: reference/mpi4py MPI CXX_LONG_DOUBLE_COMPLEX mpi4py-mpi-cxx-long-double-complex718399 +Ref: 711718399 +Ref: reference/mpi4py MPI CXX_LONG_DOUBLE_COMPLEX mpi4py MPI CXX_LONG_DOUBLE_COMPLEX718488 +Ref: 1bd718488 +Node: mpi4py MPI SHORT_INT718662 +Ref: reference/mpi4py MPI SHORT_INT doc718802 +Ref: 712718802 +Ref: reference/mpi4py MPI SHORT_INT mpi4py-mpi-short-int718802 +Ref: 713718802 +Ref: reference/mpi4py MPI SHORT_INT mpi4py MPI SHORT_INT718863 +Ref: 1be718863 +Node: mpi4py MPI INT_INT718985 +Ref: reference/mpi4py MPI INT_INT doc719108 +Ref: 714719108 +Ref: reference/mpi4py MPI INT_INT mpi4py-mpi-int-int719108 +Ref: 715719108 +Ref: reference/mpi4py MPI INT_INT mpi4py MPI INT_INT719165 +Ref: 1bf719165 +Node: mpi4py MPI TWOINT719281 +Ref: reference/mpi4py MPI TWOINT doc719403 +Ref: 716719403 +Ref: reference/mpi4py MPI TWOINT mpi4py-mpi-twoint719403 +Ref: 717719403 +Ref: reference/mpi4py MPI TWOINT mpi4py MPI TWOINT719458 +Ref: 1c0719458 +Node: mpi4py MPI LONG_INT719571 +Ref: reference/mpi4py MPI LONG_INT doc719695 +Ref: 718719695 +Ref: reference/mpi4py MPI LONG_INT mpi4py-mpi-long-int719695 +Ref: 719719695 +Ref: reference/mpi4py MPI LONG_INT mpi4py MPI LONG_INT719754 +Ref: 1c1719754 +Node: mpi4py MPI FLOAT_INT719873 +Ref: reference/mpi4py MPI FLOAT_INT doc720001 +Ref: 71a720001 +Ref: reference/mpi4py MPI FLOAT_INT mpi4py-mpi-float-int720001 +Ref: 71b720001 +Ref: reference/mpi4py MPI FLOAT_INT mpi4py MPI FLOAT_INT720062 +Ref: 1c2720062 +Node: mpi4py MPI DOUBLE_INT720184 +Ref: reference/mpi4py MPI DOUBLE_INT doc720319 +Ref: 71c720319 +Ref: reference/mpi4py MPI DOUBLE_INT mpi4py-mpi-double-int720319 +Ref: 71d720319 +Ref: reference/mpi4py MPI DOUBLE_INT mpi4py MPI DOUBLE_INT720382 +Ref: 1c3720382 +Node: mpi4py MPI LONG_DOUBLE_INT720507 +Ref: reference/mpi4py MPI LONG_DOUBLE_INT doc720642 +Ref: 71e720642 +Ref: reference/mpi4py MPI LONG_DOUBLE_INT mpi4py-mpi-long-double-int720642 +Ref: 71f720642 +Ref: reference/mpi4py MPI LONG_DOUBLE_INT mpi4py MPI LONG_DOUBLE_INT720715 +Ref: 1c4720715 +Node: mpi4py MPI CHARACTER720865 +Ref: reference/mpi4py MPI CHARACTER doc720997 +Ref: 720720997 +Ref: reference/mpi4py MPI CHARACTER mpi4py-mpi-character720997 +Ref: 721720997 +Ref: reference/mpi4py MPI CHARACTER mpi4py MPI CHARACTER721058 +Ref: 1c5721058 +Node: mpi4py MPI LOGICAL721180 +Ref: reference/mpi4py MPI LOGICAL doc721304 +Ref: 722721304 +Ref: reference/mpi4py MPI LOGICAL mpi4py-mpi-logical721304 +Ref: 723721304 +Ref: reference/mpi4py MPI LOGICAL mpi4py MPI LOGICAL721361 +Ref: 1c6721361 +Node: mpi4py MPI INTEGER721477 +Ref: reference/mpi4py MPI INTEGER doc721596 +Ref: 724721596 +Ref: reference/mpi4py MPI INTEGER mpi4py-mpi-integer721596 +Ref: 725721596 +Ref: reference/mpi4py MPI INTEGER mpi4py MPI INTEGER721653 +Ref: 1c7721653 +Node: mpi4py MPI REAL721769 +Ref: reference/mpi4py MPI REAL doc721897 +Ref: 726721897 +Ref: reference/mpi4py MPI REAL mpi4py-mpi-real721897 +Ref: 727721897 +Ref: reference/mpi4py MPI REAL mpi4py MPI REAL721948 +Ref: 1c8721948 +Node: mpi4py MPI DOUBLE_PRECISION722055 +Ref: reference/mpi4py MPI DOUBLE_PRECISION doc722183 +Ref: 728722183 +Ref: reference/mpi4py MPI DOUBLE_PRECISION mpi4py-mpi-double-precision722183 +Ref: 729722183 +Ref: reference/mpi4py MPI DOUBLE_PRECISION mpi4py MPI DOUBLE_PRECISION722258 +Ref: 1c9722258 +Node: mpi4py MPI COMPLEX722411 +Ref: reference/mpi4py MPI COMPLEX doc722549 +Ref: 72a722549 +Ref: reference/mpi4py MPI COMPLEX mpi4py-mpi-complex722549 +Ref: 72b722549 +Ref: reference/mpi4py MPI COMPLEX mpi4py MPI COMPLEX722606 +Ref: 1ca722606 +Node: mpi4py MPI DOUBLE_COMPLEX722722 +Ref: reference/mpi4py MPI DOUBLE_COMPLEX doc722852 +Ref: 72c722852 +Ref: reference/mpi4py MPI DOUBLE_COMPLEX mpi4py-mpi-double-complex722852 +Ref: 72d722852 +Ref: reference/mpi4py MPI DOUBLE_COMPLEX mpi4py MPI DOUBLE_COMPLEX722923 +Ref: 1cb722923 +Node: mpi4py MPI LOGICAL1723070 +Ref: reference/mpi4py MPI LOGICAL1 doc723201 +Ref: 72e723201 +Ref: reference/mpi4py MPI LOGICAL1 mpi4py-mpi-logical1723201 +Ref: 72f723201 +Ref: reference/mpi4py MPI LOGICAL1 mpi4py MPI LOGICAL1723260 +Ref: 1cc723260 +Node: mpi4py MPI LOGICAL2723379 +Ref: reference/mpi4py MPI LOGICAL2 doc723504 +Ref: 730723504 +Ref: reference/mpi4py MPI LOGICAL2 mpi4py-mpi-logical2723504 +Ref: 731723504 +Ref: reference/mpi4py MPI LOGICAL2 mpi4py MPI LOGICAL2723563 +Ref: 1cd723563 +Node: mpi4py MPI LOGICAL4723682 +Ref: reference/mpi4py MPI LOGICAL4 doc723807 +Ref: 732723807 +Ref: reference/mpi4py MPI LOGICAL4 mpi4py-mpi-logical4723807 +Ref: 733723807 +Ref: reference/mpi4py MPI LOGICAL4 mpi4py MPI LOGICAL4723866 +Ref: 1ce723866 +Node: mpi4py MPI LOGICAL8723985 +Ref: reference/mpi4py MPI LOGICAL8 doc724110 +Ref: 734724110 +Ref: reference/mpi4py MPI LOGICAL8 mpi4py-mpi-logical8724110 +Ref: 735724110 +Ref: reference/mpi4py MPI LOGICAL8 mpi4py MPI LOGICAL8724169 +Ref: 1cf724169 +Node: mpi4py MPI INTEGER1724288 +Ref: reference/mpi4py MPI INTEGER1 doc724413 +Ref: 736724413 +Ref: reference/mpi4py MPI INTEGER1 mpi4py-mpi-integer1724413 +Ref: 737724413 +Ref: reference/mpi4py MPI INTEGER1 mpi4py MPI INTEGER1724472 +Ref: 1d0724472 +Node: mpi4py MPI INTEGER2724591 +Ref: reference/mpi4py MPI INTEGER2 doc724716 +Ref: 738724716 +Ref: reference/mpi4py MPI INTEGER2 mpi4py-mpi-integer2724716 +Ref: 739724716 +Ref: reference/mpi4py MPI INTEGER2 mpi4py MPI INTEGER2724775 +Ref: 1d1724775 +Node: mpi4py MPI INTEGER4724894 +Ref: reference/mpi4py MPI INTEGER4 doc725019 +Ref: 73a725019 +Ref: reference/mpi4py MPI INTEGER4 mpi4py-mpi-integer4725019 +Ref: 73b725019 +Ref: reference/mpi4py MPI INTEGER4 mpi4py MPI INTEGER4725078 +Ref: 1d2725078 +Node: mpi4py MPI INTEGER8725197 +Ref: reference/mpi4py MPI INTEGER8 doc725323 +Ref: 73c725323 +Ref: reference/mpi4py MPI INTEGER8 mpi4py-mpi-integer8725323 +Ref: 73d725323 +Ref: reference/mpi4py MPI INTEGER8 mpi4py MPI INTEGER8725382 +Ref: 1d3725382 +Node: mpi4py MPI INTEGER16725501 +Ref: reference/mpi4py MPI INTEGER16 doc725624 +Ref: 73e725624 +Ref: reference/mpi4py MPI INTEGER16 mpi4py-mpi-integer16725624 +Ref: 73f725624 +Ref: reference/mpi4py MPI INTEGER16 mpi4py MPI INTEGER16725685 +Ref: 1d4725685 +Node: mpi4py MPI REAL2725807 +Ref: reference/mpi4py MPI REAL2 doc725927 +Ref: 740725927 +Ref: reference/mpi4py MPI REAL2 mpi4py-mpi-real2725927 +Ref: 741725927 +Ref: reference/mpi4py MPI REAL2 mpi4py MPI REAL2725980 +Ref: 1d5725980 +Node: mpi4py MPI REAL4726090 +Ref: reference/mpi4py MPI REAL4 doc726206 +Ref: 742726206 +Ref: reference/mpi4py MPI REAL4 mpi4py-mpi-real4726206 +Ref: 743726206 +Ref: reference/mpi4py MPI REAL4 mpi4py MPI REAL4726259 +Ref: 1d6726259 +Node: mpi4py MPI REAL8726369 +Ref: reference/mpi4py MPI REAL8 doc726486 +Ref: 744726486 +Ref: reference/mpi4py MPI REAL8 mpi4py-mpi-real8726486 +Ref: 745726486 +Ref: reference/mpi4py MPI REAL8 mpi4py MPI REAL8726539 +Ref: 1d7726539 +Node: mpi4py MPI REAL16726649 +Ref: reference/mpi4py MPI REAL16 doc726769 +Ref: 746726769 +Ref: reference/mpi4py MPI REAL16 mpi4py-mpi-real16726769 +Ref: 747726769 +Ref: reference/mpi4py MPI REAL16 mpi4py MPI REAL16726824 +Ref: 1d8726824 +Node: mpi4py MPI COMPLEX4726937 +Ref: reference/mpi4py MPI COMPLEX4 doc727060 +Ref: 748727060 +Ref: reference/mpi4py MPI COMPLEX4 mpi4py-mpi-complex4727060 +Ref: 749727060 +Ref: reference/mpi4py MPI COMPLEX4 mpi4py MPI COMPLEX4727119 +Ref: 1d9727119 +Node: mpi4py MPI COMPLEX8727238 +Ref: reference/mpi4py MPI COMPLEX8 doc727364 +Ref: 74a727364 +Ref: reference/mpi4py MPI COMPLEX8 mpi4py-mpi-complex8727364 +Ref: 74b727364 +Ref: reference/mpi4py MPI COMPLEX8 mpi4py MPI COMPLEX8727423 +Ref: 1da727423 +Node: mpi4py MPI COMPLEX16727542 +Ref: reference/mpi4py MPI COMPLEX16 doc727669 +Ref: 74c727669 +Ref: reference/mpi4py MPI COMPLEX16 mpi4py-mpi-complex16727669 +Ref: 74d727669 +Ref: reference/mpi4py MPI COMPLEX16 mpi4py MPI COMPLEX16727730 +Ref: 1db727730 +Node: mpi4py MPI COMPLEX32727852 +Ref: reference/mpi4py MPI COMPLEX32 doc727983 +Ref: 74e727983 +Ref: reference/mpi4py MPI COMPLEX32 mpi4py-mpi-complex32727983 +Ref: 74f727983 +Ref: reference/mpi4py MPI COMPLEX32 mpi4py MPI COMPLEX32728044 +Ref: 1dc728044 +Node: mpi4py MPI UNSIGNED_INT728166 +Ref: reference/mpi4py MPI UNSIGNED_INT doc728300 +Ref: 750728300 +Ref: reference/mpi4py MPI UNSIGNED_INT mpi4py-mpi-unsigned-int728300 +Ref: 751728300 +Ref: reference/mpi4py MPI UNSIGNED_INT mpi4py MPI UNSIGNED_INT728367 +Ref: 1dd728367 +Node: mpi4py MPI SIGNED_SHORT728498 +Ref: reference/mpi4py MPI SIGNED_SHORT doc728633 +Ref: 752728633 +Ref: reference/mpi4py MPI SIGNED_SHORT mpi4py-mpi-signed-short728633 +Ref: 753728633 +Ref: reference/mpi4py MPI SIGNED_SHORT mpi4py MPI SIGNED_SHORT728700 +Ref: 1de728700 +Node: mpi4py MPI SIGNED_INT728831 +Ref: reference/mpi4py MPI SIGNED_INT doc728965 +Ref: 754728965 +Ref: reference/mpi4py MPI SIGNED_INT mpi4py-mpi-signed-int728965 +Ref: 755728965 +Ref: reference/mpi4py MPI SIGNED_INT mpi4py MPI SIGNED_INT729028 +Ref: 1df729028 +Node: mpi4py MPI SIGNED_LONG729153 +Ref: reference/mpi4py MPI SIGNED_LONG doc729291 +Ref: 756729291 +Ref: reference/mpi4py MPI SIGNED_LONG mpi4py-mpi-signed-long729291 +Ref: 757729291 +Ref: reference/mpi4py MPI SIGNED_LONG mpi4py MPI SIGNED_LONG729356 +Ref: 1e0729356 +Node: mpi4py MPI SIGNED_LONG_LONG729484 +Ref: reference/mpi4py MPI SIGNED_LONG_LONG doc729616 +Ref: 758729616 +Ref: reference/mpi4py MPI SIGNED_LONG_LONG mpi4py-mpi-signed-long-long729616 +Ref: 759729616 +Ref: reference/mpi4py MPI SIGNED_LONG_LONG mpi4py MPI SIGNED_LONG_LONG729691 +Ref: 1e1729691 +Node: mpi4py MPI BOOL729844 +Ref: reference/mpi4py MPI BOOL doc729972 +Ref: 75a729972 +Ref: reference/mpi4py MPI BOOL mpi4py-mpi-bool729972 +Ref: 75b729972 +Ref: reference/mpi4py MPI BOOL mpi4py MPI BOOL730023 +Ref: 1e2730023 +Node: mpi4py MPI SINT8_T730130 +Ref: reference/mpi4py MPI SINT8_T doc730250 +Ref: 75c730250 +Ref: reference/mpi4py MPI SINT8_T mpi4py-mpi-sint8-t730250 +Ref: 75d730250 +Ref: reference/mpi4py MPI SINT8_T mpi4py MPI SINT8_T730307 +Ref: 1e3730307 +Node: mpi4py MPI SINT16_T730423 +Ref: reference/mpi4py MPI SINT16_T doc730547 +Ref: 75e730547 +Ref: reference/mpi4py MPI SINT16_T mpi4py-mpi-sint16-t730547 +Ref: 75f730547 +Ref: reference/mpi4py MPI SINT16_T mpi4py MPI SINT16_T730606 +Ref: 1e4730606 +Node: mpi4py MPI SINT32_T730725 +Ref: reference/mpi4py MPI SINT32_T doc730850 +Ref: 760730850 +Ref: reference/mpi4py MPI SINT32_T mpi4py-mpi-sint32-t730850 +Ref: 761730850 +Ref: reference/mpi4py MPI SINT32_T mpi4py MPI SINT32_T730909 +Ref: 1e5730909 +Node: mpi4py MPI SINT64_T731028 +Ref: reference/mpi4py MPI SINT64_T doc731151 +Ref: 762731151 +Ref: reference/mpi4py MPI SINT64_T mpi4py-mpi-sint64-t731151 +Ref: 763731151 +Ref: reference/mpi4py MPI SINT64_T mpi4py MPI SINT64_T731210 +Ref: 1e6731210 +Node: mpi4py MPI F_BOOL731329 +Ref: reference/mpi4py MPI F_BOOL doc731449 +Ref: 764731449 +Ref: reference/mpi4py MPI F_BOOL mpi4py-mpi-f-bool731449 +Ref: 765731449 +Ref: reference/mpi4py MPI F_BOOL mpi4py MPI F_BOOL731504 +Ref: 1e7731504 +Node: mpi4py MPI F_INT731617 +Ref: reference/mpi4py MPI F_INT doc731736 +Ref: 766731736 +Ref: reference/mpi4py MPI F_INT mpi4py-mpi-f-int731736 +Ref: 767731736 +Ref: reference/mpi4py MPI F_INT mpi4py MPI F_INT731789 +Ref: 1e8731789 +Node: mpi4py MPI F_FLOAT731899 +Ref: reference/mpi4py MPI F_FLOAT doc732020 +Ref: 768732020 +Ref: reference/mpi4py MPI F_FLOAT mpi4py-mpi-f-float732020 +Ref: 769732020 +Ref: reference/mpi4py MPI F_FLOAT mpi4py MPI F_FLOAT732077 +Ref: 1e9732077 +Node: mpi4py MPI F_DOUBLE732193 +Ref: reference/mpi4py MPI F_DOUBLE doc732318 +Ref: 76a732318 +Ref: reference/mpi4py MPI F_DOUBLE mpi4py-mpi-f-double732318 +Ref: 76b732318 +Ref: reference/mpi4py MPI F_DOUBLE mpi4py MPI F_DOUBLE732377 +Ref: 1ea732377 +Node: mpi4py MPI F_COMPLEX732496 +Ref: reference/mpi4py MPI F_COMPLEX doc732629 +Ref: 76c732629 +Ref: reference/mpi4py MPI F_COMPLEX mpi4py-mpi-f-complex732629 +Ref: 76d732629 +Ref: reference/mpi4py MPI F_COMPLEX mpi4py MPI F_COMPLEX732690 +Ref: 1eb732690 +Node: mpi4py MPI F_FLOAT_COMPLEX732812 +Ref: reference/mpi4py MPI F_FLOAT_COMPLEX doc732953 +Ref: 76e732953 +Ref: reference/mpi4py MPI F_FLOAT_COMPLEX mpi4py-mpi-f-float-complex732953 +Ref: 76f732953 +Ref: reference/mpi4py MPI F_FLOAT_COMPLEX mpi4py MPI F_FLOAT_COMPLEX733026 +Ref: 1ec733026 +Node: mpi4py MPI F_DOUBLE_COMPLEX733176 +Ref: reference/mpi4py MPI F_DOUBLE_COMPLEX doc733320 +Ref: 770733320 +Ref: reference/mpi4py MPI F_DOUBLE_COMPLEX mpi4py-mpi-f-double-complex733320 +Ref: 771733320 +Ref: reference/mpi4py MPI F_DOUBLE_COMPLEX mpi4py MPI F_DOUBLE_COMPLEX733395 +Ref: 1ed733395 +Node: mpi4py MPI REQUEST_NULL733548 +Ref: reference/mpi4py MPI REQUEST_NULL doc733689 +Ref: 772733689 +Ref: reference/mpi4py MPI REQUEST_NULL mpi4py-mpi-request-null733689 +Ref: 773733689 +Ref: reference/mpi4py MPI REQUEST_NULL mpi4py MPI REQUEST_NULL733756 +Ref: 1ee733756 +Node: mpi4py MPI MESSAGE_NULL733885 +Ref: reference/mpi4py MPI MESSAGE_NULL doc734025 +Ref: 774734025 +Ref: reference/mpi4py MPI MESSAGE_NULL mpi4py-mpi-message-null734025 +Ref: 775734025 +Ref: reference/mpi4py MPI MESSAGE_NULL mpi4py MPI MESSAGE_NULL734092 +Ref: 1ef734092 +Node: mpi4py MPI MESSAGE_NO_PROC734221 +Ref: reference/mpi4py MPI MESSAGE_NO_PROC doc734356 +Ref: 776734356 +Ref: reference/mpi4py MPI MESSAGE_NO_PROC mpi4py-mpi-message-no-proc734356 +Ref: 777734356 +Ref: reference/mpi4py MPI MESSAGE_NO_PROC mpi4py MPI MESSAGE_NO_PROC734429 +Ref: 1f0734429 +Node: mpi4py MPI OP_NULL734577 +Ref: reference/mpi4py MPI OP_NULL doc734703 +Ref: 778734703 +Ref: reference/mpi4py MPI OP_NULL mpi4py-mpi-op-null734703 +Ref: 779734703 +Ref: reference/mpi4py MPI OP_NULL mpi4py MPI OP_NULL734760 +Ref: 1f1734760 +Node: mpi4py MPI MAX734969 +Ref: reference/mpi4py MPI MAX doc735083 +Ref: 77a735083 +Ref: reference/mpi4py MPI MAX mpi4py-mpi-max735083 +Ref: 77b735083 +Ref: reference/mpi4py MPI MAX mpi4py MPI MAX735132 +Ref: 67735132 +Node: mpi4py MPI MIN735329 +Ref: reference/mpi4py MPI MIN doc735439 +Ref: 77c735439 +Ref: reference/mpi4py MPI MIN mpi4py-mpi-min735439 +Ref: 77d735439 +Ref: reference/mpi4py MPI MIN mpi4py MPI MIN735488 +Ref: 1f2735488 +Node: mpi4py MPI SUM735685 +Ref: reference/mpi4py MPI SUM doc735796 +Ref: 77e735796 +Ref: reference/mpi4py MPI SUM mpi4py-mpi-sum735796 +Ref: 77f735796 +Ref: reference/mpi4py MPI SUM mpi4py MPI SUM735845 +Ref: 65735845 +Node: mpi4py MPI PROD736042 +Ref: reference/mpi4py MPI PROD doc736154 +Ref: 780736154 +Ref: reference/mpi4py MPI PROD mpi4py-mpi-prod736154 +Ref: 781736154 +Ref: reference/mpi4py MPI PROD mpi4py MPI PROD736205 +Ref: 66736205 +Node: mpi4py MPI LAND736405 +Ref: reference/mpi4py MPI LAND doc736518 +Ref: 782736518 +Ref: reference/mpi4py MPI LAND mpi4py-mpi-land736518 +Ref: 783736518 +Ref: reference/mpi4py MPI LAND mpi4py MPI LAND736569 +Ref: 1f3736569 +Node: mpi4py MPI BAND736769 +Ref: reference/mpi4py MPI BAND doc736881 +Ref: 784736881 +Ref: reference/mpi4py MPI BAND mpi4py-mpi-band736881 +Ref: 785736881 +Ref: reference/mpi4py MPI BAND mpi4py MPI BAND736932 +Ref: 1f4736932 +Node: mpi4py MPI LOR737132 +Ref: reference/mpi4py MPI LOR doc737243 +Ref: 786737243 +Ref: reference/mpi4py MPI LOR mpi4py-mpi-lor737243 +Ref: 787737243 +Ref: reference/mpi4py MPI LOR mpi4py MPI LOR737292 +Ref: 1f5737292 +Node: mpi4py MPI BOR737489 +Ref: reference/mpi4py MPI BOR doc737600 +Ref: 788737600 +Ref: reference/mpi4py MPI BOR mpi4py-mpi-bor737600 +Ref: 789737600 +Ref: reference/mpi4py MPI BOR mpi4py MPI BOR737649 +Ref: 1f6737649 +Node: mpi4py MPI LXOR737846 +Ref: reference/mpi4py MPI LXOR doc737958 +Ref: 78a737958 +Ref: reference/mpi4py MPI LXOR mpi4py-mpi-lxor737958 +Ref: 78b737958 +Ref: reference/mpi4py MPI LXOR mpi4py MPI LXOR738009 +Ref: 1f7738009 +Node: mpi4py MPI BXOR738209 +Ref: reference/mpi4py MPI BXOR doc738324 +Ref: 78c738324 +Ref: reference/mpi4py MPI BXOR mpi4py-mpi-bxor738324 +Ref: 78d738324 +Ref: reference/mpi4py MPI BXOR mpi4py MPI BXOR738375 +Ref: 1f8738375 +Node: mpi4py MPI MAXLOC738575 +Ref: reference/mpi4py MPI MAXLOC doc738692 +Ref: 78e738692 +Ref: reference/mpi4py MPI MAXLOC mpi4py-mpi-maxloc738692 +Ref: 78f738692 +Ref: reference/mpi4py MPI MAXLOC mpi4py MPI MAXLOC738747 +Ref: 1f9738747 +Node: mpi4py MPI MINLOC738953 +Ref: reference/mpi4py MPI MINLOC doc739073 +Ref: 790739073 +Ref: reference/mpi4py MPI MINLOC mpi4py-mpi-minloc739073 +Ref: 791739073 +Ref: reference/mpi4py MPI MINLOC mpi4py MPI MINLOC739128 +Ref: 1fa739128 +Node: mpi4py MPI REPLACE739334 +Ref: reference/mpi4py MPI REPLACE doc739453 +Ref: 792739453 +Ref: reference/mpi4py MPI REPLACE mpi4py-mpi-replace739453 +Ref: 793739453 +Ref: reference/mpi4py MPI REPLACE mpi4py MPI REPLACE739510 +Ref: 1fb739510 +Node: mpi4py MPI NO_OP739719 +Ref: reference/mpi4py MPI NO_OP doc739842 +Ref: 794739842 +Ref: reference/mpi4py MPI NO_OP mpi4py-mpi-no-op739842 +Ref: 795739842 +Ref: reference/mpi4py MPI NO_OP mpi4py MPI NO_OP739895 +Ref: 1fc739895 +Node: mpi4py MPI GROUP_NULL740098 +Ref: reference/mpi4py MPI GROUP_NULL doc740225 +Ref: 796740225 +Ref: reference/mpi4py MPI GROUP_NULL mpi4py-mpi-group-null740225 +Ref: 797740225 +Ref: reference/mpi4py MPI GROUP_NULL mpi4py MPI GROUP_NULL740288 +Ref: 1fd740288 +Node: mpi4py MPI GROUP_EMPTY740407 +Ref: reference/mpi4py MPI GROUP_EMPTY doc740538 +Ref: 798740538 +Ref: reference/mpi4py MPI GROUP_EMPTY mpi4py-mpi-group-empty740538 +Ref: 799740538 +Ref: reference/mpi4py MPI GROUP_EMPTY mpi4py MPI GROUP_EMPTY740603 +Ref: 1fe740603 +Node: mpi4py MPI INFO_NULL740725 +Ref: reference/mpi4py MPI INFO_NULL doc740854 +Ref: 79a740854 +Ref: reference/mpi4py MPI INFO_NULL mpi4py-mpi-info-null740854 +Ref: 79b740854 +Ref: reference/mpi4py MPI INFO_NULL mpi4py MPI INFO_NULL740915 +Ref: 1ff740915 +Node: mpi4py MPI INFO_ENV741029 +Ref: reference/mpi4py MPI INFO_ENV doc741162 +Ref: 79c741162 +Ref: reference/mpi4py MPI INFO_ENV mpi4py-mpi-info-env741162 +Ref: 79d741162 +Ref: reference/mpi4py MPI INFO_ENV mpi4py MPI INFO_ENV741221 +Ref: 200741221 +Node: mpi4py MPI ERRHANDLER_NULL741332 +Ref: reference/mpi4py MPI ERRHANDLER_NULL doc741469 +Ref: 79e741469 +Ref: reference/mpi4py MPI ERRHANDLER_NULL mpi4py-mpi-errhandler-null741469 +Ref: 79f741469 +Ref: reference/mpi4py MPI ERRHANDLER_NULL mpi4py MPI ERRHANDLER_NULL741542 +Ref: 201741542 +Node: mpi4py MPI ERRORS_RETURN741696 +Ref: reference/mpi4py MPI ERRORS_RETURN doc741837 +Ref: 7a0741837 +Ref: reference/mpi4py MPI ERRORS_RETURN mpi4py-mpi-errors-return741837 +Ref: 7a1741837 +Ref: reference/mpi4py MPI ERRORS_RETURN mpi4py MPI ERRORS_RETURN741906 +Ref: 99741906 +Node: mpi4py MPI ERRORS_ABORT742054 +Ref: reference/mpi4py MPI ERRORS_ABORT doc742196 +Ref: 7a2742196 +Ref: reference/mpi4py MPI ERRORS_ABORT mpi4py-mpi-errors-abort742196 +Ref: 7a3742196 +Ref: reference/mpi4py MPI ERRORS_ABORT mpi4py MPI ERRORS_ABORT742263 +Ref: 566742263 +Node: mpi4py MPI ERRORS_ARE_FATAL742398 +Ref: reference/mpi4py MPI ERRORS_ARE_FATAL doc742539 +Ref: 7a4742539 +Ref: reference/mpi4py MPI ERRORS_ARE_FATAL mpi4py-mpi-errors-are-fatal742539 +Ref: 7a5742539 +Ref: reference/mpi4py MPI ERRORS_ARE_FATAL mpi4py MPI ERRORS_ARE_FATAL742614 +Ref: 9a742614 +Node: mpi4py MPI SESSION_NULL742771 +Ref: reference/mpi4py MPI SESSION_NULL doc742909 +Ref: 7a6742909 +Ref: reference/mpi4py MPI SESSION_NULL mpi4py-mpi-session-null742909 +Ref: 7a7742909 +Ref: reference/mpi4py MPI SESSION_NULL mpi4py MPI SESSION_NULL742976 +Ref: 567742976 +Node: mpi4py MPI COMM_NULL743105 +Ref: reference/mpi4py MPI COMM_NULL doc743236 +Ref: 7a8743236 +Ref: reference/mpi4py MPI COMM_NULL mpi4py-mpi-comm-null743236 +Ref: 7a9743236 +Ref: reference/mpi4py MPI COMM_NULL mpi4py MPI COMM_NULL743297 +Ref: 202743297 +Node: mpi4py MPI COMM_SELF743411 +Ref: reference/mpi4py MPI COMM_SELF doc743540 +Ref: 7aa743540 +Ref: reference/mpi4py MPI COMM_SELF mpi4py-mpi-comm-self743540 +Ref: 7ab743540 +Ref: reference/mpi4py MPI COMM_SELF mpi4py MPI COMM_SELF743601 +Ref: 23743601 +Node: mpi4py MPI COMM_WORLD743725 +Ref: reference/mpi4py MPI COMM_WORLD doc743853 +Ref: 7ac743853 +Ref: reference/mpi4py MPI COMM_WORLD mpi4py-mpi-comm-world743853 +Ref: 7ad743853 +Ref: reference/mpi4py MPI COMM_WORLD mpi4py MPI COMM_WORLD743916 +Ref: 24743916 +Node: mpi4py MPI WIN_NULL744043 +Ref: reference/mpi4py MPI WIN_NULL doc744171 +Ref: 7ae744171 +Ref: reference/mpi4py MPI WIN_NULL mpi4py-mpi-win-null744171 +Ref: 7af744171 +Ref: reference/mpi4py MPI WIN_NULL mpi4py MPI WIN_NULL744230 +Ref: 203744230 +Node: mpi4py MPI FILE_NULL744339 +Ref: reference/mpi4py MPI FILE_NULL doc744463 +Ref: 7b0744463 +Ref: reference/mpi4py MPI FILE_NULL mpi4py-mpi-file-null744463 +Ref: 7b1744463 +Ref: reference/mpi4py MPI FILE_NULL mpi4py MPI FILE_NULL744524 +Ref: 204744524 +Node: mpi4py MPI pickle744638 +Ref: reference/mpi4py MPI pickle doc744734 +Ref: 7b2744734 +Ref: reference/mpi4py MPI pickle mpi4py-mpi-pickle744734 +Ref: 7b3744734 +Ref: reference/mpi4py MPI pickle mpi4py MPI pickle744789 +Ref: a8744789 +Node: Citation<2>744928 +Ref: citation doc745018 +Ref: 7b4745018 +Ref: citation citation745018 +Ref: 7b5745018 +Node: Installation746324 +Ref: install doc746416 +Ref: 7b6746416 +Ref: install installation746416 +Ref: 7b7746416 +Node: Build backends746540 +Ref: install build-backends746621 +Ref: 7b8746621 +Ref: install envvar-MPI4PY_BUILD_BACKEND746916 +Ref: 7b9746916 +Ref: Build backends-Footnote-1747265 +Ref: Build backends-Footnote-2747301 +Ref: Build backends-Footnote-3747351 +Ref: Build backends-Footnote-4747378 +Ref: Build backends-Footnote-5747423 +Node: Using setuptools747455 +Ref: install using-setuptools747554 +Ref: 7ba747554 +Ref: install envvar-MPI4PY_BUILD_MPICC747958 +Ref: 7bb747958 +Ref: install envvar-MPI4PY_BUILD_MPILD748368 +Ref: 7bc748368 +Ref: install envvar-MPI4PY_BUILD_MPICFG748699 +Ref: 7bd748699 +Ref: install envvar-MPI4PY_BUILD_CONFIGURE749334 +Ref: 7be749334 +Ref: install envvar-MPICC750117 +Ref: 7bf750117 +Ref: install envvar-MPILD750209 +Ref: 7c0750209 +Ref: install envvar-MPICFG750301 +Ref: 7c1750301 +Ref: Using setuptools-Footnote-1750431 +Ref: Using setuptools-Footnote-2750467 +Node: Using scikit-build-core750503 +Ref: install using-scikit-build-core750629 +Ref: 7c2750629 +Ref: Using scikit-build-core-Footnote-1751539 +Ref: Using scikit-build-core-Footnote-2751589 +Ref: Using scikit-build-core-Footnote-3751639 +Ref: Using scikit-build-core-Footnote-4751666 +Node: Using meson-python751730 +Ref: install scikit-build-core751831 +Ref: 7c3751831 +Ref: install using-meson-python751831 +Ref: 7c4751831 +Ref: Using meson-python-Footnote-1752421 +Ref: Using meson-python-Footnote-2752466 +Ref: Using meson-python-Footnote-3752511 +Ref: Using meson-python-Footnote-4752543 +Ref: Using meson-python-Footnote-5752588 +Node: Using pip752653 +Ref: install meson-python752754 +Ref: 7c5752754 +Ref: install using-pip752754 +Ref: 7c6752754 +Ref: Using pip-Footnote-1753827 +Node: Using conda753868 +Ref: install using-conda753960 +Ref: 7c7753960 +Ref: Using conda-Footnote-1756026 +Ref: Using conda-Footnote-2756059 +Node: Linux756172 +Ref: install cf-mpi-docs756260 +Ref: 7c8756260 +Ref: install linux756260 +Ref: 7c9756260 +Node: macOS757438 +Ref: install macos757522 +Ref: 7ca757522 +Ref: macOS-Footnote-1757841 +Node: Windows757866 +Ref: install homebrew757936 +Ref: 7cb757936 +Ref: install windows757936 +Ref: 7cc757936 +Ref: Windows-Footnote-1758748 +Ref: Windows-Footnote-2758801 +Ref: Windows-Footnote-3758878 +Node: Development758920 +Ref: develop doc759011 +Ref: 7cd759011 +Ref: develop development759011 +Ref: 7ce759011 +Ref: develop impi-rt759011 +Ref: 7cf759011 +Node: Prerequisites759110 +Ref: develop prerequisites759188 +Ref: 7d0759188 +Ref: Prerequisites-Footnote-1760083 +Ref: Prerequisites-Footnote-2760115 +Ref: Prerequisites-Footnote-3760143 +Ref: Prerequisites-Footnote-4760178 +Ref: Prerequisites-Footnote-5760209 +Ref: Prerequisites-Footnote-6760243 +Ref: Prerequisites-Footnote-7760270 +Ref: Prerequisites-Footnote-8760296 +Ref: Prerequisites-Footnote-9760332 +Node: Building760382 +Ref: develop building760479 +Ref: 7d1760479 +Ref: develop spin760479 +Ref: 7d2760479 +Ref: develop cmdoption-mpi760684 +Ref: 7d3760684 +Ref: develop cmdoption-mpicc760885 +Ref: 7d4760885 +Ref: develop cmdoption-mpild761053 +Ref: 7d5761053 +Ref: develop cmdoption-configure761289 +Ref: 7d6761289 +Node: Installing763271 +Ref: develop installing763362 +Ref: 7d7763362 +Node: Testing763599 +Ref: develop testing763673 +Ref: 7d8763673 +Ref: Testing-Footnote-1764694 +Node: Guidelines764727 +Ref: guidelines doc764813 +Ref: 7d9764813 +Ref: guidelines guidelines764813 +Ref: 7da764813 +Ref: guidelines pytest764813 +Ref: 7db764813 +Node: Fair play764866 +Ref: guidelines fair-play764922 +Ref: 7dc764922 +Node: Summary765020 +Ref: guidelines summary765092 +Ref: 7dd765092 +Ref: Summary-Footnote-1765700 +Node: Motivation765755 +Ref: guidelines motivation765841 +Ref: 7de765841 +Ref: guidelines numpy-nep-36765841 +Ref: 7df765841 +Ref: Motivation-Footnote-1766480 +Node: Scope766532 +Ref: guidelines mpi4py-mpi4py-508766626 +Ref: 7e0766626 +Ref: guidelines scope766626 +Ref: 7e1766626 +Ref: Scope-Footnote-1767241 +Node: Fair play rules767295 +Ref: guidelines fair-play-rules767370 +Ref: 7e2767370 +Ref: guidelines id1767370 +Ref: 7e3767370 +Ref: guidelines mpi-abi-paper769478 +Ref: 7e4769478 +Ref: guidelines mpi-abi-issue769791 +Ref: 7e5769791 +Node: LICENSE770922 +Ref: license doc771004 +Ref: 7e6771004 +Ref: license id1771004 +Ref: 7e7771004 +Ref: license license771004 +Ref: 7e8771004 +Node: CHANGES772533 +Ref: changes doc772624 +Ref: 7e9772624 +Ref: changes changes772624 +Ref: 7ea772624 +Ref: changes id1772624 +Ref: 7eb772624 +Node: Release 4 0 0 [2024-07-28]773809 +Ref: changes release-4-0-0-2024-07-28773914 +Ref: 7ec773914 +Ref: Release 4 0 0 [2024-07-28]-Footnote-1778913 +Ref: Release 4 0 0 [2024-07-28]-Footnote-2778958 +Node: Release 3 1 6 [2024-04-14]779003 +Ref: changes release-3-1-6-2024-04-14779143 +Ref: 7ed779143 +Node: Release 3 1 5 [2023-10-04]779301 +Ref: changes release-3-1-5-2023-10-04779441 +Ref: 7ee779441 +Node: Release 3 1 4 [2022-11-02]779635 +Ref: changes release-3-1-4-2022-11-02779775 +Ref: 7ef779775 +Node: Release 3 1 3 [2021-11-25]780077 +Ref: changes release-3-1-3-2021-11-25780217 +Ref: 7f0780217 +Node: Release 3 1 2 [2021-11-04]780434 +Ref: changes release-3-1-2-2021-11-04780574 +Ref: 7f1780574 +Node: Release 3 1 1 [2021-08-14]781356 +Ref: changes release-3-1-1-2021-08-14781496 +Ref: 7f2781496 +Node: Release 3 1 0 [2021-08-12]781722 +Ref: changes release-3-1-0-2021-08-12781862 +Ref: 7f3781862 +Ref: Release 3 1 0 [2021-08-12]-Footnote-1783378 +Ref: Release 3 1 0 [2021-08-12]-Footnote-2783417 +Ref: Release 3 1 0 [2021-08-12]-Footnote-3783501 +Ref: Release 3 1 0 [2021-08-12]-Footnote-4783580 +Ref: Release 3 1 0 [2021-08-12]-Footnote-5783651 +Node: Release 3 0 3 [2019-11-04]783701 +Ref: changes doi783841 +Ref: 7f4783841 +Ref: changes release-3-0-3-2019-11-04783841 +Ref: 7f5783841 +Node: Release 3 0 2 [2019-06-11]783962 +Ref: changes release-3-0-2-2019-06-11784102 +Ref: 7f6784102 +Node: Release 3 0 1 [2019-02-15]784634 +Ref: changes release-3-0-1-2019-02-15784774 +Ref: 7f7784774 +Node: Release 3 0 0 [2017-11-08]785441 +Ref: changes release-3-0-0-2017-11-08785581 +Ref: 7f8785581 +Node: Release 2 0 0 [2015-10-18]787686 +Ref: changes release-2-0-0-2015-10-18787826 +Ref: 7f9787826 +Node: Release 1 3 1 [2013-08-07]791352 +Ref: changes release-1-3-1-2013-08-07791490 +Ref: 7fa791490 +Node: Release 1 3 [2012-01-20]792011 +Ref: changes release-1-3-2012-01-20792149 +Ref: 7fb792149 +Node: Release 1 2 2 [2010-09-13]792703 +Ref: changes release-1-2-2-2010-09-13792841 +Ref: 7fc792841 +Node: Release 1 2 1 [2010-02-26]793729 +Ref: changes release-1-2-1-2010-02-26793867 +Ref: 7fd793867 +Node: Release 1 2 [2009-12-29]794527 +Ref: changes release-1-2-2009-12-29794665 +Ref: 7fe794665 +Ref: Release 1 2 [2009-12-29]-Footnote-1796313 +Node: Release 1 1 0 [2009-06-06]796372 +Ref: changes release-1-1-0-2009-06-06796510 +Ref: 7ff796510 +Node: Release 1 0 0 [2009-03-20]797514 +Ref: changes release-1-0-0-2009-03-20797619 +Ref: 800797619 +Node: Python Module Index800695 +Node: Index801481 +Ref: 234939854 +Ref: 22d939884 +Ref: mpi4py futures cpi-py939915 +Ref: mpi4py futures julia-py939946 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/4.0.0/mpi4py.pdf b/4.0.0/mpi4py.pdf new file mode 100644 index 0000000..b624e79 Binary files /dev/null and b/4.0.0/mpi4py.pdf differ diff --git a/4.0.0/mpi4py.svg b/4.0.0/mpi4py.svg new file mode 100644 index 0000000..93e2af7 --- /dev/null +++ b/4.0.0/mpi4py.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/4.0.0/source/Makefile b/4.0.0/source/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/4.0.0/source/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/4.0.0/source/_templates/autosummary/class.rst b/4.0.0/source/_templates/autosummary/class.rst new file mode 100644 index 0000000..446de7d --- /dev/null +++ b/4.0.0/source/_templates/autosummary/class.rst @@ -0,0 +1,69 @@ +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +{%- if autotype is defined %} +{%- set objtype = autotype.get(name) or objtype %} +{%- endif %} + +.. auto{{ objtype }}:: {{ objname }} + :show-inheritance: + + {% for item in ['__new__', '__init__'] %} + {%- if item in members and item not in inherited_members %} + .. automethod:: {{item}} + {%- endif %} + {%- endfor %} + + {%- for item in inherited_members %} + {%- if item in methods %} + {%- set dummy = methods.remove(item) %} + {%- endif %} + {%- if item in attributes %} + {%- set dummy = attributes.remove(item) %} + {%- endif %} + {%- endfor %} + {%- for item in ['__new__', '__init__'] %} + {%- if item in methods %} + {%- set dummy = methods.remove(item) %} + {%- endif %} + {%- endfor %} + + {% block methods_summary %} + {%- if methods %} + .. rubric:: Methods Summary + .. autosummary:: + {% for item in methods %} + ~{{ name }}.{{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + + {% block attributes_summary %} + {%- if attributes %} + .. rubric:: Attributes Summary + .. autosummary:: + {% for item in attributes %} + ~{{ name }}.{{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + + {% block methods_documentation %} + {%- if methods %} + .. rubric:: Methods Documentation + {% for item in methods %} + .. automethod:: {{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + + {% block attributes_documentation %} + {%- if attributes %} + .. rubric:: Attributes Documentation + {% for item in attributes %} + .. autoattribute:: {{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} +{# #} diff --git a/4.0.0/source/_templates/autosummary/module.rst b/4.0.0/source/_templates/autosummary/module.rst new file mode 100644 index 0000000..f1d905e --- /dev/null +++ b/4.0.0/source/_templates/autosummary/module.rst @@ -0,0 +1,62 @@ +{{ fullname | escape | underline}} + +.. automodule:: {{ fullname }} + {%- if synopsis is defined %} + :synopsis: {{ synopsis.get(fullname, '') }} + {%- endif %} + + {% block classes %} + {%- if classes %} + .. rubric:: {{ _('Classes') }} + .. autosummary:: + :toctree: + {% for item in classes %} + {{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + + {% block exceptions %} + {%- if exceptions %} + .. rubric:: {{ _('Exceptions') }} + .. autosummary:: + :toctree: + {% for item in exceptions %} + {{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + + {% block functions %} + {%- if functions %} + .. rubric:: {{ _('Functions') }} + .. autosummary:: + :toctree: + {% for item in functions %} + {{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + + {% block attributes %} + {%- if attributes %} + .. rubric:: {{ _('Attributes') }} + .. autosummary:: + :toctree: + {% for item in attributes %} + {{ item }} + {%- endfor %} + {%- endif %} + {%- endblock %} + +{% block modules %} +{%- if modules %} +.. rubric:: {{ _('Modules') }} +.. autosummary:: + :toctree: + :recursive: +{% for item in modules %} + {{ item }} +{%- endfor %} +{%- endif %} +{%- endblock %} diff --git a/4.0.0/source/_templates/layout.html b/4.0.0/source/_templates/layout.html new file mode 100644 index 0000000..462ca36 --- /dev/null +++ b/4.0.0/source/_templates/layout.html @@ -0,0 +1,19 @@ +{% extends "!layout.html" %} + +{% macro menu_genindex() -%} + +{%- endmacro %} + +{% block menu %} + {{ super() }} + {%- if builder == 'html' %} + {{ menu_genindex() }} + {%- endif %} + {%- if builder == 'dirhtml' %} + {{ menu_genindex() }} + {%- endif %} +{% endblock %} diff --git a/4.0.0/source/apidoc.py b/4.0.0/source/apidoc.py new file mode 100644 index 0000000..69667ef --- /dev/null +++ b/4.0.0/source/apidoc.py @@ -0,0 +1,585 @@ +import os +import sys +import inspect +import textwrap + + +def is_cyfunction(obj): + return type(obj).__name__ == 'cython_function_or_method' + + +def is_function(obj): + return ( + inspect.isbuiltin(obj) + or is_cyfunction(obj) + or type(obj) is type(ord) + ) + + +def is_method(obj): + return ( + inspect.ismethoddescriptor(obj) + or inspect.ismethod(obj) + or is_cyfunction(obj) + or type(obj) in ( + type(str.index), + type(str.__add__), + type(str.__new__), + ) + ) + + +def is_classmethod(obj): + return ( + inspect.isbuiltin(obj) + or type(obj).__name__ in ( + 'classmethod', + 'classmethod_descriptor', + ) + ) + + +def is_staticmethod(obj): + return ( + type(obj).__name__ in ( + 'staticmethod', + ) + ) + + +def is_datadescr(obj): + return inspect.isdatadescriptor(obj) and not hasattr(obj, 'fget') + + +def is_property(obj): + return inspect.isdatadescriptor(obj) and hasattr(obj, 'fget') + + +def is_class(obj): + return inspect.isclass(obj) or type(obj) is type(int) + + +class Lines(list): + + INDENT = " " * 4 + level = 0 + + @property + def add(self): + return self + + @add.setter + def add(self, lines): + if lines is None: + return + if isinstance(lines, str): + lines = textwrap.dedent(lines).strip().split('\n') + indent = self.INDENT * self.level + for line in lines: + self.append(indent + line) + + +def signature(obj): + doc = obj.__doc__ + sig = doc.partition('\n')[0] + return sig or None + + +def docstring(obj): + doc = obj.__doc__ + doc = doc.partition('\n')[2] + doc = textwrap.dedent(doc).strip() + doc = f'"""{doc}\n"""' + doc = textwrap.indent(doc, Lines.INDENT) + return doc + + +def visit_constant(constant): + name, value = constant + typename = type(value).__name__ + kind = "Constant" if isinstance(value, (str, int, float)) else "Object" + init = f"_def({typename}, '{name}')" + doc = f"#: {kind} ``{name}`` of type :class:`{typename}`" + return f"{name}: {typename} = {init} {doc}\n" + + +def visit_function(function): + sig = signature(function) + doc = docstring(function) + body = Lines.INDENT + "..." + return f"def {sig}:\n{doc}\n{body}\n" + + +def visit_method(method): + sig = signature(method) + doc = docstring(method) + body = Lines.INDENT + "..." + return f"def {sig}:\n{doc}\n{body}\n" + + +def visit_datadescr(datadescr, name=None): + sig = signature(datadescr) + doc = docstring(datadescr) + name = sig.split(':')[0].strip() + type = sig.split(':')[1].strip() + sig = f"{name}(self) -> {type}" + body = Lines.INDENT + "..." + return f"@property\ndef {sig}:\n{doc}\n{body}\n" + + +def visit_property(prop, name=None): + sig = signature(prop.fget) + name = name or prop.fget.__name__ + type = sig.rsplit('->', 1)[-1].strip() + sig = f"{name}(self) -> {type}" + doc = f'"""{prop.__doc__}"""' + doc = textwrap.indent(doc, Lines.INDENT) + body = Lines.INDENT + "..." + return f"@property\ndef {sig}:\n{doc}\n{body}\n" + + +def visit_constructor(cls, name='__init__', args=None): + init = (name == '__init__') + argname = cls.__mro__[-2].__name__.lower() + argtype = cls.__name__ + initarg = args or f"{argname}: {argtype} | None = None" + selfarg = 'self' if init else 'cls' + rettype = 'None' if init else 'Self' + arglist = f"{selfarg}, {initarg}" + sig = f"{name}({arglist}) -> {rettype}" + ret = '...' if init else 'return super().__new__(cls)' + body = Lines.INDENT + ret + return f"def {sig}:\n{body}" + + +def visit_class(cls, done=None): + skip = { + '__doc__', + '__dict__', + '__module__', + '__weakref__', + '__pyx_vtable__', + '__lt__', + '__le__', + '__ge__', + '__gt__', + '__str__', + '__repr__', + } + special = { + '__len__': ("self", "int", None), + '__bool__': ("self", "bool", None), + '__hash__': ("self", "int", None), + '__int__': ("self", "int", None), + '__index__': ("self", "int", None), + '__eq__': ("self", "other: object", "bool", None), + '__ne__': ("self", "other: object", "bool", None), + '__buffer__': ("self", "flags: int", "memoryview", (3, 12)), + } + constructor = ( + '__new__', + '__init__', + ) + + override = OVERRIDE.get(cls.__name__, {}) + done = set() if done is None else done + lines = Lines() + + base = cls.__base__ + if base is object: + lines.add = f"class {cls.__name__}:" + else: + lines.add = f"class {cls.__name__}({base.__name__}):" + lines.level += 1 + + lines.add = docstring(cls) + + name = "__init__" + if name not in override: + sig = signature(cls) + if sig is not None: + done.update(constructor) + args = sig.strip().split('->', 1)[0].strip() + args = args[args.index('('):][1:-1] + lines.add = visit_constructor(cls, name, args) + + for name in constructor: + if name in done: + break + if name in override: + done.update(constructor) + lines.add = override[name] + break + if name in cls.__dict__: + done.update(constructor) + lines.add = visit_constructor(cls, name) + break + + if '__hash__' in cls.__dict__: + if cls.__hash__ is None: + done.add('__hash__') + + dct = cls.__dict__ + keys = list(dct.keys()) + for name in keys: + if name in done: + continue + + if name in skip: + continue + + if name in override: + done.add(name) + lines.add = override[name] + continue + + if name in special: + done.add(name) + *args, retv, py = special[name] + sig = f"{name}({', '.join(args)}) -> {retv}" + if py is not None: + lines.add = f"if sys.version_info >= {py}:" + lines.level += 1 + lines.add = f"def {sig}: ..." + if py is not None: + lines.level -= 1 + continue + + attr = getattr(cls, name) + + if is_method(attr): + done.add(name) + if name == attr.__name__: + obj = dct[name] + if is_classmethod(obj): + lines.add = "@classmethod" + elif is_staticmethod(obj): + lines.add = "@staticmethod" + lines.add = visit_method(attr) + elif False: + lines.add = f"{name} = {attr.__name__}" + continue + + if is_datadescr(attr): + done.add(name) + lines.add = visit_datadescr(attr) + continue + + if is_property(attr): + done.add(name) + lines.add = visit_property(attr, name) + continue + + leftovers = [name for name in keys if + name not in done and name not in skip] + if leftovers: + raise RuntimeError(f"leftovers: {leftovers}") + + lines.level -= 1 + return lines + + +def visit_module(module, done=None): + skip = { + '__doc__', + '__name__', + '__loader__', + '__spec__', + '__file__', + '__package__', + '__builtins__', + } + + done = set() if done is None else done + lines = Lines() + + keys = list(module.__dict__.keys()) + keys.sort(key=lambda name: name.startswith("_")) + + constants = [ + (name, getattr(module, name)) for name in keys + if all(( + name not in done and name not in skip, + isinstance(getattr(module, name), int), + )) + ] + for _, value in constants: + cls = type(value) + name = cls.__name__ + if name in done or name in skip: + continue + if cls.__module__ == module.__name__: + done.add(name) + lines.add = visit_class(cls) + lines.add = "" + for name, value in constants: + done.add(name) + if name in OVERRIDE: + lines.add = OVERRIDE[name] + else: + lines.add = visit_constant((name, value)) + if constants: + lines.add = "" + + for name in keys: + if name in done or name in skip: + continue + value = getattr(module, name) + + if is_class(value): + done.add(name) + lines.add = visit_class(value) + lines.add = "" + aliases = [ + (k, getattr(module, k)) for k in keys + if all(( + k not in done and k not in skip, + getattr(module, k) is value, + )) + ] + for aliasname, target in aliases: + done.add(aliasname) + lines.add = f"{aliasname} = {target.__name__}" + if aliases: + lines.add = "" + instances = [ + (k, getattr(module, k)) for k in keys + if all(( + k not in done and k not in skip, + type(getattr(module, k)) is value, + )) + ] + for attrname, attrvalue in instances: + done.add(attrname) + lines.add = visit_constant((attrname, attrvalue)) + if instances: + lines.add = "" + continue + + if is_function(value): + done.add(name) + if name == value.__name__: + lines.add = visit_function(value) + else: + lines.add = f"{name} = {value.__name__}" + continue + + lines.add = "" + for name in keys: + if name in done or name in skip: + continue + value = getattr(module, name) + done.add(name) + if name in OVERRIDE: + lines.add = OVERRIDE[name] + else: + lines.add = visit_constant((name, value)) + + leftovers = [name for name in keys if + name not in done and name not in skip] + if leftovers: + raise RuntimeError(f"leftovers: {leftovers}") + return lines + + +IMPORTS = """ +import sys +from typing import ( + Any, + AnyStr, + Final, + Literal, + NoReturn, +) +from typing import ( + Callable, + Hashable, + Iterable, + Iterator, + Sequence, + Mapping, +) +try: + from typing import Self +except ImportError: + Self = 'Self' +from os import PathLike +""" + +HELPERS = """ +class _Int(int): pass + +def _repr(obj): + try: + return obj._name + except AttributeError: + return super(obj).__repr__() + +def _def(cls, name): + if cls is int: + cls = _Int + obj = cls() + if cls.__name__ in ('Pickle', 'buffer'): + return obj + obj._name = name + if '__repr__' not in cls.__dict__: + cls.__repr__ = _repr + return obj +""" + +OVERRIDE = { + 'Exception': { + '__new__': ( + "def __new__(cls, ierr: int = SUCCESS) -> Self:\n" + " return super().__new__(cls, ierr)"), + "__lt__": "def __lt__(self, other: int) -> bool: ...", + "__le__": "def __le__(self, other: int) -> bool: ...", + "__gt__": "def __gt__(self, other: int) -> bool: ...", + "__ge__": "def __ge__(self, other: int) -> bool: ...", + }, + 'Info': { + '__iter__': + "def __iter__(self) -> Iterator[str]: ...", + '__getitem__': + "def __getitem__(self, item: str) -> str: ...", + '__setitem__': + "def __setitem__(self, item: str, value: str) -> None: ...", + '__delitem__': + "def __delitem__(self, item: str) -> None: ...", + '__contains__': + "def __contains__(self, value: str) -> bool: ...", + }, + 'Op': { + '__call__': "def __call__(self, x: Any, y: Any) -> Any: ...", + }, + 'buffer': { + '__new__': ( + "def __new__(cls, buf: Buffer) -> Self:\n" + " return super().__new__(cls)"), + '__getitem__': ( + "def __getitem__(self, " + "item: int | slice) " + "-> int | buffer: ..."), + '__setitem__': ( + "def __setitem__(self, " + "item: int | slice, " + "value:int | Buffer) " + "-> None: ..."), + '__delitem__': None, + }, + '__pyx_capi__': None, + '_typedict': "_typedict: Dict[str, Datatype] = {}", + '_typedict_c': "_typedict_c: Dict[str, Datatype] = {}", + '_typedict_f': "_typedict_f: Dict[str, Datatype] = {}", + '_keyval_registry': None, +} +OVERRIDE.update({ + subtype: { + '__new__': ( + f"def __new__(cls) -> Self:\n" + f" return super().__new__({subtype})"), + '__repr__': "def __repr__(self) -> str: return self._name", + } + for subtype in ( + 'BottomType', + 'InPlaceType', + 'BufferAutomaticType', + ) +}) + +TYPING = """ +from .typing import * +""" + + +def visit_mpi4py_MPI(): + from mpi4py import MPI as module + lines = Lines() + lines.add = f'"""{module.__doc__}"""' + lines.add = "# flake8: noqa" + lines.add = IMPORTS + lines.add = "" + lines.add = HELPERS + lines.add = "" + lines.add = visit_module(module) + lines.add = "" + lines.add = TYPING + return lines + + +def generate(filename): + dirname = os.path.dirname(filename) + os.makedirs(dirname, exist_ok=True) + with open(filename, 'w') as f: + for line in visit_mpi4py_MPI(): + print(line, file=f) + + +def load_module(filename, name=None): + if name is None: + name, _ = os.path.splitext( + os.path.basename(filename)) + module = type(sys)(name) + module.__file__ = filename + module.__package__ = name.rsplit('.', 1)[0] + with open(filename) as f: + preamble = "from __future__ import annotations" + codelines = f.read().split("\n") + for lineno, line in enumerate(codelines): + match = line.strip().startswith + if not any(map(match, "'\"#")): + codelines.insert(lineno, preamble) + break + code = "\n".join(codelines) + exec(code, module.__dict__) # noqa: S102 + return module + + +_sys_modules = {} + + +def replace_module(module): + name = module.__name__ + assert name not in _sys_modules # noqa: S101 + _sys_modules[name] = sys.modules[name] + sys.modules[name] = module + pkgname, _, modname = name.rpartition('.') + if pkgname: + setattr(sys.modules[pkgname], modname, module) + + +def restore_module(module): + name = module.__name__ + assert name in _sys_modules # noqa: S101 + sys.modules[name] = _sys_modules[name] + pkgname, _, modname = name.rpartition('.') + if pkgname: + setattr(sys.modules[pkgname], modname, sys.modules[name]) + + +def annotate(dest, source): + try: + dest.__annotations__ = source.__annotations__ + except AttributeError: + pass + if isinstance(dest, type): + for name in dest.__dict__.keys(): + if hasattr(source, name): + obj = getattr(dest, name) + annotate(obj, getattr(source, name)) + if isinstance(dest, type(sys)): + for name in dir(dest): + if hasattr(source, name): + obj = getattr(dest, name) + mod = getattr(obj, '__module__', None) + if dest.__name__ == mod: + annotate(obj, getattr(source, name)) + for name in dir(source): + if not hasattr(dest, name): + setattr(dest, name, getattr(source, name)) + + +OUTDIR = 'reference' + +if __name__ == '__main__': + generate(os.path.join(OUTDIR, 'mpi4py.MPI.py')) diff --git a/4.0.0/source/changes.rst b/4.0.0/source/changes.rst new file mode 100644 index 0000000..0008021 --- /dev/null +++ b/4.0.0/source/changes.rst @@ -0,0 +1,10 @@ +:tocdepth: 1 + +.. _changes: + +CHANGES +------- + +.. default-role:: literal + +.. include:: ../../CHANGES.rst diff --git a/4.0.0/source/citation.rst b/4.0.0/source/citation.rst new file mode 100644 index 0000000..9436138 --- /dev/null +++ b/4.0.0/source/citation.rst @@ -0,0 +1,8 @@ +Citation +======== + +If MPI for Python been significant to a project that leads to an +academic publication, please acknowledge that fact by citing the +project. + +.. include:: ../../CITATION.rst diff --git a/4.0.0/source/conf.py b/4.0.0/source/conf.py new file mode 100644 index 0000000..ec89235 --- /dev/null +++ b/4.0.0/source/conf.py @@ -0,0 +1,389 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. + +import os +import sys +import typing +import datetime +import importlib +sys.path.insert(0, os.path.abspath('.')) +_today = datetime.datetime.now() + + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +package = 'mpi4py' + + +def pkg_version(): + import re + here = os.path.dirname(__file__) + pardir = [os.path.pardir] * 2 + topdir = os.path.join(here, *pardir) + srcdir = os.path.join(topdir, 'src') + with open(os.path.join(srcdir, 'mpi4py', '__init__.py')) as f: + m = re.search(r"__version__\s*=\s*'(.*)'", f.read()) + return m.groups()[0] + + +project = 'MPI for Python' +author = 'Lisandro Dalcin' +copyright = f'{_today.year}, {author}' + +release = pkg_version() +version = release.rsplit('.', 1)[0] + + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', +] + +templates_path = ['_templates'] +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +needs_sphinx = '5.0.0' + +default_role = 'any' + +nitpicky = True +nitpick_ignore = [ + ('c:func', r'atexit'), + ('py:mod', r'__worker__'), + ('py:mod', r'pickle5'), +] +nitpick_ignore_regex = [ + (r'c:.*', r'MPI_.*'), + (r'envvar', r'(LD_LIBRARY_)?PATH'), + (r'envvar', r'(MPICH|OMPI|MPIEXEC)_.*'), +] + +toc_object_entries = False +toc_object_entries_show_parents = 'hide' +# python_use_unqualified_type_names = True + +autodoc_class_signature = 'separated' +autodoc_typehints = 'description' +autodoc_typehints_format = 'short' +autodoc_mock_imports = [] +autodoc_type_aliases = {} + +autosummary_context = { + 'synopsis': {}, + 'autotype': {}, +} + +intersphinx_mapping = { + 'python': ('https://docs.python.org/3/', None), + 'numpy': ('https://numpy.org/doc/stable/', None), + 'dlpack': ('https://dmlc.github.io/dlpack/latest/', None), + 'numba': ('https://numba.readthedocs.io/en/stable/', None), +} + +napoleon_preprocess_types = True + +try: + import sphinx_rtd_theme + if 'sphinx_rtd_theme' not in extensions: + extensions.append('sphinx_rtd_theme') +except ImportError: + sphinx_rtd_theme = None + +try: + import sphinx_copybutton + if 'sphinx_copybutton' not in extensions: + extensions.append('sphinx_copybutton') +except ImportError: + sphinx_copybutton = None + +copybutton_exclude = '.linenos, .gp, .go' +copybutton_prompt_text = r'\$ |>>> |\.\.\. ' +copybutton_prompt_is_regexp = True +copybutton_line_continuation_character = '\\' + +extensions.append('sphinx.ext.coverage') +coverage_ignore_modules = [r'mpi4py\.(bench|run)'] +coverage_ignore_classes = [r'Rc', r'memory'] + + +def _setup_numpy_typing(): + try: + import numpy as np + except ImportError: + from types import new_class + from typing import Generic, TypeVar + np = type(sys)('numpy') + sys.modules[np.__name__] = np + np.dtype = new_class('dtype', (Generic[TypeVar('T')],)) + np.dtype.__module__ = np.__name__ + + try: + import numpy.typing as npt + except ImportError: + npt = type(sys)('numpy.typing') + np.typing = npt + sys.modules[npt.__name__] = npt + npt.__all__ = [] + for attr in ['ArrayLike', 'DTypeLike']: + setattr(npt, attr, typing.Any) + npt.__all__.append(attr) + + +def _patch_domain_python(): + try: + from numpy.typing import __all__ as numpy_types + except ImportError: + numpy_types = [] + try: + from mpi4py.typing import __all__ as mpi4py_types + except ImportError: + mpi4py_types = [] + + numpy_types = set(numpy_types) + mpi4py_types = set(mpi4py_types) + for name in numpy_types: + autodoc_type_aliases[name] = f'~numpy.typing.{name}' + for name in mpi4py_types: + autodoc_type_aliases[name] = f'~mpi4py.typing.{name}' + + from sphinx.domains.python import PythonDomain + PythonDomain.object_types['data'].roles += ('class',) + + +def _setup_autodoc(app): + from sphinx.ext import autodoc + from sphinx.ext import autosummary + from sphinx.util import typing + from sphinx.locale import _ + + # + + class ClassDocumenterMixin: + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.config.autodoc_class_signature == 'separated': + members = self.options.members + special_members = self.options.special_members + if special_members is not None: + for name in ('__new__', '__init__'): + if name in members: + members.remove(name) + if name in special_members: + special_members.remove(name) + + class ClassDocumenter( + ClassDocumenterMixin, + autodoc.ClassDocumenter, + ): + pass + + class ExceptionDocumenter( + ClassDocumenterMixin, + autodoc.ExceptionDocumenter, + ): + pass + + app.add_autodocumenter(ClassDocumenter, override=True) + app.add_autodocumenter(ExceptionDocumenter, override=True) + + # + + def istypealias(obj, name): + if isinstance(obj, type): + return name != getattr(obj, '__name__', None) + return obj in ( + typing.Any, + ) + + def istypevar(obj): + return isinstance(obj, typing.TypeVar) + + class TypeDocumenter(autodoc.DataDocumenter): + objtype = 'type' + directivetype = 'data' + priority = autodoc.ClassDocumenter.priority + 1 + + @classmethod + def can_document_member(cls, member, membername, _isattr, parent): + return ( + isinstance(parent, autodoc.ModuleDocumenter) + and parent.name == 'mpi4py.typing' + and (istypevar(member) or istypealias(member, membername)) + ) + + def add_directive_header(self, sig): + if istypevar(self.object): + obj = self.object + if not self.options.annotation: + self.options.annotation = f' = TypeVar("{obj.__name__}")' + super().add_directive_header(sig) + + def update_content(self, more_content): + obj = self.object + if istypevar(obj): + if obj.__covariant__: + kind = _("Covariant") + elif obj.__contravariant__: + kind = _("Contravariant") + else: + kind = _("Invariant") + content = f"{kind} :class:`~typing.TypeVar`." + more_content.append(content, '') + more_content.append('', '') + if istypealias(obj, self.name): + content = _('alias of %s') % typing.restify(obj) + more_content.append(content, '') + more_content.append('', '') + super().update_content(more_content) + + def get_doc(self, *args, **kwargs): + obj = self.object + if istypevar(obj): + if obj.__doc__ == typing.TypeVar.__doc__: + return [] + return super().get_doc(*args, **kwargs) + + app.add_autodocumenter(TypeDocumenter) + + # + + class ExceptionDocumenterCustom(ExceptionDocumenter): + objtype = 'class' + + def get_documenter(app, obj, parent): + if isinstance(obj, type) and issubclass(obj, BaseException): + caller = sys._getframe().f_back.f_code.co_name + if caller == 'generate_autosummary_content': + if obj.__module__ == 'mpi4py.MPI': + if obj.__name__ == 'Exception': + return ExceptionDocumenterCustom + return autosummary.get_documenter(app, obj, parent) + + from sphinx.ext.autosummary import generate + generate.get_documenter = get_documenter + + +def setup(app): + _setup_numpy_typing() + _patch_domain_python() + _setup_autodoc(app) + + try: + from mpi4py import MPI + except ImportError: + autodoc_mock_imports.append('mpi4py') + return + + sys_dwb = sys.dont_write_bytecode + sys.dont_write_bytecode = True + import apidoc + sys.dont_write_bytecode = sys_dwb + + name = MPI.__name__ + here = os.path.abspath(os.path.dirname(__file__)) + outdir = os.path.join(here, apidoc.OUTDIR) + source = os.path.join(outdir, f'{name}.py') + getmtime = os.path.getmtime + generate = ( + not os.path.exists(source) + or getmtime(source) < getmtime(MPI.__file__) + or getmtime(source) < getmtime(apidoc.__file__) + ) + if generate: + apidoc.generate(source) + module = apidoc.load_module(source) + apidoc.replace_module(module) + + synopsis = autosummary_context['synopsis'] + synopsis[module.__name__] = module.__doc__.strip() + autotype = autosummary_context['autotype'] + autotype[module.Exception.__name__] = 'exception' + + modules = [ + 'mpi4py', + 'mpi4py.run', + 'mpi4py.util.dtlib', + 'mpi4py.util.pkl5', + 'mpi4py.util.pool', + 'mpi4py.util.sync', + ] + typing_overload = typing.overload + typing.overload = lambda arg: arg + for name in modules: + mod = importlib.import_module(name) + ann = apidoc.load_module(f'{mod.__file__}i', name) + apidoc.annotate(mod, ann) + typing.overload = typing_overload + + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = ( + 'sphinx_rtd_theme' if 'sphinx_rtd_theme' in extensions else 'default' +) + +html_logo = '../mpi4py.svg' + +html_favicon = '../mpi4py.svg' + +if html_theme == 'default': + html_copy_source = False + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = f'{package}-man' + + +# -- Options for LaTeX output --------------------------------------------- + +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ('index', f'{package}.tex', project, author, 'howto'), +] + +latex_elements = { + 'papersize': 'a4', +} + + +# -- Options for manual page output --------------------------------------- + +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', package, project, [author], 3) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', package, project, author, + package, f'{project}.', 'Miscellaneous'), +] + + +# -- Options for Epub output ---------------------------------------------- + +# Output file base name for ePub builder. +epub_basename = package diff --git a/4.0.0/source/develop.rst b/4.0.0/source/develop.rst new file mode 100644 index 0000000..438e25a --- /dev/null +++ b/4.0.0/source/develop.rst @@ -0,0 +1,167 @@ +Development +=========== + +Prerequisites +------------- + +You need to have the following software properly installed to develop +*MPI for Python*: + +* `Python`_ 3.6 or above. + +* The `Cython`_ compiler. + +* A working `MPI`_ implementation like `MPICH`_ or `Open MPI`_, + preferably supporting MPI-4 and built with shared/dynamic libraries. + +Optionally, consider installing the following packages: + +* `NumPy`_ for enabling comprehensive testing of MPI communication. + +* `CuPy`_ for enabling comprehensive testing with a GPU-aware MPI. + +* `Sphinx`_ to build the documentation. + +.. tip:: + + Most routine development tasks like building, installing in + editable mode, testing, and generating documentation can be + performed with the `spin`_ developer tool. Run :command:`spin` at + the top level source directory for a list of available subcommands. + +.. _Python: https://www.python.org/ +.. _Cython: https://cython.org/ +.. _MPI: https://www.mpi-forum.org/ +.. _MPICH: https://www.mpich.org/ +.. _Open MPI: https://www.open-mpi.org/ +.. _NumPy: https://numpy.org/ +.. _CuPy: https://cupy.dev/ +.. _Sphinx: https://www.sphinx-doc.org/ +.. _spin: https://github.com/scientific-python/spin + + +Building +-------- + +*MPI for Python* uses **setuptools**-based build system that relies on +the :file:`setup.py` file. Some setuptools commands (e.g., *build*) +accept additional options: + +.. cmdoption:: --mpi= + + Lets you pass a section with MPI configuration within a special + configuration file. Alternatively, you can use the :envvar:`MPICFG` + environment variable. + +.. cmdoption:: --mpicc= + + Specify the path or name of the :program:`mpicc` C compiler wrapper. + Alternatively, use the :envvar:`MPICC` environment variable. + +.. cmdoption:: --mpild= + + Specify the full path or name for the MPI-aware C linker. + Alternatively, use the :envvar:`MPILD` environment variable. If + not set, the :program:`mpicc` C compiler wrapper is used for + linking. + +.. cmdoption:: --configure + + Runs exhaustive tests for checking about missing MPI types, + constants, and functions. This option should be passed in order to + build *MPI for Python* against old MPI-1, MPI-2, or MPI-3 + implementations, possibly providing a subset of MPI-4. + +If you use a MPI implementation providing a :program:`mpicc` C +compiler wrapper (e.g., MPICH or Open MPI), it will be used for +compilation and linking. This is the preferred and easiest way to +build *MPI for Python*. + +If :program:`mpicc` is found in the executable search path +(:envvar:`PATH` environment variable), simply run the *build* +command:: + + $ python setup.py build + +If :program:`mpicc` is not in your search path or the compiler wrapper +has a different name, you can run the *build* command specifying its +location, either via the :option:`--mpicc` command option or using the +:envvar:`MPICC` environment variable:: + + $ python setup.py build --mpicc=/path/to/mpicc + $ env MPICC=/path/to/mpicc python setup.py build + +Alternatively, you can provide all the relevant information about your +MPI implementation by editing the :file:`mpi.cfg` file located in the +top level source directory. You can use the default section ``[mpi]`` +or add a new custom section, for example ``[vendor_mpi]`` (see the +examples provided in the :file:`mpi.cfg` file as a starting point to +write your own section): + +.. code-block:: ini + + [mpi] + include_dirs = /usr/local/mpi/include + libraries = mpi + library_dirs = /usr/local/mpi/lib + runtime_library_dirs = /usr/local/mpi/lib + + [vendor_mpi] + include_dirs = /opt/mpi/include ... + libraries = mpi ... + library_dirs = /opt/mpi/lib ... + runtime_library_dirs = /opt/mpi/lib ... + + ... + +and then run the *build* command specifying you custom +configuration section:: + + $ python setup.py build --mpi=vendor_mpi + $ env MPICFG=vendor_mpi python setup.py build + + +Installing +---------- + +*MPI for Python* can be installed in editable mode:: + + $ python -m pip install --editable . + +After modifying Cython sources, an in-place rebuild is needed:: + + $ python setup.py build --inplace + + +Testing +------- + +To quickly test the installation:: + + $ mpiexec -n 5 python -m mpi4py.bench helloworld + Hello, World! I am process 0 of 5 on localhost. + Hello, World! I am process 1 of 5 on localhost. + Hello, World! I am process 2 of 5 on localhost. + Hello, World! I am process 3 of 5 on localhost. + Hello, World! I am process 4 of 5 on localhost. + + $ mpiexec -n 5 python -m mpi4py.bench ringtest -l 10 -n 1048576 + time for 10 loops = 0.00361614 seconds (5 processes, 1048576 bytes) + +If you installed from a git clone or the source distribution, issuing +at the command line:: + + $ mpiexec -n 5 python demo/helloworld.py + +will launch a five-process run of the Python interpreter and run the +demo script :file:`demo/helloworld.py` from the source distribution. + +You can also run all the *unittest* scripts:: + + $ mpiexec -n 5 python test/main.py + +or, if you have the `pytest`_ unit testing framework installed:: + + $ mpiexec -n 5 pytest + +.. _pytest: https://docs.pytest.org/ diff --git a/4.0.0/source/guidelines.rst b/4.0.0/source/guidelines.rst new file mode 100644 index 0000000..26e24ef --- /dev/null +++ b/4.0.0/source/guidelines.rst @@ -0,0 +1,132 @@ +Guidelines +========== + +Fair play +--------- + +Summary ++++++++ + +This section defines Rules of Play for companies and outside developers that +engage with the mpi4py project. It covers: + +* Restrictions on use of the mpi4py name. +* How and whether to publish a modified distribution. +* How to make us aware of patched versions. + +After reading this section, companies and developers will know what kinds of +behavior the mpi4py developers and contributors would like to see, and which we +consider troublesome, bothersome, and unacceptable. + +This document is a close adaptation of `NumPy NEP 36`_. + +.. _NumPy NEP 36: https://numpy.org/neps/nep-0036-fair-play.html + +Motivation +++++++++++ + +Occasionally, we learn of modified mpi4py versions and binary distributions +circulated by outsiders. These patched versions can cause problems to mpi4py +users (see, e.g., `mpi4py/mpi4py#508`_). When issues like these arise, our +developers waste time identifying the problematic release, locating +alterations, and determining an appropriate course of action. + +In addition, packages on the Python Packaging Index are sometimes named such +that users assume they are sanctioned or maintained by the mpi4py +developers. We wish to reduce the number of such incidents. + +.. _mpi4py/mpi4py#508: https://github.com/mpi4py/mpi4py/issues/508 + +Scope ++++++ + +This document aims to define a minimal set of rules that, when followed, will +be considered good-faith efforts in line with the expectations of the mpi4py +developers and contributors. + +Our hope is that companies and outside developers who feel they need to modify +mpi4py will first consider contributing to the project, or use alternative +mechanisms for patching and extending mpi4py. + +When in doubt, please `talk to us first`__. We may suggest an alternative; at +minimum, we'll be informed and we may even grant an exception if deemed +appropriate. + +__ https://github.com/mpi4py/mpi4py/discussions/ + +Fair play rules ++++++++++++++++ + +1. Do not reuse the mpi4py name for projects not affiliated with the mpi4py + project. + + At time of writing, there are only a handful of ``mpi4py``-named packages + developed by the mpi4py project, including ``mpi4py`` and ``mpi4py-fft``. We + ask that outside packages not include the phrase ``mpi4py``, i.e., avoid + names such as ``mycompany-mpi4py`` or ``mpi4py-mycompany``. + + To be clear, this rule only applies to modules (package names); it is + perfectly acceptable to have a *submodule* of your own package named + ``mycompany.mpi4py``. + +2. Do not publish binary mpi4py wheels on PyPI (https://pypi.org/). + + We ask companies and outside developers to not publish binary mpi4py wheels + in the main Python Package Index (https://pypi.org/) under names such + ``mpi4py-mpich``, ``mpi4py-openmpi``, or ``mpi4py-vendor_mpi``. + + The usual approaches to build binary Python wheels involve the embedding of + dependent shared libraries. While such an approach may seem convenient and + often is, in the particular case of MPI and mpi4py it is ultimately harmful + to end users. Embedding the MPI shared libraries would prevent the use of + external, system-provided MPI installations with hardware-specific + optimizations and site-specific tweaks. + + The MPI Forum is currently discussing the standardization of a proposal for + an Application Binary Interface (ABI) for MPI, see [mpi-abi-paper]_ and + [mpi-abi-issue]_. Such standardization will allow for any binary dependent + on the MPI library to be used with multiple MPI backends. Once this proposal + becomes part of the MPI standard, the mpi4py project will consider + publishing on PyPI binary wheels capable of using any backend MPI + implementation supporting the new MPI ABI specification. In the mean time, + mpi4py is currently distributing experimental MPI and mpi4py binary wheels + on https://anaconda.org/mpi4py. + + .. [mpi-abi-paper] + J. Hammond, L. Dalcin, E. Schnetter, M. Pérache, J. B. Besnard, + J. Brown, G. Brito Gadeschi, S. Byrne, J. Schuchart, and H. Zhou. + MPI Application Binary Interface Standardization. + EuroMPI 2023, Bristol, UK, September 2023. + https://doi.org/10.1145/3615318.3615319 + + .. [mpi-abi-issue] + MPI Forum GitHub Issue: *MPI needs a standard ABI*. + https://github.com/mpi-forum/mpi-issues/issues/751 + +3. Do not republish modified versions of mpi4py. + + Modified versions of mpi4py make it very difficult for the developers to + address bug reports, since we typically do not know which parts of mpi4py + have been modified. + + If you have to break this rule (and we implore you not to!), then make it + clear in the ``__version__`` tag that you have modified mpi4py, e.g.:: + + >>> print(mpi4py.__version__) + '4.0.0+mycompany.13` + + We understand that minor patches are often required to make a library work + inside of a package ecosystem. This is totally acceptable, but we ask that + no substantive changes are made. + +4. Do not extend or modify mpi4py's API. + + If you absolutely have to break the previous rule, please do not add + additional functions to the namespace, or modify the API of existing + functions. Having additional functions exposed in distributed versions is + confusing for users and developers alike. + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/index.rst b/4.0.0/source/index.rst new file mode 100644 index 0000000..696f271 --- /dev/null +++ b/4.0.0/source/index.rst @@ -0,0 +1,48 @@ +MPI for Python +============== + +.. only:: html or man + + :Author: Lisandro Dalcin + :Contact: dalcinl@gmail.com + :Date: |today| + +.. topic:: Abstract + + *MPI for Python* provides Python bindings for the *Message Passing + Interface* (MPI) standard, allowing Python applications to exploit + multiple processors on workstations, clusters and supercomputers. + + This package builds on the MPI specification and provides an object + oriented interface resembling the MPI-2 C++ bindings. It supports + point-to-point (sends, receives) and collective (broadcasts, + scatters, gathers) communication of any *picklable* Python object, + as well as efficient communication of Python objects exposing the + Python buffer interface (e.g. NumPy arrays and builtin + bytes/array/memoryview objects). + +.. toctree:: + :caption: Contents + :maxdepth: 2 + + intro + overview + tutorial + mpi4py + mpi4py.MPI + mpi4py.typing + mpi4py.futures + mpi4py.util + mpi4py.run + mpi4py.bench + reference + citation + install + develop + guidelines + license + changes + +.. only:: html and not singlehtml + + * :ref:`genindex` diff --git a/4.0.0/source/install.rst b/4.0.0/source/install.rst new file mode 100644 index 0000000..4a2e694 --- /dev/null +++ b/4.0.0/source/install.rst @@ -0,0 +1,138 @@ +Installation +============ + +Build backends +-------------- + +mpi4py supports two different build backends: `setuptools`_ (default), +`scikit-build-core`_ (`CMake`_-based), and `meson-python`_ +(`Meson`_-based). The build backend can be selected by setting the +:envvar:`MPI4PY_BUILD_BACKEND` environment variable. + +.. envvar:: MPI4PY_BUILD_BACKEND + + :choices: ``"setuptools"``, ``"scikit-build-core"``, ``"meson-python"`` + :default: ``"setuptools"`` + + Request a build backend for building mpi4py from sources. + + +Using **setuptools** +~~~~~~~~~~~~~~~~~~~~ + +.. tip:: + + Set the :envvar:`MPI4PY_BUILD_BACKEND` environment variable to + ``"setuptools"`` to use the `setuptools`_ build backend. + +.. _setuptools: https://setuptools.pypa.io/ + +When using the default `setuptools`_ build backend, mpi4py relies on +the legacy Python distutils framework to build C extension modules. +The following environment variables affect the build configuration. + +.. envvar:: MPI4PY_BUILD_MPICC + + The :program:`mpicc` compiler wrapper command is searched for in + the executable search path (:envvar:`PATH` environment variable) + and used to compile the :mod:`mpi4py.MPI` C extension module. + Alternatively, use the :envvar:`MPI4PY_BUILD_MPICC` environment + variable to the full path or command corresponding to the MPI-aware + C compiler. + +.. envvar:: MPI4PY_BUILD_MPILD + + The :program:`mpicc` compiler wrapper command is also used for + linking the :mod:`mpi4py.MPI` C extension module. + Alternatively, use the :envvar:`MPI4PY_BUILD_MPILD` environment + variable to specify the full path or command corresponding to the + MPI-aware C linker. + +.. envvar:: MPI4PY_BUILD_MPICFG + + If the MPI implementation does not provide a compiler wrapper, or + it is not installed in a default system location, all relevant + build information like include/library locations and library lists + can be provided in an ini-style configuration file under a + ``[mpi]`` section. mpi4py can then be asked to use the custom build + information by setting the :envvar:`MPI4PY_BUILD_MPICFG` + environment variable to the full path of the configuration file. As + an example, see the :file:`mpi.cfg` file located in the top level + mpi4py source directory. + +.. envvar:: MPI4PY_BUILD_CONFIGURE + + Some vendor MPI implementations may not provide complete coverage + of the MPI standard, or may provide partial features of newer MPI + standard versions while advertising support for an older version. + Setting the :envvar:`MPI4PY_BUILD_CONFIGURE` environment variable + to a non-empty string will trigger the run of exhaustive checks for + the availability of all MPI constants, predefined handles, and + routines. + +The following environment variables are aliases for the ones described +above. Having shorter names, they are convenient for occasional use in +the command line. Its usage is not recommended in automation scenarios +like packaging recipes, deployment scripts, and container image +creation. + +.. envvar:: MPICC + + Convenience alias for :envvar:`MPI4PY_BUILD_MPICC`. + +.. envvar:: MPILD + + Convenience alias for :envvar:`MPI4PY_BUILD_MPILD`. + +.. envvar:: MPICFG + + Convenience alias for :envvar:`MPI4PY_BUILD_MPICFG`. + + +Using **scikit-build-core** +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. tip:: + + Set the :envvar:`MPI4PY_BUILD_BACKEND` environment variable to + ``"scikit-build-core"`` to use the `scikit-build-core`_ build backend. + +When using the `scikit-build-core`_ build backend, mpi4py delegates all +of MPI build configuration to `CMake`_'s `FindMPI`_ module. Besides the +obvious advantage of cross-platform support, this delegation to CMake +may be convenient in build environments exposing vendor software +stacks via intricate module systems. Note however that mpi4py will not +be able to look for MPI routines available beyond the MPI standard +version the MPI implementation advertises to support (via the +:c:macro:`MPI_VERSION` and :c:macro:`MPI_SUBVERSION` macro constants +in the :file:`mpi.h` header file), any missing MPI constant or symbol +will prevent a successful build. + +.. _CMake: https://cmake.org/ +.. _FindMPI: https://cmake.org/cmake/help/latest/module/FindMPI.html +.. _scikit-build-core: https://scikit-build-core.readthedocs.io/ + + +Using **meson-python** +~~~~~~~~~~~~~~~~~~~~~~ + +.. tip:: + + Set the :envvar:`MPI4PY_BUILD_BACKEND` environment variable to + ``"meson-python"`` to use the `meson-python`_ build backend. + +When using the `meson-python`_ build backend, mpi4py delegates build +tasks to the `Meson`_ build system. + +.. warning:: + + mpi4py support for the `meson-python`_ build backend is + experimental. For the time being, users must set the :envvar:`CC` + environment variable to the command or path corresponding to the + :program:`mpicc` C compiler wrapper. + +.. _Meson: https://mesonbuild.com/ +.. _meson-python: https://meson-python.readthedocs.io/ + + +.. include:: ../../INSTALL.rst diff --git a/4.0.0/source/intro.rst b/4.0.0/source/intro.rst new file mode 100644 index 0000000..9b15e76 --- /dev/null +++ b/4.0.0/source/intro.rst @@ -0,0 +1,242 @@ +Introduction +============ + +Over the last years, high performance computing has become an +affordable resource to many more researchers in the scientific +community than ever before. The conjunction of quality open source +software and commodity hardware strongly influenced the now widespread +popularity of Beowulf_ class clusters and cluster of workstations. + +Among many parallel computational models, message-passing has proven +to be an effective one. This paradigm is specially suited for (but +not limited to) distributed memory architectures and is used in +today's most demanding scientific and engineering application related +to modeling, simulation, design, and signal processing. However, +portable message-passing parallel programming used to be a nightmare +in the past because of the many incompatible options developers were +faced to. Fortunately, this situation definitely changed after the +MPI Forum released its standard specification. + +High performance computing is traditionally associated with software +development using compiled languages. However, in typical applications +programs, only a small part of the code is time-critical enough to +require the efficiency of compiled languages. The rest of the code is +generally related to memory management, error handling, input/output, +and user interaction, and those are usually the most error prone and +time-consuming lines of code to write and debug in the whole +development process. Interpreted high-level languages can be really +advantageous for this kind of tasks. + +For implementing general-purpose numerical computations, MATLAB [#]_ +is the dominant interpreted programming language. In the open source +side, Octave and Scilab are well known, freely distributed software +packages providing compatibility with the MATLAB language. In this +work, we present MPI for Python, a new package enabling applications +to exploit multiple processors using standard MPI "look and feel" in +Python scripts. + +.. [#] MATLAB is a registered trademark of The MathWorks, Inc. + + +What is MPI? +------------ + +MPI_, [mpi-using]_ [mpi-ref]_ the *Message Passing Interface*, is a +standardized and portable message-passing system designed to function +on a wide variety of parallel computers. The standard defines the +syntax and semantics of library routines and allows users to write +portable programs in the main scientific programming languages +(Fortran, C, or C++). + +Since its release, the MPI specification [mpi-std1]_ [mpi-std2]_ has +become the leading standard for message-passing libraries for parallel +computers. Implementations are available from vendors of +high-performance computers and from well known open source projects +like MPICH_ [mpi-mpich]_ and `Open MPI`_ [mpi-openmpi]_. + + +What is Python? +--------------- + +Python_ is a modern, easy to learn, powerful programming language. It +has efficient high-level data structures and a simple but effective +approach to object-oriented programming with dynamic typing and +dynamic binding. It supports modules and packages, which encourages +program modularity and code reuse. Python's elegant syntax, together +with its interpreted nature, make it an ideal language for scripting +and rapid application development in many areas on most platforms. + +The Python interpreter and the extensive standard library are +available in source or binary form without charge for all major +platforms, and can be freely distributed. It is easily extended with +new functions and data types implemented in C or C++. Python is also +suitable as an extension language for customizable applications. + +Python is an ideal candidate for writing the higher-level parts of +large-scale scientific applications [Hinsen97]_ and driving +simulations in parallel architectures [Beazley97]_ like clusters of +PC's or SMP's. Python codes are quickly developed, easily maintained, +and can achieve a high degree of integration with other libraries +written in compiled languages. + + +Related Projects +---------------- + +As this work started and evolved, some ideas were borrowed from well +known MPI and Python related open source projects from the Internet. + +* `OOMPI`_ + + + It has no relation with Python, but is an excellent object + oriented approach to MPI. + + + It is a C++ class library specification layered on top of the C + bindings that encapsulates MPI into a functional class hierarchy. + + + It provides a flexible and intuitive interface by adding some + abstractions, like *Ports* and *Messages*, which enrich and + simplify the syntax. + +* `Pypar`_ + + + Its interface is rather minimal. There is no support for + communicators or process topologies. + + + It does not require the Python interpreter to be modified or + recompiled, but does not permit interactive parallel runs. + + + General (*picklable*) Python objects of any type can be + communicated. There is good support for numeric arrays, + practically full MPI bandwidth can be achieved. + +* `pyMPI`_ + + + It rebuilds the Python interpreter providing a built-in module + for message passing. It does permit interactive parallel runs, + which are useful for learning and debugging. + + + It provides an interface suitable for basic parallel programming. + There is not full support for defining new communicators or process + topologies. + + + General (picklable) Python objects can be messaged between + processors. There is not support for numeric arrays. + +* `Scientific Python`_ + + + It provides a collection of Python modules that are + useful for scientific computing. + + + There is an interface to MPI and BSP (*Bulk Synchronous Parallel + programming*). + + + The interface is simple but incomplete and does not resemble + the MPI specification. There is support for numeric arrays. + +Additionally, we would like to mention some available tools for +scientific computing and software development with Python. + ++ `NumPy`_ is a package that provides array manipulation and + computational capabilities similar to those found in IDL, MATLAB, or + Octave. Using NumPy, it is possible to write many efficient + numerical data processing applications directly in Python without + using any C, C++ or Fortran code. + ++ `SciPy`_ is an open source library of scientific tools for Python, + gathering a variety of high level science and engineering modules + together as a single package. It includes modules for graphics and + plotting, optimization, integration, special functions, signal and + image processing, genetic algorithms, ODE solvers, and others. + ++ `Cython`_ is a language that makes writing C extensions for the + Python language as easy as Python itself. The Cython language is + very close to the Python language, but Cython additionally supports + calling C functions and declaring C types on variables and class + attributes. This allows the compiler to generate very efficient C + code from Cython code. This makes Cython the ideal language for + wrapping for external C libraries, and for fast C modules that speed + up the execution of Python code. + ++ `SWIG`_ is a software development tool that connects programs + written in C and C++ with a variety of high-level programming + languages like Perl, Tcl/Tk, Ruby and Python. Issuing header files + to SWIG is the simplest approach to interfacing C/C++ libraries from + a Python module. + + + +.. External Links +.. .............. + +.. _MPI: https://www.mpi-forum.org/ + +.. _MPICH: https://www.mpich.org/ + +.. _Open MPI: https://www.open-mpi.org/ + +.. _Beowulf: https://www.beowulf.org/ + + +.. _Python: https://www.python.org/ + +.. _NumPy: https://numpy.org/ + +.. _SciPy: https://scipy.org/ + +.. _Cython: https://cython.org/ + +.. _SWIG: https://www.swig.org/ + + +.. _OOMPI: https://web.archive.org/web/20100614170656/http://www.osl.iu.edu/research/oompi/overview.php + +.. _Pypar: https://github.com/daleroberts/pypar + +.. _pyMPI: https://sourceforge.net/projects/pympi/ + +.. _Scientific Python: + http://dirac.cnrs-orleans.fr/ScientificPython.html + + +.. References +.. .......... + +.. [mpi-std1] MPI Forum. MPI: A Message Passing Interface Standard. + International Journal of Supercomputer Applications, volume 8, + number 3-4, pages 159-416, 1994. + +.. [mpi-std2] MPI Forum. MPI: A Message Passing Interface Standard. + High Performance Computing Applications, volume 12, number 1-2, + pages 1-299, 1998. + +.. [mpi-using] William Gropp, Ewing Lusk, and Anthony Skjellum. Using + MPI: portable parallel programming with the message-passing + interface. MIT Press, 1994. + +.. [mpi-ref] Mark Snir, Steve Otto, Steven Huss-Lederman, David + Walker, and Jack Dongarra. MPI - The Complete Reference, volume 1, + The MPI Core. MIT Press, 2nd. edition, 1998. + +.. [mpi-mpich] W. Gropp, E. Lusk, N. Doss, and A. Skjellum. A + high-performance, portable implementation of the MPI message + passing interface standard. Parallel Computing, 22(6):789-828, + September 1996. + +.. [mpi-openmpi] Edgar Gabriel, Graham E. Fagg, George Bosilca, Thara + Angskun, Jack J. Dongarra, Jeffrey M. Squyres, Vishal Sahay, + Prabhanjan Kambadur, Brian Barrett, Andrew Lumsdaine, Ralph + H. Castain, David J. Daniel, Richard L. Graham, and Timothy + S. Woodall. Open MPI: Goals, Concept, and Design of a Next + Generation MPI Implementation. In Proceedings, 11th European + PVM/MPI Users' Group Meeting, Budapest, Hungary, September 2004. + +.. [Hinsen97] Konrad Hinsen. The Molecular Modelling Toolkit: a case + study of a large scientific application in Python. In Proceedings + of the 6th International Python Conference, pages 29-35, San Jose, + Ca., October 1997. + +.. [Beazley97] David M. Beazley and Peter S. Lomdahl. Feeding a + large-scale physics application to Python. In Proceedings of the + 6th International Python Conference, pages 21-29, San Jose, Ca., + October 1997. diff --git a/4.0.0/source/license.rst b/4.0.0/source/license.rst new file mode 100644 index 0000000..e8be6c4 --- /dev/null +++ b/4.0.0/source/license.rst @@ -0,0 +1,8 @@ +:tocdepth: 1 + +.. _license: + +LICENSE +------- + +.. include:: ../../LICENSE.rst diff --git a/4.0.0/source/make.bat b/4.0.0/source/make.bat new file mode 100644 index 0000000..32bb245 --- /dev/null +++ b/4.0.0/source/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/4.0.0/source/mpi4py.MPI.rst b/4.0.0/source/mpi4py.MPI.rst new file mode 100644 index 0000000..7731114 --- /dev/null +++ b/4.0.0/source/mpi4py.MPI.rst @@ -0,0 +1,469 @@ +mpi4py.MPI +========== + +.. currentmodule:: mpi4py.MPI + + +Classes +------- + +.. rubric:: Ancillary + +.. autosummary:: + Datatype + Status + Request + Prequest + Grequest + Op + Group + Info + Session + +.. rubric:: Communication + +.. autosummary:: + Comm + Intracomm + Topocomm + Cartcomm + Graphcomm + Distgraphcomm + Intercomm + Message + +.. rubric:: One-sided operations + +.. autosummary:: + Win + +.. rubric:: Input/Output + +.. autosummary:: + File + +.. rubric:: Error handling + +.. autosummary:: + Errhandler + Exception + +.. rubric:: Auxiliary + +.. autosummary:: + Pickle + buffer + + +Functions +--------- + +.. rubric:: Version inquiry + +.. autosummary:: + Get_version + Get_library_version + +.. rubric:: Initialization and finalization + +.. autosummary:: + Init + Init_thread + Finalize + Is_initialized + Is_finalized + Query_thread + Is_thread_main + +.. rubric:: Memory allocation + +.. autosummary:: + Alloc_mem + Free_mem + +.. rubric:: Address manipulation + +.. autosummary:: + Get_address + Aint_add + Aint_diff + +.. rubric:: Timer + +.. autosummary:: + Wtick + Wtime + +.. rubric:: Error handling + +.. autosummary:: + Get_error_class + Get_error_string + Add_error_class + Add_error_code + Add_error_string + Remove_error_class + Remove_error_code + Remove_error_string + +.. rubric:: Dynamic process management + +.. autosummary:: + Open_port + Close_port + Publish_name + Unpublish_name + Lookup_name + +.. rubric:: Miscellanea + +.. autosummary:: + Attach_buffer + Detach_buffer + Flush_buffer + Iflush_buffer + Compute_dims + Get_processor_name + Register_datarep + Pcontrol + +.. rubric:: Utilities + +.. autosummary:: + get_vendor +.. + _typecode + _sizeof + _addressof + _handleof +.. + _comm_lock + _comm_lock_table + _commctx_inter + _commctx_intra + _set_abort_status + + +Attributes +---------- + +.. autosummary:: + + UNDEFINED + + ANY_SOURCE + ANY_TAG + PROC_NULL + ROOT + + BOTTOM + IN_PLACE + BUFFER_AUTOMATIC + + KEYVAL_INVALID + + TAG_UB + IO + WTIME_IS_GLOBAL + UNIVERSE_SIZE + APPNUM + LASTUSEDCODE + + WIN_BASE + WIN_SIZE + WIN_DISP_UNIT + WIN_CREATE_FLAVOR + WIN_FLAVOR + WIN_MODEL + + SUCCESS + ERR_LASTCODE + ERR_COMM + ERR_GROUP + ERR_TYPE + ERR_REQUEST + ERR_OP + ERR_ERRHANDLER + ERR_BUFFER + ERR_COUNT + ERR_TAG + ERR_RANK + ERR_ROOT + ERR_TRUNCATE + ERR_IN_STATUS + ERR_PENDING + ERR_TOPOLOGY + ERR_DIMS + ERR_ARG + ERR_OTHER + ERR_UNKNOWN + ERR_INTERN + ERR_INFO + ERR_FILE + ERR_WIN + ERR_KEYVAL + ERR_INFO_KEY + ERR_INFO_VALUE + ERR_INFO_NOKEY + ERR_ACCESS + ERR_AMODE + ERR_BAD_FILE + ERR_FILE_EXISTS + ERR_FILE_IN_USE + ERR_NO_SPACE + ERR_NO_SUCH_FILE + ERR_IO + ERR_READ_ONLY + ERR_CONVERSION + ERR_DUP_DATAREP + ERR_UNSUPPORTED_DATAREP + ERR_UNSUPPORTED_OPERATION + ERR_NAME + ERR_NO_MEM + ERR_NOT_SAME + ERR_PORT + ERR_QUOTA + ERR_SERVICE + ERR_SPAWN + ERR_BASE + ERR_SIZE + ERR_DISP + ERR_ASSERT + ERR_LOCKTYPE + ERR_RMA_CONFLICT + ERR_RMA_SYNC + ERR_RMA_RANGE + ERR_RMA_ATTACH + ERR_RMA_SHARED + ERR_RMA_FLAVOR + + ORDER_C + ORDER_F + ORDER_FORTRAN + + TYPECLASS_INTEGER + TYPECLASS_REAL + TYPECLASS_COMPLEX + + DISTRIBUTE_NONE + DISTRIBUTE_BLOCK + DISTRIBUTE_CYCLIC + DISTRIBUTE_DFLT_DARG + + COMBINER_NAMED + COMBINER_DUP + COMBINER_CONTIGUOUS + COMBINER_VECTOR + COMBINER_HVECTOR + COMBINER_INDEXED + COMBINER_HINDEXED + COMBINER_INDEXED_BLOCK + COMBINER_HINDEXED_BLOCK + COMBINER_STRUCT + COMBINER_SUBARRAY + COMBINER_DARRAY + COMBINER_RESIZED + COMBINER_VALUE_INDEX + COMBINER_F90_REAL + COMBINER_F90_COMPLEX + COMBINER_F90_INTEGER + + IDENT + CONGRUENT + SIMILAR + UNEQUAL + + CART + GRAPH + DIST_GRAPH + + UNWEIGHTED + WEIGHTS_EMPTY + + COMM_TYPE_SHARED + + BSEND_OVERHEAD + + WIN_FLAVOR_CREATE + WIN_FLAVOR_ALLOCATE + WIN_FLAVOR_DYNAMIC + WIN_FLAVOR_SHARED + + WIN_SEPARATE + WIN_UNIFIED + + MODE_NOCHECK + MODE_NOSTORE + MODE_NOPUT + MODE_NOPRECEDE + MODE_NOSUCCEED + + LOCK_EXCLUSIVE + LOCK_SHARED + + MODE_RDONLY + MODE_WRONLY + MODE_RDWR + MODE_CREATE + MODE_EXCL + MODE_DELETE_ON_CLOSE + MODE_UNIQUE_OPEN + MODE_SEQUENTIAL + MODE_APPEND + + SEEK_SET + SEEK_CUR + SEEK_END + + DISPLACEMENT_CURRENT + DISP_CUR + + THREAD_SINGLE + THREAD_FUNNELED + THREAD_SERIALIZED + THREAD_MULTIPLE + + VERSION + SUBVERSION + + MAX_PROCESSOR_NAME + MAX_ERROR_STRING + MAX_PORT_NAME + MAX_INFO_KEY + MAX_INFO_VAL + MAX_OBJECT_NAME + MAX_DATAREP_STRING + MAX_LIBRARY_VERSION_STRING + + DATATYPE_NULL + PACKED + BYTE + AINT + OFFSET + COUNT + CHAR + WCHAR + SIGNED_CHAR + SHORT + INT + LONG + LONG_LONG + UNSIGNED_CHAR + UNSIGNED_SHORT + UNSIGNED + UNSIGNED_LONG + UNSIGNED_LONG_LONG + FLOAT + DOUBLE + LONG_DOUBLE + C_BOOL + INT8_T + INT16_T + INT32_T + INT64_T + UINT8_T + UINT16_T + UINT32_T + UINT64_T + C_COMPLEX + C_FLOAT_COMPLEX + C_DOUBLE_COMPLEX + C_LONG_DOUBLE_COMPLEX + CXX_BOOL + CXX_FLOAT_COMPLEX + CXX_DOUBLE_COMPLEX + CXX_LONG_DOUBLE_COMPLEX + SHORT_INT + INT_INT + TWOINT + LONG_INT + FLOAT_INT + DOUBLE_INT + LONG_DOUBLE_INT + CHARACTER + LOGICAL + INTEGER + REAL + DOUBLE_PRECISION + COMPLEX + DOUBLE_COMPLEX + LOGICAL1 + LOGICAL2 + LOGICAL4 + LOGICAL8 + INTEGER1 + INTEGER2 + INTEGER4 + INTEGER8 + INTEGER16 + REAL2 + REAL4 + REAL8 + REAL16 + COMPLEX4 + COMPLEX8 + COMPLEX16 + COMPLEX32 + UNSIGNED_INT + SIGNED_SHORT + SIGNED_INT + SIGNED_LONG + SIGNED_LONG_LONG + BOOL + SINT8_T + SINT16_T + SINT32_T + SINT64_T + F_BOOL + F_INT + F_FLOAT + F_DOUBLE + F_COMPLEX + F_FLOAT_COMPLEX + F_DOUBLE_COMPLEX + + REQUEST_NULL + + MESSAGE_NULL + MESSAGE_NO_PROC + + OP_NULL + MAX + MIN + SUM + PROD + LAND + BAND + LOR + BOR + LXOR + BXOR + MAXLOC + MINLOC + REPLACE + NO_OP + + GROUP_NULL + GROUP_EMPTY + + INFO_NULL + INFO_ENV + + ERRHANDLER_NULL + ERRORS_RETURN + ERRORS_ARE_FATAL + + COMM_NULL + COMM_SELF + COMM_WORLD + + WIN_NULL + + FILE_NULL + + pickle + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.bench.rst b/4.0.0/source/mpi4py.bench.rst new file mode 100644 index 0000000..42dabc8 --- /dev/null +++ b/4.0.0/source/mpi4py.bench.rst @@ -0,0 +1,7 @@ +mpi4py.bench +============ + +.. module:: mpi4py.bench + :synopsis: Run MPI benchmarks and tests. + +.. versionadded:: 3.0.0 diff --git a/4.0.0/source/mpi4py.futures.rst b/4.0.0/source/mpi4py.futures.rst new file mode 100644 index 0000000..8fdc5be --- /dev/null +++ b/4.0.0/source/mpi4py.futures.rst @@ -0,0 +1,676 @@ +mpi4py.futures +============== + +.. module:: mpi4py.futures + :synopsis: Execute computations concurrently using MPI processes. + +.. versionadded:: 3.0.0 + +This package provides a high-level interface for asynchronously executing +callables on a pool of worker processes using MPI for inter-process +communication. + +The :mod:`mpi4py.futures` package is based on :mod:`concurrent.futures` from +the Python standard library. More precisely, :mod:`mpi4py.futures` provides the +:class:`MPIPoolExecutor` class as a concrete implementation of the abstract +class :class:`~concurrent.futures.Executor`. The +:meth:`~concurrent.futures.Executor.submit` interface schedules a callable to +be executed asynchronously and returns a :class:`~concurrent.futures.Future` +object representing the execution of the callable. +:class:`~concurrent.futures.Future` instances can be queried for the call +result or exception. Sets of :class:`~concurrent.futures.Future` instances can +be passed to the :func:`~concurrent.futures.wait` and +:func:`~concurrent.futures.as_completed` functions. + +.. seealso:: + + Module :mod:`concurrent.futures` + Documentation of the :mod:`concurrent.futures` standard module. + + +MPIPoolExecutor +--------------- + +The :class:`MPIPoolExecutor` class uses a pool of MPI processes to execute +calls asynchronously. By performing computations in separate processes, it +allows to side-step the :term:`global interpreter lock` but also means that +only picklable objects can be executed and returned. The :mod:`__main__` module +must be importable by worker processes, thus :class:`MPIPoolExecutor` instances +may not work in the interactive interpreter. + +:class:`MPIPoolExecutor` takes advantage of the dynamic process management +features introduced in the MPI-2 standard. In particular, the +`MPI.Intracomm.Spawn` method of `MPI.COMM_SELF` is used in the master (or +parent) process to spawn new worker (or child) processes running a Python +interpreter. The master process uses a separate thread (one for each +:class:`MPIPoolExecutor` instance) to communicate back and forth with the +workers. The worker processes serve the execution of tasks in the main (and +only) thread until they are signaled for completion. + +.. note:: + + The worker processes must import the main script in order to *unpickle* any + callable defined in the :mod:`__main__` module and submitted from the master + process. Furthermore, the callables may need access to other global + variables. At the worker processes, :mod:`mpi4py.futures` executes the main + script code (using the :mod:`runpy` module) under the :mod:`__worker__` + namespace to define the :mod:`__main__` module. The :mod:`__main__` and + :mod:`__worker__` modules are added to :data:`sys.modules` (both at the + master and worker processes) to ensure proper *pickling* and *unpickling*. + +.. warning:: + + During the initial import phase at the workers, the main script cannot + create and use new :class:`MPIPoolExecutor` instances. Otherwise, each + worker would attempt to spawn a new pool of workers, leading to infinite + recursion. :mod:`mpi4py.futures` detects such recursive attempts to spawn + new workers and aborts the MPI execution environment. As the main script + code is run under the :mod:`__worker__` namespace, the easiest way to avoid + spawn recursion is using the idiom :code:`if __name__ == '__main__': ...` in + the main script. + +.. class:: MPIPoolExecutor(max_workers=None, \ + initializer=None, initargs=(), **kwargs) + + An :class:`~concurrent.futures.Executor` subclass that executes calls + asynchronously using a pool of at most *max_workers* processes. If + *max_workers* is `None` or not given, its value is determined from the + :envvar:`MPI4PY_FUTURES_MAX_WORKERS` environment variable if set, or the MPI + universe size if set, otherwise a single worker process is spawned. If + *max_workers* is lower than or equal to ``0``, then a :exc:`ValueError` will + be raised. + + *initializer* is an optional callable that is called at the start of each + worker process before executing any tasks; *initargs* is a tuple of + arguments passed to the initializer. If *initializer* raises an exception, + all pending tasks and any attempt to submit new tasks to the pool will raise + a :exc:`~concurrent.futures.BrokenExecutor` exception. + + Other parameters: + + * *python_exe*: Path to the Python interpreter executable used to spawn + worker processes, otherwise :data:`sys.executable` is used. + + * *python_args*: :class:`list` or iterable with additional command line + flags to pass to the Python executable. Command line flags determined from + inspection of :data:`sys.flags`, :data:`sys.warnoptions` and + :data:`sys._xoptions` in are passed unconditionally. + + * *mpi_info*: :class:`dict` or iterable yielding ``(key, value)`` pairs. + These ``(key, value)`` pairs are passed (through an `MPI.Info` object) to + the `MPI.Intracomm.Spawn` call used to spawn worker processes. This + mechanism allows telling the MPI runtime system where and how to start the + processes. Check the documentation of the backend MPI implementation about + the set of keys it interprets and the corresponding format for values. + + * *globals*: :class:`dict` or iterable yielding ``(name, value)`` pairs to + initialize the main module namespace in worker processes. + + * *main*: If set to `False`, do not import the :mod:`__main__` module in + worker processes. Setting *main* to `False` prevents worker processes + from accessing definitions in the parent :mod:`__main__` namespace. + + * *path*: :class:`list` or iterable with paths to append to :data:`sys.path` + in worker processes to extend the :ref:`module search path + `. + + * *wdir*: Path to set the current working directory in worker processes + using :func:`os.chdir()`. The initial working directory is set by the MPI + implementation. Quality MPI implementations should honor a ``wdir`` info + key passed through *mpi_info*, although such feature is not mandatory. + + * *env*: :class:`dict` or iterable yielding ``(name, value)`` pairs with + environment variables to update :data:`os.environ` in worker processes. + The initial environment is set by the MPI implementation. MPI + implementations may allow setting the initial environment through + *mpi_info*, however such feature is not required nor recommended by the + MPI standard. + + * *use_pkl5*: If set to `True`, use :mod:`pickle5` with out-of-band buffers + for interprocess communication. If *use_pkl5* is set to `None` or not + given, its value is determined from the :envvar:`MPI4PY_FUTURES_USE_PKL5` + environment variable. Using :mod:`pickle5` with out-of-band buffers may + benefit applications dealing with large buffer-like objects like NumPy + arrays. See :mod:`mpi4py.util.pkl5` for additional information. + + * *backoff*: :class:`float` value specifying the maximum number of seconds a + worker thread or process suspends execution with :func:`time.sleep()` + while idle-waiting. If not set, its value is determined from the + :envvar:`MPI4PY_FUTURES_BACKOFF` environment variable if set, otherwise + the default value of 0.001 seconds is used. Lower values will reduce + latency and increase execution throughput for very short-lived tasks, + albeit at the expense of spinning CPU cores and increased energy + consumption. + + .. method:: submit(func, *args, **kwargs) + + Schedule the callable, *func*, to be executed as ``func(*args, + **kwargs)`` and returns a :class:`~concurrent.futures.Future` object + representing the execution of the callable. :: + + executor = MPIPoolExecutor(max_workers=1) + future = executor.submit(pow, 321, 1234) + print(future.result()) + + .. method:: map(func, *iterables, timeout=None, chunksize=1, **kwargs) + + Equivalent to :func:`map(func, *iterables) ` except *func* is + executed asynchronously and several calls to *func* may be made + concurrently, out-of-order, in separate processes. The returned iterator + raises a :exc:`~concurrent.futures.TimeoutError` if + :meth:`~iterator.__next__` is called and the result isn't available after + *timeout* seconds from the original call to :meth:`~MPIPoolExecutor.map`. + *timeout* can be an int or a float. If *timeout* is not specified or + `None`, there is no limit to the wait time. If a call raises an + exception, then that exception will be raised when its value is retrieved + from the iterator. This method chops *iterables* into a number of chunks + which it submits to the pool as separate tasks. The (approximate) size of + these chunks can be specified by setting *chunksize* to a positive + integer. For very long iterables, using a large value for *chunksize* can + significantly improve performance compared to the default size of one. By + default, the returned iterator yields results in-order, waiting for + successive tasks to complete . This behavior can be changed by passing + the keyword argument *unordered* as `True`, then the result iterator + will yield a result as soon as any of the tasks complete. :: + + executor = MPIPoolExecutor(max_workers=3) + for result in executor.map(pow, [2]*32, range(32)): + print(result) + + .. method:: starmap(func, iterable, timeout=None, chunksize=1, **kwargs) + + Equivalent to :func:`itertools.starmap(func, iterable) + `. Used instead of :meth:`~MPIPoolExecutor.map` when + argument parameters are already grouped in tuples from a single iterable + (the data has been "pre-zipped"). :func:`map(func, *iterable) ` is + equivalent to :func:`starmap(func, zip(*iterable)) `. :: + + executor = MPIPoolExecutor(max_workers=3) + iterable = ((2, n) for n in range(32)) + for result in executor.starmap(pow, iterable): + print(result) + + .. method:: shutdown(wait=True, cancel_futures=False) + + Signal the executor that it should free any resources that it is using + when the currently pending futures are done executing. Calls to + :meth:`~MPIPoolExecutor.submit` and :meth:`~MPIPoolExecutor.map` made + after :meth:`~MPIPoolExecutor.shutdown` will raise :exc:`RuntimeError`. + + If *wait* is `True` then this method will not return until all the + pending futures are done executing and the resources associated with the + executor have been freed. If *wait* is `False` then this method will + return immediately and the resources associated with the executor will be + freed when all pending futures are done executing. Regardless of the + value of *wait*, the entire Python program will not exit until all + pending futures are done executing. + + If *cancel_futures* is `True`, this method will cancel all pending + futures that the executor has not started running. Any futures that + are completed or running won't be cancelled, regardless of the value + of *cancel_futures*. + + You can avoid having to call this method explicitly if you use the + :keyword:`with` statement, which will shutdown the executor instance + (waiting as if :meth:`~MPIPoolExecutor.shutdown` were called with *wait* + set to `True`). :: + + import time + with MPIPoolExecutor(max_workers=1) as executor: + future = executor.submit(time.sleep, 2) + assert future.done() + + .. method:: bootup(wait=True) + + Signal the executor that it should allocate eagerly any required + resources (in particular, MPI worker processes). If *wait* is `True`, + then :meth:`~MPIPoolExecutor.bootup` will not return until the executor + resources are ready to process submissions. Resources are automatically + allocated in the first call to :meth:`~MPIPoolExecutor.submit`, thus + calling :meth:`~MPIPoolExecutor.bootup` explicitly is seldom needed. + + .. attribute:: num_workers + + Number or worker processes in the pool. + + +.. envvar:: MPI4PY_FUTURES_MAX_WORKERS + + If the *max_workers* parameter to :class:`MPIPoolExecutor` is `None` or not + given, the :envvar:`MPI4PY_FUTURES_MAX_WORKERS` environment variable + provides a fallback value for the maximum number of MPI worker processes to + spawn. + + .. versionadded:: 3.1.0 + +.. envvar:: MPI4PY_FUTURES_USE_PKL5 + + If the *use_pkl5* keyword argument to :class:`MPIPoolExecutor` is `None` or + not given, the :envvar:`MPI4PY_FUTURES_USE_PKL5` environment variable + provides a fallback value for whether the executor should use :mod:`pickle5` + with out-of-band buffers for interprocess communication. Accepted values are + ``0`` and ``1`` (interpreted as `False` and `True`, respectively), and + strings specifying a `YAML boolean`_ value (case-insensitive). Using + :mod:`pickle5` with out-of-band buffers may benefit applications dealing + with large buffer-like objects like NumPy arrays. See + :mod:`mpi4py.util.pkl5` for additional information. + + .. versionadded:: 4.0.0 + + .. _YAML boolean: https://yaml.org/type/bool.html + +.. envvar:: MPI4PY_FUTURES_BACKOFF + + If the *backoff* keyword argument to :class:`MPIPoolExecutor` is not given, + the :envvar:`MPI4PY_FUTURES_BACKOFF` environment variable can be set to a + :class:`float` value specifying the maximum number of seconds a worker + thread or process suspends execution with :func:`time.sleep()` while + idle-waiting. If not set, the default backoff value is 0.001 seconds. Lower + values will reduce latency and increase execution throughput for very + short-lived tasks, albeit at the expense of spinning CPU cores and increased + energy consumption. + + .. versionadded:: 4.0.0 + +.. note:: + + As the master process uses a separate thread to perform MPI communication + with the workers, the backend MPI implementation should provide support for + `MPI.THREAD_MULTIPLE`. However, some popular MPI implementations do not + support yet concurrent MPI calls from multiple threads. Additionally, users + may decide to initialize MPI with a lower level of thread support. If the + level of thread support in the backend MPI is less than + `MPI.THREAD_MULTIPLE`, :mod:`mpi4py.futures` will use a global lock to + serialize MPI calls. If the level of thread support is less than + `MPI.THREAD_SERIALIZED`, :mod:`mpi4py.futures` will emit a + :exc:`RuntimeWarning`. + +.. warning:: + + If the level of thread support in the backend MPI is less than + `MPI.THREAD_SERIALIZED` (i.e, it is either `MPI.THREAD_SINGLE` or + `MPI.THREAD_FUNNELED`), in theory :mod:`mpi4py.futures` cannot be + used. Rather than raising an exception, :mod:`mpi4py.futures` emits a + warning and takes a "cross-fingers" attitude to continue execution in the + hope that serializing MPI calls with a global lock will actually work. + + +MPICommExecutor +--------------- + +Legacy MPI-1 implementations (as well as some vendor MPI-2 implementations) do +not support the dynamic process management features introduced in the MPI-2 +standard. Additionally, job schedulers and batch systems in supercomputing +facilities may pose additional complications to applications using the +:c:func:`MPI_Comm_spawn` routine. + +With these issues in mind, :mod:`mpi4py.futures` supports an additional, more +traditional, SPMD-like usage pattern requiring MPI-1 calls only. Python +applications are started the usual way, e.g., using the :program:`mpiexec` +command. Python code should make a collective call to the +:class:`MPICommExecutor` context manager to partition the set of MPI processes +within a MPI communicator in one master processes and many workers +processes. The master process gets access to an :class:`MPIPoolExecutor` +instance to submit tasks. Meanwhile, the worker process follow a different +execution path and team-up to execute the tasks submitted from the master. + +Besides alleviating the lack of dynamic process management features in legacy +MPI-1 or partial MPI-2 implementations, the :class:`MPICommExecutor` context +manager may be useful in classic MPI-based Python applications willing to take +advantage of the simple, task-based, master/worker approach available in the +:mod:`mpi4py.futures` package. + +.. class:: MPICommExecutor(comm=None, root=0) + + Context manager for :class:`MPIPoolExecutor`. This context manager splits a + MPI (intra)communicator *comm* (defaults to `MPI.COMM_WORLD` if not provided + or `None`) in two disjoint sets: a single master process (with rank *root* + in *comm*) and the remaining worker processes. These sets are then connected + through an intercommunicator. The target of the :keyword:`with` statement + is assigned either an :class:`MPIPoolExecutor` instance (at the master) or + `None` (at the workers). :: + + from mpi4py import MPI + from mpi4py.futures import MPICommExecutor + + with MPICommExecutor(MPI.COMM_WORLD, root=0) as executor: + if executor is not None: + future = executor.submit(abs, -42) + assert future.result() == 42 + answer = set(executor.map(abs, [-42, 42])) + assert answer == {42} + +.. warning:: + + If :class:`MPICommExecutor` is passed a communicator of size one (e.g., + `MPI.COMM_SELF`), then the executor instance assigned to the target of the + :keyword:`with` statement will execute all submitted tasks in a single + worker thread, thus ensuring that task execution still progress + asynchronously. However, the :term:`GIL` will prevent the main and worker + threads from running concurrently in multicore processors. Moreover, the + thread context switching may harm noticeably the performance of CPU-bound + tasks. In case of I/O-bound tasks, the :term:`GIL` is not usually an issue, + however, as a single worker thread is used, it progress one task at a + time. We advice against using :class:`MPICommExecutor` with communicators of + size one and suggest refactoring your code to use instead a + :class:`~concurrent.futures.ThreadPoolExecutor`. + + +Command line +------------ + +Recalling the issues related to the lack of support for dynamic process +management features in MPI implementations, :mod:`mpi4py.futures` supports an +alternative usage pattern where Python code (either from scripts, modules, or +zip files) is run under command line control of the :mod:`mpi4py.futures` +package by passing :samp:`-m mpi4py.futures` to the :program:`python` +executable. The ``mpi4py.futures`` invocation should be passed a *pyfile* path +to a script (or a zipfile/directory containing a :file:`__main__.py` file). +Additionally, ``mpi4py.futures`` accepts :samp:`-m {mod}` to execute a module +named *mod*, :samp:`-c {cmd}` to execute a command string *cmd*, or even +:samp:`-` to read commands from standard input (:data:`sys.stdin`). +Summarizing, :samp:`mpi4py.futures` can be invoked in the following ways: + +* :samp:`$ mpiexec -n {numprocs} python -m mpi4py.futures {pyfile} [arg] ...` +* :samp:`$ mpiexec -n {numprocs} python -m mpi4py.futures -m {mod} [arg] ...` +* :samp:`$ mpiexec -n {numprocs} python -m mpi4py.futures -c {cmd} [arg] ...` +* :samp:`$ mpiexec -n {numprocs} python -m mpi4py.futures - [arg] ...` + +Before starting the main script execution, :mod:`mpi4py.futures` splits +`MPI.COMM_WORLD` in one master (the process with rank 0 in `MPI.COMM_WORLD`) and +*numprocs - 1* workers and connects them through an MPI intercommunicator. +Afterwards, the master process proceeds with the execution of the user script +code, which eventually creates :class:`MPIPoolExecutor` instances to submit +tasks. Meanwhile, the worker processes follow a different execution path to +serve the master. Upon successful termination of the main script at the master, +the entire MPI execution environment exists gracefully. In case of any unhandled +exception in the main script, the master process calls +``MPI.COMM_WORLD.Abort(1)`` to prevent deadlocks and force termination of entire +MPI execution environment. + +.. warning:: + + Running scripts under command line control of :mod:`mpi4py.futures` is quite + similar to executing a single-process application that spawn additional + workers as required. However, there is a very important difference users + should be aware of. All :class:`~MPIPoolExecutor` instances created at the + master will share the pool of workers. Tasks submitted at the master from + many different executors will be scheduled for execution in random order as + soon as a worker is idle. Any executor can easily starve all the workers + (e.g., by calling :func:`MPIPoolExecutor.map` with long iterables). If that + ever happens, submissions from other executors will not be serviced until + free workers are available. + +.. seealso:: + + :ref:`python:using-on-cmdline` + Documentation on Python command line interface. + + +Parallel tasks +-------------- + +The :mod:`mpi4py.futures` package favors an embarrassingly parallel execution +model involving a series of sequential tasks independent of each other and +executed asynchronously. Albeit unnatural, :attr:`MPIPoolExecutor` can still be +used for handling workloads involving parallel tasks, where worker processes +communicate and coordinate each other via MPI. + +.. function:: get_comm_workers() + + Access an intracommunicator grouping MPI worker processes. + +Executing parallel tasks with :mod:`mpi4py.futures` requires following some +rules, cf. highlighted lines in example :ref:`cpi-py` : + +* Use :attr:`MPIPoolExecutor.num_workers` to determine the number of worker + processes in the executor and **submit exactly one callable per worker + process** using the :meth:`MPIPoolExecutor.submit` method. + +* The submitted callable must use :func:`get_comm_workers` to access an + intracommunicator grouping MPI worker processes. Afterwards, it is highly + recommended calling the :meth:`~mpi4py.MPI.Comm.Barrier` method on the + communicator. The barrier synchronization ensures that every worker process + is executing the submitted callable exactly once. Afterwards, the parallel + task can safely perform any kind of point-to-point or collective operation + using the returned communicator. + +* The :class:`~concurrent.futures.Future` instances returned by + :meth:`MPIPoolExecutor.submit` should be collected in a sequence. + Use :func:`~concurrent.futures.wait` with the sequence of + :class:`~concurrent.futures.Future` instances to ensure logical completion of + the parallel task. + + +Utilities +--------- + +The :mod:`mpi4py.futures` package provides additional utilities for handling +:class:`~concurrent.futures.Future` instances. + +.. autofunction:: mpi4py.futures.collect + +.. autofunction:: mpi4py.futures.compose + + +Examples +-------- + +Computing the Julia set ++++++++++++++++++++++++ + +The following :ref:`julia-py` script computes the `Julia set`_ and dumps an +image to disk in binary `PGM`_ format. The code starts by importing +:class:`MPIPoolExecutor` from the :mod:`mpi4py.futures` package. Next, some +global constants and functions implement the computation of the Julia set. The +computations are protected with the standard :code:`if __name__ == '__main__': +...` idiom. The image is computed by whole scanlines submitting all these +tasks at once using the :class:`~MPIPoolExecutor.map` method. The result +iterator yields scanlines in-order as the tasks complete. Finally, each +scanline is dumped to disk. + +.. _`Julia set`: https://en.wikipedia.org/wiki/Julia_set +.. _`PGM`: https://netpbm.sourceforge.net/doc/pgm.html + +.. code-block:: python + :name: julia-py + :caption: :file:`julia.py` + :emphasize-lines: 1,26,28,29 + :linenos: + + from mpi4py.futures import MPIPoolExecutor + + x0, x1, w = -2.0, +2.0, 640*2 + y0, y1, h = -1.5, +1.5, 480*2 + dx = (x1 - x0) / w + dy = (y1 - y0) / h + + c = complex(0, 0.65) + + def julia(x, y): + z = complex(x, y) + n = 255 + while abs(z) < 3 and n > 1: + z = z**2 + c + n -= 1 + return n + + def julia_line(k): + line = bytearray(w) + y = y1 - k * dy + for j in range(w): + x = x0 + j * dx + line[j] = julia(x, y) + return line + + if __name__ == '__main__': + + with MPIPoolExecutor() as executor: + image = executor.map(julia_line, range(h)) + with open('julia.pgm', 'wb') as f: + f.write(b'P5 %d %d %d\n' % (w, h, 255)) + for line in image: + f.write(line) + +The recommended way to execute the script is by using the :program:`mpiexec` +command specifying one MPI process (master) and (optional but recommended) the +desired MPI universe size, which determines the number of additional +dynamically spawned processes (workers). The MPI universe size is provided +either by a batch system or set by the user via command-line arguments to +:program:`mpiexec` or environment variables. Below we provide examples for +MPICH and Open MPI implementations [#]_. In all of these examples, the +:program:`mpiexec` command launches a single master process running the Python +interpreter and executing the main script. When required, :mod:`mpi4py.futures` +spawns the pool of 16 worker processes. The master submits tasks to the workers +and waits for the results. The workers receive incoming tasks, execute them, +and send back the results to the master. + +.. highlight:: console + +When using MPICH implementation or its derivatives based on the Hydra process +manager, users can set the MPI universe size via the ``-usize`` argument to +:program:`mpiexec`:: + + $ mpiexec -n 1 -usize 17 python julia.py + +or, alternatively, by setting the :envvar:`MPIEXEC_UNIVERSE_SIZE` environment +variable:: + + $ env MPIEXEC_UNIVERSE_SIZE=17 mpiexec -n 1 python julia.py + +In the Open MPI implementation, the MPI universe size can be set via the +``-host`` argument to :program:`mpiexec`:: + + $ mpiexec -n 1 -host localhost:17 python julia.py + +Another way to specify the number of workers is to use the +:mod:`mpi4py.futures`-specific environment variable +:envvar:`MPI4PY_FUTURES_MAX_WORKERS`:: + + $ env MPI4PY_FUTURES_MAX_WORKERS=16 mpiexec -n 1 python julia.py + +Note that in this case, the MPI universe size is ignored. + +Alternatively, users may decide to execute the script in a more traditional +way, that is, all the MPI processes are started at once. The user script is run +under command-line control of :mod:`mpi4py.futures` passing the :ref:`-m +` flag to the :program:`python` executable:: + + $ mpiexec -n 17 python -m mpi4py.futures julia.py + +As explained previously, the 17 processes are partitioned in one master and 16 +workers. The master process executes the main script while the workers execute +the tasks submitted by the master. + +.. [#] When using an MPI implementation other than MPICH or Open MPI, please + check the documentation of the implementation and/or batch + system for the ways to specify the desired MPI universe size. + + +Computing Pi (parallel task) +++++++++++++++++++++++++++++ + +The number :math:`\pi` can be approximated via numerical integration with the +simple midpoint rule, that is: + +.. math:: + + \pi = \int_{0}^{1} \frac{4}{1+x^2} \,dx \approx + \frac{1}{n} \sum_{i=1}^{n} + \frac{4}{1 + \left[\frac{1}{n} \left(i-\frac{1}{2}\right) \right]^2} . + +The following :ref:`cpi-py` script computes such approximations using +:mod:`mpi4py.futures` with a parallel task involving a collective reduction +operation. Highlighted lines correspond to the rules discussed in `Parallel +tasks`_. + +.. code-block:: python + :name: cpi-py + :caption: :file:`cpi.py` + :emphasize-lines: 9-10,21,35-36,39 + :linenos: + + import math + import sys + from mpi4py.futures import MPIPoolExecutor, wait + from mpi4py.futures import get_comm_workers + + + def compute_pi(n): + # Access intracommunicator and synchronize + comm = get_comm_workers() + comm.Barrier() + + rank = comm.Get_rank() + size = comm.Get_size() + + # Local computation + h = 1.0 / n + s = 0.0 + for i in range(rank + 1, n + 1, size): + x = h * (i - 0.5) + s += 4.0 / (1.0 + x**2) + pi_partial = s * h + + # Parallel reduce-to-all + pi = comm.allreduce(pi_partial) + + # All workers return the same value + return pi + + + if __name__ == '__main__': + n = int(sys.argv[1]) if len(sys.argv) > 1 else 256 + + with MPIPoolExecutor() as executor: + # Submit exactly one callable per worker + P = executor.num_workers + fs = [executor.submit(compute_pi, n) for _ in range(P)] + + # Wait for all workers to finish + wait(fs) + + # Get result from the first future object. + # In this particular example, due to using reduce-to-all, + # all the other future objects hold the same result value. + pi = fs[0].result() + print( + f"pi: {pi:.16f}, error: {abs(pi - math.pi):.3e}", + f"({n:d} intervals, {P:d} workers)", + ) + +.. highlight:: console + +To run in modern MPI-2 mode:: + + $ env MPI4PY_FUTURES_MAX_WORKERS=4 mpiexec -n 1 python cpi.py 128 + pi: 3.1415977398528137, error: 5.086e-06 (128 intervals, 4 workers) + + $ env MPI4PY_FUTURES_MAX_WORKERS=8 mpiexec -n 1 python cpi.py 512 + pi: 3.1415929714812316, error: 3.179e-07 (512 intervals, 8 workers) + +To run in legacy MPI-1 mode:: + + $ mpiexec -n 5 python -m mpi4py.futures cpi.py 128 + pi: 3.1415977398528137, error: 5.086e-06 (128 intervals, 4 workers) + + $ mpiexec -n 9 python -m mpi4py.futures cpi.py 512 + pi: 3.1415929714812316, error: 3.179e-07 (512 intervals, 8 workers) + + +Citation +-------- + +If :mod:`mpi4py.futures` been significant to a project that leads to an +academic publication, please acknowledge our work by citing the following +article [mpi4py-futures]_: + +.. [mpi4py-futures] M. Rogowski, S. Aseeri, D. Keyes, and L. Dalcin, + *mpi4py.futures: MPI-Based Asynchronous Task Execution for Python*, + IEEE Transactions on Parallel and Distributed Systems, 34(2):611-622, 2023. + https://doi.org/10.1109/TPDS.2022.3225481 + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.rst b/4.0.0/source/mpi4py.rst new file mode 100644 index 0000000..73b94e4 --- /dev/null +++ b/4.0.0/source/mpi4py.rst @@ -0,0 +1,261 @@ +mpi4py +====== + +.. automodule:: mpi4py + :synopsis: The MPI for Python package. + + +Runtime configuration options +----------------------------- + +.. data:: mpi4py.rc + + This object has attributes exposing runtime configuration options that + become effective at import time of the :mod:`~mpi4py.MPI` module. + +.. rubric:: Attributes Summary + +.. table:: + :widths: grid + + ============== ======================================================== + `initialize` Automatic MPI initialization at import + `threads` Request initialization with thread support + `thread_level` Level of thread support to request + `finalize` Automatic MPI finalization at exit + `fast_reduce` Use tree-based reductions for objects + `recv_mprobe` Use matched probes to receive objects + `irecv_bufsz` Default buffer size in bytes for :meth:`~MPI.Comm.irecv` + `errors` Error handling policy + ============== ======================================================== + +.. rubric:: Attributes Documentation + +.. attribute:: mpi4py.rc.initialize + + Automatic MPI initialization at import. + + :type: :class:`bool` + :default: :obj:`True` + + .. seealso:: :envvar:`MPI4PY_RC_INITIALIZE` + +.. attribute:: mpi4py.rc.threads + + Request initialization with thread support. + + :type: :class:`bool` + :default: :obj:`True` + + .. seealso:: :envvar:`MPI4PY_RC_THREADS` + +.. attribute:: mpi4py.rc.thread_level + + Level of thread support to request. + + :type: :class:`str` + :default: ``"multiple"`` + :choices: ``"multiple"``, ``"serialized"``, ``"funneled"``, ``"single"`` + + .. seealso:: :envvar:`MPI4PY_RC_THREAD_LEVEL` + +.. attribute:: mpi4py.rc.finalize + + Automatic MPI finalization at exit. + + :type: :obj:`None` or :class:`bool` + :default: :obj:`None` + + .. seealso:: :envvar:`MPI4PY_RC_FINALIZE` + +.. attribute:: mpi4py.rc.fast_reduce + + Use tree-based reductions for objects. + + :type: :class:`bool` + :default: :obj:`True` + + .. seealso:: :envvar:`MPI4PY_RC_FAST_REDUCE` + +.. attribute:: mpi4py.rc.recv_mprobe + + Use matched probes to receive objects. + + :type: :class:`bool` + :default: :obj:`True` + + .. seealso:: :envvar:`MPI4PY_RC_RECV_MPROBE` + +.. attribute:: mpi4py.rc.irecv_bufsz + + Default buffer size in bytes for :meth:`~MPI.Comm.irecv`. + + :type: :class:`int` + :default: ``32768`` + + .. seealso:: :envvar:`MPI4PY_RC_IRECV_BUFSZ` + .. versionadded:: 4.0.0 + +.. attribute:: mpi4py.rc.errors + + Error handling policy. + + :type: :class:`str` + :default: ``"exception"`` + :choices: ``"exception"``, ``"default"``, ``"abort"``, ``"fatal"`` + + .. seealso:: :envvar:`MPI4PY_RC_ERRORS` + + +.. rubric:: Example + +MPI for Python features automatic initialization and finalization of the MPI +execution environment. By using the `mpi4py.rc` object, MPI initialization and +finalization can be handled programmatically:: + + import mpi4py + mpi4py.rc.initialize = False # do not initialize MPI automatically + mpi4py.rc.finalize = False # do not finalize MPI automatically + + from mpi4py import MPI # import the 'MPI' module + + MPI.Init() # manual initialization of the MPI environment + ... # your finest code here ... + MPI.Finalize() # manual finalization of the MPI environment + + +Environment variables +--------------------- + +The following environment variables override the corresponding attributes of +the :data:`mpi4py.rc` and :data:`MPI.pickle` objects at import time of the +:mod:`~mpi4py.MPI` module. + +.. note:: + + For variables of boolean type, accepted values are ``0`` and ``1`` + (interpreted as :obj:`False` and :obj:`True`, respectively), and strings + specifying a `YAML boolean`_ value (case-insensitive). + + .. _YAML boolean: https://yaml.org/type/bool.html + +.. envvar:: MPI4PY_RC_INITIALIZE + + :type: :class:`bool` + :default: :obj:`True` + + Whether to automatically initialize MPI at import time of the + :mod:`mpi4py.MPI` module. + + .. seealso:: :attr:`mpi4py.rc.initialize` + .. versionadded:: 4.0.0 + +.. envvar:: MPI4PY_RC_FINALIZE + + :type: :obj:`None` | :class:`bool` + :default: :obj:`None` + :choices: :obj:`None`, :obj:`True`, :obj:`False` + + Whether to automatically finalize MPI at exit time of the Python process. + + .. seealso:: :attr:`mpi4py.rc.finalize` + .. versionadded:: 4.0.0 + +.. envvar:: MPI4PY_RC_THREADS + + :type: :class:`bool` + :default: :obj:`True` + + Whether to initialize MPI with thread support. + + .. seealso:: :attr:`mpi4py.rc.threads` + .. versionadded:: 3.1.0 + +.. envvar:: MPI4PY_RC_THREAD_LEVEL + + :default: ``"multiple"`` + :choices: ``"single"``, ``"funneled"``, + ``"serialized"``, ``"multiple"`` + + The level of required thread support. + + .. seealso:: :attr:`mpi4py.rc.thread_level` + .. versionadded:: 3.1.0 + +.. envvar:: MPI4PY_RC_FAST_REDUCE + + :type: :class:`bool` + :default: :obj:`True` + + Whether to use tree-based reductions for objects. + + .. seealso:: :attr:`mpi4py.rc.fast_reduce` + .. versionadded:: 3.1.0 + +.. envvar:: MPI4PY_RC_RECV_MPROBE + + :type: :class:`bool` + :default: :obj:`True` + + Whether to use matched probes to receive objects. + + .. seealso:: :attr:`mpi4py.rc.recv_mprobe` + +.. envvar:: MPI4PY_RC_IRECV_BUFSZ + + :type: :class:`bool` + :default: :obj:`True` + + Default buffer size in bytes for :meth:`~MPI.Comm.irecv`. + + .. seealso:: :attr:`mpi4py.rc.irecv_bufsz` + .. versionadded:: 4.0.0 + +.. envvar:: MPI4PY_RC_ERRORS + + :default: ``"exception"`` + :choices: ``"exception"``, ``"default"``, ``"abort"``, ``"fatal"`` + + Controls default MPI error handling policy. + + .. seealso:: :attr:`mpi4py.rc.errors` + .. versionadded:: 3.1.0 + +.. envvar:: MPI4PY_PICKLE_PROTOCOL + + :type: :class:`int` + :default: :data:`pickle.HIGHEST_PROTOCOL` + + Controls the default pickle protocol to use when communicating Python + objects. + + .. seealso:: :attr:`~mpi4py.MPI.Pickle.PROTOCOL` attribute of the + :data:`MPI.pickle` object within the :mod:`~mpi4py.MPI` module. + .. versionadded:: 3.1.0 + +.. envvar:: MPI4PY_PICKLE_THRESHOLD + + :type: :class:`int` + :default: ``262144`` + + Controls the default buffer size threshold for switching from in-band to + out-of-band buffer handling when using pickle protocol version 5 or higher. + + .. seealso:: :attr:`~mpi4py.MPI.Pickle.THRESHOLD` attribute of the + :data:`MPI.pickle` object within the :mod:`~mpi4py.MPI` module. + .. versionadded:: 3.1.2 + + +Miscellaneous functions +----------------------- + +.. autofunction:: mpi4py.profile + +.. autofunction:: mpi4py.get_include + +.. autofunction:: mpi4py.get_config + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.run.rst b/4.0.0/source/mpi4py.run.rst new file mode 100644 index 0000000..0b79c4f --- /dev/null +++ b/4.0.0/source/mpi4py.run.rst @@ -0,0 +1,116 @@ +mpi4py.run +========== + +.. module:: mpi4py.run + :synopsis: Run Python code using ``-m mpi4py``. + +.. versionadded:: 3.0.0 + +At import time, :mod:`mpi4py` initializes the MPI execution environment calling +:c:func:`MPI_Init_thread` and installs an exit hook to automatically call +:c:func:`MPI_Finalize` just before the Python process terminates. Additionally, +:mod:`mpi4py` overrides the default `ERRORS_ARE_FATAL` error handler in favor +of `ERRORS_RETURN`, which allows translating MPI errors in Python +exceptions. These departures from standard MPI behavior may be controversial, +but are quite convenient within the highly dynamic Python programming +environment. Third-party code using :mod:`mpi4py` can just ``from mpi4py import +MPI`` and perform MPI calls without the tedious initialization/finalization +handling. MPI errors, once translated automatically to Python exceptions, can +be dealt with the common :keyword:`try`...\ :keyword:`except`...\ +:keyword:`finally` clauses; unhandled MPI exceptions will print a traceback +which helps in locating problems in source code. + +Unfortunately, the interplay of automatic MPI finalization and unhandled +exceptions may lead to deadlocks. In unattended runs, these deadlocks will +drain the battery of your laptop, or burn precious allocation hours in your +supercomputing facility. + +Exceptions and deadlocks +------------------------ + +Consider the following snippet of Python code. Assume this code is stored in a +standard Python script file and run with :command:`mpiexec` in two or more +processes. + +.. code-block:: python + :name: deadlock-py + :caption: :file:`deadlock.py` + :emphasize-lines: 5 + :linenos: + + from mpi4py import MPI + assert MPI.COMM_WORLD.Get_size() > 1 + rank = MPI.COMM_WORLD.Get_rank() + if rank == 0: + 1/0 + MPI.COMM_WORLD.send(None, dest=1, tag=42) + elif rank == 1: + MPI.COMM_WORLD.recv(source=0, tag=42) + +Process 0 raises `ZeroDivisionError` exception before performing a send call to +process 1. As the exception is not handled, the Python interpreter running in +process 0 will proceed to exit with non-zero status. However, as :mod:`mpi4py` +installed a finalizer hook to call :c:func:`MPI_Finalize` before exit, process +0 will block waiting for other processes to also enter the +:c:func:`MPI_Finalize` call. Meanwhile, process 1 will block waiting for a +message to arrive from process 0, thus never reaching to +:c:func:`MPI_Finalize`. The whole MPI execution environment is irremediably in +a deadlock state. + +To alleviate this issue, :mod:`mpi4py` offers a simple, alternative command +line execution mechanism based on using the :ref:`-m ` +flag and implemented with the :mod:`runpy` module. To use this features, Python +code should be run passing ``-m mpi4py`` in the command line invoking the +Python interpreter. In case of unhandled exceptions, the finalizer hook will +call :c:func:`MPI_Abort` on the :c:data:`MPI_COMM_WORLD` communicator, thus +effectively aborting the MPI execution environment. + +.. warning:: + + When a process is forced to abort, resources (e.g. open files) are not + cleaned-up and any registered finalizers (either with the :mod:`atexit` + module, the Python C/API function :c:func:`Py_AtExit()`, or even the C + standard library function :c:func:`atexit`) will not be executed. Thus, + aborting execution is an extremely impolite way of ensuring process + termination. However, MPI provides no other mechanism to recover from a + deadlock state. + +Command line +------------ + +The use of ``-m mpi4py`` to execute Python code on the command line resembles +that of the Python interpreter. + +* :samp:`mpiexec -n {numprocs} python -m mpi4py {pyfile} [arg] ...` +* :samp:`mpiexec -n {numprocs} python -m mpi4py -m {mod} [arg] ...` +* :samp:`mpiexec -n {numprocs} python -m mpi4py -c {cmd} [arg] ...` +* :samp:`mpiexec -n {numprocs} python -m mpi4py - [arg] ...` + +.. describe:: + + Execute the Python code contained in *pyfile*, which must be a filesystem + path referring to either a Python file, a directory containing a + :file:`__main__.py` file, or a zipfile containing a :file:`__main__.py` + file. + +.. cmdoption:: -m + + Search :data:`sys.path` for the named module *mod* and execute its contents. + +.. cmdoption:: -c + + Execute the Python code in the *cmd* string command. + +.. describe:: - + + Read commands from standard input (:data:`sys.stdin`). + +.. seealso:: + + :ref:`python:using-on-cmdline` + Documentation on Python command line interface. + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.typing.rst b/4.0.0/source/mpi4py.typing.rst new file mode 100644 index 0000000..a6240f5 --- /dev/null +++ b/4.0.0/source/mpi4py.typing.rst @@ -0,0 +1,68 @@ +mpi4py.typing +============= + +.. module:: mpi4py.typing + :synopsis: Typing support. + +.. versionadded:: 4.0.0 + +This module provides :term:`type aliases ` used to add +:term:`type hints ` to the various functions and methods +within the :mod:`~mpi4py.MPI` module. + +.. seealso:: + + Module :mod:`typing` + Documentation of the :mod:`typing` standard module. + + +.. currentmodule:: mpi4py.typing + +.. rubric:: Types Summary + +.. autosummary:: + SupportsBuffer + SupportsDLPack + SupportsCAI + Buffer + Bottom + InPlace + Aint + Count + Displ + Offset + TypeSpec + BufSpec + BufSpecB + BufSpecV + BufSpecW + TargetSpec + +.. rubric:: Types Documentation + +.. autotype:: SupportsBuffer +.. autotype:: SupportsDLPack +.. autotype:: SupportsCAI +.. autotype:: Buffer +.. autotype:: Bottom +.. autotype:: InPlace +.. autotype:: Aint +.. autotype:: Count +.. autotype:: Displ +.. autotype:: Offset +.. autotype:: TypeSpec +.. autotype:: BufSpec +.. autotype:: BufSpecB +.. autotype:: BufSpecV +.. autotype:: BufSpecW +.. autotype:: TargetSpec + +.. autotype:: S +.. autotype:: T +.. autotype:: U +.. autotype:: V + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.util.dtlib.rst b/4.0.0/source/mpi4py.util.dtlib.rst new file mode 100644 index 0000000..c5c751d --- /dev/null +++ b/4.0.0/source/mpi4py.util.dtlib.rst @@ -0,0 +1,23 @@ +mpi4py.util.dtlib +----------------- + +.. module:: mpi4py.util.dtlib + :synopsis: Convert NumPy and MPI datatypes. + +.. versionadded:: 3.1.0 + +The :mod:`mpi4py.util.dtlib` module provides converter routines between NumPy +and MPI datatypes. + +.. autofunction:: from_numpy_dtype + + :param dtype: NumPy dtype-like object. + +.. autofunction:: to_numpy_dtype + + :param datatype: MPI datatype. + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.util.pkl5.rst b/4.0.0/source/mpi4py.util.pkl5.rst new file mode 100644 index 0000000..e69424b --- /dev/null +++ b/4.0.0/source/mpi4py.util.pkl5.rst @@ -0,0 +1,213 @@ +mpi4py.util.pkl5 +---------------- + +.. module:: mpi4py.util.pkl5 + :synopsis: Pickle-based communication using protocol 5. + +.. versionadded:: 3.1.0 + +:mod:`pickle` protocol 5 (see :pep:`574`) introduced support for out-of-band +buffers, allowing for more efficient handling of certain object types with +large memory footprints. + +MPI for Python uses the traditional in-band handling of buffers. This approach +is appropriate for communicating non-buffer Python objects, or buffer-like +objects with small memory footprints. For point-to-point communication, in-band +buffer handling allows for the communication of a pickled stream with a single +MPI message, at the expense of additional CPU and memory overhead in the +pickling and unpickling steps. + +The :mod:`mpi4py.util.pkl5` module provides communicator wrapper classes +reimplementing pickle-based point-to-point and collective communication methods +using pickle protocol 5. Handling out-of-band buffers necessarily involves +multiple MPI messages, thus increasing latency and hurting performance in case +of small size data. However, in case of large size data, the zero-copy savings +of out-of-band buffer handling more than offset the extra latency costs. +Additionally, these wrapper methods overcome the infamous 2 GiB message count +limit (MPI-1 to MPI-3). + +.. note:: + + Support for pickle protocol 5 is available in the :mod:`pickle` module + within the Python standard library since Python 3.8. Previous Python 3 + releases can use the :mod:`pickle5` backport, which is available on `PyPI + `_ and can be installed with:: + + python -m pip install pickle5 + + .. _pickle5-pypi: https://pypi.org/project/pickle5/ + + +.. autoclass:: Request + + Custom request class for nonblocking communications. + + .. note:: :class:`Request` is not a subclass of :class:`mpi4py.MPI.Request` + + .. automethod:: Free + + .. automethod:: free + + .. automethod:: cancel + + .. automethod:: get_status + + .. automethod:: test + + .. automethod:: wait + + .. automethod:: get_status_all + + :classmethod: + + .. automethod:: testall + + :classmethod: + + .. automethod:: waitall + + :classmethod: + + +.. autoclass:: Message + + Custom message class for matching probes. + + .. note:: :class:`Message` is not a subclass of :class:`mpi4py.MPI.Message` + + .. automethod:: free + + .. automethod:: recv + + .. automethod:: irecv + + .. automethod:: probe + + :classmethod: + + .. automethod:: iprobe + + :classmethod: + + +.. autoclass:: Comm + + Base communicator wrapper class. + + .. automethod:: send + + .. automethod:: bsend + + .. automethod:: ssend + + .. automethod:: isend + + .. automethod:: ibsend + + .. automethod:: issend + + .. automethod:: recv + + .. automethod:: irecv + + .. warning:: This method cannot be supported reliably + and raises :exc:`RuntimeError`. + + .. automethod:: sendrecv + + .. automethod:: mprobe + + .. automethod:: improbe + + .. automethod:: bcast + + .. versionadded:: 3.1.0 + + .. automethod:: gather + + .. versionadded:: 4.0.0 + + .. automethod:: scatter + + .. versionadded:: 4.0.0 + + .. automethod:: allgather + + .. versionadded:: 4.0.0 + + .. automethod:: alltoall + + .. versionadded:: 4.0.0 + + +.. autoclass:: Intracomm + + Intracommunicator wrapper class. + + +.. autoclass:: Intercomm + + Intercommunicator wrapper class. + + +Examples +++++++++ + +.. code-block:: python + :name: test-pkl5-1 + :caption: :file:`test-pkl5-1.py` + :emphasize-lines: 3,5,11 + :linenos: + + import numpy as np + from mpi4py import MPI + from mpi4py.util import pkl5 + + comm = pkl5.Intracomm(MPI.COMM_WORLD) # comm wrapper + size = comm.Get_size() + rank = comm.Get_rank() + dst = (rank + 1) % size + src = (rank - 1) % size + + sobj = np.full(1024**3, rank, dtype='i4') # > 4 GiB + sreq = comm.isend(sobj, dst, tag=42) + robj = comm.recv (None, src, tag=42) + sreq.Free() + + assert np.min(robj) == src + assert np.max(robj) == src + +.. code-block:: python + :name: test-pkl5-2 + :caption: :file:`test-pkl5-2.py` + :emphasize-lines: 3,5,11 + :linenos: + + import numpy as np + from mpi4py import MPI + from mpi4py.util import pkl5 + + comm = pkl5.Intracomm(MPI.COMM_WORLD) # comm wrapper + size = comm.Get_size() + rank = comm.Get_rank() + dst = (rank + 1) % size + src = (rank - 1) % size + + sobj = np.full(1024**3, rank, dtype='i4') # > 4 GiB + sreq = comm.isend(sobj, dst, tag=42) + + status = MPI.Status() + rmsg = comm.mprobe(status=status) + assert status.Get_source() == src + assert status.Get_tag() == 42 + rreq = rmsg.irecv() + robj = rreq.wait() + + sreq.Free() + assert np.max(robj) == src + assert np.min(robj) == src + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.util.pool.rst b/4.0.0/source/mpi4py.util.pool.rst new file mode 100644 index 0000000..ce66481 --- /dev/null +++ b/4.0.0/source/mpi4py.util.pool.rst @@ -0,0 +1,75 @@ +mpi4py.util.pool +---------------- + +.. module:: mpi4py.util.pool + :synopsis: :mod:`multiprocessing.pool` interface via :mod:`mpi4py.futures`. + +.. versionadded:: 4.0.0 + +.. seealso:: + + This module intends to be a drop-in replacement for the + :mod:`multiprocessing.pool` interface from the Python standard library. + The :class:`~mpi4py.util.pool.Pool` class exposed here is implemented as a + thin wrapper around :class:`~mpi4py.futures.MPIPoolExecutor`. + +.. note:: + + The :mod:`mpi4py.futures` package offers a higher level interface + for asynchronously pushing tasks to MPI worker process, allowing + for a clear separation between submitting tasks and waiting for the + results. + + +.. autoclass:: mpi4py.util.pool.Pool + + .. automethod:: __init__ + + .. automethod:: apply + + .. automethod:: apply_async + + .. automethod:: map + + .. automethod:: map_async + + .. automethod:: imap + + .. automethod:: imap_unordered + + .. automethod:: starmap + + .. automethod:: starmap_async + + .. automethod:: istarmap + + .. automethod:: istarmap_unordered + + .. automethod:: close + + .. automethod:: terminate + + .. automethod:: join + + +.. autoclass:: mpi4py.util.pool.ThreadPool + :show-inheritance: + + +.. autoclass:: mpi4py.util.pool.AsyncResult + + .. automethod:: get + + .. automethod:: wait + + .. automethod:: ready + + .. automethod:: successful + + +.. autoclass:: mpi4py.util.pool.ApplyResult + :show-inheritance: + + +.. autoclass:: mpi4py.util.pool.MapResult + :show-inheritance: diff --git a/4.0.0/source/mpi4py.util.rst b/4.0.0/source/mpi4py.util.rst new file mode 100644 index 0000000..2b46659 --- /dev/null +++ b/4.0.0/source/mpi4py.util.rst @@ -0,0 +1,23 @@ +mpi4py.util +=========== + +.. module:: mpi4py.util + :synopsis: Miscellaneous utilities. + +.. versionadded:: 3.1.0 + +The :mod:`mpi4py.util` package collects miscellaneous utilities +within the intersection of Python and MPI. + +.. toctree:: + :maxdepth: 1 + + mpi4py.util.dtlib + mpi4py.util.pkl5 + mpi4py.util.pool + mpi4py.util.sync + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/mpi4py.util.sync.rst b/4.0.0/source/mpi4py.util.sync.rst new file mode 100644 index 0000000..0ce6fdd --- /dev/null +++ b/4.0.0/source/mpi4py.util.sync.rst @@ -0,0 +1,190 @@ +mpi4py.util.sync +---------------- + +.. module:: mpi4py.util.sync + :synopsis: Synchronization utilities. + +.. versionadded:: 4.0.0 + +The :mod:`mpi4py.util.sync` module provides parallel synchronization +utilities. + +Sequential execution +++++++++++++++++++++ + +.. autoclass:: mpi4py.util.sync.Sequential + + Context manager for sequential execution within a group of MPI processes. + + The implementation is based in MPI-1 point-to-point communication. A process + with rank *i* waits in a blocking receive until the previous process rank + *i-1* finish executing and signals the next rank *i* with a send. + + .. automethod:: __init__ + .. automethod:: __enter__ + .. automethod:: __exit__ + .. automethod:: begin + .. automethod:: end + +Global counter +++++++++++++++ + +.. autoclass:: mpi4py.util.sync.Counter + + Produce consecutive values within a group of MPI processes. The counter + interface is close to that of `itertools.count`. + + The implementation is based in MPI-3 one-sided operations. A root process + (typically rank ``0``) holds the counter, and its value is queried and + incremented with an atomic RMA *fetch-and-add* operation. + + .. automethod:: __init__ + .. automethod:: __iter__ + .. automethod:: __next__ + .. automethod:: next + .. automethod:: free + +Mutual exclusion +++++++++++++++++ + +.. autoclass:: mpi4py.util.sync.Mutex + + Establish a critical section or mutual exclusion among MPI processes. + + The mutex interface is close to that of `threading.Lock` and + `threading.RLock`, allowing the use of either recursive or non-recursive + mutual exclusion. However, a mutex should be used within a group of MPI + processes, not threads. + + In non-recursive mode, the semantics of `Mutex` are somewhat different than + these of `threading.Lock`: + + * Once acquired, a mutex is held and owned by a process until released. + * Trying to acquire a mutex already held raises `RuntimeError`. + * Trying to release a mutex not yet held raises `RuntimeError`. + + This mutex implementation uses the scalable and fair spinlock algorithm from + [mcs-paper]_ and took inspiration from the MPI-3 RMA implementation of + [uam-book]_. + + .. automethod:: __init__ + .. automethod:: __enter__ + .. automethod:: __exit__ + .. automethod:: acquire + .. automethod:: release + .. automethod:: locked + .. automethod:: count + .. automethod:: free + +.. [mcs-paper] John M. Mellor-Crummey and Michael L. Scott. + Algorithms for scalable synchronization on shared-memory multiprocessors. + ACM Transactions on Computer Systems, 9(1):21-65, February 1991. + https://doi.org/10.1145/103727.103729 + +.. [uam-book] William Gropp, Torsten Hoefler, Rajeev Thakur, Ewing Lusk. + Using Advanced MPI - Modern Features of the Message-Passing Interface. + Chapter 4, Section 4.7, Pages 130-131. The MIT Press, November 2014. + https://mitpress.mit.edu/9780262527637/using-advanced-mpi/ + +Condition variable +++++++++++++++++++ + +.. autoclass:: mpi4py.util.sync.Condition + + A condition variable allows one or more MPI processes to wait until they are + notified by another processes. + + The condition variable interface is close to that of `threading.Condition`, + allowing the use of either recursive or non-recursive mutual exclusion. + However, the condition variable should be used within a group of MPI + processes, not threads. + + This condition variable implementation uses a MPI-3 RMA-based scalable and + fair circular queue algorithm to track the set of waiting processes. + + .. automethod:: __init__ + .. automethod:: __enter__ + .. automethod:: __exit__ + .. automethod:: acquire + .. automethod:: release + .. automethod:: locked + .. automethod:: wait + .. automethod:: wait_for + .. automethod:: notify + .. automethod:: notify_all + .. automethod:: free + +Semaphore object +++++++++++++++++ + +.. autoclass:: mpi4py.util.sync.Semaphore + + A semaphore object manages an internal counter which is decremented by each + `acquire()` call and incremented by each `release()` call. The internal + counter never reaches a value below zero; when `acquire()` finds that it is + zero, it blocks and waits until some other process calls `release()`. + + The semaphore interface is close to that of `threading.Semaphore` and + `threading.BoundedSemaphore`, allowing the use of either bounded (default) + or unbounded semaphores. With a bounded semaphore, the internal counter + never exceeds its initial value; otherwise `release()` raises `ValueError`. + + This semaphore implementation uses a global `Counter` and a `Condition` + variable to handle waiting and and notification. + + .. automethod:: __init__ + .. automethod:: __enter__ + .. automethod:: __exit__ + .. automethod:: acquire + .. automethod:: release + .. automethod:: free + + +Examples +++++++++ + +.. code-block:: python + :name: test-sync-1 + :caption: :file:`test-sync-1.py` + :emphasize-lines: 2,6-9 + :linenos: + + from mpi4py import MPI + from mpi4py.util.sync import Counter, Sequential + + comm = MPI.COMM_WORLD + + counter = Counter(comm) + with Sequential(comm): + value = next(counter) + counter.free() + + assert comm.rank == value + +.. code-block:: python + :name: test-sync-2 + :caption: :file:`test-sync-2.py` + :emphasize-lines: 2,6-11 + :linenos: + + from mpi4py import MPI + from mpi4py.util.sync import Counter, Mutex + + comm = MPI.COMM_WORLD + + mutex = Mutex(comm) + counter = Counter(comm) + with mutex: + value = next(counter) + counter.free() + mutex.free() + + assert ( + list(range(comm.size)) == + sorted(comm.allgather(value)) + ) + + +.. Local variables: +.. fill-column: 79 +.. End: diff --git a/4.0.0/source/overview.rst b/4.0.0/source/overview.rst new file mode 100644 index 0000000..97ebc7d --- /dev/null +++ b/4.0.0/source/overview.rst @@ -0,0 +1,468 @@ +Overview +======== + +.. currentmodule:: mpi4py.MPI + +MPI for Python provides an object oriented approach to message passing +which grounds on the standard MPI-2 C++ bindings. The interface was +designed with focus in translating MPI syntax and semantics of +standard MPI-2 bindings for C++ to Python. Any user of the standard +C/C++ MPI bindings should be able to use this module without need of +learning a new interface. + +Communicating Python Objects and Array Data +------------------------------------------- + +The Python standard library supports different mechanisms for data +persistence. Many of them rely on disk storage, but *pickling* and +*marshaling* can also work with memory buffers. + +The :mod:`pickle` modules provide user-extensible facilities to +serialize general Python objects using ASCII or binary formats. The +:mod:`marshal` module provides facilities to serialize built-in Python +objects using a binary format specific to Python, but independent of +machine architecture issues. + +*MPI for Python* can communicate any built-in or user-defined Python +object taking advantage of the features provided by the :mod:`pickle` +module. These facilities will be routinely used to build binary +representations of objects to communicate (at sending processes), and +restoring them back (at receiving processes). + +Although simple and general, the serialization approach (i.e., +*pickling* and *unpickling*) previously discussed imposes important +overheads in memory as well as processor usage, especially in the +scenario of objects with large memory footprints being +communicated. Pickling general Python objects, ranging from primitive +or container built-in types to user-defined classes, necessarily +requires computer resources. Processing is also needed for +dispatching the appropriate serialization method (that depends on the +type of the object) and doing the actual packing. Additional memory is +always needed, and if its total amount is not known *a priori*, many +reallocations can occur. Indeed, in the case of large numeric arrays, +this is certainly unacceptable and precludes communication of objects +occupying half or more of the available memory resources. + +*MPI for Python* supports direct communication of any object exporting +the single-segment buffer interface. This interface is a standard +Python mechanism provided by some types (e.g., strings and numeric +arrays), allowing access in the C side to a contiguous memory buffer +(i.e., address and length) containing the relevant data. This feature, +in conjunction with the capability of constructing user-defined MPI +datatypes describing complicated memory layouts, enables the +implementation of many algorithms involving multidimensional numeric +arrays (e.g., image processing, fast Fourier transforms, finite +difference schemes on structured Cartesian grids) directly in Python, +with negligible overhead, and almost as fast as compiled Fortran, C, +or C++ codes. + + +Communicators +------------- + +In *MPI for Python*, `Comm` is the base class of communicators. The +`Intracomm` and `Intercomm` classes are subclasses of the `Comm` +class. The `Comm.Is_inter` method (and `Comm.Is_intra`, provided for +convenience but not part of the MPI specification) is defined for +communicator objects and can be used to determine the particular +communicator class. + +The two predefined intracommunicator instances are available: +`COMM_SELF` and `COMM_WORLD`. From them, new communicators can be +created as needed. + +The number of processes in a communicator and the calling process rank +can be respectively obtained with methods `Comm.Get_size` and +`Comm.Get_rank`. The associated process group can be retrieved from a +communicator by calling the `Comm.Get_group` method, which returns an +instance of the `Group` class. Set operations with `Group` objects +like like `Group.Union`, `Group.Intersection` and `Group.Difference` +are fully supported, as well as the creation of new communicators from +these groups using `Comm.Create` and `Intracomm.Create_group`. + +New communicator instances can be obtained with the `Comm.Clone`, +`Comm.Dup` and `Comm.Split` methods, as well methods +`Intracomm.Create_intercomm` and `Intercomm.Merge`. + +Virtual topologies (`Cartcomm`, `Graphcomm` and `Distgraphcomm` +classes, which are specializations of the `Intracomm` class) are fully +supported. New instances can be obtained from intracommunicator +instances with factory methods `Intracomm.Create_cart` and +`Intracomm.Create_graph`. + + +Point-to-Point Communications +----------------------------- + +Point to point communication is a fundamental capability of message +passing systems. This mechanism enables the transmission of data +between a pair of processes, one side sending, the other receiving. + +MPI provides a set of *send* and *receive* functions allowing the +communication of *typed* data with an associated *tag*. The type +information enables the conversion of data representation from one +architecture to another in the case of heterogeneous computing +environments; additionally, it allows the representation of +non-contiguous data layouts and user-defined datatypes, thus avoiding +the overhead of (otherwise unavoidable) packing/unpacking +operations. The tag information allows selectivity of messages at the +receiving end. + + +Blocking Communications +^^^^^^^^^^^^^^^^^^^^^^^ + +MPI provides basic send and receive functions that are *blocking*. +These functions block the caller until the data buffers involved in +the communication can be safely reused by the application program. + +In *MPI for Python*, the `Comm.Send`, `Comm.Recv` and `Comm.Sendrecv` +methods of communicator objects provide support for blocking +point-to-point communications within `Intracomm` and `Intercomm` +instances. These methods can communicate memory buffers. The variants +`Comm.send`, `Comm.recv` and `Comm.sendrecv` can communicate general +Python objects. + +Nonblocking Communications +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +On many systems, performance can be significantly increased by +overlapping communication and computation. This is particularly true +on systems where communication can be executed autonomously by an +intelligent, dedicated communication controller. + +MPI provides *nonblocking* send and receive functions. They allow the +possible overlap of communication and computation. Non-blocking +communication always come in two parts: posting functions, which begin +the requested operation; and test-for-completion functions, which +allow to discover whether the requested operation has completed. + +In *MPI for Python*, the `Comm.Isend` and `Comm.Irecv` methods +initiate send and receive operations, respectively. These methods +return a `Request` instance, uniquely identifying the started +operation. Its completion can be managed using the `Request.Test`, +`Request.Wait` and `Request.Cancel` methods. The management of +`Request` objects and associated memory buffers involved in +communication requires a careful, rather low-level coordination. Users +must ensure that objects exposing their memory buffers are not +accessed at the Python level while they are involved in nonblocking +message-passing operations. + +Persistent Communications +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Often a communication with the same argument list is repeatedly +executed within an inner loop. In such cases, communication can be +further optimized by using persistent communication, a particular case +of nonblocking communication allowing the reduction of the overhead +between processes and communication controllers. Furthermore , this +kind of optimization can also alleviate the extra call overheads +associated to interpreted, dynamic languages like Python. + +In *MPI for Python*, the `Comm.Send_init` and `Comm.Recv_init` methods +create persistent requests for a send and receive operation, +respectively. These methods return an instance of the `Prequest` +class, a subclass of the `Request` class. The actual communication can +be effectively started using the `Prequest.Start` method, and its +completion can be managed as previously described. + + +Collective Communications +-------------------------- + +Collective communications allow the transmittal of data between +multiple processes of a group simultaneously. The syntax and semantics +of collective functions is consistent with point-to-point +communication. Collective functions communicate *typed* data, but +messages are not paired with an associated *tag*; selectivity of +messages is implied in the calling order. Additionally, collective +functions come in blocking versions only. + +The more commonly used collective communication operations are the +following. + +* Barrier synchronization across all group members. + +* Global communication functions + + + Broadcast data from one member to all members of a group. + + + Gather data from all members to one member of a group. + + + Scatter data from one member to all members of a group. + +* Global reduction operations such as sum, maximum, minimum, etc. + +In *MPI for Python*, the `Comm.Bcast`, `Comm.Scatter`, `Comm.Gather`, +`Comm.Allgather`, `Comm.Alltoall` methods provide support for +collective communications of memory buffers. The lower-case variants +`Comm.bcast`, `Comm.scatter`, `Comm.gather`, `Comm.allgather` and +`Comm.alltoall` can communicate general Python objects. The vector +variants (which can communicate different amounts of data to each +process) `Comm.Scatterv`, `Comm.Gatherv`, `Comm.Allgatherv`, +`Comm.Alltoallv` and `Comm.Alltoallw` are also supported, they can +only communicate objects exposing memory buffers. + +Global reduction operations on memory buffers are accessible through +the `Comm.Reduce`, `Comm.Reduce_scatter`, `Comm.Allreduce`, +`Intracomm.Scan` and `Intracomm.Exscan` methods. The lower-case +variants `Comm.reduce`, `Comm.allreduce`, `Intracomm.scan` and +`Intracomm.exscan` can communicate general Python objects; however, +the actual required reduction computations are performed sequentially +at some process. All the predefined (i.e., `SUM`, `PROD`, `MAX`, etc.) +reduction operations can be applied. + + +Support for GPU-aware MPI +------------------------- + +Several MPI implementations, including Open MPI and MVAPICH, support +passing GPU pointers to MPI calls to avoid explicit data movement +between host and device. On the Python side, support for handling GPU +arrays have been implemented in many libraries related GPU computation +such as `CuPy`_, `Numba`_, `PyTorch`_, and `PyArrow`_. To maximize +interoperability across library boundaries, two kinds of zero-copy +data exchange protocols have been defined and agreed upon: `DLPack +` and `CUDA Array Interface (CAI) +`. + +.. _CuPy: https://cupy.dev/ +.. _Numba: https://numba.pydata.org/ +.. _PyTorch: https://pytorch.org/ +.. _PyArrow: https://arrow.apache.org/docs/python/ + +*MPI for Python* provides an experimental support for GPU-aware MPI. +This feature requires: + +1. mpi4py is built against a GPU-aware MPI library. + +2. The Python GPU arrays are compliant with either of the protocols. + +See the :doc:`tutorial` section for further information. We note that + +* Whether or not a MPI call can work for GPU arrays depends on the + underlying MPI implementation, not on mpi4py. + +* This support is currently experimental and subject to change in the + future. + + +Dynamic Process Management +-------------------------- + +In the context of the MPI-1 specification, a parallel application is +static; that is, no processes can be added to or deleted from a +running application after it has been started. Fortunately, this +limitation was addressed in MPI-2. The new specification added a +process management model providing a basic interface between an +application and external resources and process managers. + +This MPI-2 extension can be really useful, especially for sequential +applications built on top of parallel modules, or parallel +applications with a client/server model. The MPI-2 process model +provides a mechanism to create new processes and establish +communication between them and the existing MPI application. It also +provides mechanisms to establish communication between two existing +MPI applications, even when one did not *start* the other. + +In *MPI for Python*, new independent process groups can be created by +calling the `Intracomm.Spawn` method within an intracommunicator. +This call returns a new intercommunicator (i.e., an `Intercomm` +instance) at the parent process group. The child process group can +retrieve the matching intercommunicator by calling the +`Comm.Get_parent` class method. At each side, the new +intercommunicator can be used to perform point to point and collective +communications between the parent and child groups of processes. + +Alternatively, disjoint groups of processes can establish +communication using a client/server approach. Any server application +must first call the `Open_port` function to open a *port* and the +`Publish_name` function to publish a provided *service*, and next call +the `Intracomm.Accept` method. Any client applications can first find +a published *service* by calling the `Lookup_name` function, which +returns the *port* where a server can be contacted; and next call the +`Intracomm.Connect` method. Both `Intracomm.Accept` and +`Intracomm.Connect` methods return an `Intercomm` instance. When +connection between client/server processes is no longer needed, all of +them must cooperatively call the `Comm.Disconnect` +method. Additionally, server applications should release resources by +calling the `Unpublish_name` and `Close_port` functions. + + +One-Sided Communications +------------------------ + +One-sided communications (also called *Remote Memory Access*, *RMA*) +supplements the traditional two-sided, send/receive based MPI +communication model with a one-sided, put/get based +interface. One-sided communication that can take advantage of the +capabilities of highly specialized network hardware. Additionally, +this extension lowers latency and software overhead in applications +written using a shared-memory-like paradigm. + +The MPI specification revolves around the use of objects called +*windows*; they intuitively specify regions of a process's memory that +have been made available for remote read and write operations. The +published memory blocks can be accessed through three functions for +put (remote send), get (remote write), and accumulate (remote update +or reduction) data items. A much larger number of functions support +different synchronization styles; the semantics of these +synchronization operations are fairly complex. + +In *MPI for Python*, one-sided operations are available by using +instances of the `Win` class. New window objects are created by +calling the `Win.Create` method at all processes within a communicator +and specifying a memory buffer . When a window instance is no longer +needed, the `Win.Free` method should be called. + +The three one-sided MPI operations for remote write, read and +reduction are available through calling the methods `Win.Put`, +`Win.Get`, and `Win.Accumulate` respectively within a `Win` instance. +These methods need an integer rank identifying the target process and +an integer offset relative the base address of the remote memory block +being accessed. + +The one-sided operations read, write, and reduction are implicitly +nonblocking, and must be synchronized by using two primary modes. +Active target synchronization requires the origin process to call the +`Win.Start` and `Win.Complete` methods at the origin process, and +target process cooperates by calling the `Win.Post` and `Win.Wait` +methods. There is also a collective variant provided by the +`Win.Fence` method. Passive target synchronization is more lenient, +only the origin process calls the `Win.Lock` and `Win.Unlock` +methods. Locks are used to protect remote accesses to the locked +remote window and to protect local load/store accesses to a locked +local window. + + +Parallel Input/Output +--------------------- + +The POSIX standard provides a model of a widely portable file +system. However, the optimization needed for parallel input/output +cannot be achieved with this generic interface. In order to ensure +efficiency and scalability, the underlying parallel input/output +system must provide a high-level interface supporting partitioning of +file data among processes and a collective interface supporting +complete transfers of global data structures between process memories +and files. Additionally, further efficiencies can be gained via +support for asynchronous input/output, strided accesses to data, and +control over physical file layout on storage devices. This scenario +motivated the inclusion in the MPI-2 standard of a custom interface in +order to support more elaborated parallel input/output operations. + +The MPI specification for parallel input/output revolves around the +use objects called *files*. As defined by MPI, files are not just +contiguous byte streams. Instead, they are regarded as ordered +collections of *typed* data items. MPI supports sequential or random +access to any integral set of these items. Furthermore, files are +opened collectively by a group of processes. + +The common patterns for accessing a shared file (broadcast, scatter, +gather, reduction) is expressed by using user-defined datatypes. +Compared to the communication patterns of point-to-point and +collective communications, this approach has the advantage of added +flexibility and expressiveness. Data access operations (read and +write) are defined for different kinds of positioning (using explicit +offsets, individual file pointers, and shared file pointers), +coordination (non-collective and collective), and synchronism +(blocking, nonblocking, and split collective with begin/end phases). + +In *MPI for Python*, all MPI input/output operations are performed +through instances of the `File` class. File handles are obtained by +calling the `File.Open` method at all processes within a communicator +and providing a file name and the intended access mode. After use, +they must be closed by calling the `File.Close` method. Files even +can be deleted by calling method `File.Delete`. + +After creation, files are typically associated with a per-process +*view*. The view defines the current set of data visible and +accessible from an open file as an ordered set of elementary +datatypes. This data layout can be set and queried with the +`File.Set_view` and `File.Get_view` methods respectively. + +Actual input/output operations are achieved by many methods combining +read and write calls with different behavior regarding positioning, +coordination, and synchronism. Summing up, *MPI for Python* provides +the thirty (30) methods defined in MPI-2 for reading from or writing +to files using explicit offsets or file pointers (individual or +shared), in blocking or nonblocking and collective or noncollective +versions. + +Environmental Management +------------------------ + +Initialization and Exit +^^^^^^^^^^^^^^^^^^^^^^^ + +Module functions `Init` or `Init_thread` and `Finalize` provide MPI +initialization and finalization respectively. Module functions +`Is_initialized` and `Is_finalized` provide the respective tests for +initialization and finalization. + +.. note:: + + :c:func:`MPI_Init` or :c:func:`MPI_Init_thread` is actually called + when you import the :mod:`~mpi4py.MPI` module from the + :mod:`mpi4py` package, but only if MPI is not already + initialized. In such case, calling `Init` or `Init_thread` from + Python is expected to generate an MPI error, and in turn an + exception will be raised. + +.. note:: + + :c:func:`MPI_Finalize` is registered (by using Python C/API + function :c:func:`Py_AtExit`) for being automatically called when + Python processes exit, but only if :mod:`mpi4py` actually + initialized MPI. Therefore, there is no need to call `Finalize` + from Python to ensure MPI finalization. + +Implementation Information +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* The MPI version number can be retrieved from module function + `Get_version`. It returns a two-integer tuple ``(version, + subversion)``. + +* The `Get_processor_name` function can be used to access the + processor name. + +* The values of predefined attributes attached to the world + communicator can be obtained by calling the `Comm.Get_attr` method + within the `COMM_WORLD` instance. + +Timers +^^^^^^ + +MPI timer functionalities are available through the `Wtime` and +`Wtick` functions. + +Error Handling +^^^^^^^^^^^^^^ + +In order to facilitate handle sharing with other Python modules +interfacing MPI-based parallel libraries, the predefined MPI error +handlers `ERRORS_RETURN` and `ERRORS_ARE_FATAL` can be assigned to and +retrieved from communicators using methods `Comm.Set_errhandler` and +`Comm.Get_errhandler`, and similarly for windows and files. New custom +error handlers can be created with `Comm.Create_errhandler`. + +When the predefined error handler `ERRORS_RETURN` is set, errors +returned from MPI calls within Python code will raise an instance of +the exception class `Exception`, which is a subclass of the standard +Python exception `python:RuntimeError`. + +.. note:: + + After import, mpi4py overrides the default MPI rules governing + inheritance of error handlers. The `ERRORS_RETURN` error handler is + set in the predefined `COMM_SELF` and `COMM_WORLD` communicators, + as well as any new `Comm`, `Win`, or `File` instance created + through mpi4py. If you ever pass such handles to C/C++/Fortran + library code, it is recommended to set the `ERRORS_ARE_FATAL` error + handler on them to ensure MPI errors do not pass silently. + +.. warning:: + + Importing with ``from mpi4py.MPI import *`` will cause a name + clashing with the standard Python `python:Exception` base class. diff --git a/4.0.0/source/reference.rst b/4.0.0/source/reference.rst new file mode 100644 index 0000000..372354d --- /dev/null +++ b/4.0.0/source/reference.rst @@ -0,0 +1,9 @@ +.. _reference: + +Reference +========= + +.. autosummary:: + :toctree: reference/ + + mpi4py.MPI diff --git a/4.0.0/source/tutorial.rst b/4.0.0/source/tutorial.rst new file mode 100644 index 0000000..c5431a8 --- /dev/null +++ b/4.0.0/source/tutorial.rst @@ -0,0 +1,548 @@ +.. _tutorial: + +Tutorial +======== + +.. currentmodule:: mpi4py.MPI + +.. warning:: + + Under construction. Contributions very welcome! + +.. tip:: + + `Rolf Rabenseifner`_ at `HLRS`_ developed a comprehensive + MPI-3.1/4.0 course with slides and a large set of exercises + including solutions. This material is `available online + `_ for self-study. The slides and exercises show the C, + Fortran, and Python (mpi4py) interfaces. For performance reasons, + most Python exercises use NumPy arrays and communication routines + involving buffer-like objects. + + .. _Rolf Rabenseifner: https://www.hlrs.de/people/rolf-rabenseifner + .. _HLRS: https://www.hlrs.de/ + .. _hlrs-mpi: https://www.hlrs.de/training/self-study-materials/mpi-course-material + +.. tip:: + + `Victor Eijkhout`_ at `TACC`_ authored the book *Parallel + Programming for Science and Engineering*. This book is `available + online `_ in PDF and `HTML `_ formats. The + book covers parallel programming with MPI and OpenMP in C/C++ and + Fortran, and MPI in Python using mpi4py. + + .. _Victor Eijkhout: https://tacc.utexas.edu/about/staff-directory/victor-eijkhout + .. _TACC: https://tacc.utexas.edu/ + .. _ppse-book: https://theartofhpc.com/pcse.html + .. _ppse-html: https://theartofhpc.com/pcse/index.html + + +*MPI for Python* supports convenient, *pickle*-based communication of +generic Python object as well as fast, near C-speed, direct array data +communication of buffer-provider objects (e.g., NumPy arrays). + +* Communication of generic Python objects + + You have to use methods with **all-lowercase** names, like + `Comm.send`, `Comm.recv`, `Comm.bcast`, `Comm.scatter`, + `Comm.gather` . An object to be sent is passed as a parameter to the + communication call, and the received object is simply the return + value. + + The `Comm.isend` and `Comm.irecv` methods return `Request` + instances; completion of these methods can be managed using the + `Request.test` and `Request.wait` methods. + + The `Comm.recv` and `Comm.irecv` methods may be passed a buffer + object that can be repeatedly used to receive messages avoiding + internal memory allocation. This buffer must be sufficiently large + to accommodate the transmitted messages; hence, any buffer passed to + `Comm.recv` or `Comm.irecv` must be at least as long as the + *pickled* data transmitted to the receiver. + + Collective calls like `Comm.scatter`, `Comm.gather`, + `Comm.allgather`, `Comm.alltoall` expect a single value or a + sequence of `Comm.size` elements at the root or all process. They + return a single value, a list of `Comm.size` elements, or `None`. + + .. note:: + + *MPI for Python* uses the **highest** :ref:`protocol version + ` available in the Python runtime (see the + :data:`~pickle.HIGHEST_PROTOCOL` constant in the :mod:`pickle` + module). The default protocol can be changed at import time by + setting the :envvar:`MPI4PY_PICKLE_PROTOCOL` environment + variable, or at runtime by assigning a different value to the + :attr:`~mpi4py.MPI.Pickle.PROTOCOL` attribute of the + :obj:`~mpi4py.MPI.pickle` object within the :mod:`~mpi4py.MPI` + module. + +* Communication of buffer-like objects + + You have to use method names starting with an **upper-case** letter, + like `Comm.Send`, `Comm.Recv`, `Comm.Bcast`, `Comm.Scatter`, + `Comm.Gather`. + + In general, buffer arguments to these calls must be explicitly + specified by using a 2/3-list/tuple like ``[data, MPI.DOUBLE]``, or + ``[data, count, MPI.DOUBLE]`` (the former one uses the byte-size of + ``data`` and the extent of the MPI datatype to define ``count``). + + For vector collectives communication operations like + `Comm.Scatterv` and `Comm.Gatherv`, buffer arguments are + specified as ``[data, count, displ, datatype]``, where ``count`` and + ``displ`` are sequences of integral values. + + Automatic MPI datatype discovery for NumPy/GPU arrays and PEP-3118 + buffers is supported, but limited to basic C types (all C/C99-native + signed/unsigned integral types and single/double precision + real/complex floating types) and availability of matching datatypes + in the underlying MPI implementation. In this case, the + buffer-provider object can be passed directly as a buffer argument, + the count and MPI datatype will be inferred. + + If mpi4py is built against a GPU-aware MPI implementation, GPU + arrays can be passed to upper-case methods as long as they have + either the ``__dlpack__`` and ``__dlpack_device__`` methods or the + ``__cuda_array_interface__`` attribute that are compliant with the + respective standard specifications. Moreover, only C-contiguous or + Fortran-contiguous GPU arrays are supported. It is important to note + that GPU buffers must be fully ready before any MPI routines operate + on them to avoid race conditions. This can be ensured by using the + synchronization API of your array library. mpi4py does not have + access to any GPU-specific functionality and thus cannot perform + this operation automatically for users. + + +Running Python scripts with MPI +------------------------------- + +Most MPI programs can be run with the command :program:`mpiexec`. In +practice, running Python programs looks like:: + + $ mpiexec -n 4 python script.py + +to run the program with 4 processors. + + +Point-to-Point Communication +---------------------------- + +* Python objects (:mod:`pickle` under the hood):: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = {'a': 7, 'b': 3.14} + comm.send(data, dest=1, tag=11) + elif rank == 1: + data = comm.recv(source=0, tag=11) + +* Python objects with non-blocking communication:: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = {'a': 7, 'b': 3.14} + req = comm.isend(data, dest=1, tag=11) + req.wait() + elif rank == 1: + req = comm.irecv(source=0, tag=11) + data = req.wait() + +* NumPy arrays (the fast way!):: + + from mpi4py import MPI + import numpy + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + # passing MPI datatypes explicitly + if rank == 0: + data = numpy.arange(1000, dtype='i') + comm.Send([data, MPI.INT], dest=1, tag=77) + elif rank == 1: + data = numpy.empty(1000, dtype='i') + comm.Recv([data, MPI.INT], source=0, tag=77) + + # automatic MPI datatype discovery + if rank == 0: + data = numpy.arange(100, dtype=numpy.float64) + comm.Send(data, dest=1, tag=13) + elif rank == 1: + data = numpy.empty(100, dtype=numpy.float64) + comm.Recv(data, source=0, tag=13) + + +Collective Communication +------------------------ + +* Broadcasting a Python dictionary:: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = {'key1' : [7, 2.72, 2+3j], + 'key2' : ( 'abc', 'xyz')} + else: + data = None + data = comm.bcast(data, root=0) + +* Scattering Python objects:: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + if rank == 0: + data = [(i+1)**2 for i in range(size)] + else: + data = None + data = comm.scatter(data, root=0) + assert data == (rank+1)**2 + +* Gathering Python objects:: + + from mpi4py import MPI + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + data = (rank+1)**2 + data = comm.gather(data, root=0) + if rank == 0: + for i in range(size): + assert data[i] == (i+1)**2 + else: + assert data is None + +* Broadcasting a NumPy array:: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + if rank == 0: + data = np.arange(100, dtype='i') + else: + data = np.empty(100, dtype='i') + comm.Bcast(data, root=0) + for i in range(100): + assert data[i] == i + +* Scattering NumPy arrays:: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + sendbuf = None + if rank == 0: + sendbuf = np.empty([size, 100], dtype='i') + sendbuf.T[:,:] = range(size) + recvbuf = np.empty(100, dtype='i') + comm.Scatter(sendbuf, recvbuf, root=0) + assert np.allclose(recvbuf, rank) + +* Gathering NumPy arrays:: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + sendbuf = np.zeros(100, dtype='i') + rank + recvbuf = None + if rank == 0: + recvbuf = np.empty([size, 100], dtype='i') + comm.Gather(sendbuf, recvbuf, root=0) + if rank == 0: + for i in range(size): + assert np.allclose(recvbuf[i,:], i) + +* Parallel matrix-vector product:: + + from mpi4py import MPI + import numpy + + def matvec(comm, A, x): + m = A.shape[0] # local rows + p = comm.Get_size() + xg = numpy.zeros(m*p, dtype='d') + comm.Allgather([x, MPI.DOUBLE], + [xg, MPI.DOUBLE]) + y = numpy.dot(A, xg) + return y + + +Input/Output (MPI-IO) +--------------------- + +* Collective I/O with NumPy arrays:: + + from mpi4py import MPI + import numpy as np + + amode = MPI.MODE_WRONLY|MPI.MODE_CREATE + comm = MPI.COMM_WORLD + fh = MPI.File.Open(comm, "./datafile.contig", amode) + + buffer = np.empty(10, dtype=np.int) + buffer[:] = comm.Get_rank() + + offset = comm.Get_rank()*buffer.nbytes + fh.Write_at_all(offset, buffer) + + fh.Close() + +* Non-contiguous Collective I/O with NumPy arrays and datatypes:: + + from mpi4py import MPI + import numpy as np + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + size = comm.Get_size() + + amode = MPI.MODE_WRONLY|MPI.MODE_CREATE + fh = MPI.File.Open(comm, "./datafile.noncontig", amode) + + item_count = 10 + + buffer = np.empty(item_count, dtype='i') + buffer[:] = rank + + filetype = MPI.INT.Create_vector(item_count, 1, size) + filetype.Commit() + + displacement = MPI.INT.Get_size()*rank + fh.Set_view(displacement, filetype=filetype) + + fh.Write_all(buffer) + filetype.Free() + fh.Close() + + +Dynamic Process Management +-------------------------- + +* Compute Pi - Master (or parent, or client) side:: + + #!/usr/bin/env python + from mpi4py import MPI + import numpy + import sys + + comm = MPI.COMM_SELF.Spawn(sys.executable, + args=['cpi.py'], + maxprocs=5) + + N = numpy.array(100, 'i') + comm.Bcast([N, MPI.INT], root=MPI.ROOT) + PI = numpy.array(0.0, 'd') + comm.Reduce(None, [PI, MPI.DOUBLE], + op=MPI.SUM, root=MPI.ROOT) + print(PI) + + comm.Disconnect() + +* Compute Pi - Worker (or child, or server) side:: + + #!/usr/bin/env python + from mpi4py import MPI + import numpy + + comm = MPI.Comm.Get_parent() + size = comm.Get_size() + rank = comm.Get_rank() + + N = numpy.array(0, dtype='i') + comm.Bcast([N, MPI.INT], root=0) + h = 1.0 / N; s = 0.0 + for i in range(rank, N, size): + x = h * (i + 0.5) + s += 4.0 / (1.0 + x**2) + PI = numpy.array(s * h, dtype='d') + comm.Reduce([PI, MPI.DOUBLE], None, + op=MPI.SUM, root=0) + + comm.Disconnect() + + +GPU-aware MPI + Python GPU arrays +--------------------------------- + +* Reduce-to-all CuPy arrays:: + + from mpi4py import MPI + import cupy as cp + + comm = MPI.COMM_WORLD + size = comm.Get_size() + rank = comm.Get_rank() + + sendbuf = cp.arange(10, dtype='i') + recvbuf = cp.empty_like(sendbuf) + cp.cuda.get_current_stream().synchronize() + comm.Allreduce(sendbuf, recvbuf) + + assert cp.allclose(recvbuf, sendbuf*size) + + +One-Sided Communication (RMA) +----------------------------- + +* Read from (write to) the entire RMA window:: + + import numpy as np + from mpi4py import MPI + from mpi4py.util import dtlib + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + datatype = MPI.FLOAT + np_dtype = dtlib.to_numpy_dtype(datatype) + itemsize = datatype.Get_size() + + N = 10 + win_size = N * itemsize if rank == 0 else 0 + win = MPI.Win.Allocate(win_size, comm=comm) + + buf = np.empty(N, dtype=np_dtype) + if rank == 0: + buf.fill(42) + win.Lock(rank=0) + win.Put(buf, target_rank=0) + win.Unlock(rank=0) + comm.Barrier() + else: + comm.Barrier() + win.Lock(rank=0) + win.Get(buf, target_rank=0) + win.Unlock(rank=0) + assert np.all(buf == 42) + +* Accessing a part of the RMA window using the ``target`` argument, + which is defined as ``(offset, count, datatype)``:: + + import numpy as np + from mpi4py import MPI + from mpi4py.util import dtlib + + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + + datatype = MPI.FLOAT + np_dtype = dtlib.to_numpy_dtype(datatype) + itemsize = datatype.Get_size() + + N = comm.Get_size() + 1 + win_size = N * itemsize if rank == 0 else 0 + win = MPI.Win.Allocate( + size=win_size, + disp_unit=itemsize, + comm=comm, + ) + if rank == 0: + mem = np.frombuffer(win, dtype=np_dtype) + mem[:] = np.arange(len(mem), dtype=np_dtype) + comm.Barrier() + + buf = np.zeros(3, dtype=np_dtype) + target = (rank, 2, datatype) + win.Lock(rank=0) + win.Get(buf, target_rank=0, target=target) + win.Unlock(rank=0) + assert np.all(buf == [rank, rank+1, 0]) + + +Wrapping with SWIG +------------------ + +* C source: + + .. sourcecode:: c + + /* file: helloworld.c */ + void sayhello(MPI_Comm comm) + { + int size, rank; + MPI_Comm_size(comm, &size); + MPI_Comm_rank(comm, &rank); + printf("Hello, World! " + "I am process %d of %d.\n", + rank, size); + } + +* SWIG interface file: + + .. sourcecode:: c + + // file: helloworld.i + %module helloworld + %{ + #include + #include "helloworld.c" + }% + + %include mpi4py/mpi4py.i + %mpi4py_typemap(Comm, MPI_Comm); + void sayhello(MPI_Comm comm); + +* Try it in the Python prompt:: + + >>> from mpi4py import MPI + >>> import helloworld + >>> helloworld.sayhello(MPI.COMM_WORLD) + Hello, World! I am process 0 of 1. + + +Wrapping with F2Py +------------------ + +* Fortran 90 source: + + .. sourcecode:: fortran + + ! file: helloworld.f90 + subroutine sayhello(comm) + use mpi + implicit none + integer :: comm, rank, size, ierr + call MPI_Comm_size(comm, size, ierr) + call MPI_Comm_rank(comm, rank, ierr) + print *, 'Hello, World! I am process ',rank,' of ',size,'.' + end subroutine sayhello + +* Compiling example using f2py :: + + $ f2py -c --f90exec=mpif90 helloworld.f90 -m helloworld + +* Try it in the Python prompt:: + + >>> from mpi4py import MPI + >>> import helloworld + >>> fcomm = MPI.COMM_WORLD.py2f() + >>> helloworld.sayhello(fcomm) + Hello, World! I am process 0 of 1. diff --git a/stable b/stable index 8a4b275..0c89fc9 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -3.1.6 \ No newline at end of file +4.0.0 \ No newline at end of file