{"id":28,"date":"2010-03-25T08:26:23","date_gmt":"2010-03-25T07:26:23","guid":{"rendered":"http:\/\/numbercrunch.de\/blog\/?p=28"},"modified":"2015-08-27T15:58:06","modified_gmt":"2015-08-27T14:58:06","slug":"mpi-reloaded","status":"publish","type":"post","link":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/","title":{"rendered":"MPI reloaded"},"content":{"rendered":"<p style=\"text-align: justify;\">The <a href=\"http:\/\/www.mpi-forum.org\">message passing interface<\/a> (MPI) is a specification for an <a href=\"http:\/\/en.wikipedia.org\/wiki\/API\">api<\/a> that allows processes to communicate by exchanging messages. It is designed for high performance computing applications and is utilized on distributed memory architectures (as computer clusters) as well as on shared memory computers.<\/p>\n<p style=\"text-align: justify;\">The initial version of the MPI standard, MPI-1.0, was created in 1994 by the MPI Forum. From 1995 to 2008, the MPI Forum published a series of subsequent revisions of the standard, MPI-1.1, MPI-1.2, MPI-2.0, MPI-1.3, and MPI-2.1 (in this order). New versions incorporated various corrections and clarifications as well as some major extensions to earlier standards. In September 2009, the MPI Forum published <a href=\"http:\/\/www.mpi-forum.org\/docs\/mpi22-report\/mpi22-report.htm\">MPI-2.2<\/a>. Important changes include:<\/p>\n<ul>\n<li style=\"text-align: justify;\">C++ language bindings have been marked as deprecated. This means, the C++ language bindings are still part of the MPI standard. New MPI programs, however, should not use the C++ api. C++ programmers may use the C api instead, or external interfaces, as <a href=\"http:\/\/www.boost.org\/doc\/html\/mpi.html\">Boost MPI<\/a> for example.<\/li>\n<li style=\"text-align: justify;\">There are new MPI datatypes for the new datatypes of the <a href=\"http:\/\/en.wikipedia.org\/wiki\/C99\">C99<\/a> standard, for example MPI_C_COMPLEX for double complex.<\/li>\n<li style=\"text-align: justify;\">Support for local reduction operations by MPI_REDUCE_LOCAL.<\/li>\n<li style=\"text-align: justify;\">New collective function MPI_REDUCE_SCATTER_BLOCK.<\/li>\n<li style=\"text-align: justify;\">New functions for a scalable distributed graph topology interface have been added.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">It will probably take some time until open source and vendor MPI implementations have incorporated all new features of the MPI-2.2 standard. However, every MPI user or MPI developper should be aware of the revised standard and take it into account when writing new MPI programs. The MPI-2.2 standard is just a minor update to\u00a0 MPI-2.1. However, the MPI Forum is already working on <a href=\"https:\/\/svn.mpi-forum.org\/trac\/mpi-forum-web\">MPI-3.0<\/a>, which is planned to add new\u00a0 features as collectives operations, fault tolerance, support for hybrid programming models, and remote memory access.<\/p>\n<p style=\"text-align: justify;\">MPI novices find good introductions to MPI, for example, in \u00ab<a href=\"http:\/\/www.elsevierdirect.com\/product.jsp?isbn=9781558603394\">Parallel programming with MPI<\/a>\u00bb by Peter S. Pacheco or in \u00ab<a href=\"http:\/\/www.springer.com\/computer\/information+systems+and+applications\/book\/978-3-540-42299-0\">Cluster Computing<\/a>\u00bb (in German) by Heiko Bauke (your humble blog author) and Stephan Mertens. I also strongly encourage everybody how uses an MPI library to read the <a href=\"http:\/\/www.mpi-forum.org\/docs\/docs.html\">MPI standard documents<\/a>.<\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>The message passing interface (MPI) is a specification for an api that allows processes to communicate by exchanging messages. It is designed for high performance computing applications and is utilized on distributed memory architectures (as computer clusters) as well as on shared memory computers. The initial version of the MPI standard, MPI-1.0, was created in&hellip; <a href=\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">MPI reloaded<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,8],"tags":[],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-mpi","category-parallel-computing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MPI reloaded - Number Crunch<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MPI reloaded - Number Crunch\" \/>\n<meta property=\"og:description\" content=\"The message passing interface (MPI) is a specification for an api that allows processes to communicate by exchanging messages. It is designed for high performance computing applications and is utilized on distributed memory architectures (as computer clusters) as well as on shared memory computers. The initial version of the MPI standard, MPI-1.0, was created in&hellip; Continue reading MPI reloaded\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\" \/>\n<meta property=\"og:site_name\" content=\"Number Crunch\" \/>\n<meta property=\"article:published_time\" content=\"2010-03-25T07:26:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-27T14:58:06+00:00\" \/>\n<meta name=\"author\" content=\"Heiko Bauke\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Heiko Bauke\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\"},\"author\":{\"name\":\"Heiko Bauke\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\"},\"headline\":\"MPI reloaded\",\"datePublished\":\"2010-03-25T07:26:23+00:00\",\"dateModified\":\"2015-08-27T14:58:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\"},\"wordCount\":342,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\"},\"articleSection\":[\"MPI\",\"parallel computing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\",\"url\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\",\"name\":\"MPI reloaded - Number Crunch\",\"isPartOf\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#website\"},\"datePublished\":\"2010-03-25T07:26:23+00:00\",\"dateModified\":\"2015-08-27T14:58:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.numbercrunch.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MPI reloaded\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#website\",\"url\":\"https:\/\/www.numbercrunch.de\/blog\/\",\"name\":\"Number Crunch\",\"description\":\"A computational science blog.\",\"publisher\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.numbercrunch.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\",\"name\":\"Heiko Bauke\",\"logo\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MPI reloaded - Number Crunch","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/","og_locale":"en_US","og_type":"article","og_title":"MPI reloaded - Number Crunch","og_description":"The message passing interface (MPI) is a specification for an api that allows processes to communicate by exchanging messages. It is designed for high performance computing applications and is utilized on distributed memory architectures (as computer clusters) as well as on shared memory computers. The initial version of the MPI standard, MPI-1.0, was created in&hellip; Continue reading MPI reloaded","og_url":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/","og_site_name":"Number Crunch","article_published_time":"2010-03-25T07:26:23+00:00","article_modified_time":"2015-08-27T14:58:06+00:00","author":"Heiko Bauke","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Heiko Bauke","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#article","isPartOf":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/"},"author":{"name":"Heiko Bauke","@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413"},"headline":"MPI reloaded","datePublished":"2010-03-25T07:26:23+00:00","dateModified":"2015-08-27T14:58:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/"},"wordCount":342,"commentCount":0,"publisher":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413"},"articleSection":["MPI","parallel computing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/","url":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/","name":"MPI reloaded - Number Crunch","isPartOf":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#website"},"datePublished":"2010-03-25T07:26:23+00:00","dateModified":"2015-08-27T14:58:06+00:00","breadcrumb":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.numbercrunch.de\/blog\/2010\/03\/mpi-reloaded\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.numbercrunch.de\/blog\/"},{"@type":"ListItem","position":2,"name":"MPI reloaded"}]},{"@type":"WebSite","@id":"https:\/\/www.numbercrunch.de\/blog\/#website","url":"https:\/\/www.numbercrunch.de\/blog\/","name":"Number Crunch","description":"A computational science blog.","publisher":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.numbercrunch.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413","name":"Heiko Bauke","logo":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts\/28"}],"collection":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":24,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":687,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts\/28\/revisions\/687"}],"wp:attachment":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}